summaryrefslogtreecommitdiff
path: root/drivers
diff options
context:
space:
mode:
authorTom Rini <trini@konsulko.com>2024-06-18 08:35:30 -0600
committerTom Rini <trini@konsulko.com>2024-06-18 08:35:30 -0600
commitf8eb6b4a03ff69e8e5919a23fd6287de1155142f (patch)
tree35dfe0435b9e7ab2e7da44b37cb96bd252a54a4a /drivers
parentf1de28e67aa9b66bfca0fad3dc18446a6ec0b504 (diff)
parentf4a565104425032be537aef14cd2617c274e7bdf (diff)
Merge tag 'u-boot-stm32-20240618' of https://source.denx.de/u-boot/custodians/u-boot-stm into next
STM32MP15/13 ------------ _ Reserve OPTEE area in EFI memory map _ net: dwc_eth_qos: add support for phy-reset-gpios property _ Add eth1/2 support for stm32mp13 _ Add PWR regulator support for stm32mp13 _ Add pinmux nodes for DH electronics STM32MP13xx DHCOR SoM and DHSBC board _ Add support for STM32MP13xx DHCOR SoM and DHSBC board _ Set PLL4_P to 125Mhz for ETH_CLK for stm32mp157c-odyssey _ Use internal clock for Tx for stm32mp157c-odyssey _ Fix incorrect PHY address for stm32mp157c-odyssey _ Add phy-reset-gpios property to ethernet node for stm32mp157c-odyssey _ Add generic SoM compatible to STM32MP15xx DH electronics DHSOM _ Auto-detect second MAC on STM32MP15xx DH electronics DHCOM
Diffstat (limited to 'drivers')
-rw-r--r--drivers/net/dwc_eth_qos_stm32.c23
1 files changed, 22 insertions, 1 deletions
diff --git a/drivers/net/dwc_eth_qos_stm32.c b/drivers/net/dwc_eth_qos_stm32.c
index fbc08bba1d6..cffaa10b705 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,