Message ID | 20240428142406.28445-4-heesub@gmail.com |
---|---|
State | Accepted |
Commit | 0da5d2243e5aaaf971af57ceed3898bd6dd73590 |
Delegated to: | Patrice Chotard |
Headers | show |
Series | [1/5] dts: stm32mp157c-odyssey: set PLL4_P to 125Mhz for ETH_CLK | expand |
On 4/28/24 16:24, Heesub Shin wrote: > This commit adds support for a property 'phy-reset-gpios' to reset PHY > chipset. > > Signed-off-by: Heesub Shin <heesub@gmail.com> > --- > drivers/net/dwc_eth_qos_stm32.c | 23 ++++++++++++++++++++++- > 1 file changed, 22 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/dwc_eth_qos_stm32.c b/drivers/net/dwc_eth_qos_stm32.c > index fbc08bba1d..cffaa10b70 100644 > --- a/drivers/net/dwc_eth_qos_stm32.c > +++ b/drivers/net/dwc_eth_qos_stm32.c > @@ -266,6 +266,12 @@ static int eqos_probe_resources_stm32(struct udevice *dev) > if (ret) > dev_warn(dev, "No phy clock provided %d\n", ret); > > + /* Get reset gpio pin (optional) */ > + ret = gpio_request_by_name(dev, "phy-reset-gpios", 0, > + &eqos->phy_reset_gpio, GPIOD_IS_OUT); > + if (ret) > + pr_warn("No phy reset gpio provided: %d\n", ret); > + > dev_dbg(dev, "%s: OK\n", __func__); > > return 0; > @@ -277,6 +283,21 @@ err_probe: > return ret; > } > > +static int eqos_start_resets_stm32(struct udevice *dev) > +{ > + struct eqos_priv *eqos = dev_get_priv(dev); > + > + debug("%s(dev=%p):\n", __func__, dev); > + > + if (dm_gpio_is_valid(&eqos->phy_reset_gpio)) { > + dm_gpio_set_value(&eqos->phy_reset_gpio, 1); > + udelay(2); > + dm_gpio_set_value(&eqos->phy_reset_gpio, 0); > + } > + > + return 0; > +} > + > static int eqos_remove_resources_stm32(struct udevice *dev) > { > dev_dbg(dev, "%s:\n", __func__); > @@ -292,7 +313,7 @@ static struct eqos_ops eqos_stm32_ops = { > .eqos_probe_resources = eqos_probe_resources_stm32, > .eqos_remove_resources = eqos_remove_resources_stm32, > .eqos_stop_resets = eqos_null_ops, > - .eqos_start_resets = eqos_null_ops, > + .eqos_start_resets = eqos_start_resets_stm32, > .eqos_stop_clks = eqos_stop_clks_stm32, > .eqos_start_clks = eqos_start_clks_stm32, > .eqos_calibrate_pads = eqos_null_ops, Reviewed-by: Patrice Chotard <patrice.chotard@foss.st.com> Thanks Patrice
On 4/28/24 16:24, Heesub Shin wrote: > This commit adds support for a property 'phy-reset-gpios' to reset PHY > chipset. > > Signed-off-by: Heesub Shin <heesub@gmail.com> > --- > drivers/net/dwc_eth_qos_stm32.c | 23 ++++++++++++++++++++++- > 1 file changed, 22 insertions(+), 1 deletion(-) > > diff --git a/drivers/net/dwc_eth_qos_stm32.c b/drivers/net/dwc_eth_qos_stm32.c > index fbc08bba1d..cffaa10b70 100644 > --- a/drivers/net/dwc_eth_qos_stm32.c > +++ b/drivers/net/dwc_eth_qos_stm32.c > @@ -266,6 +266,12 @@ static int eqos_probe_resources_stm32(struct udevice *dev) > if (ret) > dev_warn(dev, "No phy clock provided %d\n", ret); > > + /* Get reset gpio pin (optional) */ > + ret = gpio_request_by_name(dev, "phy-reset-gpios", 0, > + &eqos->phy_reset_gpio, GPIOD_IS_OUT); > + if (ret) > + pr_warn("No phy reset gpio provided: %d\n", ret); > + > dev_dbg(dev, "%s: OK\n", __func__); > > return 0; > @@ -277,6 +283,21 @@ err_probe: > return ret; > } > > +static int eqos_start_resets_stm32(struct udevice *dev) > +{ > + struct eqos_priv *eqos = dev_get_priv(dev); > + > + debug("%s(dev=%p):\n", __func__, dev); > + > + if (dm_gpio_is_valid(&eqos->phy_reset_gpio)) { > + dm_gpio_set_value(&eqos->phy_reset_gpio, 1); > + udelay(2); > + dm_gpio_set_value(&eqos->phy_reset_gpio, 0); > + } > + > + return 0; > +} > + > static int eqos_remove_resources_stm32(struct udevice *dev) > { > dev_dbg(dev, "%s:\n", __func__); > @@ -292,7 +313,7 @@ static struct eqos_ops eqos_stm32_ops = { > .eqos_probe_resources = eqos_probe_resources_stm32, > .eqos_remove_resources = eqos_remove_resources_stm32, > .eqos_stop_resets = eqos_null_ops, > - .eqos_start_resets = eqos_null_ops, > + .eqos_start_resets = eqos_start_resets_stm32, > .eqos_stop_clks = eqos_stop_clks_stm32, > .eqos_start_clks = eqos_start_clks_stm32, > .eqos_calibrate_pads = eqos_null_ops, Applied to u-boot-stm32/next Thanks Patrice
diff --git a/drivers/net/dwc_eth_qos_stm32.c b/drivers/net/dwc_eth_qos_stm32.c index fbc08bba1d..cffaa10b70 100644 --- a/drivers/net/dwc_eth_qos_stm32.c +++ b/drivers/net/dwc_eth_qos_stm32.c @@ -266,6 +266,12 @@ static int eqos_probe_resources_stm32(struct udevice *dev) if (ret) dev_warn(dev, "No phy clock provided %d\n", ret); + /* Get reset gpio pin (optional) */ + ret = gpio_request_by_name(dev, "phy-reset-gpios", 0, + &eqos->phy_reset_gpio, GPIOD_IS_OUT); + if (ret) + pr_warn("No phy reset gpio provided: %d\n", ret); + dev_dbg(dev, "%s: OK\n", __func__); return 0; @@ -277,6 +283,21 @@ err_probe: return ret; } +static int eqos_start_resets_stm32(struct udevice *dev) +{ + struct eqos_priv *eqos = dev_get_priv(dev); + + debug("%s(dev=%p):\n", __func__, dev); + + if (dm_gpio_is_valid(&eqos->phy_reset_gpio)) { + dm_gpio_set_value(&eqos->phy_reset_gpio, 1); + udelay(2); + dm_gpio_set_value(&eqos->phy_reset_gpio, 0); + } + + return 0; +} + static int eqos_remove_resources_stm32(struct udevice *dev) { dev_dbg(dev, "%s:\n", __func__); @@ -292,7 +313,7 @@ static struct eqos_ops eqos_stm32_ops = { .eqos_probe_resources = eqos_probe_resources_stm32, .eqos_remove_resources = eqos_remove_resources_stm32, .eqos_stop_resets = eqos_null_ops, - .eqos_start_resets = eqos_null_ops, + .eqos_start_resets = eqos_start_resets_stm32, .eqos_stop_clks = eqos_stop_clks_stm32, .eqos_start_clks = eqos_start_clks_stm32, .eqos_calibrate_pads = eqos_null_ops,
This commit adds support for a property 'phy-reset-gpios' to reset PHY chipset. Signed-off-by: Heesub Shin <heesub@gmail.com> --- drivers/net/dwc_eth_qos_stm32.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-)