aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/lantiq/base-files/etc/hotplug.d
diff options
context:
space:
mode:
authorMathias Kresin <dev@kresin.me>2015-10-03 13:57:54 +0200
committerMathias Kresin <dev@kresin.me>2016-11-29 21:40:16 +0100
commit0e34459e6b4d7b3753b27cf97f304f86e80155ca (patch)
treee0a0c8f9cb49bd87eb9cf18ce1228103e0cd92da /target/linux/lantiq/base-files/etc/hotplug.d
parent860210c3731f97eec507fd1c8d4554fd80394edb (diff)
downloadupstream-0e34459e6b4d7b3753b27cf97f304f86e80155ca.tar.gz
upstream-0e34459e6b4d7b3753b27cf97f304f86e80155ca.tar.bz2
upstream-0e34459e6b4d7b3753b27cf97f304f86e80155ca.zip
lantiq: use BT HomeHub 5 Type A OEM partition layout
This way the on nand bad block table is preserved and used. Add support for nand OOB ECC checksums as well. It should fix all reported ubi errors, which were all related to bad nand blocks and a purged on nand bad block table. The existing ubi partition will be reused, which eliminates the need to touch the caldata during initial install. The BT u-boot has support for loading a kernel from an ubi volume. It isn't necessary any longer to replace the BT u-boot with a custom compiled one to use LEDE. It is required to restore the BT Firmware and install LEDE from scratch to switch to the new partition layout. An image for restoring the BT firmware and installing LEDE is provided at https://github.com/mkresin/lede/releases. Signed-off-by: Mathias Kresin <dev@kresin.me>
Diffstat (limited to 'target/linux/lantiq/base-files/etc/hotplug.d')
-rw-r--r--target/linux/lantiq/base-files/etc/hotplug.d/firmware/11-ath10k-caldata36
-rw-r--r--target/linux/lantiq/base-files/etc/hotplug.d/firmware/12-ath9k-eeprom3
2 files changed, 20 insertions, 19 deletions
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