diff options
Diffstat (limited to 'board/freescale/imx8qm_arm2/imx8qm_arm2.c')
-rw-r--r-- | board/freescale/imx8qm_arm2/imx8qm_arm2.c | 41 |
1 files changed, 22 insertions, 19 deletions
diff --git a/board/freescale/imx8qm_arm2/imx8qm_arm2.c b/board/freescale/imx8qm_arm2/imx8qm_arm2.c index 61db268e1e..c31e5d159d 100644 --- a/board/freescale/imx8qm_arm2/imx8qm_arm2.c +++ b/board/freescale/imx8qm_arm2/imx8qm_arm2.c @@ -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); |