mirror of
https://git.openwrt.org/openwrt/openwrt.git
synced 2026-09-09 00:06:08 +08:00
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:
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user