forked from ~ljy/RK356X_SDK_RELEASE

hc
2024-05-13 9d77db3c730780c8ef5ccd4b66403ff5675cfe4e
kernel/drivers/iio/afe/iio-rescale.c
....@@ -38,7 +38,7 @@
3838 int *val, int *val2, long mask)
3939 {
4040 struct rescale *rescale = iio_priv(indio_dev);
41
- unsigned long long tmp;
41
+ s64 tmp;
4242 int ret;
4343
4444 switch (mask) {
....@@ -59,10 +59,10 @@
5959 *val2 = rescale->denominator;
6060 return IIO_VAL_FRACTIONAL;
6161 case IIO_VAL_FRACTIONAL_LOG2:
62
- tmp = *val * 1000000000LL;
63
- do_div(tmp, rescale->denominator);
62
+ tmp = (s64)*val * 1000000000LL;
63
+ tmp = div_s64(tmp, rescale->denominator);
6464 tmp *= rescale->numerator;
65
- do_div(tmp, 1000000000LL);
65
+ tmp = div_s64(tmp, 1000000000LL);
6666 *val = tmp;
6767 return ret;
6868 default:
....@@ -276,11 +276,9 @@
276276 int ret;
277277
278278 source = devm_iio_channel_get(dev, NULL);
279
- if (IS_ERR(source)) {
280
- if (PTR_ERR(source) != -EPROBE_DEFER)
281
- dev_err(dev, "failed to get source channel\n");
282
- return PTR_ERR(source);
283
- }
279
+ if (IS_ERR(source))
280
+ return dev_err_probe(dev, PTR_ERR(source),
281
+ "failed to get source channel\n");
284282
285283 sizeof_ext_info = iio_get_channel_ext_info_count(source);
286284 if (sizeof_ext_info) {
....@@ -314,7 +312,6 @@
314312 rescale->source = source;
315313
316314 indio_dev->name = dev_name(dev);
317
- indio_dev->dev.parent = dev;
318315 indio_dev->info = &rescale_info;
319316 indio_dev->modes = INDIO_DIRECT_MODE;
320317 indio_dev->channels = &rescale->chan;