summaryrefslogtreecommitdiffstats
path: root/target/linux/mediatek/files/drivers
diff options
context:
space:
mode:
authorDaniel Golle <daniel@makrotopia.org>2023-06-18 03:22:51 +0200
committerDaniel Golle <daniel@makrotopia.org>2023-07-07 14:01:39 +0200
commit0c5605b70c7853eff73e5a6d7dfb4b650e0b4420 (patch)
treeafa7eed447ff571fdfd65357ccb3fb254e5d1ead /target/linux/mediatek/files/drivers
parente386b279fdab758f75160636bca5385dae202aee (diff)
downloadopenwrt-0c5605b70c7853eff73e5a6d7dfb4b650e0b4420.tar.gz
openwrt-0c5605b70c7853eff73e5a6d7dfb4b650e0b4420.tar.bz2
openwrt-0c5605b70c7853eff73e5a6d7dfb4b650e0b4420.zip
mediatek: prepare old rtk switch driver for use with Linux 6.1
The old RealTek RTL8367S switch driver which is used for some MT7622 devices needs to be modified to no longer free the GPIO after reset has completed. This is due to Linux 5.19 removing devm_gpio_free via commit 2b038e786f83 ("gpiolib: devres: Get rid of unused devm_gpio_free()") Signed-off-by: Daniel Golle <daniel@makrotopia.org>
Diffstat (limited to 'target/linux/mediatek/files/drivers')
-rw-r--r--target/linux/mediatek/files/drivers/net/phy/rtk/rtl8367s_mdio.c15
1 files changed, 6 insertions, 9 deletions
diff --git a/target/linux/mediatek/files/drivers/net/phy/rtk/rtl8367s_mdio.c b/target/linux/mediatek/files/drivers/net/phy/rtk/rtl8367s_mdio.c
index ae958e8967..08d2b57d43 100644
--- a/target/linux/mediatek/files/drivers/net/phy/rtk/rtl8367s_mdio.c
+++ b/target/linux/mediatek/files/drivers/net/phy/rtk/rtl8367s_mdio.c
@@ -71,16 +71,10 @@ unsigned int mii_mgr_write(unsigned int phy_addr,unsigned int phy_register,unsig
static int rtl8367s_hw_reset(void)
{
struct rtk_gsw *gsw = _gsw;
- int ret;
if (gsw->reset_pin < 0)
return 0;
- ret = devm_gpio_request(gsw->dev, gsw->reset_pin, "mediatek,reset-pin");
-
- if (ret)
- printk("fail to devm_gpio_request\n");
-
gpio_direction_output(gsw->reset_pin, 0);
usleep_range(1000, 1100);
@@ -89,10 +83,7 @@ static int rtl8367s_hw_reset(void)
mdelay(500);
- devm_gpio_free(gsw->dev, gsw->reset_pin);
-
return 0;
-
}
static int rtl8367s_vlan_config(int want_at_p0)
@@ -235,6 +226,7 @@ static int rtk_gsw_probe(struct platform_device *pdev)
struct mii_bus *mdio_bus;
struct rtk_gsw *gsw;
const char *pm;
+ int ret;
mdio = of_parse_phandle(np, "mediatek,mdio", 0);
@@ -256,6 +248,11 @@ static int rtk_gsw_probe(struct platform_device *pdev)
gsw->bus = mdio_bus;
gsw->reset_pin = of_get_named_gpio(np, "mediatek,reset-pin", 0);
+ if (gsw->reset_pin >= 0) {
+ ret = devm_gpio_request(gsw->dev, gsw->reset_pin, "mediatek,reset-pin");
+ if (ret)
+ printk("fail to devm_gpio_request\n");
+ }
_gsw = gsw;