net: dwc_eth_qos: use generic ethernet phy for stm32 variant
authorPatrick Delaunay <patrick.delaunay@foss.st.com>
Tue, 20 Jul 2021 18:09:55 +0000 (20:09 +0200)
committerRamon Fried <rfried.dev@gmail.com>
Thu, 22 Jul 2021 19:05:44 +0000 (22:05 +0300)
Use the generic ethernet phy which already manages the correct binding
for gpio reset, including the assert an deassert delays.

Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com>
drivers/net/Kconfig
drivers/net/dwc_eth_qos.c

index 726ad36..130db9f 100644 (file)
@@ -206,6 +206,7 @@ config DWC_ETH_QOS_IMX
 config DWC_ETH_QOS_STM32
        bool "Synopsys DWC Ethernet QOS device support for STM32"
        depends on DWC_ETH_QOS
+       select DM_ETH_PHY
        default y if ARCH_STM32MP
        help
          The Synopsys Designware Ethernet QOS IP block with the specific
index a57c357..9b1746b 100644 (file)
@@ -696,29 +696,6 @@ static int eqos_start_resets_tegra186(struct udevice *dev)
 
 static int eqos_start_resets_stm32(struct udevice *dev)
 {
-       struct eqos_priv *eqos = dev_get_priv(dev);
-       int ret;
-
-       debug("%s(dev=%p):\n", __func__, dev);
-       if (dm_gpio_is_valid(&eqos->phy_reset_gpio)) {
-               ret = dm_gpio_set_value(&eqos->phy_reset_gpio, 1);
-               if (ret < 0) {
-                       pr_err("dm_gpio_set_value(phy_reset, assert) failed: %d",
-                              ret);
-                       return ret;
-               }
-
-               udelay(2);
-
-               ret = dm_gpio_set_value(&eqos->phy_reset_gpio, 0);
-               if (ret < 0) {
-                       pr_err("dm_gpio_set_value(phy_reset, deassert) failed: %d",
-                              ret);
-                       return ret;
-               }
-       }
-       debug("%s: OK\n", __func__);
-
        return 0;
 }
 
@@ -739,18 +716,6 @@ static int eqos_stop_resets_tegra186(struct udevice *dev)
 
 static int eqos_stop_resets_stm32(struct udevice *dev)
 {
-       struct eqos_priv *eqos = dev_get_priv(dev);
-       int ret;
-
-       if (dm_gpio_is_valid(&eqos->phy_reset_gpio)) {
-               ret = dm_gpio_set_value(&eqos->phy_reset_gpio, 1);
-               if (ret < 0) {
-                       pr_err("dm_gpio_set_value(phy_reset, assert) failed: %d",
-                              ret);
-                       return ret;
-               }
-       }
-
        return 0;
 }
 
@@ -1772,7 +1737,6 @@ static int eqos_probe_resources_stm32(struct udevice *dev)
        struct eqos_priv *eqos = dev_get_priv(dev);
        int ret;
        phy_interface_t interface;
-       struct ofnode_phandle_args phandle_args;
 
        debug("%s(dev=%p):\n", __func__, dev);
 
@@ -1812,20 +1776,6 @@ static int eqos_probe_resources_stm32(struct udevice *dev)
        if (ret)
                pr_warn("No phy clock provided %d", ret);
 
-       ret = dev_read_phandle_with_args(dev, "phy-handle", NULL, 0, 0,
-                                        &phandle_args);
-       if (!ret) {
-               /* search "reset-gpios" in phy node */
-               ret = gpio_request_by_name_nodev(phandle_args.node,
-                                                "reset-gpios", 0,
-                                                &eqos->phy_reset_gpio,
-                                                GPIOD_IS_OUT |
-                                                GPIOD_IS_OUT_ACTIVE);
-               if (ret)
-                       pr_warn("gpio_request_by_name(phy reset) not provided %d",
-                               ret);
-       }
-
        debug("%s: OK\n", __func__);
        return 0;