Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

iio: Update iio_channel_get API to use consumer device pointer as argument

For iio_channel_get to work with OF based configurations, it needs the
consumer device pointer instead of the consumer device name as argument.

Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Acked-by: Anton Vorontsov <anton@enomsg.org>
Acked-by: Chanwoo Choi <cw00.choi@samsung.com>
Signed-off-by: Jonathan Cameron <jic23@kernel.org>

authored by

Guenter Roeck and committed by
Jonathan Cameron
5aa57f0a 860c9c54

+20 -11
+1 -2
drivers/extcon/extcon-adc-jack.c
··· 135 135 ; 136 136 data->num_conditions = i; 137 137 138 - data->chan = iio_channel_get(dev_name(&pdev->dev), 139 - pdata->consumer_channel); 138 + data->chan = iio_channel_get(&pdev->dev, pdata->consumer_channel); 140 139 if (IS_ERR(data->chan)) { 141 140 err = PTR_ERR(data->chan); 142 141 goto out;
+10 -1
drivers/iio/inkern.c
··· 93 93 } 94 94 95 95 96 - struct iio_channel *iio_channel_get(const char *name, const char *channel_name) 96 + static struct iio_channel *iio_channel_get_sys(const char *name, 97 + const char *channel_name) 97 98 { 98 99 struct iio_map_internal *c_i = NULL, *c = NULL; 99 100 struct iio_channel *channel; ··· 144 143 error_no_mem: 145 144 iio_device_put(c->indio_dev); 146 145 return ERR_PTR(err); 146 + } 147 + 148 + struct iio_channel *iio_channel_get(struct device *dev, 149 + const char *channel_name) 150 + { 151 + const char *name = dev ? dev_name(dev) : NULL; 152 + 153 + return iio_channel_get_sys(name, channel_name); 147 154 } 148 155 EXPORT_SYMBOL_GPL(iio_channel_get); 149 156
+2 -2
drivers/power/generic-adc-battery.c
··· 287 287 * based on the channel supported by consumer device. 288 288 */ 289 289 for (chan = 0; chan < ARRAY_SIZE(gab_chan_name); chan++) { 290 - adc_bat->channel[chan] = iio_channel_get(dev_name(&pdev->dev), 291 - gab_chan_name[chan]); 290 + adc_bat->channel[chan] = iio_channel_get(&pdev->dev, 291 + gab_chan_name[chan]); 292 292 if (IS_ERR(adc_bat->channel[chan])) { 293 293 ret = PTR_ERR(adc_bat->channel[chan]); 294 294 } else {
+4 -4
drivers/power/lp8788-charger.c
··· 580 580 } 581 581 } 582 582 583 - static void lp8788_setup_adc_channel(const char *consumer_name, 583 + static void lp8788_setup_adc_channel(struct device *dev, 584 584 struct lp8788_charger *pchg) 585 585 { 586 586 struct lp8788_charger_platform_data *pdata = pchg->pdata; ··· 590 590 return; 591 591 592 592 /* ADC channel for battery voltage */ 593 - chan = iio_channel_get(consumer_name, pdata->adc_vbatt); 593 + chan = iio_channel_get(dev, pdata->adc_vbatt); 594 594 pchg->chan[LP8788_VBATT] = IS_ERR(chan) ? NULL : chan; 595 595 596 596 /* ADC channel for battery temperature */ 597 - chan = iio_channel_get(consumer_name, pdata->adc_batt_temp); 597 + chan = iio_channel_get(dev, pdata->adc_batt_temp); 598 598 pchg->chan[LP8788_BATT_TEMP] = IS_ERR(chan) ? NULL : chan; 599 599 } 600 600 ··· 704 704 if (ret) 705 705 return ret; 706 706 707 - lp8788_setup_adc_channel(pdev->name, pchg); 707 + lp8788_setup_adc_channel(&pdev->dev, pchg); 708 708 709 709 ret = lp8788_psy_register(pdev, pchg); 710 710 if (ret)
+3 -2
include/linux/iio/consumer.h
··· 31 31 32 32 /** 33 33 * iio_channel_get() - get description of all that is needed to access channel. 34 - * @name: Unique name of the device as provided in the iio_map 34 + * @dev: Pointer to consumer device. Device name must match 35 + * the name of the device as provided in the iio_map 35 36 * with which the desired provider to consumer mapping 36 37 * was registered. 37 38 * @consumer_channel: Unique name to identify the channel on the consumer 38 39 * side. This typically describes the channels use within 39 40 * the consumer. E.g. 'battery_voltage' 40 41 */ 41 - struct iio_channel *iio_channel_get(const char *name, 42 + struct iio_channel *iio_channel_get(struct device *dev, 42 43 const char *consumer_channel); 43 44 44 45 /**