Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+1 −2
Original line number Original line Diff line number Diff line
@@ -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;
+10 −1
Original line number Original line Diff line number Diff line
@@ -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 @@ error_no_mem:
	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)
+2 −2
Original line number Original line Diff line number Diff line
@@ -287,7 +287,7 @@ 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]);
+4 −4
Original line number Original line Diff line number Diff line
@@ -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,
		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)
	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)
+3 −2
Original line number Original line Diff line number Diff line
@@ -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);


/**
/**