[PATCH 4/4] net: dsa: b53: mdio: Add optional reset gpio

From: Paul Geurts
Date: Mon Feb 27 2023 - 14:46:04 EST


Some Broadcom Ethernet switch devices feature a reset pin driven by GPIO.
Provide the option to specify a reset gpio.

Signed-off-by: Paul Geurts <paul.geurts@xxxxxxxxxxxxxxxxxxxxxxxxx>
---
drivers/net/dsa/b53/b53_mdio.c | 9 +++++++++
1 file changed, 9 insertions(+)

diff --git a/drivers/net/dsa/b53/b53_mdio.c b/drivers/net/dsa/b53/b53_mdio.c index 8b422b298cd5..32af5881834c 100644
--- a/drivers/net/dsa/b53/b53_mdio.c
+++ b/drivers/net/dsa/b53/b53_mdio.c
@@ -22,6 +22,7 @@
#include <linux/delay.h>
#include <linux/brcmphy.h>
#include <linux/rtnetlink.h>
+#include <linux/gpio/consumer.h>
#include <net/dsa.h>

#include "b53_priv.h"
@@ -303,6 +304,14 @@ static int b53_mdio_probe(struct mdio_device *mdiodev)
return -ENODEV;
}

+ /* Try to get a reset GPIO and get the switch out of reset when its there */
+ mdiodev->reset_gpio = devm_gpiod_get_optional(&mdiodev->dev, "reset", GPIOD_OUT_HIGH);
+ if (mdiodev->reset_gpio) {
+ mdelay(50);
+ gpiod_set_value(mdiodev->reset_gpio, 0);
+ mdelay(50);
+ }
+
/* read the first port's id */
phy_id = mdiobus_read(mdiodev->bus, 0, 2) << 16;
phy_id |= mdiobus_read(mdiodev->bus, 0, 3);
--
2.30.2