QCA9984 bmi identification failure (fixed)

Christian Lamparter chunkeey at googlemail.com
Fri Jun 9 10:22:34 PDT 2017


On Thursday, March 23, 2017 5:47:08 PM CEST Christian Lamparter wrote:
> Hannu Nyman reported a issue with the QCA9984 in his Netgear R7800 
> and LEDE's ath10k: (This is with 936-ath10k_skip_otp_check.patch removed):
> 
> [   25.259266] ath10k_pci 0000:01:00.0: unable to read from the device
> [   25.259288] ath10k_pci 0000:01:00.0: could not execute otp for board id check: -110
> [   25.277326] ath10k_pci 0000:01:00.0: failed to fetch board data for bus=pci,vendor=168c,device=0046,subsystem-vendor=168c,subsystem-device=cafem...from ath10k/QCA9984/hw1.0/board-2.bin
> [   25.277588] ath10k_pci 0000:01:00.0: board_file api 1 bmi_id N/A crc32 dd636801
> [   26.800717] ath10k_pci 0000:01:00.0: htt-ver 2.2 wmi-op 6 htt-op 4 cal file max-sta 512 raw 0 hwcrypto 1
> [...]
>
> <https://forum.lede-project.org/t/netgear-r7800-exploration-ipq8065-qca9984/285/277>
> 
> What seems strange is that only the call bmi_execute with 
> BMI_PARAM_GET_EEPROM_BOARD_ID is timing out. [...]
> 
> This begs the question, what is so special about the BMI_PARAM_GET_EEPROM_BOARD_ID
> at that time for the QCA9984? Does the device need some extra msleep time after
> the OTP has been uploaded? Or is the BMI_PARAM_GET_EEPROM_BOARD_ID not 
> implemented/has a different ID, etc... ?

The issue regarding the BMI_PARAM_GET_EEPROM_BOARD_ID has
been addressed by the following patch:
"[PATCH] ath10k: Add BMI parameters to fix calibration from DT/pre-cal"
<https://patchwork.kernel.org/patch/9748097/>
|QCA99X0, QCA9888, QCA9984 supports calibration data in
|either OTP or DT/pre-cal file. Current ath10k supports
|Calibration data from OTP only.
|
|If caldata is loaded from DT/pre-cal file, fetching board id
|and applying calibration parameters like tx power gets failed.
|
|error log:
|[   15.733663] ath10k_pci 0000:01:00.0: failed to fetch board file: -2
|[   15.741474] ath10k_pci 0000:01:00.0: could not probe fw (-2)
|
|This patch adds calibration data support from DT/pre-cal
|file.  Below parameters are used to get board id and
|applying calibration parameters from cal data.
|
|		EEPROM[OTP]	FLASH[DT/pre-cal file]
|Cal param	0x700		0x10000
|Board id	0x10		0x8000
|
|Tested on QCA9888 with pre-cal file.

Several developers and users have reported success with Pavel's PR:
<https://github.com/lede-project/source/pull/1153>

[   19.132296] ath10k_pci 0000:01:00.0: pci irq msi oper_irq_mode 2 irq_mode 0 reset_mode 0
[   19.314182] ath10k_pci 0000:01:00.0: Direct firmware load for ath10k/pre-cal-pci-0000:01:00.0.bin failed with error -2
[   19.314235] ath10k_pci 0000:01:00.0: Falling back to user helper
[   32.827197] ath10k_pci 0000:01:00.0: qca9984/qca9994 hw1.0 target 0x01000000 chip_id 0x00000000 sub 168c:cafe
[   32.827233] ath10k_pci 0000:01:00.0: kconfig debug 0 debugfs 1 tracing 0 dfs 1 testmode 1
[   32.839487] ath10k_pci 0000:01:00.0: firmware ver 10.4-3.4-00082 api 5 features no-p2p,mfp,peer-flow-ctrl,[...]
[   35.116999] ath10k_pci 0000:01:00.0: *board_file api 2 bmi_id 0:1* crc32 751efba1
[   40.981190] ath10k_pci 0000:01:00.0: htt-ver 2.2 wmi-op 6 htt-op 4 cal pre-cal-file max-sta 512 raw 0 hwcrypto 1

All existing users of 936-ath10k_skip_otp_check.patch should be
able to drop the 936-patch entirely and switch to the pre-cal
file cal method for their devices.

Regards,
Christian



More information about the ath10k mailing list