QCA9377 - 'wmi unified ready event no received'
Wyse, Christopher
cwyse at idevicesinc.com
Tue Mar 27 07:12:56 PDT 2018
Hi,
I'm having a lot of trouble getting the QCA9377 Wifi working with my iMX6ULL via SDIO. The SDIO interface seems to be working fine. It loads the firmware, I get a message it has booted, but it fails with the error "wmi unified ready event not received".
If I go into the debugger and set some breakpoints in the wait for completion routines for the 'service ready' and 'unified ready' events, I can INCONSISTENTLY get the wlan0 device to be created. Even when the device is created I get multiple timeouts if I try to do anything with it.
I’ve tried loading both the TLV firmware specified below in the configuration, and the WLAN.TF.1.1.1-0061-QCATFSWPZ-1 firmware in the QCA9377/hw1.0/untested directory of https://github.com/kvalo/ath10k-firmware.git, commit 46aabf2a581e67bb2d368514d94e799502bbde3f. Both firmwares fail the same way.
I’m seeing the exact same failure on both the 4.9.68 (see #2 below) and 4.1.15 kernels (backported driver from 4.9.68). From here, I’m at a loss on how to proceed since I don’t have visibility into the firmware. I’d like to know how to obtain some status from the firmware, maybe read the configuration, or run some test code. Any pointers or suggestions would be greatly appreciated.
Here is my configuration:
1. Silex SD-PAC board w/ QCA9377-3 connected to an iMX6ULL (900 MHz) via SDIO
2. Linux kernel 4.9.68, based on the test-ath10k branch from Boundary Devices (https://github.com/boundarydevices/linux-imx6.git), commit cfd7772609e931bd66e14d4dd9ac8a1394330ed3.
3. SDIO 2.0, 50 MHz
4. Firmware SDIO bin file (firmware-sdio-5.bin) generated with following command:
ath10k-fwencoder -d --create --firmware-version Silex_v1.0.0 \
--otp ./otp30.bin --firmware ./qwlan30.bin --set-wmi-op-version tlv \
--set-htt-op-version tlv --set-fw-api 5 --features ignore-otp-result \
--output firmware-sdio-5.bin
5. Board file (board-sdio.bin) copied from bdata_SX-SDMAC_20161113.bin (provided by Silex)
Device tree settings for ath10k:
ath10k: ath10k at 2 {
compatible = "qcom,ath10k";
reg = <2>; /* Wireless LAN SDIO function == 2 */
ref-clock-frequency = <48000000>;
status = "okay";
interrupt-parent = <&gpio4>;
interrupts = <25 GPIO_ACTIVE_LOW>;
};
Some info from the boot (with some instrumentation):
[ 1.247790] sdhci-esdhc-imx 2194000.usdhc: clock limited to 50000000
[ 1.261999] sdhci: =========== REGISTER DUMP (mmc1)===========
[ 1.270119] sdhci: Sys addr: 0x00000000 | Version: 0x00000002
[ 1.276153] sdhci: Blk size: 0x00000000 | Blk cnt: 0x00000001
[ 1.284248] sdhci: Argument: 0x00000000 | Trn mode: 0x00000000
[ 1.293312] sdhci: Present: 0x01f88088 | Host ctl: 0x00000000
[ 1.299268] sdhci: Power: 0x00000000 | Blk gap: 0x00000080
[ 1.305270] sdhci: Wake-up: 0x00000008 | Clock: 0x0000800f
[ 1.311202] sdhci: Timeout: 0x00000080 | Int stat: 0x00000000
[ 1.317100] sdhci: Int enab: 0x007f1003 | Sig enab: 0x007f1003
[ 1.322984] sdhci: AC12 err: 0x00000000 | Slot int: 0x00000302
[ 1.328841] sdhci: Caps: 0x07eb0000 | Caps_1: 0x0000b407
[ 1.334777] sdhci: Cmd: 0x00000000 | Max curr: 0x00ffffff
[ 1.340724] sdhci: Host ctl2: 0x00000000
[ 1.344813] sdhci: ADMA Err: 0x00000000 | ADMA Ptr: 0x00000000
[ 1.350783] sdhci: ===========================================
[ 1.422265] mmc1: SDHCI controller on 2194000.usdhc [2194000.usdhc] using ADMA
[ 1.431805] mmc1: mmc_rescan_try_freq: trying to init card at 400000 Hz
[ 1.570324] mmc1: queuing unknown CIS tuple 0x1a (5 bytes) <== These bother me -- I’d like to define them..
[ 1.579731] mmc1: queuing unknown CIS tuple 0x1b (8 bytes)
[ 1.586056] mmc1: queuing unknown CIS tuple 0x14 (0 bytes)
[ 1.618960] mmc1: queuing unknown CIS tuple 0x80 (1 bytes)
[ 1.648132] mmc1: queuing unknown CIS tuple 0x81 (1 bytes)
[ 1.653858] mmc1: queuing unknown CIS tuple 0x82 (1 bytes)
[ 1.659421] mmc1: new high speed SDIO card at address 0001
[ 3.426363] mmc1: queuing unknown CIS tuple 0x01 (3 bytes)
[ 3.452252] mmc1: queuing unknown CIS tuple 0x1a (5 bytes)
[ 3.468588] mmc1: queuing unknown CIS tuple 0x1b (8 bytes)
[ 3.493597] ath10k_sdio mmc1:0001:1: sdio new func 1 vendor 0x271 device 0x701 block 0x800/0x200
[ 3.502817] ath10k_sdio mmc1:0001:1: ath10k_sdio_priv completed
[ 3.509304] ath10k_sdio mmc1:0001:1: sdio_set_drvdata complete
[ 3.520039] ath10k_sdio mmc1:0001:1: sdio configuration
[ 3.531593] ath10k_sdio mmc1:0001:1: ath10k_sdio_config returned 0
[ 3.540106] ath10k_sdio mmc1:0001:1: WARNING: ath10k SDIO support is experimental
[ 3.577477] ath10k_sdio mmc1:0001:1: Direct firmware load for ath10k/pre-cal-sdio-mmc1:0001:1.bin failed with error -2
[ 3.615026] ath10k_sdio mmc1:0001:1: Direct firmware load for ath10k/cal-sdio-mmc1:0001:1.bin failed with error -2
[ 3.690760] ath10k_sdio mmc1:0001:1: Direct firmware load for ath10k/QCA9377/hw1.0/firmware-sdio-5.bin succeeded
[ 3.711562] ath10k_sdio mmc1:0001:1: qca9377 hw1.1 sdio target 0x05020001 chip_id 0x00000000 sub 0000:0000
[ 3.732334] ath10k_sdio mmc1:0001:1: kconfig debug 1 debugfs 1 tracing 0 dfs 0 testmode 1
[ 3.753922] ath10k_sdio mmc1:0001:1: firmware ver Silex_v1.0.0 api 5 features ignore-otp crc32 fecfe4bd
[ 3.930249] ath10k_sdio mmc1:0001:1: board id is not exist in otp, ignore it
[ 3.942555] ath10k_sdio mmc1:0001:1: Direct firmware load for ath10k/QCA9377/hw1.0/board-2.bin failed with error -2
[ 3.975115] ath10k_sdio mmc1:0001:1: Direct firmware load for ath10k/QCA9377/hw1.0/board-sdio.bin succeeded
[ 3.992518] ath10k_sdio mmc1:0001:1: board_file api 1 bmi_id N/A crc32 6b8a7bb1
Please let me know if any other information is needed.
Thanks.
Chris Wyse
iDevices, LLC.
More information about the ath10k
mailing list