Message ID | 20210426174647.v2.5.I52d5d9f5fb91b6bd92ec7fed517bfe36074d487d@changeid |
---|---|
State | Awaiting Upstream |
Delegated to: | Ramon Fried |
Headers | show |
Series | net: dwc_eth_qos: add support of device tree configuration for reset delay | expand |
On Mon, Apr 26, 2021 at 6:47 PM Patrick Delaunay <patrick.delaunay@foss.st.com> wrote: > > Use the generic ethernet phy which already manages the correct binding > for gpio reset, including the assert an deassert delays. > > Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com> > --- > > Changes in v2: > - use generic ethernet phy for stm32 variant, this patch is a REWORK of > previous serie: the device parsing is done in eth-phy driver and the gpio > support is removed in stm32 variant: eqos_start/stop_resets_stm32 and > eqos_probe_resources_stm32. > > drivers/net/Kconfig | 1 + > drivers/net/dwc_eth_qos.c | 50 --------------------------------------- > 2 files changed, 1 insertion(+), 50 deletions(-) > > diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig > index 382639044b..adf43fb42a 100644 > --- a/drivers/net/Kconfig > +++ b/drivers/net/Kconfig > @@ -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 > diff --git a/drivers/net/dwc_eth_qos.c b/drivers/net/dwc_eth_qos.c > index e625aea8d1..3fb8bfaf3a 100644 > --- a/drivers/net/dwc_eth_qos.c > +++ b/drivers/net/dwc_eth_qos.c > @@ -700,29 +700,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; > } > > @@ -743,18 +720,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; > } > > @@ -1785,7 +1750,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); > > @@ -1825,20 +1789,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; > > -- > 2.17.1 > Reviewed-by: Ramon Fried <rfried.dev@gmail.com>
diff --git a/drivers/net/Kconfig b/drivers/net/Kconfig index 382639044b..adf43fb42a 100644 --- a/drivers/net/Kconfig +++ b/drivers/net/Kconfig @@ -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 diff --git a/drivers/net/dwc_eth_qos.c b/drivers/net/dwc_eth_qos.c index e625aea8d1..3fb8bfaf3a 100644 --- a/drivers/net/dwc_eth_qos.c +++ b/drivers/net/dwc_eth_qos.c @@ -700,29 +700,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; } @@ -743,18 +720,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; } @@ -1785,7 +1750,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); @@ -1825,20 +1789,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;
Use the generic ethernet phy which already manages the correct binding for gpio reset, including the assert an deassert delays. Signed-off-by: Patrick Delaunay <patrick.delaunay@foss.st.com> --- Changes in v2: - use generic ethernet phy for stm32 variant, this patch is a REWORK of previous serie: the device parsing is done in eth-phy driver and the gpio support is removed in stm32 variant: eqos_start/stop_resets_stm32 and eqos_probe_resources_stm32. drivers/net/Kconfig | 1 + drivers/net/dwc_eth_qos.c | 50 --------------------------------------- 2 files changed, 1 insertion(+), 50 deletions(-)