kernel: rtl836x: directly defer probe when mdio is missing
If the switch is directly controlled by the mdio bus, we must ensure
that the mdio bus is ready instead of trying GPIO simulated bus.
Fixes: d4ac26ec49 ("kernel: rtl8366-smi: add Realtek switch management via mii-bus")
Signed-off-by: Shiji Yang <yangshiji66@outlook.com>
Link: https://github.com/openwrt/openwrt/pull/21143
Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
This commit is contained in:
parent
045007c24c
commit
52924bf194
@ -1497,7 +1497,7 @@ static int rtl8366_smi_probe_of(struct platform_device *pdev, struct rtl8366_smi
|
||||
if (!smi->ext_mbus) {
|
||||
dev_info(&pdev->dev,
|
||||
"cannot find mdio bus from bus handle (yet)");
|
||||
goto try_gpio;
|
||||
return -EPROBE_DEFER;
|
||||
}
|
||||
|
||||
if (of_property_read_u32(np, "phy-id", &smi->phy_id))
|
||||
@ -1507,12 +1507,8 @@ static int rtl8366_smi_probe_of(struct platform_device *pdev, struct rtl8366_smi
|
||||
|
||||
try_gpio:
|
||||
if (!gpio_is_valid(sck) || !gpio_is_valid(sda)) {
|
||||
if (!mdio_node) {
|
||||
dev_err(&pdev->dev, "gpios missing in devictree\n");
|
||||
return -EINVAL;
|
||||
} else {
|
||||
return -EPROBE_DEFER;
|
||||
}
|
||||
dev_err(&pdev->dev, "gpios missing in devictree\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
smi->gpio_sda = sda;
|
||||
|
||||
Loading…
Reference in New Issue
Block a user