From: Jonas Jelonek Date: Thu, 18 Jun 2026 07:46:12 +0000 (+0000) Subject: realtek: pcs: drop setup_serdes X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F23861%2Fhead;p=thirdparty%2Fopenwrt.git realtek: pcs: drop setup_serdes Introducing the setup_serdes hook in the PCS driver was always intended to be only a temporary solution. It was needed to be able to collect all scattered code in the PCS driver first. Later, refactoring can be done to bring everything into a proper shape. Now we've reached the point where the setup of all variants has been refactored in such a way that all share the same high-level sequence. This is fully orchestrated in pcs_config now. Thus, the setup_serdes hook is no longer needed. Move the last piece out of it into another SerDes op hook, then drop setup_serdes. Link: https://github.com/openwrt/openwrt/pull/23861 Signed-off-by: Jonas Jelonek --- diff --git a/target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c b/target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c index 4a24fe39ced..d03bc777074 100644 --- a/target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c +++ b/target/linux/realtek/files-6.18/drivers/net/pcs/pcs-rtl-otto.c @@ -199,6 +199,8 @@ struct rtpcs_sds_ops { int (*deactivate)(struct rtpcs_serdes *sds); /* required: power back up */ int (*activate)(struct rtpcs_serdes *sds); + /* required: configure SerDes for hardware mode */ + int (*config_hw_mode)(struct rtpcs_serdes *sds, enum rtpcs_sds_mode hw_mode); /* required: set hardware mode */ int (*set_hw_mode)(struct rtpcs_serdes *sds, enum rtpcs_sds_mode hw_mode); /* optional: configure media-specific parameters */ @@ -278,7 +280,6 @@ struct rtpcs_config { int (*init)(struct rtpcs_ctrl *ctrl); int (*sds_probe)(struct rtpcs_serdes *sds); - int (*setup_serdes)(struct rtpcs_serdes *sds, enum rtpcs_sds_mode hw_mode); }; struct rtpcs_sds_config { @@ -843,8 +844,7 @@ static int rtpcs_838x_sds_set_mode(struct rtpcs_serdes *sds, enum rtpcs_sds_mode 0x7 << int_mode_shift, int_mode_val << int_mode_shift); } -static int rtpcs_838x_sds_patch(struct rtpcs_serdes *sds, - enum rtpcs_sds_mode hw_mode) +static int rtpcs_838x_sds_config_hw_mode(struct rtpcs_serdes *sds, enum rtpcs_sds_mode hw_mode) { struct rtpcs_ctrl *ctrl = sds->ctrl; u8 sds_id = sds->id; @@ -917,12 +917,6 @@ static int rtpcs_838x_init(struct rtpcs_ctrl *ctrl) return 0; } -static int rtpcs_838x_setup_serdes(struct rtpcs_serdes *sds, - enum rtpcs_sds_mode hw_mode) -{ - return rtpcs_838x_sds_patch(sds, hw_mode); -} - static int rtpcs_838x_sds_post_config(struct rtpcs_serdes *sds, enum rtpcs_sds_mode hw_mode) { /* @@ -1172,8 +1166,11 @@ static int rtpcs_839x_sds_activate(struct rtpcs_serdes *sds) return 0; } -static int rtpcs_839x_setup_serdes(struct rtpcs_serdes *sds, - enum rtpcs_sds_mode hw_mode) +/* + * Keep this as a no-op stub until RTL839x is extended to do proper configuration + * here. E.g., the still missing SGMII, 100BASEX and 1000BASEX setup should go here. + */ +static int rtpcs_839x_sds_config_hw_mode(struct rtpcs_serdes *sds, enum rtpcs_sds_mode hw_mode) { return 0; } @@ -3083,21 +3080,6 @@ static int rtpcs_930x_sds_config_media(struct rtpcs_serdes *sds, enum rtpcs_sds_ return 0; } -static int rtpcs_930x_setup_serdes(struct rtpcs_serdes *sds, - enum rtpcs_sds_mode hw_mode) -{ - int ret; - - /* Apply configuration for a hardware mode to SerDes */ - ret = rtpcs_930x_sds_config_hw_mode(sds, hw_mode); - if (ret < 0) - return ret; - - /* Maybe use dal_longan_sds_init */ - - return 0; -} - static int rtpcs_930x_sds_post_config(struct rtpcs_serdes *sds, enum rtpcs_sds_mode hw_mode) { int calib_tries = 0; @@ -3855,18 +3837,6 @@ static int rtpcs_931x_sds_config_hw_mode(struct rtpcs_serdes *sds, return rtpcs_93xx_sds_config_cmu(sds, hw_mode); } -static int rtpcs_931x_setup_serdes(struct rtpcs_serdes *sds, - enum rtpcs_sds_mode hw_mode) -{ - int ret; - - ret = rtpcs_931x_sds_config_hw_mode(sds, hw_mode); - if (ret < 0) - return ret; - - return 0; -} - /** * rtpcs_931x_init_mac_groups - Initialize MAC groups * @@ -4093,7 +4063,7 @@ static int rtpcs_pcs_config(struct phylink_pcs *pcs, unsigned int neg_mode, if (ret < 0) return ret; - ret = ctrl->cfg->setup_serdes(sds, hw_mode); + ret = sds->ops->config_hw_mode(sds, hw_mode); if (ret < 0) return ret; @@ -4402,6 +4372,7 @@ static const struct rtpcs_sds_ops rtpcs_838x_sds_ops = { .restart_autoneg = rtpcs_generic_sds_restart_autoneg, .deactivate = rtpcs_838x_sds_deactivate, .activate = rtpcs_838x_sds_activate, + .config_hw_mode = rtpcs_838x_sds_config_hw_mode, .set_hw_mode = rtpcs_838x_sds_set_mode, .post_config = rtpcs_838x_sds_post_config, }; @@ -4427,7 +4398,6 @@ static const struct rtpcs_config rtpcs_838x_cfg = { .sds_hw_mode_vals = rtpcs_838x_sds_hw_mode_vals, .init = rtpcs_838x_init, .sds_probe = rtpcs_838x_sds_probe, - .setup_serdes = rtpcs_838x_setup_serdes, }; static const struct phylink_pcs_ops rtpcs_839x_pcs_ops = { @@ -4443,6 +4413,7 @@ static const struct rtpcs_sds_ops rtpcs_839x_sds_ops = { .restart_autoneg = rtpcs_generic_sds_restart_autoneg, .deactivate = rtpcs_839x_sds_deactivate, .activate = rtpcs_839x_sds_activate, + .config_hw_mode = rtpcs_839x_sds_config_hw_mode, .set_hw_mode = rtpcs_sds_set_mac_mode, }; @@ -4467,7 +4438,6 @@ static const struct rtpcs_config rtpcs_839x_cfg = { .sds_hw_mode_vals = rtpcs_839x_sds_hw_mode_vals, .init = rtpcs_839x_init, .sds_probe = rtpcs_839x_sds_probe, - .setup_serdes = rtpcs_839x_setup_serdes, }; static const struct phylink_pcs_ops rtpcs_930x_pcs_ops = { @@ -4489,6 +4459,7 @@ static const struct rtpcs_sds_ops rtpcs_930x_sds_ops = { .config_polarity = rtpcs_930x_sds_config_polarity, .deactivate = rtpcs_930x_sds_deactivate, .activate = rtpcs_930x_sds_activate, + .config_hw_mode = rtpcs_930x_sds_config_hw_mode, .set_hw_mode = rtpcs_930x_sds_set_mode, .config_media = rtpcs_930x_sds_config_media, .post_config = rtpcs_930x_sds_post_config, @@ -4515,7 +4486,6 @@ static const struct rtpcs_config rtpcs_930x_cfg = { .sds_hw_mode_vals = rtpcs_93xx_sds_hw_mode_vals, .init = rtpcs_93xx_init, .sds_probe = rtpcs_930x_sds_probe, - .setup_serdes = rtpcs_930x_setup_serdes, }; static const struct phylink_pcs_ops rtpcs_931x_pcs_ops = { @@ -4536,6 +4506,7 @@ static const struct rtpcs_sds_ops rtpcs_931x_sds_ops = { .config_polarity = rtpcs_931x_sds_config_polarity, .deactivate = rtpcs_931x_sds_deactivate, .activate = rtpcs_931x_sds_activate, + .config_hw_mode = rtpcs_931x_sds_config_hw_mode, .set_hw_mode = rtpcs_931x_sds_set_mode, .config_media = rtpcs_931x_sds_config_media, }; @@ -4561,7 +4532,6 @@ static const struct rtpcs_config rtpcs_931x_cfg = { .sds_hw_mode_vals = rtpcs_93xx_sds_hw_mode_vals, .init = rtpcs_931x_init, .sds_probe = rtpcs_931x_sds_probe, - .setup_serdes = rtpcs_931x_setup_serdes, }; static const struct of_device_id rtpcs_of_match[] = {