Re: [PATCH V3 4/8] phy: Initialize phy core with subsys_initcall

From: Kishon Vijay Abraham I
Date: Thu Jan 30 2014 - 07:25:29 EST


On Thursday 30 January 2014 05:45 PM, Pratyush Anand wrote:
> On Thu, Jan 30, 2014 at 07:52:12PM +0800, Pratyush ANAND wrote:
>> On Thu, Jan 30, 2014 at 07:43:37PM +0800, Kishon Vijay Abraham I wrote:
>>> Hi,
>>>
>>> On Thursday 30 January 2014 04:18 PM, Mohit Kumar wrote:
>>>> From: Pratyush Anand <pratyush.anand@xxxxxx>
>>>>
>>>> PCIe RC drivers are initialized with subsys_initcall. Few PCIe drivers
>>>> like SPEAr13xx needs phy drivers to be initialized.
>>>
>>> Instead change PCIe RC drivers to module init. Phy drivers should be loaded
>>> very early otherwise. (Hint: drivers/Makefile).
>
> From hint, you mean that if makefile has pci entry (and hence RC
> driver entry) before card drivers entry, then it insures that rc
> driver's probe is called before card driver's probe?

That's right but here I was referring to PHY and PCI.

Thanks
Kishon

> I think, yes.
> And if yes, then what you say is acceptable :)
>
> Regards
> Pratyush
>>
>> I think PCIe RC driver can not be made module init. Bjorn can comment
>> better.
>>
>> All PCIe card drivers are initialized with module init. RC driver must
>> have been initialized before any card driver initialization.
>> Currently, card drivers does not have deferred probe concept, so I am
>> not sure if keeping RC driver as module init will work always.
>>
>> By the way, is there any side effect of loading phy driver very early?
>>
>> Regards
>> Pratyush
>>>
>>> Thanks
>>> Kishon
>>>>
>>>> Therefore initialize phy core driver with subsys_initcall to avoid
>>>> calling of phy_get before phy_class is created.
>>>>
>>>> Signed-off-by: Pratyush Anand <pratyush.anand@xxxxxx>
>>>> Cc: Mohit Kumar <mohit.kumar@xxxxxx>
>>>> Cc: Kishon Vijay Abraham I <kishon@xxxxxx>
>>>> Cc: Arnd Bergmann <arnd@xxxxxxxx>
>>>> Cc: spear-devel@xxxxxxxxxxx
>>>> Cc: linux-kernel@xxxxxxxxxxxxxxx
>>>> ---
>>>> drivers/phy/phy-core.c | 2 +-
>>>> 1 files changed, 1 insertions(+), 1 deletions(-)
>>>>
>>>> diff --git a/drivers/phy/phy-core.c b/drivers/phy/phy-core.c
>>>> index 03cf8fb..fa73101 100644
>>>> --- a/drivers/phy/phy-core.c
>>>> +++ b/drivers/phy/phy-core.c
>>>> @@ -685,7 +685,7 @@ static int __init phy_core_init(void)
>>>>
>>>> return 0;
>>>> }
>>>> -module_init(phy_core_init);
>>>> +subsys_initcall(phy_core_init);
>>>>
>>>> static void __exit phy_core_exit(void)
>>>> {
>>>>
>>>

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