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) {

Reply via email to