ath10k-caldata extraction is the same across different targets and also uses similar function compared to ath9k-eeprom extraction.
This patch merges ath10k stuff into the same file where ath9k function have already been collected. Signed-off-by: Adrian Schmutzler <freif...@adrianschmutzler.de> --- package/base-files/files/lib/functions/eeprom.sh | 34 ++++++++++ .../etc/hotplug.d/firmware/11-ath10k-caldata | 78 +++++++--------------- .../etc/hotplug.d/firmware/11-ath10k-caldata | 57 +++++----------- 3 files changed, 72 insertions(+), 97 deletions(-) diff --git a/package/base-files/files/lib/functions/eeprom.sh b/package/base-files/files/lib/functions/eeprom.sh index 3b585dab7c..13494b63db 100644 --- a/package/base-files/files/lib/functions/eeprom.sh +++ b/package/base-files/files/lib/functions/eeprom.sh @@ -6,6 +6,11 @@ eeprom_die() { exit 1 } +ath10kcal_die() { + echo "ath10cal: " "$*" + exit 1 +} + mtd_eeprom_extract() { local part=$1 local offset=$2 @@ -20,6 +25,26 @@ mtd_eeprom_extract() { eeprom_die "failed to extract from $mtd" } +mtd_eeprom_extract_check() { + local part=$1 + local offset=$2 + local count=$3 + local mtd cal_size + + mtd=$(find_mtd_chardev $part) + [ -n "$mtd" ] || \ + eeprom_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" ] || \ + eeprom_die "no calibration data found in $part" + + dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \ + eeprom_die "failed to extract from $mtd" +} + mtd_eeprom_extract_reverse() { local part=$1 local offset=$2 @@ -52,3 +77,12 @@ ubi_eeprom_extract() { dd if=/dev/$ubi of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \ eeprom_die "failed to extract from $ubi" } + +ath10kcal_from_file() { + local source=$1 + local offset=$2 + local count=$3 + + dd if=$source of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \ + ath10kcal_die "failed to extract calibration data from $source" +} 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 3450819630..ab128497ae 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 @@ -1,38 +1,6 @@ #!/bin/sh -ath10kcal_die() { - echo "ath10cal: " "$*" - exit 1 -} - -ath10kcal_from_file() { - local source=$1 - local offset=$2 - local count=$3 - - dd if=$source of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \ - ath10kcal_die "failed to extract calibration data from $source" -} - -ath10kcal_extract() { - local part=$1 - local offset=$2 - local count=$3 - 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" -} +. /lib/functions/eeprom.sh ath10kcal_patch_mac() { local mac=$1 @@ -57,17 +25,17 @@ case "$FIRMWARE" in mr1750|\ mr1750v2|\ om5p-acv2) - ath10kcal_extract "ART" 20480 2116 + mtd_eeprom_extract_check "ART" 20480 2116 ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +16) ;; archer-c25-v1|\ tl-wdr6500-v2) - ath10kcal_extract "art" 20480 2116 + mtd_eeprom_extract_check "art" 20480 2116 ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) -2) ;; archer-c7-v4|\ archer-c7-v5) - ath10kcal_extract "art" 20480 2116 + mtd_eeprom_extract_check "art" 20480 2116 ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) -1) ;; cf-e355ac-v1|\ @@ -81,42 +49,42 @@ case "$FIRMWARE" in oolite-v5.2-dev|\ sr3200|\ xd3200) - ath10kcal_extract "art" 20480 2116 + mtd_eeprom_extract_check "art" 20480 2116 ;; dap-2695-a1) - ath10kcal_extract "radiocfg" 20480 2116 + mtd_eeprom_extract_check "radiocfg" 20480 2116 ath10kcal_patch_mac $(mtd_get_mac_ascii bdcfg wlanmac_a) ;; dir-869-a1|\ qihoo-c301) - ath10kcal_extract "radiocfg" 20480 2116 + mtd_eeprom_extract_check "radiocfg" 20480 2116 ath10kcal_patch_mac $(mtd_get_mac_ascii devdata wlan5mac) ;; dw33d) - ath10kcal_extract "art" 20480 2116 + mtd_eeprom_extract_check "art" 20480 2116 ath10kcal_patch_mac $(mtd_get_mac_binary art 18) ;; epg5000|\ esr1750) - ath10kcal_extract "caldata" 20480 2116 + mtd_eeprom_extract_check "caldata" 20480 2116 ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +1) ;; gl-ar750s|\ gl-ar750|\ tl-wpa8630) - ath10kcal_extract "art" 20480 2116 + mtd_eeprom_extract_check "art" 20480 2116 ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +1) ;; koala) - ath10kcal_extract "art" 20480 2116 + mtd_eeprom_extract_check "art" 20480 2116 ath10kcal_patch_mac $(macaddr_add $(mtd_get_mac_binary art 12) +0) ;; mc-mac1200r) - ath10kcal_extract "art" 20480 2116 + mtd_eeprom_extract_check "art" 20480 2116 ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) -1) ;; r6100) - ath10kcal_extract "caldata" 20480 2116 + mtd_eeprom_extract_check "caldata" 20480 2116 ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) +2) ;; rb-952ui-5ac2nd|\ @@ -126,15 +94,15 @@ case "$FIRMWARE" in re355|\ re450|\ tl-wr902ac-v1) - ath10kcal_extract "art" 20480 2116 + mtd_eeprom_extract_check "art" 20480 2116 ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) -2) ;; unifiac-lite|\ unifiac-pro) - ath10kcal_extract "EEPROM" 20480 2116 + mtd_eeprom_extract_check "EEPROM" 20480 2116 ;; wi2a-ac200i) - ath10kcal_extract "ART" 20480 2116 + mtd_eeprom_extract_check "ART" 20480 2116 ;; esac ;; @@ -142,16 +110,16 @@ case "$FIRMWARE" in case $board in archer-c5|\ archer-c7) - ath10kcal_extract "art" 20480 2116 + mtd_eeprom_extract_check "art" 20480 2116 ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) -2) ;; nbg6616|\ nbg6716) - ath10kcal_extract "RFdata" 20480 2116 + mtd_eeprom_extract_check "RFdata" 20480 2116 ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) -2) ;; om5p-ac) - ath10kcal_extract "ART" 20480 2116 + mtd_eeprom_extract_check "ART" 20480 2116 ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +16) ;; rb-911g-5hpacd|\ @@ -160,7 +128,7 @@ case "$FIRMWARE" in ath10kcal_from_file "/sys/firmware/routerboot/ext_wlan_data" 20480 2116 ;; wlr8100) - ath10kcal_extract "art" 20480 2116 + mtd_eeprom_extract_check "art" 20480 2116 ath10kcal_patch_mac $(macaddr_add $(mtd_get_mac_ascii u-boot-env ethaddr) +1) ;; esac @@ -173,18 +141,18 @@ case "$FIRMWARE" in archer-c60-v1|\ cf-e355ac-v2|\ cf-e375ac) - ath10kcal_extract "art" 20480 12064 + mtd_eeprom_extract_check "art" 20480 12064 ln -sf /lib/firmware/ath10k/pre-cal-pci-0000\:00\:00.0.bin \ /lib/firmware/ath10k/QCA9888/hw2.0/board.bin ;; archer-c60-v2) - ath10kcal_extract "art" 20480 12064 + mtd_eeprom_extract_check "art" 20480 12064 ln -sf /lib/firmware/ath10k/pre-cal-pci-0000\:00\:00.0.bin \ /lib/firmware/ath10k/QCA9888/hw2.0/board.bin ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) -1) ;; cf-e385ac) - ath10kcal_extract "art" 20480 12064 + mtd_eeprom_extract_check "art" 20480 12064 ;; esac ;; diff --git a/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata index f4741fa3eb..50632a9a28 100644 --- a/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata +++ b/target/linux/ath79/base-files/etc/hotplug.d/firmware/11-ath10k-caldata @@ -1,6 +1,7 @@ #!/bin/sh . /lib/functions/k2t.sh +. /lib/functions/eeprom.sh # xor multiple hex values of the same length xor() { @@ -18,34 +19,6 @@ xor() { printf "%0${retlen}x" "$ret" } -ath10kcal_die() { - echo "ath10cal: " "$*" - exit 1 -} - -ath10kcal_from_file() { - local source=$1 - local offset=$2 - local count=$3 - - dd if=$source of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \ - ath10kcal_die "failed to extract calibration data from $source" -} - -ath10kcal_extract() { - local part=$1 - local offset=$2 - local count=$3 - local mtd - - mtd=$(find_mtd_chardev $part) - [ -n "$mtd" ] || \ - ath10kcal_die "no mtd device found for partition $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" -} - ath10kcal_patch_mac() { local mac=$1 @@ -92,52 +65,52 @@ case "$FIRMWARE" in devolo,dvl1750c|\ devolo,dvl1750e|\ devolo,dvl1750i) - ath10kcal_extract "art" 20480 2116 + mtd_eeprom_extract "art" 20480 2116 ath10kcal_patch_mac_crc $(macaddr_add $(mtd_get_mac_binary art 0) -1) ;; dlink,dir-859-a1) - ath10kcal_extract "art" 20480 2116 + mtd_eeprom_extract "art" 20480 2116 ath10kcal_patch_mac $(mtd_get_mac_ascii devdata "wlan5mac") ;; elecom,wrc-1750ghbk2-i) - ath10kcal_extract "ART" 20480 2116 + mtd_eeprom_extract "ART" 20480 2116 ;; engenius,ews511ap|\ glinet,gl-ar750s|\ glinet,gl-x750|\ tplink,re450-v2) - ath10kcal_extract "art" 20480 2116 + mtd_eeprom_extract "art" 20480 2116 ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +1) ;; iodata,wn-ac1167dgr|\ iodata,wn-ac1600dgr2) - ath10kcal_extract "art" 20480 2116 + mtd_eeprom_extract "art" 20480 2116 ath10kcal_patch_mac $(macaddr_add $(mtd_get_mac_ascii u-boot-env ethaddr) +1) ;; nec,wg800hp) - ath10kcal_extract "art" 20480 2116 + mtd_eeprom_extract "art" 20480 2116 ath10kcal_patch_mac_crc $(mtd_get_mac_text board_data 2176) ;; ocedo,koala) - ath10kcal_extract "art" 20480 2116 + mtd_eeprom_extract "art" 20480 2116 ath10kcal_patch_mac $(mtd_get_mac_binary art 12) ;; openmesh,om5p-ac-v2) - ath10kcal_extract "ART" 20480 2116 + mtd_eeprom_extract "ART" 20480 2116 ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +16) ;; tplink,archer-c2-v3) - ath10kcal_extract "ART" 20480 2116 + mtd_eeprom_extract "ART" 20480 2116 ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) -1) ;; tplink,archer-c7-v2) - ath10kcal_extract "art" 20480 2116 + mtd_eeprom_extract "art" 20480 2116 ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) -1) ;; tplink,archer-a7-v5|\ tplink,archer-c7-v4|\ tplink,archer-c7-v5) - ath10kcal_extract "art" 20480 2116 + mtd_eeprom_extract "art" 20480 2116 ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) -1) ;; ubnt,unifiac-lite|\ @@ -147,14 +120,14 @@ case "$FIRMWARE" in ubnt,nanostation-ac|\ ubnt,nanostation-ac-loco|\ ubnt,unifiac-pro) - ath10kcal_extract "EEPROM" 20480 2116 + mtd_eeprom_extract "EEPROM" 20480 2116 ;; esac ;; "ath10k/pre-cal-pci-0000:00:00.0.bin") case $board in phicomm,k2t) - ath10kcal_extract "art" 20480 12064 + mtd_eeprom_extract "art" 20480 12064 ath10kcal_patch_mac_crc $(k2t_get_mac "5g_mac") ln -sf /lib/firmware/ath10k/pre-cal-pci-0000\:00\:00.0.bin \ /lib/firmware/ath10k/QCA9888/hw2.0/board.bin @@ -162,7 +135,7 @@ case "$FIRMWARE" in tplink,archer-c58-v1|\ tplink,archer-c59-v1|\ tplink,archer-c6-v2) - ath10kcal_extract "art" 20480 12064 + mtd_eeprom_extract "art" 20480 12064 ath10kcal_patch_mac_crc $(macaddr_add $(mtd_get_mac_binary mac 8) -1) ln -sf /lib/firmware/ath10k/pre-cal-pci-0000\:00\:00.0.bin \ /lib/firmware/ath10k/QCA9888/hw2.0/board.bin -- 2.11.0 _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel