gpio-pxa initcall level change and machine init breakage
Mike Dunn
mikedunn at newsguy.com
Sun Apr 21 18:23:50 EDT 2013
On 04/20/2013 11:02 PM, Haojian Zhuang wrote:
> On 20 April 2013 23:26, Mike Dunn <mikedunn at newsguy.com> wrote:
>> Hi,
>>
>> After a few months of neglect, I rebased my palm treo 680 kernel with the latest
>> from Linus' official tree, and now all the calls to gpio lib functions
>> (gpio_request(), etc) made from the init_machine() method in struct machine_desc
>> fail. I tracked this back to commit 6c7e660a27da7494c670bfba21cfeba30457656c
>> dated Jan 23 2013
>>
>> gpio: pxa: set initcall level to module init
>>
>> gpio & pinctrl driver are used together. The pinctrl driver is already
>> launched before gpio driver in Makefile. So set gpio driver to module
>> init level. Otherwise, the sequence will be inverted.
>>
>> Signed-off-by: Haojian Zhuang <haojian.zhuang at linaro.org>
>> Signed-off-by: Linus Walleij <linus.walleij at linaro.org>
>>
>> At the time, Haojian addressed a question about this patch regarding module
>> dependencies, advising use of the deferred probe infrastructure. But unless I'm
>> mistaken, mine is an initcall level problem, not a dependency issue among driver
>> probes. Now that gpio-pxa initialization is at the device level (initcall6),
>> calls to gpiolib are no longer possible from init_machine(), which remains at
>> the initcall3 level.
>>
>> I feel like I must be missing something, because a lot of pxa boards call
>> gpiolib from init machine(), so my breakage should not be an isolated case.
>>
>> If I'm not missing anything and the patch is necessary, it looks like one
>> solution would be to move all the initializations that use gpiolib to the
>> init_late method in struct machine_desc, which runs as initcall7.
>>
>> Grateful for any advice!
>>
>> Thanks,
>> Mike
>
> Actually gpio request should be handled in the driver, not machine platform
> driver. For example, lcd init may request gpio. pxafb.c provides the callback
> to handle it. We need to move code of requesting gpio into the callback.
Yes, I see. Thanks for the example.
>
> Since this change breaks current platform, we have to revert it. We still need
> a code cleanup in arch-pxa directory.
I knew some cleanup was needed to the palm stuff, but didn't realize the extent.
Should not be too difficult; I hope to have patches soon. But there are other
pxa boards that grab various gpios in init_machine() and may not be as
straightforward.
>
> Linus,
> Could you help to revert this commit? Or do I need to send a revert commit
> to you?
Will the big guy see this? Only posted to linux-arm-kernel ML.
Thanks Haojian,
Mike
More information about the linux-arm-kernel
mailing list