#!/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/upgrade/nand.sh ath10k_caldata_die() { echo "ath10k caldata: " "$*" exit 1 } ath10k_caldata_extract_ubi() { local part=$1 local offset=$2 local count=$3 local ubidev=$(nand_find_ubi $CI_UBIPART) local ubi ubi=$(nand_find_volume $ubidev $part) [ -n "$ubi" ] || \ ath10k_caldata_die "no UBI volume found for $part" 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() { local macaddr=$1 macaddr_2bin $macaddr | dd of=/lib/firmware/$FIRMWARE \ conv=notrunc bs=1 seek=6 count=6 } case "$FIRMWARE" in "ath10k/cal-pci-0000:02:00.0.bin") board=$(board_name) case $board in BTHOMEHUBV5A) 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" ;; esac ;; esac