Re: [PATCH] iio: adc: Nothing in ADC should be a bool CONFIG

From: Doug Anderson
Date: Thu Apr 24 2014 - 16:23:21 EST


Jonathan / Naveen,

On Wed, Apr 23, 2014 at 9:37 PM, Jonathan Cameron <jic23@xxxxxxxxxx> wrote:
> On 23/04/14 22:54, Doug Anderson wrote:
>>
>> Jonathan,
>>
>> On Wed, Apr 23, 2014 at 1:54 PM, Jonathan Cameron <jic23@xxxxxxxxxx>
>> wrote:
>>>
>>> On 22/04/14 01:03, Doug Anderson wrote:
>>>>
>>>>
>>>> The whole IIO subsystem can be moved to a module. If you make it a
>>>> module then stuff marked as "Y" in the adc directory simply won't be
>>>> linked in properly.
>>>>
>>>> The two configs that were wrong were EXYNOS_ADC and LP8788_ADC. I
>>>> know for a fact that EXYNOS_ADC will work as a module (though it
>>>> appears to crash when you unload it--that needs to be addressed
>>>> separately).
>>>
>>>
>>> I'd really like to see this pinned down before taking this patch.
>>> I can see you argument that the current approach is clearly wrong,
>>> but swapping one issue for another is not an approach I'd particularly
>>> like to take...
>>>
>>> I can't immediately spot the cause of the crash, but there are certainly
>>> some interesting order issues in this driver. Not enabling the vdd
>>> regulator until after the userspace interfaces are exposed (by the
>>> iio_device_register call) is interesting for a start.
>>>
>>> The remove doesn't run in the reverse of the probe order (see clocks
>>> vs regulators for example.)
>>>
>>> Gah, my reviewing for one clearly missed some things in this driver.
>>
>>
>> OK, fair enough. I took a quick look and couldn't spot anything
>> either. I've requested that Samsung dig into these problems. If they
>> are unable to I will take a crack at it as time permits. ;)
>>
> Cool and good luck (either way ;)

Ah ha! Naveen pointed out that it was the "device_for_each_child"
that was the source of the crash. ...and here's the problem... I
think this is what we want:

- ret = of_platform_populate(np, exynos_adc_match, NULL, &pdev->dev);
+ ret = of_platform_populate(np, exynos_adc_match, NULL, &indio_dev->dev);

- device_for_each_child(&pdev->dev, NULL,
+ device_for_each_child(&indio_dev->dev, NULL,

Naveen has been volunteered to send the patch up. ;) Naveen:
hopefully you can address Jonathan's other concerns as well. ;)

-Doug
--
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/