Re: [PATCH] iio: adc: add exynos5 adc driver under iio framwork

From: Lars-Peter Clausen
Date: Thu Jan 24 2013 - 04:52:59 EST


On 01/24/2013 01:42 AM, Doug Anderson wrote:
> Lars,
>
> On Wed, Jan 23, 2013 at 4:52 AM, Lars-Peter Clausen <lars@xxxxxxxxxx> wrote:
>>> Few doubts regarding the mappings and child device handling.
>>> Kindly, suggest me better methods.
>>
>> The patch looks mostly good now. As for the mappings, the problem is that we
>> currently do not have any device tree bindings for IIO. So a proper solution
>> would be to add dt bindings for IIO.
>
> Can you explain more how you think this would work? It seems like
> just having child nodes as platform drivers would be OK (to me) and
> having them instantiated with of_platform_populate() seems reasonable.
>
> ...but the one thing that is missing is a way for children to get
> access to the channel properly.
>
> The children have access to the ADC "struct device" (it is their
> parent device) and have a channel number (their "reg" field), but
> there is no API call to map this to a "struct iio_channel". Is that
> all that's needed in this case? ...or are you envisioning something
> more?

Well, the idea is that the consumer doesn't need to know the channel number.
That's what the mapping takes care of. It basically creates a consumer alias
for the channel. When requesting the channel the consumer always uses the
same name.

iio_channel_get(dev_name(&pdev->dev), "voltage");

And the mapping contains an entry which maps the tuple of device name and
channel name to a real IIO channel which as been registered by a IIO device.
Note if there is only one channel you can also just use NULL for the channel
name. This is similar to how clocks are managed with the clk framework.

Now for the dt bindings I think we should stick to something similar to what
the clk framework does.

E.g.

adc: adc@12D10000 {

#io-channel-cells = <1>;
io-channel-output-names = "adc1", "adc2", ...;

ncp15wb473@0 {
compatible = "ntc,ncp15wb473";
...
io-channels = <&adc 0>; // First ADC channel
io-channel-names = "voltage";
};

ncp15wb473@0 {
compatible = "ntc,ncp15wb473";
...
io-channels = <&adc 1>; // Second ADC channel
io-channel-names = "voltage";
}
};

io-channel-output-names and io-channel-names can be optional. In the case
where there is only one channel it's not really necessary to use
io-channel-names.

- Lars
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/