realtek: Fix nvmem support for ethernet device
authorHarshal Gohel <[email protected]>
Mon, 14 Apr 2025 13:16:47 +0000 (13:16 +0000)
committerHauke Mehrtens <[email protected]>
Thu, 28 Aug 2025 19:07:57 +0000 (21:07 +0200)
The function of_get_mac_address is not taking care of evaluation the nvmem
address before trying to read out the mac-address properties. The driver
must check whether the return code is -EPROBE_DEFER and stop the probing
process in that case. If the nvmem-cell related driver code finished, the
probe can be redone ad the correct mac-address will appear for the device.

Signed-off-by: Harshal Gohel <[email protected]>
Signed-off-by: Sharadanand Karanjkar <[email protected]>
Link: https://github.com/openwrt/openwrt/pull/19362
Signed-off-by: Hauke Mehrtens <[email protected]>
target/linux/realtek/files-6.12/drivers/net/ethernet/rtl838x_eth.c

index 6b856a1b1e9bd8a7ce3430463e799ad9e2967bb0..6f90833749f58679210106cc9ad7efe8b66a9557 100644 (file)
@@ -3500,7 +3500,10 @@ static int __init rtl838x_eth_probe(struct platform_device *pdev)
         * 1) from device tree data
         * 2) from internal registers set by bootloader
         */
-       of_get_mac_address(pdev->dev.of_node, mac_addr);
+       err = of_get_mac_address(pdev->dev.of_node, mac_addr);
+       if (err == -EPROBE_DEFER)
+               return err;
+
        if (is_valid_ether_addr(mac_addr)) {
                rtl838x_set_mac_hw(dev, mac_addr);
        } else {