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