10 ath10kcal_from_file
() {
15 dd if=$source of
=/lib
/firmware
/$FIRMWARE bs
=1 skip
=$offset count
=$count 2>/dev
/null || \
16 ath10kcal_die
"failed to extract calibration data from $source"
25 mtd
=$
(find_mtd_chardev
$part)
27 ath10kcal_die
"no mtd device found for partition $part"
29 dd if=$mtd of
=/lib
/firmware
/$FIRMWARE bs
=1 skip
=$offset count
=$count 2>/dev
/null || \
30 ath10kcal_die
"failed to extract calibration data from $mtd"
33 ath10kcal_patch_mac_crc
() {
41 [ -z "$mac" ] && return
43 xor_fw_mac
=$
(hexdump -v -n 6 -s $mac_offset -e '/1 "%02x"' /lib
/firmware
/$FIRMWARE)
44 xor_fw_mac
="${xor_fw_mac:0:4} ${xor_fw_mac:4:4} ${xor_fw_mac:8:4}"
46 macaddr_2bin
$mac |
dd of
=/lib
/firmware
/$FIRMWARE conv
=notrunc bs
=1 seek
=6 count
=6
49 xor_mac
="${xor_mac:0:4} ${xor_mac:4:4} ${xor_mac:8:4}"
51 xor_fw_chksum
=$
(hexdump -v -n 2 -s $chksum_offset -e '/1 "%02x"' /lib
/firmware
/$FIRMWARE)
52 xor_fw_chksum
=$
(xor
$xor_fw_chksum $xor_fw_mac $xor_mac)
54 printf "%b" "\x${xor_fw_chksum:0:2}\x${xor_fw_chksum:2:2}" | \
55 dd of
=/lib
/firmware
/$FIRMWARE conv
=notrunc bs
=1 seek
=$chksum_offset count
=2
58 [ -e /lib
/firmware
/$FIRMWARE ] && exit 0
60 .
/lib
/functions
/system.sh
65 "ath10k/pre-cal-pci-0000:01:00.0.bin")
68 ath10kcal_extract
"ART" 0x1000 0x2f20
69 ath10kcal_patch_mac_crc $
(mtd_get_mac_binary ART
0x1e)
72 ath10kcal_extract
"art" 0x1000 0x2f20
73 ath10kcal_patch_mac_crc $
(macaddr_add $
(mtd_get_mac_ascii devinfo hw_mac_addr
) +1)
76 ath10kcal_extract
"ART" 0x1000 0x2f20
77 ath10kcal_patch_mac_crc $
(macaddr_add $
(mtd_get_mac_binary PRODUCTDATA
0xc) +1)
82 ath10kcal_extract
"art" 0x1000 0x2f20
83 ath10kcal_patch_mac_crc $
(macaddr_add $
(mtd_get_mac_binary art
0x6) +1)
86 ath10kcal_extract
"radio" 0x1000 0x2f20
87 ath10kcal_patch_mac_crc $
(macaddr_add $
(mtd_get_mac_binary default-mac
0x8) -1)
90 ath10kcal_extract
"ART" 0x1000 0x2f20
91 ath10kcal_patch_mac_crc $
(macaddr_add $
(mtd_get_mac_binary default-mac
0x0) -1)
94 ath10kcal_extract
"0:ART" 0x1000 0x2f20
95 ath10kcal_patch_mac_crc $
(macaddr_add $
(mtd_get_mac_ascii
0:APPSBLENV ethaddr
) +1)
99 "ath10k/pre-cal-pci-0001:01:00.0.bin")
102 ath10kcal_extract
"ART" 0x5000 0x2f20
103 ath10kcal_patch_mac_crc $
(mtd_get_mac_binary ART
0x18)
106 ath10kcal_extract
"art" 0x5000 0x2f20
107 ath10kcal_patch_mac_crc $
(macaddr_add $
(mtd_get_mac_ascii devinfo hw_mac_addr
) +2)
110 ath10kcal_extract
"ART" 0x5000 0x2f20
111 ath10kcal_patch_mac_crc $
(mtd_get_mac_binary PRODUCTDATA
0xc)
116 ath10kcal_extract
"art" 0x5000 0x2f20
117 ath10kcal_patch_mac_crc $
(macaddr_add $
(mtd_get_mac_binary art
0x6) +2)
120 ath10kcal_extract
"radio" 0x5000 0x2f20
121 ath10kcal_patch_mac_crc $
(mtd_get_mac_binary default-mac
0x8)
124 ath10kcal_extract
"ART" 0x5000 0x2f20
125 ath10kcal_patch_mac_crc $
(mtd_get_mac_binary default-mac
0x0)
128 ath10kcal_extract
"0:ART" 0x5000 0x2f20
129 ath10kcal_patch_mac_crc $
(mtd_get_mac_ascii
0:APPSBLENV ethaddr
)