MODULE_PARM_DESC(disable_aspm_l1, "Set Y to disable PCI ASPM L1 support");
 MODULE_PARM_DESC(disable_aspm_l1ss, "Set Y to disable PCI L1SS support");
 
+static int rtw89_pci_get_phy_offset_by_link_speed(struct rtw89_dev *rtwdev,
+                                                 u32 *phy_offset)
+{
+       struct rtw89_pci *rtwpci = (struct rtw89_pci *)rtwdev->priv;
+       struct pci_dev *pdev = rtwpci->pdev;
+       u32 val;
+       int ret;
+
+       ret = pci_read_config_dword(pdev, RTW89_PCIE_L1_STS_V1, &val);
+       if (ret)
+               return ret;
+
+       val = u32_get_bits(val, RTW89_BCFG_LINK_SPEED_MASK);
+       if (val == RTW89_PCIE_GEN1_SPEED) {
+               *phy_offset = R_RAC_DIRECT_OFFSET_G1;
+       } else if (val == RTW89_PCIE_GEN2_SPEED) {
+               *phy_offset = R_RAC_DIRECT_OFFSET_G2;
+       } else {
+               rtw89_warn(rtwdev, "Unknown PCI link speed %d\n", val);
+               return -EFAULT;
+       }
+
+       return 0;
+}
+
 static int rtw89_pci_rst_bdram_ax(struct rtw89_dev *rtwdev)
 {
        u32 val;
        return 0;
 }
 
+static void rtw89_pci_disable_eq(struct rtw89_dev *rtwdev)
+{
+       u16 g1_oobs, g2_oobs;
+       u32 backup_aspm;
+       u32 phy_offset;
+       u16 oobs_val;
+       u16 val16;
+       int ret;
+
+       if (rtwdev->chip->chip_id != RTL8852C)
+               return;
+
+       backup_aspm = rtw89_read32(rtwdev, R_AX_PCIE_MIX_CFG_V1);
+       rtw89_write32_clr(rtwdev, R_AX_PCIE_MIX_CFG_V1, B_AX_ASPM_CTRL_MASK);
+
+       g1_oobs = rtw89_read16_mask(rtwdev, R_RAC_DIRECT_OFFSET_G1 +
+                                           RAC_ANA09 * RAC_MULT, BAC_OOBS_SEL);
+       g2_oobs = rtw89_read16_mask(rtwdev, R_RAC_DIRECT_OFFSET_G2 +
+                                           RAC_ANA09 * RAC_MULT, BAC_OOBS_SEL);
+       if (g1_oobs && g2_oobs)
+               goto out;
+
+       ret = rtw89_pci_get_phy_offset_by_link_speed(rtwdev, &phy_offset);
+       if (ret)
+               goto out;
+
+       rtw89_write16_set(rtwdev, phy_offset + RAC_ANA0D * RAC_MULT, BAC_RX_TEST_EN);
+       rtw89_write16(rtwdev, phy_offset + RAC_ANA10 * RAC_MULT, ADDR_SEL_PINOUT_DIS_VAL);
+       rtw89_write16_set(rtwdev, phy_offset + RAC_ANA19 * RAC_MULT, B_PCIE_BIT_RD_SEL);
+
+       val16 = rtw89_read16_mask(rtwdev, phy_offset + RAC_ANA1F * RAC_MULT,
+                                 OOBS_LEVEL_MASK);
+       oobs_val = u16_encode_bits(val16, OOBS_SEN_MASK);
+
+       rtw89_write16(rtwdev, R_RAC_DIRECT_OFFSET_G1 + RAC_ANA03 * RAC_MULT, oobs_val);
+       rtw89_write16_set(rtwdev, R_RAC_DIRECT_OFFSET_G1 + RAC_ANA09 * RAC_MULT,
+                         BAC_OOBS_SEL);
+
+       rtw89_write16(rtwdev, R_RAC_DIRECT_OFFSET_G2 + RAC_ANA03 * RAC_MULT, oobs_val);
+       rtw89_write16_set(rtwdev, R_RAC_DIRECT_OFFSET_G2 + RAC_ANA09 * RAC_MULT,
+                         BAC_OOBS_SEL);
+
+out:
+       rtw89_write32(rtwdev, R_AX_PCIE_MIX_CFG_V1, backup_aspm);
+}
+
 static void rtw89_pci_ber(struct rtw89_dev *rtwdev)
 {
        u32 phy_offset;
        const struct rtw89_pci_info *info = rtwdev->pci_info;
        int ret;
 
+       rtw89_pci_disable_eq(rtwdev);
        rtw89_pci_ber(rtwdev);
        rtw89_pci_rxdma_prefth(rtwdev);
        rtw89_pci_l1off_pwroff(rtwdev);
 
 #define MDIO_PG0_G2 2
 #define MDIO_PG1_G2 3
 #define RAC_CTRL_PPR                   0x00
+#define RAC_ANA03                      0x03
+#define OOBS_SEN_MASK                  GENMASK(5, 1)
+#define RAC_ANA09                      0x09
+#define BAC_OOBS_SEL                   BIT(4)
 #define RAC_ANA0A                      0x0A
 #define B_BAC_EQ_SEL                   BIT(5)
 #define RAC_ANA0C                      0x0C
 #define B_PCIE_BIT_PSAVE               BIT(15)
+#define RAC_ANA0D                      0x0D
+#define BAC_RX_TEST_EN                 BIT(6)
 #define RAC_ANA10                      0x10
+#define ADDR_SEL_PINOUT_DIS_VAL                0x3C4
 #define B_PCIE_BIT_PINOUT_DIS          BIT(3)
 #define RAC_REG_REV2                   0x1B
 #define BAC_CMU_EN_DLY_MASK            GENMASK(15, 12)
 #define RAC_ANA1E_G1_VAL               0x66EA
 #define RAC_ANA1E_G2_VAL               0x6EEA
 #define RAC_ANA1F                      0x1F
+#define OOBS_LEVEL_MASK                        GENMASK(12, 8)
 #define RAC_ANA24                      0x24
 #define B_AX_DEGLITCH                  GENMASK(11, 8)
 #define RAC_ANA26                      0x26