diff --git a/target/linux/realtek/files-6.12/drivers/net/pcs/pcs-rtl-otto.c b/target/linux/realtek/files-6.12/drivers/net/pcs/pcs-rtl-otto.c index 2f0ff0ce03..2fa500396a 100644 --- a/target/linux/realtek/files-6.12/drivers/net/pcs/pcs-rtl-otto.c +++ b/target/linux/realtek/files-6.12/drivers/net/pcs/pcs-rtl-otto.c @@ -122,6 +122,7 @@ struct rtpcs_config { int mac_rx_pause_sts; int mac_tx_pause_sts; const struct phylink_pcs_ops *pcs_ops; + int (*init_serdes_common)(struct rtpcs_ctrl *ctrl); int (*set_autoneg)(struct rtpcs_ctrl *ctrl, int sds, unsigned int neg_mode); int (*setup_serdes)(struct rtpcs_ctrl *ctrl, int sds, phy_interface_t mode); }; @@ -2769,6 +2770,12 @@ static int rtpcs_probe(struct platform_device *pdev) ctrl->tx_pol_inv[sds] = of_property_read_bool(child, "realtek,pnswap-tx"); } + if (ctrl->cfg->init_serdes_common) { + ret = ctrl->cfg->init_serdes_common(ctrl); + if (ret) + return ret; + } + /* * rtpcs_create() relies on that fact that data is attached to the platform device to * determine if the driver is ready. Do this after everything is initialized properly.