Use PCIe WiFi module, but I got many error.(wlan_dnld_fw fail ret=0xffffffff)

I’m going to use my pcie (Key-E) WiFi module for rock 3a.
I have built the driver and loaded it correctly, but I get the following error log.
Any one estimate the cause?

root@rock3a:~# dmesg

[  106.353384] wlan: Loading MWLAN driver
[  106.354263] wlan_pcie 0000:01:00.0: enabling device (0000 -> 0002)
[  106.354801] Attach moal handle ops, card interface type: 0x206
[  106.360028] PCIE9098: init module param from usr cfg
[  106.360069] card_type: PCIE9098, config block: 0
[  106.360086] cfg80211_wext=0xf
[  106.360095] wfd_name=p2p
[  106.360107] max_vir_bss=1
[  106.360117] cal_data_cfg=none
[  106.360128] drv_mode = 7
[  106.360137] ps_mode = 2
[  106.360146] auto_ds = 2
[  106.360157] fw_name=nxp/pcieuart9098_combo_v1.bin
[  106.360185] rx_work=1 cpu_num=4
[  106.360260] Attach mlan adapter operations.card_type is 0x206.
[  106.362582] Request firmware: nxp/pcieuart9098_combo_v1.bin
[  106.828687] FW download over, size 620880 bytes
[  106.932646] FW failed to be active in time!
[  106.932662] wlan_dnld_fw fail ret=0xffffffff
[  106.932669] WLAN: Fail download FW with nowwait: 0
[  106.932738] Config Space Registers:
[  106.932784] reg:0x00 value=0x2b431b4b
[  106.932819] reg:0x04 value=0x00100000
[  106.932868] reg:0x10 value=0x0000000c
[  106.932916] reg:0x18 value=0x0000000c
[  106.932967] reg:0x2c value=0x2b431b4b
[  106.933018] reg:0x3c value=0x000001ff
[  106.933056] reg:0x44 value=0x00000008
[  106.933098] reg:0x80 value=0x10110000
[  106.933145] reg:0x98 value=0x00000000
[  106.933194] reg:0x170 value=0x0001001e
[  106.933228] FW Scrach Registers:
[  106.933264] reg:0x1c90 value=0xffffffff
[  106.933302] reg:0x1c98 value=0xffffffff
[  106.933328] reg:0x1c9c value=0xffffffff
[  107.033386] reg:0x1c98 value=0xffffffff
[  107.033419] reg:0x1c9c value=0xffffffff
[  107.133441] Interface registers dump from offset 0x1c98 to 0x1c9f
[  107.133461] PCIE registers from offset 0x1c20 to 0x1c9c:
[  107.133488] ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
[  107.133514] ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
[  107.133552] ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff
[  107.133582] ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff

root@rock3a:~# lshw -short

    H/W path  Device  Class      Description
    ========================================
                      system     Radxa ROCK 3 Model A
    /0                bus        Motherboard
    /0/0              processor  cpu
    /0/1              processor  cpu
    /0/2              processor  cpu
    /0/3              processor  cpu
    /0/4              processor  idle-states
    /0/5              memory     1474MiB System memory
    /0/100            bridge     Fuzhou Rockchip Electronics Co., Ltd
    /0/6              network    Marvell Technology Group Ltd.
    /0/0.1            network    Marvell Technology Group Ltd.
    /1        usb1    bus        EHCI Host Controller
    /1/1              bus        USB 2.0 Hub
    /2        usb2    bus        EHCI Host Controller
    /3        usb3    bus        Generic Platform OHCI controller
    /4        usb4    bus        Generic Platform OHCI controller
    /5        usb5    bus        xHCI Host Controller
    /6        usb6    bus        xHCI Host Controller
    /7        usb7    bus        xHCI Host Controller
    /8        usb8    bus        xHCI Host Controller
    /9        eth0    network    Ethernet interface

root@rock3a:~# lspci

root@rock3a:/var/log# lspci -t -v
        -+-[0000:01]-+-00.0  Marvell Technology Group Ltd. Device 2b43
         |           \-00.1  Marvell Technology Group Ltd. Device 2b44
         \-[0000:00]---00.0-[00]--
root@rock3a:/var/log# lspci -v
        00:00.0 PCI bridge: Fuzhou Rockchip Electronics Co., Ltd Device 3566 (rev 01) (prog-if 00 [Normal decode])
                Flags: bus master, fast devsel, latency 0, IRQ 107
                Bus: primary=00, secondary=00, subordinate=00, sec-latency=0
                I/O behind bridge: 00000000-00000fff [size=4K]
                Memory behind bridge: 00000000-000fffff [size=1M]
                Prefetchable memory behind bridge: 0000000000000000-00000000000fffff [size=1M]
                Expansion ROM at 300d00000 [virtual] [disabled] [size=64K]
                Capabilities: [40] Power Management version 3
                Capabilities: [50] MSI: Enable- Count=1/32 Maskable- 64bit+
                Capabilities: [70] Express Root Port (Slot-), MSI 00
                Capabilities: [b0] MSI-X: Enable- Count=1 Masked-
                Capabilities: [100] Advanced Error Reporting
                Capabilities: [148] Secondary PCI Express
                Capabilities: [160] L1 PM Substates
                Capabilities: [170] Vendor Specific Information: ID=0002 Rev=4 Len=100 <?>
                Kernel driver in use: pcieport
        lspci: Unable to load libkmod resources: error -12

        01:00.0 Ethernet controller: Marvell Technology Group Ltd. Device 2b43 (rev 02)
                Subsystem: Marvell Technology Group Ltd. Device 2b43
                Flags: fast devsel, IRQ 106
                Memory at 300a00000 (64-bit, prefetchable) [virtual] [size=1M]
                Memory at 300c00000 (64-bit, prefetchable) [virtual] [size=128K]
                Memory at 300c20000 (64-bit, prefetchable) [virtual] [size=16K]
                Capabilities: [40] Power Management version 3
                Capabilities: [50] MSI: Enable- Count=1/32 Maskable+ 64bit+
                Capabilities: [70] Express Endpoint, MSI 00
                Capabilities: [b0] MSI-X: Enable- Count=32 Masked-
                Capabilities: [100] Advanced Error Reporting
                Capabilities: [148] Device Serial Number 00-00-00-00-00-00-00-00
                Capabilities: [158] Power Budgeting <?>
                Capabilities: [168] Latency Tolerance Reporting
                Capabilities: [170] L1 PM Substates

        01:00.1 Ethernet controller: Marvell Technology Group Ltd. Device 2b44 (rev 02)
                Subsystem: Marvell Technology Group Ltd. Device 2b44
                Flags: fast devsel, IRQ 117
                Memory at 300b00000 (64-bit, prefetchable) [virtual] [size=1M]
                Memory at 300900000 (64-bit, non-prefetchable) [virtual] [size=128K]
                Memory at 300c24000 (64-bit, prefetchable) [virtual] [size=16K]
                Capabilities: [40] Power Management version 3
                Capabilities: [50] MSI: Enable- Count=1/32 Maskable+ 64bit+
                Capabilities: [70] Express Endpoint, MSI 00
                Capabilities: [b0] MSI-X: Enable- Count=32 Masked-
                Capabilities: [100] Advanced Error Reporting
                Capabilities: [148] Device Serial Number 00-00-00-00-00-00-00-00
                Capabilities: [158] Power Budgeting <?>

