mirror of https://github.com/hak5/openwrt-owl.git
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>openwrt-18.06
parent
22ae9b742b
commit
2ea98fc39b
|
@ -18,12 +18,18 @@ ath10kcal_extract() {
|
||||||
local part=$1
|
local part=$1
|
||||||
local offset=$2
|
local offset=$2
|
||||||
local count=$3
|
local count=$3
|
||||||
local mtd
|
local mtd cal_size
|
||||||
|
|
||||||
mtd=$(find_mtd_chardev $part)
|
mtd=$(find_mtd_chardev $part)
|
||||||
[ -n "$mtd" ] || \
|
[ -n "$mtd" ] || \
|
||||||
ath10kcal_die "no mtd device found for partition $part"
|
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 || \
|
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"
|
ath10kcal_die "failed to extract calibration data from $mtd"
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue