diff --git a/target/linux/lantiq/base-files/etc/board.d/02_network b/target/linux/lantiq/base-files/etc/board.d/02_network index 16b85a815b..c2a1fbe680 100755 --- a/target/linux/lantiq/base-files/etc/board.d/02_network +++ b/target/linux/lantiq/base-files/etc/board.d/02_network @@ -75,7 +75,8 @@ BTHOMEHUBV3A) ;; BTHOMEHUBV5A) - wan_mac=$(macaddr_add "$(mtd_get_mac_binary caldata 4364)" 1) + lan_mac=$(mtd_get_mac_binary_ubi caldata 4364) + wan_mac=$(macaddr_add "$lan_mac" 1) ucidef_add_switch "switch0" \ "0:lan:3" "1:lan:4" "2:lan:2" "4:lan:1" "6t@eth0" ;; diff --git a/target/linux/lantiq/base-files/etc/hotplug.d/firmware/11-ath10k-caldata b/target/linux/lantiq/base-files/etc/hotplug.d/firmware/11-ath10k-caldata index dc95da78a5..2511ed6014 100644 --- a/target/linux/lantiq/base-files/etc/hotplug.d/firmware/11-ath10k-caldata +++ b/target/linux/lantiq/base-files/etc/hotplug.d/firmware/11-ath10k-caldata @@ -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" diff --git a/target/linux/lantiq/base-files/etc/hotplug.d/firmware/12-ath9k-eeprom b/target/linux/lantiq/base-files/etc/hotplug.d/firmware/12-ath9k-eeprom index 8185bf1949..2776275ea2 100644 --- a/target/linux/lantiq/base-files/etc/hotplug.d/firmware/12-ath9k-eeprom +++ b/target/linux/lantiq/base-files/etc/hotplug.d/firmware/12-ath9k-eeprom @@ -115,7 +115,8 @@ case "$FIRMWARE" in ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_ascii uboot-env ethaddr) +2) 268 1 258 ;; BTHOMEHUBV5A) - ath9k_eeprom_extract "caldata" 4096 + ath9k_ubi_eeprom_extract "caldata" 4096 + ath9k_patch_firmware_mac $(macaddr_add $(mtd_get_mac_binary_ubi caldata 4364) +2) 268 0 258 ;; DGN3500*) ath9k_eeprom_extract "calibration" 61440 diff --git a/target/linux/lantiq/dts/BTHOMEHUBV5A.dts b/target/linux/lantiq/dts/BTHOMEHUBV5A.dts index e1b3e7131d..df55456f0c 100644 --- a/target/linux/lantiq/dts/BTHOMEHUBV5A.dts +++ b/target/linux/lantiq/dts/BTHOMEHUBV5A.dts @@ -33,6 +33,9 @@ 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"; @@ -41,26 +44,25 @@ partition@0 { label = "u-boot"; - reg = <0x0 0x40000>; - read-only; - }; - partition@40000 { - label = "uboot-env"; - reg = <0x40000 0x40000>; - }; - caldata: partition@80000 { - label = "caldata"; - reg = <0x80000 0x20000>; + reg = <0x0 0xa0000>; read-only; }; partition@a0000 { - label = "kernel"; - reg = <0xa0000 0x200000>; + label = "uboot-env"; + reg = <0xa0000 0x20000>; + read-only; }; - partition@2a0000 { + partition@c0000 { + label = "unused"; + reg = <0xc0000 0x40000>; + }; + partition@100000 { label = "ubi"; - reg = <0x2a0000 0x7d60000>; + reg = <0x100000 0x7e80000>; }; + /* + * last 512 KiB are for the bad block table, not writable + */ }; }; }; @@ -216,7 +218,6 @@ #address-cells = <1>; #size-cells = <0>; reg = <0>; - mtd-mac-address = <&caldata 0x110c>; lantiq,switch; ethernet@0 { @@ -250,8 +251,6 @@ #address-cells = <1>; #size-cells = <0>; reg = <1>; - mtd-mac-address = <&caldata 0x110c>; - mtd-mac-address-increment = <4>; lantiq,wan; ethernet@5 {