root@rock3a:~# uname -a

Linux rock3a 4.19.193-32-rockchip-g002dd37173cf #rockchip SMP Thu Feb 10 03:32:38 UTC 2022 aarch64 aarch64 aarch64 GNU/Linux

module & firm loadding

root@rock3a:~# modprobe moal mod_para=nxp/wifi_mod_para_pci9098.conf
root@rock3a:~# cat /lib/firmware/nxp/wifi_mod_para_pci9098.conf
        PCIE9098_0 = {
                cfg80211_wext=0xf
                wfd_name=p2p
                max_vir_bss=1
                cal_data_cfg=none
                drv_mode=7
                ps_mode=2
                auto_ds=2
                fw_name=nxp/pcieuart9098_combo_v1.bin
        }
        root@rock3a:/var/log# lsmod
        Module                  Size  Used by
        moal                  614400  0
        mlan                  462848  1 moal
        8021q                  24576  0
        sch_fq_codel           20480  2
        ip_tables              28672  0
        x_tables               28672  1 ip_tables
        ipv6                  397312  32
        dwc3                  131072  0
        udc_core               36864  1 dwc3
        dwc3_of_simple         16384  0
        realtek                20480  1
root@rock3a:~# modinfo mlan
        filename:       /lib/modules/4.19.193-32-rockchip-g002dd37173cf/kernel/drivers/net/wireless/rockchip_wlan/mxm_wifiex/mlan.ko
        license:        GPL
        version:        266.p4
        author:         NXP
        description:    M-WLAN MLAN Driver
        srcversion:     8E392FEFAC95915DA7FC1EC
        depends:
        intree:         Y
        name:           mlan
        vermagic:       4.19.193-32-rockchip-g002dd37173cf SMP mod_unload modversions aarch64
