summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatti Laakso <matti.laakso@outlook.com>2018-01-14 17:39:53 +0200
committerHauke Mehrtens <hauke@hauke-m.de>2018-06-22 22:15:52 +0200
commit71019a7605d5156fc1ade1265cae859241caccbe (patch)
treed5e91ae8f2855d55086e07c0feabce1465969d09
parentba5c0a1dea0cbbde277f189dcfd520a9062bfaac (diff)
downloadmtk-20170518-71019a7605d5156fc1ade1265cae859241caccbe.zip
mtk-20170518-71019a7605d5156fc1ade1265cae859241caccbe.tar.gz
mtk-20170518-71019a7605d5156fc1ade1265cae859241caccbe.tar.bz2
ar71xx: fix 5 GHz Wi-Fi on NBG6716
Some NBG6716 do not have ath10k calibration data in flash, only in chip OTP. To determine if flash has a valid calibration data, the first two bytes telling the length of the calibration data are checked against the requested length. If the lengths match, calibration data is valid and read from flash. Signed-off-by: Matti Laakso <matti.laakso@outlook.com>
-rw-r--r--target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata8
1 files changed, 7 insertions, 1 deletions
diff --git a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
index b3e23c9..96ca65e 100644
--- a/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
+++ b/target/linux/ar71xx/base-files/etc/hotplug.d/firmware/11-ath10k-caldata
@@ -18,12 +18,18 @@ ath10kcal_extract() {
local part=$1
local offset=$2
local count=$3
- local mtd
+ local mtd cal_size
mtd=$(find_mtd_chardev $part)
[ -n "$mtd" ] || \
ath10kcal_die "no mtd device found for partition $part"
+ # Check that the calibration data size in header equals the desired size
+ cal_size=$(dd if=$mtd bs=2 count=1 skip=$(( $offset / 2 )) conv=swab 2>/dev/null | hexdump -ve '1/2 "%d"')
+
+ [ "$count" = "$cal_size" ] || \
+ ath10kcal_die "no calibration data found in $part"
+
dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
ath10kcal_die "failed to extract calibration data from $mtd"
}