RTL8852BE can't enable 36-bits DMA on Intel X99 motherboard, which isn't a sold combination so add quirk across all chips, not only on specific chip RTL8852BE, Reported-by: Iohann Tachy Closes: https://lore.kernel.org/linux-wireless/CAPVS0eLR5KCmBEkGHnSxwKQM0hwCSaL0TSaTMNT_GJQK1sT8hg@mail.gmail.com/T/#m976028ea900ea6f2c5fbbd1ff14a92377227f555 Signed-off-by: Ping-Ke Shih --- drivers/net/wireless/realtek/rtw89/core.h | 1 + drivers/net/wireless/realtek/rtw89/pci.c | 16 ++++++++++++++++ 2 files changed, 17 insertions(+) diff --git a/drivers/net/wireless/realtek/rtw89/core.h b/drivers/net/wireless/realtek/rtw89/core.h index 4778957d6b2d..0c894ba73a65 100644 --- a/drivers/net/wireless/realtek/rtw89/core.h +++ b/drivers/net/wireless/realtek/rtw89/core.h @@ -5205,6 +5205,7 @@ enum rtw89_flags { enum rtw89_quirks { RTW89_QUIRK_PCI_BER, + RTW89_QUIRK_PCI_NO_DAC, RTW89_QUIRK_THERMAL_PROT_120C, RTW89_QUIRK_THERMAL_PROT_110C, diff --git a/drivers/net/wireless/realtek/rtw89/pci.c b/drivers/net/wireless/realtek/rtw89/pci.c index 43c61b3dc969..fded15b2029f 100644 --- a/drivers/net/wireless/realtek/rtw89/pci.c +++ b/drivers/net/wireless/realtek/rtw89/pci.c @@ -19,6 +19,18 @@ MODULE_PARM_DESC(disable_clkreq, "Set Y to disable PCI clkreq support"); 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 const struct dmi_system_id rtw89_pci_quirks[] = { + { + .ident = "MACHINIST X99-RS9", + .matches = { + DMI_MATCH(DMI_SYS_VENDOR, "MACHINIST"), + DMI_MATCH(DMI_PRODUCT_NAME, "X99-RS9"), + }, + .driver_data = (void *)RTW89_QUIRK_PCI_NO_DAC, + }, + {}, +}; + static int rtw89_pci_get_phy_offset_by_link_speed(struct rtw89_dev *rtwdev, u32 *phy_offset) { @@ -3305,6 +3317,9 @@ static bool rtw89_pci_is_dac_compatible_bridge(struct rtw89_dev *rtwdev) if (!bridge) return false; + if (test_bit(RTW89_QUIRK_PCI_NO_DAC, rtwdev->quirks)) + return false; + switch (bridge->vendor) { case PCI_VENDOR_ID_INTEL: return true; @@ -4765,6 +4780,7 @@ int rtw89_pci_probe(struct pci_dev *pdev, const struct pci_device_id *id) rtwdev->hci.cpwm_addr = pci_info->cpwm_addr; rtw89_check_quirks(rtwdev, info->quirks); + rtw89_check_quirks(rtwdev, rtw89_pci_quirks); rtw89_check_pci_ssid_quirks(rtwdev, pdev, pci_info->ssid_quirks); SET_IEEE80211_DEV(rtwdev->hw, &pdev->dev); base-commit: 4c1552473acf03cad828884b4e1c90b97a89b265 -- 2.25.1