Re: [PATCH v2 3/4] mfd: add support for Allwinner SoCs ADC

From: Jonathan Cameron
Date: Sat Jul 23 2016 - 06:56:18 EST


On 22/07/16 15:55, Lee Jones wrote:
> On Thu, 21 Jul 2016, Maxime Ripard wrote:
>
>> 1;4205;0c
>> On Thu, Jul 21, 2016 at 01:12:53PM +0100, Lee Jones wrote:
>>> On Wed, 20 Jul 2016, Jonathan Cameron wrote:
>>>
>>>> On 19/07/16 08:31, Lee Jones wrote:
>>>>> On Mon, 18 Jul 2016, Jonathan Cameron wrote:
>>>>>
>>>>>> On 15/07/16 10:59, Quentin Schulz wrote:
>>>>>>> The Allwinner SoCs all have an ADC that can also act as a touchscreen
>>>>>>> controller and a thermal sensor. For now, only the ADC and the thermal
>>>>>>> sensor drivers are probed by the MFD, the touchscreen controller support
>>>>>>> will be added later.
>>>>>>>
>>>>>>> Signed-off-by: Quentin Schulz <quentin.schulz@xxxxxxxxxxxxxxxxxx>
>>>>>> Hmm. Previous patch includes the header this one creates. Ordering issue?
>>>>>> The depends kind of prevents build failures by ensuring that can't be built
>>>>>> until this one is in place, but it is certainly an ugly way to do it.
>>>>>>
>>>>>> Few little bits innline.
>>>>>>> ---
>>>>>>>
>>>>>>> v2:
>>>>>>> - add license headers,
>>>>>>> - reorder alphabetically includes,
>>>>>>> - add SUNXI_GPADC_ prefixes for defines,
>>>>>>>
>>>>>>> drivers/mfd/Kconfig | 14 +++
>>>>>>> drivers/mfd/Makefile | 2 +
>>>>>>> drivers/mfd/sunxi-gpadc-mfd.c | 197 ++++++++++++++++++++++++++++++++++++
>>>>>>> include/linux/mfd/sunxi-gpadc-mfd.h | 23 +++++
>>>>>>> 4 files changed, 236 insertions(+)
>>>>>>> create mode 100644 drivers/mfd/sunxi-gpadc-mfd.c
>>>>>>> create mode 100644 include/linux/mfd/sunxi-gpadc-mfd.h
>>>>>
>>>>> [...]
>>>>>
>>>>>>> +static struct mfd_cell sun6i_gpadc_mfd_cells[] = {
>>>>>>> + {
>>>>>>> + .name = "sun6i-a31-gpadc-iio",
>>>>>>> + .resources = adc_resources,
>>>>>>> + .num_resources = ARRAY_SIZE(adc_resources),
>>>>>>> + }, {
>>>>>>> + .name = "iio_hwmon",
>>>>>> I still really dislike using this to force the probe of that driver but
>>>>>> kind of up to the hwmon / mfd guys on this.
>>>>>
>>>>> Can you at least say *why* you don't like it?
>>>> It just feels odd to have an mfd child that isn't really dependent
>>>> on the mfd hardware itself.
>>>>
>>>> Still if you are happy, mfd is your domain and my objections were
>>>> as you probably noticed not that strong - or well described!)
>>>>
>>>> So I'm fine with this.
>>>
>>> I see. So it's not actually part of the same IP/chip?
>>
>> The chip has a temperature sensor, and we want to expose that
>> temperature through IIO.
>>
>> But we don't really have the choice on how we probe iio-hwmon
>> here. The binding was already there, and we have to keep it.
>
> What binding?
>
The somewhat 'interesting' one for iio-hwmon I would guess is what
Maxime is referring to. Here they are using what was effectively
the old 'board file' methods inside the driver itself. Which is
fine and done in quite a few places - though we have some issues
with deferred probing that we can improve upon.

Anyhow, it's real hardware and as this doesn't have anything to
do with device tree there is no need to get around the objections
of lack of generality that bothers the dt maintainers :)

Lets go with it as it is. Sorry for confusing everyone!

p.s. I'm pitching a tech session for the KS at the moment
on ksummit-discuss to hit the fiddlier question of bindings
/ cross subsystem interactions if anyone is interested.