Hi, I've added support for AX201 with subsystem id 0x0030 in if_iwx.
I am only loading a different firmware for the specific subsystem id to avoid introducing any regressions or bugs. -- Iraklis Karagkiozoglou diff --git sys/dev/pci/if_iwx.c sys/dev/pci/if_iwx.c index 4c85ad108a8..78b73303f42 100644 --- sys/dev/pci/if_iwx.c +++ sys/dev/pci/if_iwx.c @@ -9180,6 +9180,7 @@ static const struct pci_matchid iwx_devices[] = { }; static const struct pci_matchid iwx_subsystem_id_ax201[] = { + { PCI_VENDOR_INTEL, 0x0030 }, { PCI_VENDOR_INTEL, 0x0070 }, { PCI_VENDOR_INTEL, 0x0074 }, { PCI_VENDOR_INTEL, 0x0078 }, @@ -9311,6 +9312,8 @@ iwx_attach(struct device *parent, struct device *self, void *aux) pcireg_t reg, memtype; struct ieee80211com *ic = &sc->sc_ic; struct ifnet *ifp = &ic->ic_if; + pcireg_t subid; + pci_product_id_t spid; const char *intrstr; int err; int txq_i, i, j; @@ -9394,6 +9397,9 @@ iwx_attach(struct device *parent, struct device *self, void *aux) sc->sc_hw_rev = (sc->sc_hw_rev & 0xfff0) | (IWX_CSR_HW_REV_STEP(sc->sc_hw_rev << 2) << 2); + subid = pci_conf_read(pa->pa_pc, pa->pa_tag, PCI_SUBSYS_ID_REG); + spid = PCI_PRODUCT(subid); + switch (PCI_PRODUCT(pa->pa_id)) { case PCI_PRODUCT_INTEL_WL_22500_1: sc->sc_fwname = "iwx-cc-a0-67"; @@ -9406,6 +9412,26 @@ iwx_attach(struct device *parent, struct device *self, void *aux) sc->sc_uhb_supported = 0; break; case PCI_PRODUCT_INTEL_WL_22500_2: + if (sc->sc_hw_rev != IWX_CSR_HW_REV_TYPE_QUZ) { + printf("%s: unsupported AX201 adapter\n", DEVNAME(sc)); + return; + } + + if (spid == 0x0030) { + sc->sc_fwname = "iwx-QuZ-a0-jf-b0-63"; + } + else { + sc->sc_fwname = "iwx-QuZ-a0-hr-b0-67"; + } + + sc->sc_device_family = IWX_DEVICE_FAMILY_22000; + sc->sc_integrated = 1; + sc->sc_ltr_delay = IWX_SOC_FLAGS_LTR_APPLY_DELAY_200; + sc->sc_low_latency_xtal = 0; + sc->sc_xtal_latency = 500; + sc->sc_tx_with_siso_diversity = 0; + sc->sc_uhb_supported = 0; + break; case PCI_PRODUCT_INTEL_WL_22500_3: case PCI_PRODUCT_INTEL_WL_22500_5: if (sc->sc_hw_rev != IWX_CSR_HW_REV_TYPE_QUZ) {