ar71xx: add support for Nokia WI2A-AC200i
[oweals/openwrt.git] / target / linux / ar71xx / base-files / etc / hotplug.d / firmware / 11-ath10k-caldata
1 #!/bin/sh
2
3 ath10kcal_die() {
4         echo "ath10cal: " "$*"
5         exit 1
6 }
7
8 ath10kcal_from_file() {
9         local source=$1
10         local offset=$2
11         local count=$3
12
13         dd if=$source of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
14                 ath10kcal_die "failed to extract calibration data from $source"
15 }
16
17 ath10kcal_extract() {
18         local part=$1
19         local offset=$2
20         local count=$3
21         local mtd
22
23         mtd=$(find_mtd_chardev $part)
24         [ -n "$mtd" ] || \
25                 ath10kcal_die "no mtd device found for partition $part"
26
27         dd if=$mtd of=/lib/firmware/$FIRMWARE bs=1 skip=$offset count=$count 2>/dev/null || \
28                 ath10kcal_die "failed to extract calibration data from $mtd"
29 }
30
31 ath10kcal_patch_mac() {
32         local mac=$1
33
34         [ -z "$mac" ] && return
35
36         macaddr_2bin $mac | dd of=/lib/firmware/$FIRMWARE conv=notrunc bs=1 seek=6 count=6
37 }
38
39 [ -e /lib/firmware/$FIRMWARE ] && exit 0
40
41 . /lib/functions.sh
42 . /lib/functions/system.sh
43
44 board=$(board_name)
45
46 case "$FIRMWARE" in
47 "ath10k/cal-pci-0000:00:00.0.bin")
48         case $board in
49         a40|\
50         a60|\
51         mr1750|\
52         mr1750v2|\
53         om5p-acv2)
54                 ath10kcal_extract "ART" 20480 2116
55                 ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +16)
56                 ;;
57         archer-c25-v1|\
58         archer-c59-v1|\
59         archer-c60-v1|\
60         tl-wdr6500-v2)
61                 ath10kcal_extract "art" 20480 2116
62                 ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) -2)
63                 ;;
64         cf-e355ac|\
65         cf-e380ac-v1|\
66         cf-e380ac-v2|\
67         dlan-pro-1200-ac|\
68         sr3200|\
69         xd3200)
70                 ath10kcal_extract "art" 20480 2116
71                 ;;
72         dap-2695-a1)
73                 ath10kcal_extract "radiocfg" 20480 2116
74                 ath10kcal_patch_mac $(mtd_get_mac_ascii bdcfg wlanmac_a)
75                 ;;
76         dir-869-a1|\
77         qihoo-c301)
78                 ath10kcal_extract "radiocfg" 20480 2116
79                 ath10kcal_patch_mac $(mtd_get_mac_ascii devdata wlan5mac)
80                 ;;
81         dw33d)
82                 ath10kcal_extract "art" 20480 2116
83                 ath10kcal_patch_mac $(mtd_get_mac_binary art 18)
84                 ;;
85         epg5000|\
86         esr1750)
87                 ath10kcal_extract "caldata" 20480 2116
88                 ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +1)
89                 ;;
90         mc-mac1200r)
91                 ath10kcal_extract "art" 20480 2116
92                 ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) -1)
93                 ;;
94         r6100)
95                 ath10kcal_extract "caldata" 20480 2116
96                 ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) +2)
97                 ;;
98         rb-952ui-5ac2nd)
99                 ath10kcal_from_file "/sys/firmware/routerboot/ext_wlan_data" 20480 2116
100                 ;;
101         re450|\
102         tl-wr902ac-v1)
103                 ath10kcal_extract "art" 20480 2116
104                 ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) -2)
105                 ;;
106         tl-wpa8630)
107                 ath10kcal_extract "art" 20480 2116
108                 ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +1)
109                 ;;
110         unifiac-lite|\
111         unifiac-pro)
112                 ath10kcal_extract "EEPROM" 20480 2116
113                 ;;
114         wi2a-ac200i)
115                 ath10kcal_extract "ART" 20480 2116
116                 ;;
117         esac
118         ;;
119 "ath10k/cal-pci-0000:01:00.0.bin")
120         case $board in
121         archer-c5|\
122         archer-c7)
123                 ath10kcal_extract "art" 20480 2116
124                 ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) -2)
125                 ;;
126         nbg6616|\
127         nbg6716)
128                 ath10kcal_extract "RFdata" 20480 2116
129                 ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth1/address) -2)
130                 ;;
131         om5p-ac)
132                 ath10kcal_extract "ART" 20480 2116
133                 ath10kcal_patch_mac $(macaddr_add $(cat /sys/class/net/eth0/address) +16)
134                 ;;
135         rb-911g-5hpacd|\
136         rb-962uigs-5hact2hnt)
137                 ath10kcal_from_file "/sys/firmware/routerboot/ext_wlan_data" 20480 2116
138                 ;;
139         esac
140         ;;
141 "ath10k/pre-cal-pci-0000:00:00.0.bin")
142         case $board in
143         archer-c58-v1)
144                 ath10kcal_extract "art" 20480 12064
145                 ;;
146         esac
147         ;;
148 *)
149         exit 1
150         ;;
151 esac