Re: [PATCH] arm64: dts: rockchip: rk356x: add ethernet aliases

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

 



Hi Dragan,

> Hello Philipp,
> 
> On 2024-07-02 14:46, Philipp Puschmann wrote:
>> Providing ethernet aliases solves a subtle problem for the rk3568. The
>> bus_id used for the sysfs directory name of the mdio. Without ethernet
>> alias the bus_id is always 0 and so creating the sysfs directory for the
>> second mdio fails with a duplicate filename error and by this the setup
>> of the second ethernet port fails too.
>>
>> Note: The alias numbering is inverted as gmac1 comes from more generic
>> rk356x.dtsi but gmac0 comes from specialised rk3568.
> 
> Please see the following commits and the discussions on the rockchip-linux
> mailing list that are linked in them:
> 
> - b0140a1b3b1d ("arm64: dts: rockchip: Add ethernet0 alias to the dts
>   for RK3588(S) boards")
> - 36d9b3ae708e ("arm64: dts: rockchip: Add ethernet0 alias to the dts
>   for RK3566 boards")
> - 5d90cb1edcf7 ("arm64: dts: rockchip: Remove ethernet0 alias from the
>   SoC dtsi for RK3399")
> - c900fef5deff ("arm64: dts: rockchip: Remove ethernet0 alias from the
>   SoC dtsi for RK3368")
>> To sum it up, ethernetX aliases are considered board-level features,
> because not all boards/devices actually expose the Ethernet interfaces
> built into the SoCs.  Thus, adding ethernetX aliases to the SoC dtsi
> files, unfortunately, isn't an acceptable option.
Are ethernet aliases are handled differently than i2c, serial and spi aliases?
There are aliases for each of them, without doing any harm. And even if the gmac
nodes are disabled with status property?
On my rk3568-based custom board i had no ethernet aliases and networking was
enabled normally with the status properties of the gmac nodes. Either one or
the other or both network devices were initialized. Would be strange if an
alias would be used without regard to initializing a device driver.

> 
> The sysfs issue that you've discovered should be instead solved in some
> other, more systemic way.
The bus_id value comes from stmmac_platform.c and of_alias_get_id() with
"ethernet" as parameter is used, what is a common way in the kernel. It
delivers unique ints starting with 0. stmmac_mdio then uses the bus_id to
create a mdio bus id string stmmac-${bus_id} to register a mdio_bus.

[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux