Commit 5aa57f0a authored by Guenter Roeck's avatar Guenter Roeck Committed by Jonathan Cameron

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: default avatarGuenter Roeck <linux@roeck-us.net>
Acked-by: default avatarAnton Vorontsov <anton@enomsg.org>
Acked-by: default avatarChanwoo Choi <cw00.choi@samsung.com>
Signed-off-by: default avatarJonathan Cameron <jic23@kernel.org>
parent 860c9c54
...@@ -135,8 +135,7 @@ static int adc_jack_probe(struct platform_device *pdev) ...@@ -135,8 +135,7 @@ static int adc_jack_probe(struct platform_device *pdev)
; ;
data->num_conditions = i; data->num_conditions = i;
data->chan = iio_channel_get(dev_name(&pdev->dev), data->chan = iio_channel_get(&pdev->dev, pdata->consumer_channel);
pdata->consumer_channel);
if (IS_ERR(data->chan)) { if (IS_ERR(data->chan)) {
err = PTR_ERR(data->chan); err = PTR_ERR(data->chan);
goto out; goto out;
......
...@@ -93,7 +93,8 @@ static const struct iio_chan_spec ...@@ -93,7 +93,8 @@ static const struct iio_chan_spec
} }
struct iio_channel *iio_channel_get(const char *name, const char *channel_name) static struct iio_channel *iio_channel_get_sys(const char *name,
const char *channel_name)
{ {
struct iio_map_internal *c_i = NULL, *c = NULL; struct iio_map_internal *c_i = NULL, *c = NULL;
struct iio_channel *channel; struct iio_channel *channel;
...@@ -144,6 +145,14 @@ struct iio_channel *iio_channel_get(const char *name, const char *channel_name) ...@@ -144,6 +145,14 @@ struct iio_channel *iio_channel_get(const char *name, const char *channel_name)
iio_device_put(c->indio_dev); iio_device_put(c->indio_dev);
return ERR_PTR(err); return ERR_PTR(err);
} }
struct iio_channel *iio_channel_get(struct device *dev,
const char *channel_name)
{
const char *name = dev ? dev_name(dev) : NULL;
return iio_channel_get_sys(name, channel_name);
}
EXPORT_SYMBOL_GPL(iio_channel_get); EXPORT_SYMBOL_GPL(iio_channel_get);
void iio_channel_release(struct iio_channel *channel) void iio_channel_release(struct iio_channel *channel)
......
...@@ -287,8 +287,8 @@ static int gab_probe(struct platform_device *pdev) ...@@ -287,8 +287,8 @@ static int gab_probe(struct platform_device *pdev)
* based on the channel supported by consumer device. * based on the channel supported by consumer device.
*/ */
for (chan = 0; chan < ARRAY_SIZE(gab_chan_name); chan++) { for (chan = 0; chan < ARRAY_SIZE(gab_chan_name); chan++) {
adc_bat->channel[chan] = iio_channel_get(dev_name(&pdev->dev), adc_bat->channel[chan] = iio_channel_get(&pdev->dev,
gab_chan_name[chan]); gab_chan_name[chan]);
if (IS_ERR(adc_bat->channel[chan])) { if (IS_ERR(adc_bat->channel[chan])) {
ret = PTR_ERR(adc_bat->channel[chan]); ret = PTR_ERR(adc_bat->channel[chan]);
} else { } else {
......
...@@ -580,7 +580,7 @@ static void lp8788_irq_unregister(struct platform_device *pdev, ...@@ -580,7 +580,7 @@ static void lp8788_irq_unregister(struct platform_device *pdev,
} }
} }
static void lp8788_setup_adc_channel(const char *consumer_name, static void lp8788_setup_adc_channel(struct device *dev,
struct lp8788_charger *pchg) struct lp8788_charger *pchg)
{ {
struct lp8788_charger_platform_data *pdata = pchg->pdata; struct lp8788_charger_platform_data *pdata = pchg->pdata;
...@@ -590,11 +590,11 @@ static void lp8788_setup_adc_channel(const char *consumer_name, ...@@ -590,11 +590,11 @@ static void lp8788_setup_adc_channel(const char *consumer_name,
return; return;
/* ADC channel for battery voltage */ /* ADC channel for battery voltage */
chan = iio_channel_get(consumer_name, pdata->adc_vbatt); chan = iio_channel_get(dev, pdata->adc_vbatt);
pchg->chan[LP8788_VBATT] = IS_ERR(chan) ? NULL : chan; pchg->chan[LP8788_VBATT] = IS_ERR(chan) ? NULL : chan;
/* ADC channel for battery temperature */ /* ADC channel for battery temperature */
chan = iio_channel_get(consumer_name, pdata->adc_batt_temp); chan = iio_channel_get(dev, pdata->adc_batt_temp);
pchg->chan[LP8788_BATT_TEMP] = IS_ERR(chan) ? NULL : chan; pchg->chan[LP8788_BATT_TEMP] = IS_ERR(chan) ? NULL : chan;
} }
...@@ -704,7 +704,7 @@ static int lp8788_charger_probe(struct platform_device *pdev) ...@@ -704,7 +704,7 @@ static int lp8788_charger_probe(struct platform_device *pdev)
if (ret) if (ret)
return ret; return ret;
lp8788_setup_adc_channel(pdev->name, pchg); lp8788_setup_adc_channel(&pdev->dev, pchg);
ret = lp8788_psy_register(pdev, pchg); ret = lp8788_psy_register(pdev, pchg);
if (ret) if (ret)
......
...@@ -31,14 +31,15 @@ struct iio_channel { ...@@ -31,14 +31,15 @@ struct iio_channel {
/** /**
* iio_channel_get() - get description of all that is needed to access channel. * iio_channel_get() - get description of all that is needed to access channel.
* @name: Unique name of the device as provided in the iio_map * @dev: Pointer to consumer device. Device name must match
* the name of the device as provided in the iio_map
* with which the desired provider to consumer mapping * with which the desired provider to consumer mapping
* was registered. * was registered.
* @consumer_channel: Unique name to identify the channel on the consumer * @consumer_channel: Unique name to identify the channel on the consumer
* side. This typically describes the channels use within * side. This typically describes the channels use within
* the consumer. E.g. 'battery_voltage' * the consumer. E.g. 'battery_voltage'
*/ */
struct iio_channel *iio_channel_get(const char *name, struct iio_channel *iio_channel_get(struct device *dev,
const char *consumer_channel); const char *consumer_channel);
/** /**
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment