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 cdc18c0505..61f7339533 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 @@ -278,6 +278,43 @@ static struct rtpcs_link *rtpcs_phylink_pcs_to_link(struct phylink_pcs *pcs) return container_of(pcs, struct rtpcs_link, pcs); } +__maybe_unused +static int rtpcs_sds_determine_hw_mode(struct rtpcs_serdes *sds, + phy_interface_t if_mode, + enum rtpcs_sds_mode *hw_mode) +{ + switch (if_mode) { + case PHY_INTERFACE_MODE_NA: + *hw_mode = RTPCS_SDS_MODE_OFF; + break; + case PHY_INTERFACE_MODE_1000BASEX: + *hw_mode = RTPCS_SDS_MODE_1000BASEX; + break; + case PHY_INTERFACE_MODE_2500BASEX: + *hw_mode = RTPCS_SDS_MODE_2500BASEX; + break; + case PHY_INTERFACE_MODE_10GBASER: + *hw_mode = RTPCS_SDS_MODE_10GBASER; + break; + case PHY_INTERFACE_MODE_SGMII: + *hw_mode = RTPCS_SDS_MODE_SGMII; + break; + case PHY_INTERFACE_MODE_QSGMII: + *hw_mode = RTPCS_SDS_MODE_QSGMII; + break; + case PHY_INTERFACE_MODE_USXGMII: + /* TODO: set this depending on number of links on SerDes */ + *hw_mode = RTPCS_SDS_MODE_USXGMII_10GSXGMII; + break; + default: + return -ENOTSUPP; + } + + /* TODO: check if the particular SerDes supports the mode */ + + return 0; +} + /* Variant-specific functions */ /* RTL838X */