root@rock3a:~# modinfo moal
        filename:       /lib/modules/4.19.193-32-rockchip-g002dd37173cf/kernel/drivers/net/wireless/rockchip_wlan/mxm_wifiex/moal.ko
        license:        GPL
        version:        266.p4
        author:         NXP
        description:    M-WLAN Driver
        srcversion:     B3ABB2FC5FD5ABC3AA82AF4
        depends:        mlan
        intree:         Y
        name:           moal
        vermagic:       4.19.193-32-rockchip-g002dd37173cf SMP mod_unload modversions aarch64
        parm:           mod_para:Module parameters configuration file (charp)
        parm:           hw_test:0: Disable hardware test; 1: Enable hardware test (int)
        parm:           dts_enable:0: Disable DTS; 1: Enable DTS (int)
        parm:           fw_name:Firmware name (charp)
        parm:           req_fw_nowait:0: Use request_firmware API; 1: Use request_firmware_nowait API (int)
        parm:           fw_reload:0: disable fw_reload; 1: enable fw reload feature (int)
        parm:           fw_serial:0: support parallel download FW; 1: support serial download FW (int)
        parm:           mac_addr:MAC address (charp)
        parm:           mfg_mode:0: Download normal firmware; 1: Download MFG firmware (int)
        parm:           drv_mode:Bit 0: STA; Bit 1: uAP; Bit 2: WIFIDIRECT (int)
        parm:           max_sta_bss:Number of STA interfaces (1) (int)
        parm:           sta_name:STA interface name (charp)
        parm:           max_uap_bss:Number of uAP interfaces (1) (int)
        parm:           uap_name:uAP interface name (charp)
        parm:           max_wfd_bss:Number of WIFIDIRECT interfaces (1) (int)
        parm:           wfd_name:WIFIDIRECT interface name (charp)
        parm:           max_vir_bss:Number of Virtual interfaces (0) (int)
        parm:           drvdbg:Driver debug (uint)
        parm:           auto_ds:0: MLAN default; 1: Enable auto deep sleep; 2: Disable auto deep sleep (int)
        parm:           ps_mode:0: MLAN default; 1: Enable IEEE PS mode; 2: Disable IEEE PS mode (int)
        parm:           p2a_scan:0: MLAN default; 1: Enable passive to active scan for DFS channel; 2: Disable passive to active scan for DFS channel (int)
        parm:           scan_chan_gap:Time gap between two scans in milliseconds when connected to AP(max value 500ms) (int)
        parm:           max_tx_buf:Maximum Tx buffer size (2048/4096/8192) (int)
        parm:           intmode:0: INT_MODE_SDIO, 1: INT_MODE_GPIO (int)
        parm:           gpiopin:255:new GPIO int mode, other vlue: gpio pin number (int)
        parm:           pm_keep_power:1: PM keep power; 0: PM no power (int)
        parm:           shutdown_hs:1: Enable HS when shutdown; 0: No HS when shutdown (int)
        parm:           cfg_11d:0: MLAN default; 1: Enable 802.11d; 2: Disable 802.11d (int)
        parm:           slew_rate:0:has the slowest slew rate, then 01, then 02, and 03 has the highest slew rate (int)
        parm:           tx_work:1: Enable tx_work; 0: Disable tx_work (uint)
        parm:           rps:1: Enable rps; 0: Disable rps (uint)
        parm:           tx_skb_clone:1: Enable tx_skb_clone; 0: Disable tx_skb_clone (uint)
        parm:           dpd_data_cfg:DPD data file name (charp)
        parm:           init_cfg:Init config file name (charp)
        parm:           cal_data_cfg:Calibration data file name (charp)
        parm:           txpwrlimit_cfg:Set configuration data of Tx power limitation (charp)
        parm:           cntry_txpwr:0: disable (default), 1: enable set country txpower table 2: enable set country rgpower table (int)
        parm:           init_hostcmd_cfg:Init hostcmd file name (charp)
        parm:           band_steer_cfg:band steer cfg file name (charp)
        parm:           cfg80211_wext:Bit 0: STA WEXT Bit 1: UAP WEXT Bit 2: STA CFG80211 Bit 3: UAP CFG80211 (int)
        parm:           wq_sched_prio:Priority of work queue (int)
        parm:           wq_sched_policy:0: SCHED_NORMAL; 1: SCHED_FIFO; 2: SCHED_RR; 3: SCHED_BATCH; 5: SCHED_IDLE (int)
        parm:           rx_work:0: default; 1: Enable rx_work_queue; 2: Disable rx_work_queue (int)
        parm:           aggrctrl:1: Enable Tx aggregation; 0: Disable Tx aggregation (int)
        parm:           ring_size:adma dma ring size: 32/64/128/256/512, default 128 (int)
        parm:           pcie_int_mode:0: Legacy mode; 1: MSI mode; 2: MSI-X mode (int)
        parm:           low_power_mode_enable:0/1: Disable/Enable Low Power Mode (int)
        parm:           wakelock_timeout:set wakelock_timeout value (ms) (int)
        parm:           dev_cap_mask:Device capability mask (uint)
        parm:           sdio_rx_aggr:1: Enable SDIO rx aggr; 0: Disable SDIO rx aggr (int)
        parm:           pmic:1: Send pmic configure cmd to firmware; 0: No pmic configure cmd sent to firmware (int)
        parm:           antcfg:0:default; SD8887/SD8987-[1:Tx/Rx antenna 1, 2:Tx/Rx antenna 2, 0xffff:enable antenna diversity];SD8897/SD8997-[Bit0:Rx Path A, Bit1:Rx Path B, Bit 4:Tx Path A, Bit 5:Tx Path B];9098/9097-[Bit 0: 2G Tx/Rx path A, Bit 1: 2G Tx/Rx path B,Bit 8: 5G Tx/Rx path A, Bit 9: 5G Tx/Rx path B] (int)
        parm:           uap_oper_ctrl:0:default; 0x20001:uap restarts on channel 6 (uint)
        parm:           hs_wake_interval:Host sleep wakeup interval,it will round to nearest multiple dtim*beacon_period in fw (int)
        parm:           indication_gpio:GPIO to indicate wakeup source; high four bits: level for normal wakeup; low four bits: GPIO pin number. (int)
        parm:           disconnect_on_suspend:1: Enable disconnect wifi on suspend; 0: Disable disconnect wifi on suspend (int)
        parm:           hs_mimo_switch:Dynamic MIMO-SISO switch during host sleep; 0: disable (default), 1: enable (int)
        parm:           indrstcfg:Independent reset configuration; high byte: GPIO pin number; low byte: IR mode (int)
        parm:           fixed_beacon_buffer:0: allocate default buffer size; 1: allocate max buffer size. (int)
        parm:           GoAgeoutTime:0: use default ageout time; set Go age out time (TU 100ms) (int)
        parm:           gtk_rekey_offload:0: disable gtk_rekey_offload; 1: enable gtk_rekey_offload (default); 2: enable gtk_rekey_offload in suspend mode only; (int)
        parm:           multi_dtim:DTIM interval (ushort)
        parm:           inact_tmo:IEEE ps inactivity timout value (ushort)
        parm:           napi:1: enable napi api; 0: disable napi (int)
        parm:           dfs_offload:1: enable dfs offload; 0: disable dfs offload. (int)
        parm:           uap_max_sta:Maximum station number for UAP/GO. (int)
        parm:           host_mlme:1: Enable Host MLME Support; 0: Disable Host MLME support (int)
        parm:           disable_regd_by_driver:0: reg domain set by driver enable(default); 1: reg domain set by driver disable (int)
        parm:           reg_alpha2:Regulatory alpha2 (charp)
        parm:           country_ie_ignore:0: Follow countryIE from AP and beacon hint enable; 1: Ignore countryIE from AP and beacon hint disable (int)
        parm:           beacon_hints:0: enable beacon hints(default); 1: disable beacon hints (int)
        parm:           dfs53cfg:0: fw default; 1: new w53 dfs; 2: old w53 dfs (int)

What WiFi module do you use ? AW-XM458?

Thanks Stephen.

