#!/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() {
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"
reg = <0x1 0x0 0x2000000>;
#address-cells = <1>;
#size-cells = <1>;
+ nand-on-flash-bbt;
+ nand-ecc-strength = <3>;
+ nand-ecc-step-size = <256>;
partitions {
compatible = "fixed-partitions";
partition@0 {
label = "u-boot";
- reg = <0x0 0x40000>;
+ reg = <0x0 0xa0000>;
read-only;
};
- partition@40000 {
+ partition@a0000 {
label = "uboot-env";
- reg = <0x40000 0x40000>;
- };
- caldata: partition@80000 {
- label = "caldata";
- reg = <0x80000 0x20000>;
+ reg = <0xa0000 0x20000>;
read-only;
};
- partition@a0000 {
- label = "kernel";
- reg = <0xa0000 0x200000>;
+ partition@c0000 {
+ label = "unused";
+ reg = <0xc0000 0x40000>;
};
- partition@2a0000 {
+ partition@100000 {
label = "ubi";
- reg = <0x2a0000 0x7d60000>;
+ reg = <0x100000 0x7e80000>;
};
+ /*
+ * last 512 KiB are for the bad block table, not writable
+ */
};
};
};
#address-cells = <1>;
#size-cells = <0>;
reg = <0>;
- mtd-mac-address = <&caldata 0x110c>;
lantiq,switch;
ethernet@0 {
#address-cells = <1>;
#size-cells = <0>;
reg = <1>;
- mtd-mac-address = <&caldata 0x110c>;
- mtd-mac-address-increment = <4>;
lantiq,wan;
ethernet@5 {