MLK-17402 imx8qm/qxp_arm2: Reset ENET1 PHY and MAX7322 at init
authorYe Li <ye.li@nxp.com>
Wed, 17 Jan 2018 07:46:54 +0000 (23:46 -0800)
committerYe Li <ye.li@nxp.com>
Wed, 17 Jan 2018 13:15:16 +0000 (05:15 -0800)
Since kernel enables both ENET0 and ENET1, so change to reset ENET1
PHY and MAX7322 as well even the configuration is set to use ENET0
in u-boot.

Signed-off-by: Ye Li <ye.li@nxp.com>
board/freescale/imx8qm_arm2/imx8qm_arm2.c
board/freescale/imx8qxp_arm2/imx8qxp_arm2.c

index 61db268..c31e5d1 100644 (file)
@@ -287,31 +287,34 @@ static void setup_iomux_fec(void)
 
 static void enet_device_phy_reset(void)
 {
-       struct gpio_desc desc;
+       struct gpio_desc desc_enet0;
+       struct gpio_desc desc_enet1;
        int ret;
 
-       if (0 == CONFIG_FEC_ENET_DEV) {
-               ret = dm_gpio_lookup_name("gpio@18_1", &desc);
-               if (ret)
-                       return;
+       ret = dm_gpio_lookup_name("gpio@18_1", &desc_enet0);
+       if (ret)
+               return;
 
-               ret = dm_gpio_request(&desc, "enet0_reset");
-               if (ret)
-                       return;
-       } else {
-               ret = dm_gpio_lookup_name("gpio@18_4", &desc);
-               if (ret)
-                       return;
+       ret = dm_gpio_request(&desc_enet0, "enet0_reset");
+       if (ret)
+               return;
+       ret = dm_gpio_lookup_name("gpio@18_4", &desc_enet1);
+       if (ret)
+               return;
 
-               ret = dm_gpio_request(&desc, "enet1_reset");
-               if (ret)
-                       return;
-       }
+       ret = dm_gpio_request(&desc_enet1, "enet1_reset");
+       if (ret)
+               return;
+
+       dm_gpio_set_dir_flags(&desc_enet0, GPIOD_IS_OUT);
+       dm_gpio_set_value(&desc_enet0, 0);
+       udelay(50);
+       dm_gpio_set_value(&desc_enet0, 1);
 
-       dm_gpio_set_dir_flags(&desc, GPIOD_IS_OUT);
-       dm_gpio_set_value(&desc, 0);
+       dm_gpio_set_dir_flags(&desc_enet1, GPIOD_IS_OUT);
+       dm_gpio_set_value(&desc_enet1, 0);
        udelay(50);
-       dm_gpio_set_value(&desc, 1);
+       dm_gpio_set_value(&desc_enet1, 1);
 
        /* The board has a long delay for this reset to become stable */
        mdelay(200);
index 362957d..5eb61b0 100644 (file)
@@ -255,31 +255,35 @@ static void setup_iomux_fec(void)
 
 static void enet_device_phy_reset(void)
 {
-       struct gpio_desc desc;
+       struct gpio_desc desc_enet0;
+       struct gpio_desc desc_enet1;
        int ret;
 
-       if (0 == CONFIG_FEC_ENET_DEV) {
-               ret = dm_gpio_lookup_name("gpio@18_1", &desc);
-               if (ret)
-                       return;
+       ret = dm_gpio_lookup_name("gpio@18_1", &desc_enet0);
+       if (ret)
+               return;
 
-               ret = dm_gpio_request(&desc, "enet0_reset");
-               if (ret)
-                       return;
-       } else {
-               ret = dm_gpio_lookup_name("gpio@18_4", &desc);
-               if (ret)
-                       return;
+       ret = dm_gpio_request(&desc_enet0, "enet0_reset");
+       if (ret)
+               return;
 
-               ret = dm_gpio_request(&desc, "enet1_reset");
-               if (ret)
-                       return;
-       }
+       ret = dm_gpio_lookup_name("gpio@18_4", &desc_enet1);
+       if (ret)
+               return;
+
+       ret = dm_gpio_request(&desc_enet1, "enet1_reset");
+       if (ret)
+               return;
+
+       dm_gpio_set_dir_flags(&desc_enet0, GPIOD_IS_OUT);
+       dm_gpio_set_value(&desc_enet0, 0);
+       udelay(50);
+       dm_gpio_set_value(&desc_enet0, 1);
 
-       dm_gpio_set_dir_flags(&desc, GPIOD_IS_OUT);
-       dm_gpio_set_value(&desc, 0);
+       dm_gpio_set_dir_flags(&desc_enet1, GPIOD_IS_OUT);
+       dm_gpio_set_value(&desc_enet1, 0);
        udelay(50);
-       dm_gpio_set_value(&desc, 1);
+       dm_gpio_set_value(&desc_enet1, 1);
 
        /* The board has a long delay for this reset to become stable */
        mdelay(200);