2511ed6014c9fb86da54415e4a36865ef8473e16
[openwrt/openwrt.git] / target / linux / lantiq / base-files / etc / hotplug.d / firmware / 11-ath10k-caldata
1 #!/bin/sh
2 # Based on ar71xx 11-ath10k-caldata and 10-rt2x00-eeprom
3
4 [ -e /lib/firmware/$FIRMWARE ] && exit 0
5
6 . /lib/functions.sh
7 . /lib/functions/system.sh
8 . /lib/functions/lantiq.sh
9 . /lib/upgrade/nand.sh
10
11 ath10k_caldata_die() {
12 echo "ath10k caldata: " "$*"
13 exit 1
14 }
15
16 ath10k_caldata_extract_ubi() {
17 local part=$1
18 local offset=$2
19 local count=$3
20 local ubidev=$(nand_find_ubi $CI_UBIPART)
21 local ubi
22
23 ubi=$(nand_find_volume $ubidev $part)
24 [ -n "$ubi" ] || \
25 ath10k_caldata_die "no UBI volume found for $part"
26
27 dd if=/dev/$ubi of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
28 ath10k_caldata_die "failed to extract from $ubi"
29 }
30
31 ath10k_caldata_set_macaddr() {
32 local macaddr=$1
33
34 macaddr_2bin $macaddr | dd of=/lib/firmware/$FIRMWARE \
35 conv=notrunc bs=1 seek=6 count=6
36 }
37
38 case "$FIRMWARE" in
39 "ath10k/cal-pci-0000:02:00.0.bin")
40 board=$(lantiq_board_name)
41 case $board in
42 BTHOMEHUBV5A)
43 ath10k_caldata_extract_ubi "caldata" 20480 2116
44 ath10k_caldata_set_macaddr $(macaddr_add $(mtd_get_mac_binary_ubi caldata 4364) +3)
45 ;;
46 *)
47 ath10k_caldata_die "board $board is not supported yet"
48 ;;
49 esac
50 ;;
51 esac