ARM: kirkwood: SBx81LIFKW: update for DM_GPIO
authorChris Packham <judge.packham@gmail.com>
Thu, 4 Aug 2022 09:06:24 +0000 (21:06 +1200)
committerStefan Roese <sr@denx.de>
Tue, 9 Aug 2022 06:58:27 +0000 (08:58 +0200)
Update mv88e61xx_hw_reset() to use the DM_GPIO API to toggle the reset
line for the linkstreet switch.

Signed-off-by: Chris Packham <judge.packham@gmail.com>
Reviewed-by: Stefan Roese <sr@denx.de>
board/alliedtelesis/SBx81LIFKW/sbx81lifkw.c

index feb8b6b..e0a7f3f 100644 (file)
@@ -17,7 +17,8 @@
 #include <asm/arch/cpu.h>
 #include <asm/arch/soc.h>
 #include <asm/arch/mpp.h>
-#include <asm/arch/gpio.h>
+#include <asm-generic/gpio.h>
+#include <dm.h>
 
 /* Note: GPIO differences between specific boards
  *
@@ -37,8 +38,6 @@
 #define SBX81LIFKW_OE_VAL_LOW   (BIT(31) | BIT(30) | BIT(28) | BIT(27))
 #define SBX81LIFKW_OE_VAL_HIGH  (BIT(0) | BIT(1))
 
-#define MV88E6097_RESET                27
-
 DECLARE_GLOBAL_DATA_PTR;
 
 int board_early_init_f(void)
@@ -143,11 +142,23 @@ void reset_phy(void)
 #ifdef CONFIG_MV88E61XX_SWITCH
 int mv88e61xx_hw_reset(struct phy_device *phydev)
 {
+       struct gpio_desc desc;
+       int ret;
+
+       ret = dm_gpio_lookup_name("mvebu0_27", &desc);
+       if (ret)
+               return ret;
+
+       ret = dm_gpio_request(&desc, "linkstreet_rst");
+       if (ret)
+               return ret;
+
        /* Ensure the 88e6097 gets at least 10ms Reset
         */
-       kw_gpio_set_value(MV88E6097_RESET, 0);
+       dm_gpio_set_dir_flags(&desc, GPIOD_IS_OUT);
+       dm_gpio_set_value(&desc, 0);
        mdelay(20);
-       kw_gpio_set_value(MV88E6097_RESET, 1);
+       dm_gpio_set_value(&desc, 1);
        mdelay(20);
 
        phydev->advertising = ADVERTISED_10baseT_Half | ADVERTISED_10baseT_Full;