This module name is JODY-W3.
https://www.u-blox.com/en/docs/UBX-18069981

I didn’t test JODY-W3 WiFi module, but I did test AW-XM458 on ROCK 3A.
AW-XM458 uses the same WiFi/BT firmware, pcieuart9098_combo_v1.bin.
The latest ROCK 3A kernel supports AW-XM458.

How about this?
With PCIe card JODY-W3 on ROCK 3A, try the following steps.

  • check PCIe device
lspci
  • Create file /lib/firmware/nxp/wifi_mod_para.conf.
# cat /lib/firmware/nxp/wifi_mod_para.conf 
PCIE9098 = {
        cfg80211_wext=0xf
        sta_name=wlan
        wfd_name=p2p
        max_vir_bss=1
        cal_data_cfg=none
        drv_mode=3
        ps_mode=2
        auto_ds=2
        fw_name=nxp/pcieuart9098_combo_v1.bin

  • Copy pcieuart9098_combo_v1.bin to directory /lib/firmware/nxp/
  • Load driver.
modprobe mlan
modprobe moal mod_para=nxp/wifi_mod_para.conf

Thanks Stephen.

Bus result was the same(Fail).

I suspect the following error is also a problem.
I brought EVK-JODY-W3 that is running on other SoCs, so I don’t think there is a problem on the EVK side.

What could be the cause of this “PCIe Link Fail”?
Power supply?

[    5.552116] rk-pcie 3c0800000.pcie: PCIe Linking... LTSSM is 0x0
[    5.910396] rockchip_canfd fe580000.can can0: rockchip_canfd_get_berr_counter RX_ERR_CNT=0x00000000, TX_ERR_CNT=0x00000000
[    6.565390] rk-pcie 3c0800000.pcie: PCIe Linking... LTSSM is 0x0
[    7.578528] rk-pcie 3c0800000.pcie: PCIe Linking... LTSSM is 0x0
[    8.591998] rk-pcie 3c0800000.pcie: PCIe Linking... LTSSM is 0x0
[    8.620446] rk_gmac-dwmac fe010000.ethernet eth0: Link is Up - 100Mbps/Full - flow control rx/tx
[    8.620565] IPv6: ADDRCONF(NETDEV_CHANGE): eth0: link becomes ready
[    9.605281] rk-pcie 3c0800000.pcie: PCIe Linking... LTSSM is 0x0
[    9.910348] rockchip_canfd fe580000.can can0: rockchip_canfd_get_berr_counter RX_ERR_CNT=0x00000000, TX_ERR_CNT=0x00000000
[   10.618631] rk-pcie 3c0800000.pcie: PCIe Linking... LTSSM is 0x0
[   11.631923] rk-pcie 3c0800000.pcie: PCIe Link Fail
[   11.632063] rk-pcie 3c0800000.pcie: failed to initialize host
[   11.910274] rockchip_canfd fe580000.can can0: rockchip_canfd_get_berr_counter RX_ERR_CNT=0x00000000, TX_ERR_CNT=0x00000000
[   14.263233] rockchip_canfd fe580000.can can0: rockchip_canfd_get_berr_counter RX_ERR_CNT=0x00000000, TX_ERR_CNT=0x00000000
[   15.258713] rockchip_canfd fe580000.can can0: rockchip_canfd_get_berr_counter RX_ERR_CNT=0x00000000, TX_ERR_CNT=0x00000000
[   44.167500] dwhdmi-rockchip fe0a0000.hdmi: Rate 0 missing; compute N dynamically
[   44.181529] dwhdmi-rockchip fe0a0000.hdmi: Rate 0 missing; compute N dynamically
[   44.189501] dwhdmi-rockchip fe0a0000.hdmi: Rate 0 missing; compute N dynamically
[   47.194167] rockchip_canfd fe580000.can can0: rockchip_canfd_get_berr_counter RX_ERR_CNT=0x00000000, TX_ERR_CNT=0x00000000
root@rock3a:/home/rock# lspci
00:00.0 PCI bridge: Fuzhou Rockchip Electronics Co., Ltd Device 3566 (rev 01)
01:00.0 Ethernet controller: Marvell Technology Group Ltd. Device 2b43 (rev 02)
01:00.1 Ethernet controller: Marvell Technology Group Ltd. Device 2b44 (rev 02)

Also, other SoC EVKs detect Bluetooth(Device 2b45), but rock 3a does not.
There is also dmesg that can be read by firm on other SoC EVKs.

root@imx8qmmek:~# lspci -t -v
-[0000:00]---00.0-[01-ff]--+-00.0  Marvell Technology Group Ltd. Device 2b43
                           +-00.1  Marvell Technology Group Ltd. Device 2b44
                           \-00.2  Marvell Technology Group Ltd. Device 2b45
root@imx8qmmek:~# lspci -v
00:00.0 PCI bridge: Freescale Semiconductor Inc Device 0000 (rev 01) (prog-if 00 [Normal decode])
        Flags: bus master, fast devsel, latency 0, IRQ 612
        Memory at 60000000 (32-bit, non-prefetchable) [size=16M]
        Bus: primary=00, secondary=01, subordinate=ff, sec-latency=0
        I/O behind bridge: None
        Memory behind bridge: 62000000-620fffff [size=1M]
        Prefetchable memory behind bridge: 0000000062100000-00000000624fffff [size=4M]
        [virtual] Expansion ROM at 61000000 [disabled] [size=16M]
        Capabilities: [40] Power Management version 3
        Capabilities: [50] MSI: Enable- Count=1/16 Maskable- 64bit-
        Capabilities: [70] Express Root Port (Slot-), MSI 00
        Capabilities: [100] Advanced Error Reporting
        Capabilities: [148] Secondary PCI Express <?>
        Capabilities: [168] L1 PM Substates
        Kernel driver in use: pcieport

01:00.0 Ethernet controller: Marvell Technology Group Ltd. Device 2b43 (rev 02)
        Subsystem: Marvell Technology Group Ltd. Device 2b43
        Flags: fast devsel, IRQ 255
        Memory at 62100000 (64-bit, prefetchable) [disabled] [size=1M]
        Memory at 62400000 (64-bit, prefetchable) [disabled] [size=128K]
        Memory at 62420000 (64-bit, prefetchable) [disabled] [size=16K]
        Capabilities: [40] Power Management version 3
        Capabilities: [50] MSI: Enable- Count=1/32 Maskable+ 64bit+
        Capabilities: [70] Express Endpoint, MSI 00
        Capabilities: [b0] MSI-X: Enable- Count=32 Masked-
        Capabilities: [100] Advanced Error Reporting
        Capabilities: [148] Device Serial Number 00-00-00-00-00-00-00-00
        Capabilities: [158] Power Budgeting <?>
        Capabilities: [168] Latency Tolerance Reporting
        Capabilities: [170] L1 PM Substates
        Kernel modules: moal_jody_w3_pcieuart

01:00.1 Ethernet controller: Marvell Technology Group Ltd. Device 2b44 (rev 02)
        Subsystem: Marvell Technology Group Ltd. Device 2b44
        Flags: fast devsel, IRQ 255
        Memory at 62200000 (64-bit, prefetchable) [disabled] [size=1M]
        Memory at 62000000 (64-bit, non-prefetchable) [disabled] [size=128K]
        Memory at 62424000 (64-bit, prefetchable) [disabled] [size=16K]
        Capabilities: [40] Power Management version 3
        Capabilities: [50] MSI: Enable- Count=1/32 Maskable+ 64bit+
        Capabilities: [70] Express Endpoint, MSI 00
        Capabilities: [b0] MSI-X: Enable- Count=32 Masked-
        Capabilities: [100] Advanced Error Reporting
        Capabilities: [148] Device Serial Number 00-00-00-00-00-00-00-00
        Capabilities: [158] Power Budgeting <?>
        Kernel modules: moal_jody_w3_pcieuart

01:00.2 Bluetooth: Marvell Technology Group Ltd. Device 2b45 (rev 02)
        Subsystem: Marvell Technology Group Ltd. Device 2b45
        Flags: fast devsel, IRQ 255
        Memory at 62300000 (64-bit, prefetchable) [disabled] [size=1M]
        Memory at 62020000 (64-bit, non-prefetchable) [disabled] [size=128K]
        Memory at 62428000 (64-bit, prefetchable) [disabled] [size=16K]
        Capabilities: [40] Power Management version 3
        Capabilities: [50] MSI: Enable- Count=1/32 Maskable+ 64bit+
        Capabilities: [70] Express Endpoint, MSI 00
        Capabilities: [b0] MSI-X: Enable- Count=32 Masked-
        Capabilities: [100] Advanced Error Reporting
        Capabilities: [148] Device Serial Number 00-00-00-01-00-00-00-00
        Capabilities: [158] Power Budgeting <?>

[dmesg]

root@imx8qmmek:~# modprobe jody-w3-pcieuart
[   37.407620] mlan: loading out-of-tree module taints kernel.
[   37.413243] mlan: module license 'NXP Proprietary' taints kernel.
[   37.419399] Disabling lock debugging due to kernel taint
[   37.453953] cfg80211: Loading compiled-in X.509 certificates for regulatory database
[   37.471927] cfg80211: Loaded X.509 cert 'sforshee: 00b28ddf47aef9cea7'
[   37.512893] wlan: Loading MWLAN driver
[   37.517247] wlan_pcie 0000:01:00.0: enabling device (0000 -> 0002)
[   37.523638] Attach moal handle ops, card interface type: 0x206
[   37.529491] No module param cfg file specified
[   37.533958] rx_work=1 cpu_num=6
[   37.537115] Attach mlan adapter operations.card_type is 0x206.
[   37.545346] Request firmware: nxp/jody-w3-pcieuart/pcieuart9098_combo_v1.bin
[   38.018465] FW download over, size 653828 bytes
[   39.533356] WLAN FW is active
[   39.557846] VDLL image: len=131900
[   39.561465] fw_cap_info=0xc8fcffab, dev_cap_mask=0xffffffff
[   39.567108] max_p2p_conn = 8, max_sta_conn = 64
[   39.572383] moal_recv_event: priv is null
[   39.576441] moal_recv_event: priv is null
[   39.580502] moal_recv_event: priv is null
[   39.584761] moal_recv_event: priv is null
[   39.588919] moal_recv_event: priv is null
[   39.593059] moal_recv_event: priv is null
[   39.597247] moal_recv_event: priv is null
[   39.614188] wlan: version = PCIE9098-17.68.1.p11-MXM4X17193-GPL-(FP68)
[   39.626288] wlan_pcie 0000:01:00.1: enabling device (0000 -> 0002)
[   39.632778] Attach moal handle ops, card interface type: 0x206
[   39.638711] No module param cfg file specified
[   39.643220] rx_work=1 cpu_num=6
[   39.646428] Attach mlan adapter operations.card_type is 0x206.
[   39.673480] Request firmware: nxp/jody-w3-pcieuart/pcieuart9098_combo_v1.bin
[   39.682014] WLAN FW already running! Skip FW download
[   39.687355] WLAN FW is active
[   39.694116] VDLL image: len=131900
[   39.697607] fw_cap_info=0x68fcffab, dev_cap_mask=0xffffffff
[   39.703257] max_p2p_conn = 8, max_sta_conn = 64
[   39.715448] wlan: version = PCIE9098-17.68.1.p11-MXM4X17193-GPL-(FP68)
[   39.723088] wlan: Driver loaded successfully

Try to add more debug log.

For example, you can check Makefile in the top level directory of you driver source.
Set CONFIG_DEBUG to 2, build and load drvier again.

 46 # Debug Option
 47 # DEBUG LEVEL n/1/2:
 48 # n: NO DEBUG
 49 # 1: Only PRINTM(MMSG,...), PRINTM(MFATAL,...), ...
 50 # 2: All PRINTM()
 51 CONFIG_DEBUG = 2

This is long dmesg message.(CONFIG_DEBUG = 2)

Please run below command

steghide --extract -sf xxx.jpg

You can see all messages.

Thanks.

As shown below, it seems that the kernel of Ver5.16 can also be used.
Rock 3 mainline kernel - 5.16-rc7
I would like to try if the wifi module works.
I wouldn’t be able to try it without the steps to build the system and .config.
Would you please introduce me build environment?

Thanks.

Do you have any hints?

Using the new driver, rebooting and loading the board after one failure now boots wifi. Is it the timing of startup?

“wlan: version = PCIE9098-17.68.1.p11-MXM4X17193-GPL-(FP68)”
to
“wlan: version = PCIE9098–17.68.1.p88-MXM5X17287-GPL-(FP68)”

[   21.253712] mlan: loading out-of-tree module taints kernel.
[   21.322516] wlan: Loading MWLAN driver
[   21.323320] wlan: Driver loaded successfully
[   21.323330] wlan: Register to Bus Driver...
[   21.323575] wlan_pcie 0000:01:00.0: enabling device (0000 -> 0002)
[   21.323837] Attach moal handle ops, card interface type: 0x206
[   21.325443] PCIE9098: init module param from usr cfg
[   21.325487] card_type: PCIE9098, config block: 0
[   21.325508] cfg80211_wext=0xf
[   21.325518] wfd_name=p2p
[   21.325525] max_vir_bss=1
[   21.325533] cal_data_cfg=none
[   21.325541] drv_mode = 7
[   21.325548] ps_mode = 2
[   21.325555] auto_ds = 2
[   21.325562] fw_name=nxp/pcieuart9098_combo_v1.bin
[   21.325591] rx_work=1 cpu_num=4
[   21.325675] Attach mlan adapter operations.card_type is 0x206.
[   21.327789] Request firmware: nxp/pcieuart9098_combo_v1.bin
[   21.349878] WLAN FW already running! Skip FW download
[   21.349888] WLAN FW is active
[   21.354916] VDLL image: len=140812
[   21.355309] fw_cap_info=0xc8fcffab, dev_cap_mask=0xffffffff
[   21.355335] max_p2p_conn = 8, max_sta_conn = 64
[   21.364877] rockchip_canfd fe580000.can can0: rockchip_canfd_get_berr_counter RX_ERR_CNT=0x00000000, TX_ERR_CNT=0x00000000
[   21.374827] wlan: version = PCIE9098--17.68.1.p88-MXM5X17287-GPL-(FP68)
[   21.375522] wlan_pcie 0000:01:00.1: enabling device (0000 -> 0002)
[   21.375837] Attach moal handle ops, card interface type: 0x206
[   21.376051] PCIE9098: init module param from usr cfg
[   21.376079] Configuration block, fallback processing
[   21.376088] Configuration fallback to, card_type: 0x206, blk_id: 0x0
[   21.376140] rx_work=1 cpu_num=4
[   21.376217] Attach mlan adapter operations.card_type is 0x206.
[   21.377840] Request firmware: nxp/pcieuart9098_combo_v1.bin
[   21.379129] WLAN FW already running! Skip FW download
[   21.379138] WLAN FW is active
[   21.382976] VDLL image: len=140812
[   21.383461] fw_cap_info=0x68fcffab, dev_cap_mask=0xffffffff
[   21.383488] max_p2p_conn = 8, max_sta_conn = 64
[   21.393457] wlan: version = PCIE9098--17.68.1.p88-MXM5X17287-GPL-(FP68)
[   21.393753] wlan: Register to Bus Driver Done
[   21.393836] wlan_pcie 0000:01:00.0 wlp1s0f0: renamed from p2p0
[   21.411857] IPv6: ADDRCONF(NETDEV_UP): mlan0: link is not ready
[   21.412260] rockchip_canfd fe580000.can can0: rockchip_canfd_get_berr_counter RX_ERR_CNT=0x00000000, TX_ERR_CNT=0x00000000
[   21.413981] wlan_pcie 0000:01:00.1 wlp1s0f1: renamed from p2p1
[   21.475233] rockchip_canfd fe580000.can can0: rockchip_canfd_get_berr_counter RX_ERR_CNT=0x00000000, TX_ERR_CNT=0x00000000
[   21.505608] IPv6: ADDRCONF(NETDEV_UP): uap0: link is not ready
[   21.506592] rockchip_canfd fe580000.can can0: rockchip_canfd_get_berr_counter RX_ERR_CNT=0x00000000, TX_ERR_CNT=0x00000000
[   21.506964] rockchip_canfd fe580000.can can0: rockchip_canfd_get_berr_counter RX_ERR_CNT=0x00000000, TX_ERR_CNT=0x00000000
[   21.532813] rockchip_canfd fe580000.can can0: rockchip_canfd_get_berr_counter RX_ERR_CNT=0x00000000, TX_ERR_CNT=0x00000000
[   21.535157] IPv6: ADDRCONF(NETDEV_UP): mmlan0: link is not ready
[   21.536427] IPv6: ADDRCONF(NETDEV_UP): mmlan0: link is not ready
[   21.540343] rockchip_canfd fe580000.can can0: rockchip_canfd_get_berr_counter RX_ERR_CNT=0x00000000, TX_ERR_CNT=0x00000000
[   21.544554] rockchip_canfd fe580000.can can0: rockchip_canfd_get_berr_counter RX_ERR_CNT=0x00000000, TX_ERR_CNT=0x00000000
[   21.550334] rockchip_canfd fe580000.can can0: rockchip_canfd_get_berr_counter RX_ERR_CNT=0x00000000, TX_ERR_CNT=0x00000000
[   21.560569] IPv6: ADDRCONF(NETDEV_UP): muap0: link is not ready
[   21.561652] IPv6: ADDRCONF(NETDEV_UP): muap0: link is not ready
[   21.564733] muap0: Skip change virtual intf on uap: type=2
[   21.565247] IPv6: ADDRCONF(NETDEV_UP): muap0: link is not ready
[   21.570177] rockchip_canfd fe580000.can can0: rockchip_canfd_get_berr_counter RX_ERR_CNT=0x00000000, TX_ERR_CNT=0x00000000
[   21.570566] rockchip_canfd fe580000.can can0: rockchip_canfd_get_berr_counter RX_ERR_CNT=0x00000000, TX_ERR_CNT=0x00000000
[   21.581957] IPv6: ADDRCONF(NETDEV_UP): mlan0: link is not ready
[   21.591912] IPv6: ADDRCONF(NETDEV_UP): uap0: link is not ready
[   21.595451] IPv6: ADDRCONF(NETDEV_UP): wlp1s0f0: link is not ready
[   21.595826] rockchip_canfd fe580000.can can0: rockchip_canfd_get_berr_counter RX_ERR_CNT=0x00000000, TX_ERR_CNT=0x00000000
[   21.597668] uap0: Skip change virtual intf on uap: type=2
[   21.598470] IPv6: ADDRCONF(NETDEV_UP): uap0: link is not ready
[   21.610764] IPv6: ADDRCONF(NETDEV_UP): wlp1s0f0: link is not ready
[   21.621825] IPv6: ADDRCONF(NETDEV_UP): wlp1s0f1: link is not ready
[   21.622649] IPv6: ADDRCONF(NETDEV_UP): wlp1s0f1: link is not ready
[   21.993416] IPv6: ADDRCONF(NETDEV_UP): uap0: link is not ready

root@rock3a:/home/rock# lsmod
        Module                  Size  Used by
        moal                  647168  6
        mlan                  475136  1 moal
        8021q                  24576  0
        sch_fq_codel           20480  26
        ip_tables              28672  0
        x_tables               28672  1 ip_tables
        ipv6                  397312  46
        dwc3                  131072  0
        udc_core               36864  1 dwc3
        dwc3_of_simple         16384  0
        realtek                20480  1
        root@rock3a:/home/rock# modinfo moal
        filename:       /lib/modules/4.19.193-32-rockchip-g002dd37173cf/kernel/drivers/net/wireless/rockchip_wlan/mxm_wifiex/moal.ko
        license:        GPL
        version:        287
        author:         NXP
        description:    M-WLAN Driver
        srcversion:     242C81B0E4F490ADDBC92A5
        alias:          pci:v00001B4Bd00002B44sv*sd*bc*sc*i*
        alias:          pci:v00001B4Bd00002B43sv*sd*bc*sc*i*
        alias:          pci:v00001B4Bd00002B56sv*sd*bc*sc*i*
        depends:        mlan
        name:           moal
        vermagic:       4.19.193-32-rockchip-g002dd37173cf SMP mod_unload modversions aarch64
        parm:           mod_para:Module parameters configuration file (charp)
        parm:           hw_test:0: Disable hardware test; 1: Enable hardware test (int)
        parm:           dts_enable:0: Disable DTS; 1: Enable DTS (int)
        parm:           fw_name:Firmware name (charp)
        parm:           req_fw_nowait:0: Use request_firmware API; 1: Use request_firmware_nowait API (int)
        parm:           fw_reload:0: disable fw_reload; 1: enable fw reload feature (int)
        parm:           fw_serial:0: support parallel download FW; 1: support serial download FW (int)
        parm:           mac_addr:MAC address (charp)
        parm:           mfg_mode:0: Download normal firmware; 1: Download MFG firmware (int)
        parm:           drv_mode:Bit 0: STA; Bit 1: uAP; Bit 2: WIFIDIRECT; Bit 4: NAN; Bit 7: ZERO_DFS (int)
        parm:           max_sta_bss:Number of STA interfaces (1) (int)
        parm:           sta_name:STA interface name (charp)
        parm:           max_uap_bss:Number of uAP interfaces (1) (int)
        parm:           uap_name:uAP interface name (charp)
        parm:           max_wfd_bss:Number of WIFIDIRECT interfaces (1) (int)
        parm:           wfd_name:WIFIDIRECT interface name (charp)
        parm:           max_vir_bss:Number of Virtual interfaces (0) (int)
        parm:           nan_name:NAN interface name (charp)
        parm:           max_nan_bss:Number of NAN interfaces (1) (int)
        parm:           drvdbg:Driver debug (uint)
        parm:           auto_ds:0: MLAN default; 1: Enable auto deep sleep; 2: Disable auto deep sleep (int)
        parm:           ext_scan:0: MLAN default; 1: Enable Extended Scan; 2: Enable Enhanced Extended Scan (int)
        parm:           ps_mode:0: MLAN default; 1: Enable IEEE PS mode; 2: Disable IEEE PS mode (int)
        parm:           p2a_scan:0: MLAN default; 1: Enable passive to active scan for DFS channel; 2: Disable passive to active scan for DFS channel (int)
        parm:           scan_chan_gap:Time gap between two scans in milliseconds when connected to AP(max value 500ms) (int)
        parm:           sched_scan:0: disable sched_scan; 1: enable sched_scan default (int)
        parm:           max_tx_buf:Maximum Tx buffer size (2048/4096/8192) (int)
        parm:           pm_keep_power:1: PM keep power; 0: PM no power (int)
        parm:           cfg_11d:0: MLAN default; 1: Enable 802.11d; 2: Disable 802.11d (int)
        parm:           rps:1: Enable rps; 0: Disable rps (uint)
        parm:           tx_skb_clone:1: Enable tx_skb_clone; 0: Disable tx_skb_clone (uint)
        parm:           pmqos:1: Enable pmqos; 0: Disable pmqos (uint)
        parm:           start_11ai_scan:1: Enable 11ai BG scan; 0: Disable 11ai BG scan (int)
        parm:           dpd_data_cfg:DPD data file name (charp)
        parm:           init_cfg:Init config file name (charp)
        parm:           cal_data_cfg:Calibration data file name (charp)
        parm:           txpwrlimit_cfg:Set configuration data of Tx power limitation (charp)
        parm:           cntry_txpwr:0: disable (default), 1: enable set country txpower table 2: enable set country rgpower table (int)
        parm:           init_hostcmd_cfg:Init hostcmd file name (charp)
        parm:           band_steer_cfg:band steer cfg file name (charp)
        parm:           cfg80211_wext:Bit 0: STA WEXT Bit 1: UAP WEXT Bit 2: STA CFG80211 Bit 3: UAP CFG80211 (int)
        parm:           wq_sched_prio:Priority of work queue (int)
        parm:           wq_sched_policy:0: SCHED_NORMAL; 1: SCHED_FIFO; 2: SCHED_RR; 3: SCHED_BATCH; 5: SCHED_IDLE (int)
        parm:           rx_work:0: default; 1: Enable rx_work_queue; 2: Disable rx_work_queue (int)
        parm:           ring_size:adma dma ring size: 32/64/128/256/512, default 128 (int)
        parm:           pcie_int_mode:0: Legacy mode; 1: MSI mode; 2: MSI-X mode (int)
        parm:           low_power_mode_enable:0/1: Disable/Enable Low Power Mode (int)
        parm:           dev_cap_mask:Device capability mask (uint)
        parm:           net_rx:0: use netif_rx_ni in rx; 1: use netif_receive_skb in rx (int)
        parm:           amsdu_deaggr:0: default; 1: Try to avoid buf copy in amsud deaggregation (int)
        parm:           pmic:1: Send pmic configure cmd to firmware; 0: No pmic configure cmd sent to firmware (int)
        parm:           antcfg:0:default; SD8887/SD8987-[1:Tx/Rx antenna 1, 2:Tx/Rx antenna 2, 0xffff:enable antenna diversity];SD8897/SD8997-[Bit0:Rx Path A, Bit1:Rx Path B, Bit 4:Tx Path A, Bit 5:Tx Path B];9098/9097-[Bit 0: 2G Tx/Rx path A, Bit 1: 2G Tx/Rx path B,Bit 8: 5G Tx/Rx path A, Bit 9: 5G Tx/Rx path B] (int)
        parm:           uap_oper_ctrl:0:default; 0x20001:uap restarts on channel 6 (uint)
        parm:           hs_wake_interval:Host sleep wakeup interval,it will round to nearest multiple dtim*beacon_period in fw (int)
        parm:           indication_gpio:GPIO to indicate wakeup source; high four bits: level for normal wakeup; low four bits: GPIO pin number. (int)
        parm:           disconnect_on_suspend:1: Enable disconnect wifi on suspend; 0: Disable disconnect wifi on suspend (int)
        parm:           hs_mimo_switch:Dynamic MIMO-SISO switch during host sleep; 0: disable (default), 1: enable (int)
        parm:           indrstcfg:Independent reset configuration; high byte: GPIO pin number; low byte: IR mode (int)
        parm:           fixed_beacon_buffer:0: allocate default buffer size; 1: allocate max buffer size. (int)
        parm:           GoAgeoutTime:0: use default ageout time; set Go age out time (TU 100ms) (int)
        parm:           gtk_rekey_offload:0: disable gtk_rekey_offload; 1: enable gtk_rekey_offload (default); 2: enable gtk_rekey_offload in suspend mode only; (int)
        parm:           multi_dtim:DTIM interval (ushort)
        parm:           inact_tmo:IEEE ps inactivity timout value (ushort)
        parm:           napi:1: enable napi api; 0: disable napi (int)
        parm:           dfs_offload:1: enable dfs offload; 0: disable dfs offload. (int)
        parm:           drcs_chantime_mode:0: use default value;Bit31~Bit24:Channel time for channel index0;Bit23~Bit16:mode for channel index0;Bit15~Bit8:Channel time for channel index1;Bit7~Bit0:mode for channel index1; mode:0--PM1,1--Null2Self. (int)
        parm:           cfg80211_drcs:1: Enable DRCS support; 0: Disable DRCS support (int)
        parm:           roamoffload_in_hs:1: enable fw roaming only when host suspend; 0: always enable fw roaming. (int)
        parm:           uap_max_sta:Maximum station number for UAP/GO. (int)
        parm:           wacp_mode:WACP mode for UAP/GO 0: WACP_MODE_DEFAULT; 1: WACP_MODE_1; 2: WACP_MODE_2 (int)
        parm:           host_mlme:1: Enable Host MLME Support; 0: Disable Host MLME support (int)
        parm:           disable_regd_by_driver:0: reg domain set by driver enable(default); 1: reg domain set by driver disable (int)
        parm:           reg_alpha2:Regulatory alpha2 (charp)
        parm:           country_ie_ignore:0: Follow countryIE from AP and beacon hint enable; 1: Ignore countryIE from AP and beacon hint disable (int)
        parm:           beacon_hints:0: enable beacon hints(default); 1: disable beacon hints (int)
        parm:           dfs53cfg:0: fw default; 1: new w53 dfs; 2: old w53 dfs (int)