lantiq: use BT HomeHub 5 Type A OEM partition layout
[openwrt/openwrt.git] / target / linux / lantiq / base-files / etc / hotplug.d / firmware / 11-ath10k-caldata
index dc95da78a56e6e3cce1e3b980aa7860601855999..2511ed6014c9fb86da54415e4a36865ef8473e16 100644 (file)
@@ -1,24 +1,31 @@
 #!/bin/sh
 # Based on ar71xx 11-ath10k-caldata and 10-rt2x00-eeprom
 
+[ -e /lib/firmware/$FIRMWARE ] && exit 0
+
+. /lib/functions.sh
+. /lib/functions/system.sh
+. /lib/functions/lantiq.sh
+. /lib/upgrade/nand.sh
+
 ath10k_caldata_die() {
        echo "ath10k caldata: " "$*"
        exit 1
 }
 
-ath10k_caldata_extract() {
+ath10k_caldata_extract_ubi() {
        local part=$1
        local offset=$2
-       local mtd
+       local count=$3
+       local ubidev=$(nand_find_ubi $CI_UBIPART)
+       local ubi
 
-       . /lib/functions.sh
+       ubi=$(nand_find_volume $ubidev $part)
+       [ -n "$ubi" ] || \
+               ath10k_caldata_die "no UBI volume found for $part"
 
-       mtd=$(find_mtd_part $part)
-       [ -n "$mtd" ] || \
-               ath10k_caldata_die "no mtd device found for partition $part"
-
-       dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=2116 || \
-               ath10k_caldata_die "failed to extract from $mtd"
+       dd if=/dev/$ubi of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
+               ath10k_caldata_die "failed to extract from $ubi"
 }
 
 ath10k_caldata_set_macaddr() {
@@ -28,20 +35,13 @@ ath10k_caldata_set_macaddr() {
                                conv=notrunc bs=1 seek=6 count=6
 }
 
-[ -e /lib/firmware/$FIRMWARE ] && exit 0
-. /lib/functions.sh
-. /lib/functions/system.sh
-. /lib/functions/lantiq.sh
-
 case "$FIRMWARE" in
 "ath10k/cal-pci-0000:02:00.0.bin")
        board=$(lantiq_board_name)
        case $board in
                BTHOMEHUBV5A)
-                       lan_mac=$(mtd_get_mac_binary caldata 4364)
-                       wifi_mac=$(macaddr_add "$lan_mac" 3)
-                       ath10k_caldata_extract "caldata" 20480
-                       ath10k_caldata_set_macaddr $wifi_mac
+                       ath10k_caldata_extract_ubi "caldata" 20480 2116
+                       ath10k_caldata_set_macaddr $(macaddr_add $(mtd_get_mac_binary_ubi caldata 4364) +3)
                        ;;
                *)
                        ath10k_caldata_die "board $board is not supported yet"