realtek: pcs: rtl931x: add defines for FRC_CMU_EN fields

Replace raw write_bits calls for the FRC_CMU_EN field pair in
config_attachment with write_mask and named macros, demystifying the
function further and improving readability. One of the FRC_CMU_EN
assertions can be dropped since it sets the same value already written
by an earlier call.

Link: https://github.com/openwrt/openwrt/pull/24714
Signed-off-by: Jonas Jelonek <jelonek.jonas@gmail.com>
This commit is contained in:
Jonas Jelonek
2026-08-15 22:36:28 +02:00
parent 8c6af4e95e
commit ae81b8892a
@@ -168,6 +168,10 @@ enum rtpcs_page {
#define DIGI_1(page) ((page) + 0x40)
#define DIGI_2(page) ((page) + 0x80)
#define RTL93XX_FRC_CMU_EN_MASK GENMASK(11, 10)
#define RTL93XX_FRC_CMU_EN_UNFORCED FIELD_PREP(RTL93XX_FRC_CMU_EN_MASK, 0x0)
#define RTL93XX_FRC_CMU_EN_FORCE_OFF FIELD_PREP(RTL93XX_FRC_CMU_EN_MASK, 0x1)
#define RTL93XX_FRC_CMU_EN_FORCE_ON FIELD_PREP(RTL93XX_FRC_CMU_EN_MASK, 0x3)
#define RTL93XX_FRC_PDOWN_MASK GENMASK(7, 6)
#define RTL93XX_FRC_PDOWN_DOWN FIELD_PREP(RTL93XX_FRC_PDOWN_MASK, 0x3)
#define RTL93XX_FRC_PDOWN_UNFORCED FIELD_PREP(RTL93XX_FRC_PDOWN_MASK, 0x0)
@@ -3868,7 +3872,8 @@ static int rtpcs_931x_sds_config_attachment(struct rtpcs_serdes *sds,
/* SDK: media none behavior - baseline applied regardless of attachment */
rtpcs_931x_sds_10g_ana_pre(sds);
rtpcs_sds_write_bits(sds, PAGE_ANA_MISC, 0x0, 11, 10, 0x3); /* FRC_CMU_EN */
rtpcs_sds_write_mask(sds, PAGE_ANA_MISC, 0x0, RTL93XX_FRC_CMU_EN_MASK,
RTL93XX_FRC_CMU_EN_FORCE_ON);
rtpcs_sds_write_bits(sds, PAGE_ANA_MISC, 0x0, 1, 0, 0x1); /* FRC_V2ANALOG */
rtpcs_sds_write_bits(sds, PAGE_ANA_10G, 0xf, 5, 0, 0x4);
@@ -3893,9 +3898,11 @@ static int rtpcs_931x_sds_config_attachment(struct rtpcs_serdes *sds,
hw_mode == RTPCS_SDS_MODE_XSGMII ||
hw_mode == RTPCS_SDS_MODE_USXGMII);
rtpcs_sds_write_bits(sds, PAGE_ANA_MISC, 0x0, 11, 10, 0x0);
rtpcs_sds_write_mask(sds, PAGE_ANA_MISC, 0x0, RTL93XX_FRC_CMU_EN_MASK,
RTL93XX_FRC_CMU_EN_UNFORCED);
rtpcs_sds_write_bits(sds, PAGE_ANA_5G0, 0x7, 15, 15, is_dac ? 0x1 : 0x0);
rtpcs_sds_write_bits(sds, PAGE_ANA_MISC, 0x0, 11, 10, 0x3);
rtpcs_sds_write_mask(sds, PAGE_ANA_MISC, 0x0, RTL93XX_FRC_CMU_EN_MASK,
RTL93XX_FRC_CMU_EN_FORCE_ON);
switch (attachment) {
case RTPCS_SDS_ATTACH_DAC_SHORT:
@@ -3921,12 +3928,13 @@ static int rtpcs_931x_sds_config_attachment(struct rtpcs_serdes *sds,
if (is_10g)
rtpcs_931x_sds_10g_ana_post(sds);
rtpcs_sds_write_bits(sds, PAGE_ANA_MISC, 0x0, 11, 10, 0x3); /* FRC_CMU_EN */
rtpcs_sds_write_bits(sds, PAGE_ANA_MISC, 0x0, 1, 0, 0x0); /* FRC_V2ANALOG */
rtpcs_sds_write_bits(sds, PAGE_ANA_5G0, 0x12, 7, 6, 0x3);
rtpcs_sds_write_bits(sds, PAGE_ANA_MISC, 0x0, 11, 10, 0x1);
rtpcs_sds_write_bits(sds, PAGE_ANA_MISC, 0x0, 11, 10, 0x3);
rtpcs_sds_write_mask(sds, PAGE_ANA_MISC, 0x0, RTL93XX_FRC_CMU_EN_MASK,
RTL93XX_FRC_CMU_EN_FORCE_OFF);
rtpcs_sds_write_mask(sds, PAGE_ANA_MISC, 0x0, RTL93XX_FRC_CMU_EN_MASK,
RTL93XX_FRC_CMU_EN_FORCE_ON);
/* clear pending SerDes RX idle interrupt flag */
regmap_write_bits(sds->ctrl->map, RTPCS_931X_ISR_SERDES_RXIDLE,