• Home
  • Raw
  • Download

Lines Matching refs:rescale

23 int rescale_process_scale(struct rescale *rescale, int scale_type,  in rescale_process_scale()  argument
30 *val *= rescale->numerator; in rescale_process_scale()
31 *val2 *= rescale->denominator; in rescale_process_scale()
34 *val *= rescale->numerator; in rescale_process_scale()
35 if (rescale->denominator == 1) in rescale_process_scale()
37 *val2 = rescale->denominator; in rescale_process_scale()
41 tmp = div_s64(tmp, rescale->denominator); in rescale_process_scale()
42 tmp *= rescale->numerator; in rescale_process_scale()
51 int rescale_process_offset(struct rescale *rescale, int scale_type, in rescale_process_offset() argument
59 tmp = (s64)rescale->offset * scale2; in rescale_process_offset()
63 *val = div_s64(rescale->offset, scale) + schan_off; in rescale_process_offset()
66 tmp = (s64)rescale->offset * (1 << scale2); in rescale_process_offset()
70 tmp = (s64)rescale->offset * 1000000000LL; in rescale_process_offset()
75 tmp = (s64)rescale->offset * 1000000LL; in rescale_process_offset()
88 struct rescale *rescale = iio_priv(indio_dev); in rescale_read_raw() local
95 if (rescale->chan_processed) in rescale_read_raw()
101 return iio_read_channel_processed(rescale->source, val); in rescale_read_raw()
103 return iio_read_channel_raw(rescale->source, val); in rescale_read_raw()
106 if (rescale->chan_processed) { in rescale_read_raw()
114 ret = iio_read_channel_scale(rescale->source, val, val2); in rescale_read_raw()
116 return rescale_process_scale(rescale, ret, val, val2); in rescale_read_raw()
142 if (rescale->chan_processed) { in rescale_read_raw()
143 *val = rescale->offset; in rescale_read_raw()
147 if (iio_channel_has_info(rescale->source->channel, in rescale_read_raw()
149 ret = iio_read_channel_offset(rescale->source, in rescale_read_raw()
155 if (iio_channel_has_info(rescale->source->channel, in rescale_read_raw()
157 ret = iio_read_channel_scale(rescale->source, &scale, &scale2); in rescale_read_raw()
158 return rescale_process_offset(rescale, ret, scale, scale2, in rescale_read_raw()
166 return rescale_process_offset(rescale, IIO_VAL_FRACTIONAL, 1, 1, in rescale_read_raw()
178 struct rescale *rescale = iio_priv(indio_dev); in rescale_read_avail() local
183 return iio_read_avail_channel_raw(rescale->source, in rescale_read_avail()
200 struct rescale *rescale = iio_priv(indio_dev); in rescale_read_ext_info() local
202 return iio_read_channel_ext_info(rescale->source, in rescale_read_ext_info()
203 rescale->ext_info[private].name, in rescale_read_ext_info()
212 struct rescale *rescale = iio_priv(indio_dev); in rescale_write_ext_info() local
214 return iio_write_channel_ext_info(rescale->source, in rescale_write_ext_info()
215 rescale->ext_info[private].name, in rescale_write_ext_info()
220 struct rescale *rescale) in rescale_configure_channel() argument
222 struct iio_chan_spec *chan = &rescale->chan; in rescale_configure_channel()
223 struct iio_chan_spec const *schan = rescale->source->channel; in rescale_configure_channel()
227 chan->ext_info = rescale->ext_info; in rescale_configure_channel()
228 chan->type = rescale->cfg->type; in rescale_configure_channel()
236 rescale->chan_processed = true; in rescale_configure_channel()
245 if (rescale->offset) in rescale_configure_channel()
254 !rescale->chan_processed) in rescale_configure_channel()
261 struct rescale *rescale) in rescale_current_sense_amplifier_props() argument
285 rescale->numerator = 1000000 / factor; in rescale_current_sense_amplifier_props()
286 rescale->denominator = sense / factor; in rescale_current_sense_amplifier_props()
288 factor = gcd(rescale->numerator, gain_mult); in rescale_current_sense_amplifier_props()
289 rescale->numerator /= factor; in rescale_current_sense_amplifier_props()
290 rescale->denominator *= gain_mult / factor; in rescale_current_sense_amplifier_props()
292 factor = gcd(rescale->denominator, gain_div); in rescale_current_sense_amplifier_props()
293 rescale->numerator *= gain_div / factor; in rescale_current_sense_amplifier_props()
294 rescale->denominator /= factor; in rescale_current_sense_amplifier_props()
300 struct rescale *rescale) in rescale_current_sense_shunt_props() argument
314 rescale->numerator = 1000000 / factor; in rescale_current_sense_shunt_props()
315 rescale->denominator = shunt / factor; in rescale_current_sense_shunt_props()
321 struct rescale *rescale) in rescale_voltage_divider_props() argument
327 &rescale->denominator); in rescale_voltage_divider_props()
334 &rescale->numerator); in rescale_voltage_divider_props()
340 factor = gcd(rescale->numerator, rescale->denominator); in rescale_voltage_divider_props()
341 rescale->numerator /= factor; in rescale_voltage_divider_props()
342 rescale->denominator /= factor; in rescale_voltage_divider_props()
384 struct rescale *rescale; in rescale_probe() local
398 sizeof_ext_info *= sizeof(*rescale->ext_info); in rescale_probe()
401 sizeof_priv = sizeof(*rescale) + sizeof_ext_info; in rescale_probe()
407 rescale = iio_priv(indio_dev); in rescale_probe()
409 rescale->cfg = of_device_get_match_data(dev); in rescale_probe()
410 rescale->numerator = 1; in rescale_probe()
411 rescale->denominator = 1; in rescale_probe()
412 rescale->offset = 0; in rescale_probe()
414 ret = rescale->cfg->props(dev, rescale); in rescale_probe()
418 if (!rescale->numerator || !rescale->denominator) { in rescale_probe()
425 rescale->source = source; in rescale_probe()
430 indio_dev->channels = &rescale->chan; in rescale_probe()
433 rescale->ext_info = devm_kmemdup(dev, in rescale_probe()
436 if (!rescale->ext_info) in rescale_probe()
439 for (i = 0; rescale->ext_info[i].name; ++i) { in rescale_probe()
441 &rescale->ext_info[i]; in rescale_probe()
451 ret = rescale_configure_channel(dev, rescale); in rescale_probe()