Re: [PATCH 1/3] gpio: brcmstb: have driver register during subsys_initcall()

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi, sorry I am late to this thead.  Our brcmstb PCIe code is using
platform_driver_probe() which does not tolerate EPROBE_DEFER. Also, I
do not see any "cost" associated with having gpio-brcmstb.c using
subsys_initcall(); in fact, I see 33 gpio-*.c files that use
subsys_initcall().  Thanks, Jim

On Thu, Jan 7, 2016 at 1:12 PM, Florian Fainelli <f.fainelli@xxxxxxxxx> wrote:
> On 06/01/16 22:05, Gregory Fong wrote:
>> Hello Florian and Jim,
>>
>> On Wed, Jan 6, 2016 at 10:55 AM, Florian Fainelli <f.fainelli@xxxxxxxxx> wrote:
>>> From: Jim Quinlan <jim2101024@xxxxxxxxx>
>>>
>>> Because regulators are started with subsys_initcall(), and gpio references may
>>> be contained in the regulators, it makes sense to start the brcmstb-gpio's with
>>> a subsys_initcall(). The order within the drivers/Makefile ensures that the
>>> gpio initialization happens prior to the regulator's initialization.
>>>
>>> We need to unroll module_platform_driver() now to allow this and have custom
>>> exit and init module functions to control the initialization level.
>>
>> If gpio pins are needed for a regulator to come up, wouldn't it be
>> better to handle this using deferred probe instead of initcall-based
>> initialization?  Deferred probe has its problems, but I was under the
>> impression that it's the encouraged way to resolve these sort of
>> initialization order issues.
>
> To give you some more context associated with this change, we now have
> some boards which have GPIO-connected regulators to turn on/off PCIe
> endpoint devices. In the downstream kernel, and with lack of a better
> solution for now, we ended-up having the PCIE Root Complex driver to
> claim these regulator, and flip them on shortly before attempting a bus
> scan.
>
> If we used deferred probing, I am assuming the sequence of events could
> go like this:
>
> - PCIe driver gets initialized, looks for regulators, cannot get a
> handle on them, gets EPROBE_DEFER (arch_initcall right now)
> - regulator subsystem gets initialized, does not have a valid GPIO
> provider driver yet, returns EPROBE_DEFER (subsys_initcall)
> - GPIO provider (gpio-brcmstb) finally gets probed and registered,
> regulator get registered and available, PCIe RC driver can now use them
> and power on the PCIE end point (module_initcall)
>
> I suppose this might be working actually, let me go back to the white
> board and look at this with Jim.
> --
> Florian
--
To unsubscribe from this list: send the line "unsubscribe linux-gpio" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux SPI]     [Linux Kernel]     [Linux ARM (vger)]     [Linux ARM MSM]     [Linux Omap]     [Linux Arm]     [Linux Tegra]     [Fedora ARM]     [Linux for Samsung SOC]     [eCos]     [Linux Fastboot]     [Gcc Help]     [Git]     [DCCP]     [IETF Announce]     [Security]     [Linux MIPS]     [Yosemite Campsites]

  Powered by Linux