{
        struct ieee80211_hw *hw = dev_get_drvdata(dev);
        struct rtw89_dev *rtwdev = hw->priv;
+       enum rtw89_core_chip_id chip_id = rtwdev->chip->chip_id;
 
-       rtw89_write32_clr(rtwdev, R_AX_SYS_SDIO_CTRL,
-                         B_AX_PCIE_DIS_L2_CTRL_LDO_HCI);
        rtw89_write32_set(rtwdev, R_AX_RSV_CTRL, B_AX_WLOCK_1C_BIT6);
        rtw89_write32_set(rtwdev, R_AX_RSV_CTRL, B_AX_R_DIS_PRST);
        rtw89_write32_clr(rtwdev, R_AX_RSV_CTRL, B_AX_WLOCK_1C_BIT6);
-       rtw89_write32_set(rtwdev, R_AX_PCIE_INIT_CFG1,
-                         B_AX_PCIE_PERST_KEEP_REG | B_AX_PCIE_TRAIN_KEEP_REG);
+       if (chip_id == RTL8852A || chip_id == RTL8852B) {
+               rtw89_write32_clr(rtwdev, R_AX_SYS_SDIO_CTRL,
+                                 B_AX_PCIE_DIS_L2_CTRL_LDO_HCI);
+               rtw89_write32_set(rtwdev, R_AX_PCIE_INIT_CFG1,
+                                 B_AX_PCIE_PERST_KEEP_REG | B_AX_PCIE_TRAIN_KEEP_REG);
+       } else {
+               rtw89_write32_clr(rtwdev, R_AX_PCIE_PS_CTRL_V1,
+                                 B_AX_CMAC_EXIT_L1_EN | B_AX_DMAC0_EXIT_L1_EN);
+       }
 
        return 0;
 }
 {
        struct ieee80211_hw *hw = dev_get_drvdata(dev);
        struct rtw89_dev *rtwdev = hw->priv;
+       enum rtw89_core_chip_id chip_id = rtwdev->chip->chip_id;
 
-       rtw89_write32_set(rtwdev, R_AX_SYS_SDIO_CTRL,
-                         B_AX_PCIE_DIS_L2_CTRL_LDO_HCI);
        rtw89_write32_set(rtwdev, R_AX_RSV_CTRL, B_AX_WLOCK_1C_BIT6);
        rtw89_write32_clr(rtwdev, R_AX_RSV_CTRL, B_AX_R_DIS_PRST);
        rtw89_write32_clr(rtwdev, R_AX_RSV_CTRL, B_AX_WLOCK_1C_BIT6);
-       rtw89_write32_clr(rtwdev, R_AX_PCIE_INIT_CFG1,
-                         B_AX_PCIE_PERST_KEEP_REG | B_AX_PCIE_TRAIN_KEEP_REG);
+       if (chip_id == RTL8852A || chip_id == RTL8852B) {
+               rtw89_write32_set(rtwdev, R_AX_SYS_SDIO_CTRL,
+                                 B_AX_PCIE_DIS_L2_CTRL_LDO_HCI);
+               rtw89_write32_clr(rtwdev, R_AX_PCIE_INIT_CFG1,
+                                 B_AX_PCIE_PERST_KEEP_REG | B_AX_PCIE_TRAIN_KEEP_REG);
+       } else {
+               rtw89_write32_set(rtwdev, R_AX_PCIE_PS_CTRL_V1,
+                                 B_AX_CMAC_EXIT_L1_EN | B_AX_DMAC0_EXIT_L1_EN);
+               rtw89_write32_clr(rtwdev, R_AX_PCIE_PS_CTRL_V1,
+                                 B_AX_SEL_REQ_ENTR_L1);
+       }
        rtw89_pci_l2_hci_ldo(rtwdev);
+       rtw89_pci_filter_out(rtwdev);
        rtw89_pci_link_cfg(rtwdev);
        rtw89_pci_l1ss_cfg(rtwdev);