]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
phy: adin: add readext and writeext support for mdio cmd
authorNate Drude <nate.d@variscite.com>
Tue, 11 Jul 2023 21:59:15 +0000 (16:59 -0500)
committerTom Rini <trini@konsulko.com>
Thu, 27 Jul 2023 18:32:12 +0000 (14:32 -0400)
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>
drivers/net/phy/adin.c

index fb9f1e4c70d3ef6c1c459113d1fdb63221b6423b..0970449d0f9f982cf55cae660fe129196862b481 100644 (file)
@@ -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,
 };