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)