On Thu, Aug 21, 2025 at 02:56:57PM +1000, Jonathan Gray wrote:
> On Wed, Aug 20, 2025 at 10:35:45PM -0400, Peter Moss wrote:
> > Hi Jonathan,
> >
> > Here is the updated pcidump.
> >
> > Looks like the wi-fi is at 0:20:3 (product 7740).
> > I opened the laptop and took a picture of the chip.
> > It is AX211D2W. See the attached jpeg file.
> >
> > Also, I am attaching the updated pcidump (pcidump.txt)
> >
> > 0:0:0: Intel Core Ultra Host
> > 0:2:0: Intel Graphics
> > 0:4:0: Intel Core Ultra DTT
> > 0:6:0: Intel Core Ultra PCIE
> > 0:6:1: Intel Core Ultra PCIE
> > 0:7:0: Intel Core Ultra PCIE
> > 0:7:2: Intel Core Ultra PCIE
> > 0:10:0: Intel Core Ultra PMT
> > 0:11:0: Intel Core Ultra NPU
> > 0:13:0: Intel Core Ultra xHCI
> > 0:13:2: Intel Core Ultra TBT
> > 0:13:3: Intel Core Ultra TBT
> > 0:20:0: Intel Core Ultra xHCI
> > 0:20:2: Intel Core Ultra SRAM
> > 0:20:3: Intel unknown
> > 0:21:0: Intel Core Ultra I2C
> > 0:22:0: Intel Core Ultra HECI
> > 0:28:0: Intel Core Ultra PCIE
> > 0:28:6: Intel Core Ultra PCIE
> > 0:31:0: Intel unknown
> > 0:31:3: Intel Core Ultra HD Audio
> > 0:31:4: Intel Core Ultra SMBus
> > 0:31:5: Intel Core Ultra SPI
> > 0:31:6: Intel I219-V
> > 5:0:0: Samsung PM9C1a
> > 8:0:0: Quectel unknown
> >
> > Do you know why iwx (AX211D2W) driver is not loaded?
> > What can I do?
>
> 0x7740 is a type not yet supported (Bz). With a different firmware.
> iwx(4) will need more changes than adding the id.
Try this, I don't think it will be enough.
Index: sys/dev/pci/if_iwx.c
===================================================================
RCS file: /cvs/src/sys/dev/pci/if_iwx.c,v
diff -u -p -r1.192 if_iwx.c
--- sys/dev/pci/if_iwx.c 18 Jul 2025 16:09:28 -0000 1.192
+++ sys/dev/pci/if_iwx.c 21 Aug 2025 08:17:24 -0000
@@ -4473,7 +4473,7 @@ iwx_run_init_mvm_ucode(struct iwx_softc
* support, but doesn't actually work.
*/
if (isset(sc->sc_enabled_capa, IWX_UCODE_TLV_CAPA_MLD_API_SUPPORT) &&
- IWX_CSR_HW_REV_TYPE(sc->sc_hw_rev) == IWX_CFG_MAC_TYPE_MA)
+ IWX_CSR_HW_REV_TYPE(sc->sc_hw_rev) >= IWX_CFG_MAC_TYPE_MA)
sc->sc_use_mld_api = 1;
return 0;
@@ -11211,6 +11211,23 @@ static const struct iwx_dev_info iwx_dev
IWX_CFG_RF_TYPE_FM, IWX_CFG_ANY,
IWX_CFG_ANY, IWX_CFG_ANY, IWX_CFG_NO_CDB,
IWX_CFG_ANY, iwx_cfg_ma_a0_fm_a0), /* ax231 */
+
+ /* Bz */
+ _IWX_DEV_INFO(IWX_CFG_ANY, IWX_CFG_ANY,
+ IWX_CFG_MAC_TYPE_BZ, IWX_CFG_ANY,
+ IWX_CFG_RF_TYPE_FM, IWX_CFG_ANY,
+ IWX_CFG_ANY, IWX_CFG_ANY, IWX_CFG_CDB,
+ IWX_CFG_ANY, iwx_cfg_bz_b0_fm_c0),
+ _IWX_DEV_INFO(IWX_CFG_ANY, IWX_CFG_ANY,
+ IWX_CFG_MAC_TYPE_BZ, IWX_CFG_ANY,
+ IWX_CFG_RF_TYPE_GF, IWX_CFG_ANY,
+ IWX_CFG_ANY, IWX_CFG_ANY, IWX_CFG_CDB,
+ IWX_CFG_ANY, iwx_cfg_bz_b0_gf_a0),
+ _IWX_DEV_INFO(IWX_CFG_ANY, IWX_CFG_ANY,
+ IWX_CFG_MAC_TYPE_BZ, IWX_CFG_ANY,
+ IWX_CFG_RF_TYPE_HR2, IWX_CFG_ANY,
+ IWX_CFG_ANY, IWX_CFG_ANY, IWX_CFG_CDB,
+ IWX_CFG_ANY, iwx_cfg_bz_b0_hr_b0),
};
int
@@ -11362,6 +11379,7 @@ iwx_find_device_cfg(struct iwx_softc *sc
return NULL;
}
+#define PCI_PRODUCT_INTEL_WL_22500_18 0x7740
void
iwx_attach(struct device *parent, struct device *self, void *aux)
@@ -11575,6 +11593,17 @@ iwx_attach(struct device *parent, struct
sc->sc_ltr_delay = IWX_SOC_FLAGS_LTR_APPLY_DELAY_NONE;
sc->sc_low_latency_xtal = 0;
sc->sc_xtal_latency = 0;
+ sc->sc_tx_with_siso_diversity = 0;
+ sc->sc_uhb_supported = 1;
+ break;
+ case PCI_PRODUCT_INTEL_WL_22500_18:
+ sc->sc_fwname = IWX_BZ_B_FM_C_FW;
+ sc->sc_pnvm_name = IWX_BZ_B_FM_C_PNVM;
+ sc->sc_device_family = IWX_DEVICE_FAMILY_AX210;
+ sc->sc_integrated = 1;
+ sc->sc_ltr_delay = IWX_SOC_FLAGS_LTR_APPLY_DELAY_2500;
+ sc->sc_low_latency_xtal = 1;
+ sc->sc_xtal_latency = 12000;
sc->sc_tx_with_siso_diversity = 0;
sc->sc_uhb_supported = 1;
break;
Index: sys/dev/pci/if_iwxvar.h
===================================================================
RCS file: /cvs/src/sys/dev/pci/if_iwxvar.h,v
diff -u -p -r1.42 if_iwxvar.h
--- sys/dev/pci/if_iwxvar.h 8 Nov 2024 09:12:46 -0000 1.42
+++ sys/dev/pci/if_iwxvar.h 21 Aug 2025 08:06:24 -0000
@@ -494,6 +494,12 @@ struct iwx_device_cfg {
#define IWX_MA_B_GF4_A_PNVM "iwx-ma-b0-gf4-a0.pnvm"
#define IWX_MA_A_FM_A_FW "iwx-ma-a0-fm-a0-83"
#define IWX_MA_A_FM_A_PNVM "iwx-ma-a0-fm-a0.pnvm"
+#define IWX_BZ_B_FM_C_FW "iwx-bz-b0-fm-c0-96"
+#define IWX_BZ_B_FM_C_PNVM "iwx-bz-b0-fm-c0.pnvm"
+#define IWX_BZ_B_GF_A_FW "iwx-bz-b0-gf-a0-96"
+#define IWX_BZ_B_GF_A_PNVM "iwx-bz-b0-gf-a0.pnvm"
+#define IWX_BZ_B_HR_B_FW "iwx-bz-b0-hr-b0-96"
+#define IWX_BZ_B_HR_B_PNVM "iwx-bz-b0-hr-b0.pnvm"
const struct iwx_device_cfg iwx_9560_quz_a0_jf_b0_cfg = {
.fw_name = IWX_QUZ_A_JF_B_FW,
@@ -600,6 +606,21 @@ const struct iwx_device_cfg iwx_cfg_ma_b
const struct iwx_device_cfg iwx_cfg_ma_a0_fm_a0 = {
.fw_name = IWX_MA_A_FM_A_FW,
.pnvm_name = IWX_MA_A_FM_A_PNVM,
+};
+
+const struct iwx_device_cfg iwx_cfg_bz_b0_fm_c0 = {
+ .fw_name = IWX_BZ_B_FM_C_FW,
+ .pnvm_name = IWX_BZ_B_FM_C_PNVM,
+};
+
+const struct iwx_device_cfg iwx_cfg_bz_b0_gf_a0 = {
+ .fw_name = IWX_BZ_B_GF_A_FW,
+ .pnvm_name = IWX_BZ_B_GF_A_PNVM,
+};
+
+const struct iwx_device_cfg iwx_cfg_bz_b0_hr_b0 = {
+ .fw_name = IWX_BZ_B_HR_B_FW,
+ .pnvm_name = IWX_BZ_B_HR_B_PNVM,
};
#define IWX_CFG_ANY (~0)