Re: [PATCH net] net: broadcom: Imply BROADCOM_PHY for BCMGENET

From: Florian Fainelli
Date: Mon May 11 2020 - 14:19:46 EST




On 5/11/2020 12:21 AM, Marek Szyprowski wrote:
> Hi Florian,
>
> On 09.05.2020 00:32, Florian Fainelli wrote:
>> The GENET controller on the Raspberry Pi 4 (2711) is typically
>> interfaced with an external Broadcom PHY via a RGMII electrical
>> interface. To make sure that delays are properly configured at the PHY
>> side, ensure that we get a chance to have the dedicated Broadcom PHY
>> driver (CONFIG_BROADCOM_PHY) enabled for this to happen.
>>
>> Fixes: 402482a6a78e ("net: bcmgenet: Clear ID_MODE_DIS in EXT_RGMII_OOB_CTRL when not needed")
>> Reported-by: Marek Szyprowski <m.szyprowski@xxxxxxxxxxx>
>> Signed-off-by: Florian Fainelli <f.fainelli@xxxxxxxxx>
>> ---
>> David,
>>
>> I would like Marek to indicate whether he is okay or not with this
>> change. Thanks!
>
> It is better. It fixes the default values for ARM 32bit
> bcm2835_defconfig and ARM 64bit defconfig, so you can add:
>
> Tested-by: Marek Szyprowski <m.szyprowski@xxxxxxxxxxx>
>
> There is still an issue there. In case of ARM 64bit, when Genet driver
> is configured as a module, BROADCOM_PHY is also set to module. When I
> changed Genet to be built-in, BROADCOM_PHY stayed selected as module.

OK.

> This case doesn't work, as Genet driver is loaded much earlier than the
> rootfs/initrd/etc is available, thus broadcom phy driver is not loaded
> at all. It looks that some kind of deferred probe is missing there.

In the absence of a specific PHY driver the Generic PHY driver gets used
instead. This is a valid situation as I described in my other email
because the boot loader/firmware could have left the PHY properly
configured with the expected RGMII delays and configuration such that
Linux does not need to be aware of anything. I suppose we could change
the GENET driver when running on the 2711 platform to reject the PHY
driver being "Generic PHY" on the premise that a specialized driver
should be used instead, but that seems a bit too restrictive IMHO.

Do you prefer a "select BROADCOM_PHY if ARCH_BCM2835" then?
--
Florian