bmips: hg556a: switch to kmod-owl-loader
authorÁlvaro Fernández Rojas <noltari@gmail.com>
Mon, 10 Apr 2023 09:54:02 +0000 (11:54 +0200)
committerÁlvaro Fernández Rojas <noltari@gmail.com>
Tue, 18 Apr 2023 17:45:04 +0000 (19:45 +0200)
Stop using custom ath9k fixup and switch to standard kmod-owl-loader

Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
target/linux/bmips/bcm6358/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom [new file with mode: 0644]
target/linux/bmips/dts/bcm6358-huawei-hg556a-b.dts
target/linux/bmips/image/Makefile

diff --git a/target/linux/bmips/bcm6358/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/bmips/bcm6358/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
new file mode 100644 (file)
index 0000000..b12d89f
--- /dev/null
@@ -0,0 +1,34 @@
+#!/bin/sh
+
+[ -e /lib/firmware/$FIRMWARE ] && exit 0
+
+. /lib/functions/caldata.sh
+
+caldata_extract_swap() {
+       local part=$1
+       local offset=$2
+       local count=$3
+       local mtd
+
+       mtd=$(find_mtd_chardev $part)
+       [ -n "$mtd" ] || caldata_die "no mtd device found for partition $part"
+
+       offset=$(($offset / 2))
+       count=$(($count / 2))
+
+       dd if=$mtd of=/lib/firmware/$FIRMWARE bs=2 skip=$offset count=$count conv=swab 2>/dev/null || \
+               caldata_die "failed to extract calibration data from $mtd"
+}
+
+case "$FIRMWARE" in
+       "ath9k-eeprom-pci-0000:00:01.0.bin")
+               case "$(board_name)" in
+                       huawei,hg556a-b)
+                               caldata_extract_swap "cal_data" 0x1e000 0xeb8
+                               ;;
+                       *)
+                               caldata_die "board $board is not supported yet"
+                               ;;
+               esac
+               ;;
+esac
index 273470b1bd3410fedafaeb928686f5f0d25d7832..18adc73b63f14d4f34e06ff6931aad3d704bc1a8 100644 (file)
                };
        };
 
-       ath9k-fixup {
-               compatible = "brcm,ath9k-fixup";
-               reg = <0x30000000 0x8000000>;
-
-               pci-dev = <1>;
-
-               nvmem-cells = <&macaddr_cfe_6a0>;
-               nvmem-cell-names = "mac-address";
-               mac-address-increment = <1>;
+       ath9k-leds {
+               compatible = "gpio-leds";
 
-               ath,eeprom = <&cal_data 0x1e000>;
-               ath,endian-check;
-               ath,led-pin = <2>;
-               ath,led-active-high;
+               wlan {
+                       label = "red:wlan";
+                       gpios = <&ath9k 2 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "phy0tpt";
+               };
        };
 };
 
 
 &pci {
        status = "okay";
+
+       ath9k: wifi@1,0 {
+               compatible = "pci168c,0029";
+               reg = <0x0800 0 0 0 0>;
+
+               qca,no-eeprom;
+
+               nvmem-cells = <&macaddr_cfe_6a0>;
+               nvmem-cell-names = "mac-address";
+               mac-address-increment = <1>;
+
+               #gpio-cells = <2>;
+               gpio-controller;
+       };
 };
 
 &pflash {
        status = "okay";
 };
 
+&cal_data {
+       compatible = "nvmem-cells";
+       #address-cells = <1>;
+       #size-cells = <1>;
+
+       cal_data_1e000: cal@1e000 {
+               reg = <0x1e000 0xeb8>;
+       };
+};
+
 &cfe {
        compatible = "nvmem-cells";
        #address-cells = <1>;
index 8369a86669c983b7d8407ea82b123ecf2907fb8f..f86e46e0b95526325dbec00a0955487898555352 100644 (file)
@@ -324,7 +324,7 @@ define Device/sercomm-nand
 endef
 
 ### Package helpers ###
-ATH9K_PACKAGES := kmod-ath9k wpad-basic-mbedtls
+ATH9K_PACKAGES := kmod-ath9k kmod-owl-loader wpad-basic-mbedtls
 B43_PACKAGES := kmod-b43 wpad-basic-mbedtls
 USB1_PACKAGES := kmod-usb-ohci kmod-usb-ledtrig-usbport
 USB2_PACKAGES := $(USB1_PACKAGES) kmod-usb2