diff options
author | Nate Drude <nate.d@variscite.com> | 2023-07-11 16:59:15 -0500 |
---|---|---|
committer | Tom Rini <trini@konsulko.com> | 2023-07-27 13:41:44 -0400 |
commit | d2576fa75e6eccaa5d7d28127c5a65bbe596e658 (patch) | |
tree | 463d25491cf4e364bb545bdabff68f3a0f95aeb5 | |
parent | 25ebad9e036460c8b4cb24a0783deb4bc87fde77 (diff) | |
download | u-boot-WIP/2023-07-27-assorted-network-updates.zip u-boot-WIP/2023-07-27-assorted-network-updates.tar.gz u-boot-WIP/2023-07-27-assorted-network-updates.tar.bz2 |
phy: adin: add readext and writeext support for mdio cmdWIP/2023-07-27-assorted-network-updates
The adin phy has extended registers that can be accessed using
adin_ext_read and adin_ext_write. These registers can be read directly
using the mdio command using readext and writext. For example:
=> mdio rx ethernet@428a0000 0xff23
Reading from bus ethernet@428a0000
PHY at address 0:
65315 - 0xe01
Signed-off-by: Nate Drude <nate.d@variscite.com>
Reviewed-by: Marek Vasut <marek.vasut+renesas@mailbox.org>
-rw-r--r-- | drivers/net/phy/adin.c | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/drivers/net/phy/adin.c b/drivers/net/phy/adin.c index fb9f1e4..0970449 100644 --- a/drivers/net/phy/adin.c +++ b/drivers/net/phy/adin.c @@ -155,6 +155,18 @@ static int adin_ext_write(struct phy_device *phydev, const u32 regnum, const u16 return phy_write(phydev, MDIO_DEVAD_NONE, ADIN1300_EXT_REG_DATA, val); } +static int adin_extread(struct phy_device *phydev, int addr, int devaddr, + int regnum) +{ + return adin_ext_read(phydev, regnum); +} + +static int adin_extwrite(struct phy_device *phydev, int addr, + int devaddr, int regnum, u16 val) +{ + return adin_ext_write(phydev, regnum, val); +} + static int adin_config_clk_out(struct phy_device *phydev) { ofnode node = phy_get_ofnode(phydev); @@ -260,4 +272,6 @@ U_BOOT_PHY_DRIVER(ADIN1300) = { .config = adin1300_config, .startup = genphy_startup, .shutdown = genphy_shutdown, + .readext = adin_extread, + .writeext = adin_extwrite, }; |