[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <YcjlMCacTTJ4RsSA@shell.armlinux.org.uk>
Date: Sun, 26 Dec 2021 21:57:04 +0000
From: "Russell King (Oracle)" <linux@...linux.org.uk>
To: Andrew Lunn <andrew@...n.ch>
Cc: Daniel Golle <daniel@...rotopia.org>,
linux-mediatek@...ts.infradead.org, netdev@...r.kernel.org,
linux-arm-kernel@...ts.infradead.org, linux-kernel@...r.kernel.org,
Felix Fietkau <nbd@....name>, John Crispin <john@...ozen.org>,
Sean Wang <sean.wang@...iatek.com>,
Mark Lee <Mark-MC.Lee@...iatek.com>,
"David S. Miller" <davem@...emloft.net>,
Jakub Kicinski <kuba@...nel.org>,
Matthias Brugger <matthias.bgg@...il.com>
Subject: Re: [PATCH] net: ethernet: mtk_eth_soc: implement Clause 45 MDIO
access
On Sun, Dec 26, 2021 at 10:51:08PM +0100, Andrew Lunn wrote:
> > + if (phy_register & MII_ADDR_C45) {
> > + u8 dev_num = (phy_register >> 16) & 0x1f;
> > + u16 reg = (u16)(phy_register & 0xffff);
>
> Hi Daniel
>
> You can use the helpers
>
> mdio_phy_id_is_c45()
> mdio_phy_id_prtad()
> mdio_phy_id_devad()
Before someone makes a mistake with this... no, don't use these. These
are for the userspace MII ioctl API, not for drivers.
The MII ioctl API passes the prtad and devad via the PHY ID field, and
is decoded by the above macros.
The internal API passes the prtad as the PHY ID and merges the devad
into the register address.
The C45 register address can be extracted by masking with
MII_REGADDR_C45_MASK. The C45 devad can be extracted by shifting right
by MII_DEVADDR_C45_SHIFT and masking 5 bits. We don't have helpers for
this.
--
RMK's Patch system: https://www.armlinux.org.uk/developer/patches/
FTTP is here! 40Mbps down 10Mbps up. Decent connectivity at last!
Powered by blists - more mailing lists