]> git.ipfire.org Git - thirdparty/openwrt.git/commitdiff
bmips: bcm6358: add support for Huawei HG556a ver A 19059/head
authorÁlvaro Fernández Rojas <noltari@gmail.com>
Sat, 7 Jun 2025 10:01:54 +0000 (12:01 +0200)
committerÁlvaro Fernández Rojas <noltari@gmail.com>
Sun, 8 Jun 2025 03:09:24 +0000 (05:09 +0200)
Specifications:
- SoC: Broadcom BCM6358 dual 300MHz MIPS
- Flash: 16MB NOR Spansion S29GL128P10
- RAM: 64MB DDR
- Ethernet: 4x 100M
- Wifi: Atheros AR9223
- 3x USB 2.0 port
- 4x Button
- 13x LED
- RJ11 2x FXS VoIP (unsupported)
- RJ11 xDSL (unsupported)

Install instructions:
- Assign static IP 192.168.1.100 to PC.
- Unplug the power source.
- Press the RESTART button at the router, don't release it yet!
- Plug the power source and wait at least 15 seconds.
- Release the RESTART button.
- Browse to http://192.168.1.1 with your PC.
- Upload the openwrt-bmips-bcm6358-huawei_hg556a-a-squashfs-cfe.bin file.
- Wait some minutes until the firmware upgrade completes.

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

index 08919eb82c08e18a6f9e5a51b98939ba9cf2d33f..270a6d4bd113530240b10e7417db424064da9bf9 100644 (file)
@@ -6,6 +6,7 @@
 board_config_update
 
 case "$(board_name)" in
+huawei,hg556a-a |\
 huawei,hg556a-b)
        ucidef_set_led_netdev "lan1" "LAN1" "green:lan1" "lan1"
        ucidef_set_led_netdev "lan2" "LAN2" "green:lan2" "lan2"
index 4a539a2d9f772c1fbc30536cf3fcf8451e6a7f7f..79b3c6451bc26f1a9b60105d35b104b62f0bc1ee 100644 (file)
@@ -5,6 +5,7 @@
 board_config_update
 
 case "$(board_name)" in
+huawei,hg556a-a |\
 huawei,hg556a-b)
        ucidef_set_bridge_device switch
        ucidef_set_interface_lan "lan1 lan2 lan3 lan4"
index b12d89f29d9be4ba6f68037c74cf1130fdd33072..e369835ab1a4fb55de90e85767111c62d4cd844c 100644 (file)
@@ -23,6 +23,9 @@ caldata_extract_swap() {
 case "$FIRMWARE" in
        "ath9k-eeprom-pci-0000:00:01.0.bin")
                case "$(board_name)" in
+                       huawei,hg556a-a)
+                               caldata_extract_swap "cal_data" 0x9e000 0xeb8
+                               ;;
                        huawei,hg556a-b)
                                caldata_extract_swap "cal_data" 0x1e000 0xeb8
                                ;;
diff --git a/target/linux/bmips/dts/bcm6358-huawei-hg556a-a.dts b/target/linux/bmips/dts/bcm6358-huawei-hg556a-a.dts
new file mode 100644 (file)
index 0000000..0c38dc3
--- /dev/null
@@ -0,0 +1,73 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "bcm6358-huawei-hg556a.dtsi"
+
+/ {
+       model = "Huawei EchoLife HG556a (version A)";
+       compatible = "huawei,hg556a-a", "brcm,bcm6358";
+
+       ath9k-leds {
+               compatible = "gpio-leds";
+
+               led-2 {
+                       function = LED_FUNCTION_WLAN;
+                       color = <LED_COLOR_ID_RED>;
+                       gpios = <&ath9k 2 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "phy0tpt";
+               };
+       };
+};
+
+&gpio_keys {
+       help {
+               label = "help";
+               gpios = <&gpio 8 GPIO_ACTIVE_LOW>;
+               linux,code = <KEY_HELP>;
+               debounce-interval = <60>;
+       };
+};
+
+&gpio_leds {
+       led-0 {
+               label = "red:message";
+               gpios = <&gpio 0 GPIO_ACTIVE_LOW>;
+       };
+
+       led-1 {
+               label = "red:hspa";
+               gpios = <&gpio 1 GPIO_ACTIVE_LOW>;
+       };
+
+       led-6 {
+               label = "all";
+               gpios = <&gpio 6 GPIO_ACTIVE_LOW>;
+               default-state = "on";
+       };
+
+       led-12 {
+               label = "green:lan1";
+               gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
+       };
+
+       led-15 {
+               label = "green:lan2";
+               gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
+       };
+};
+
+&pci {
+       status = "okay";
+
+       ath9k: wifi@1,0 {
+               compatible = "pci168c,ff1d";
+               reg = <0x0800 0 0 0 0>;
+
+               qca,no-eeprom;
+
+               nvmem-cells = <&macaddr_cfe_6a0 1>;
+               nvmem-cell-names = "mac-address";
+
+               #gpio-cells = <2>;
+               gpio-controller;
+       };
+};
index 70f4de74943f85c5157268d45c1a185aac052456..925dce4f49199f9aab02339605626071a7d94071 100644 (file)
 // SPDX-License-Identifier: GPL-2.0-or-later
 
-#include "bcm6358.dtsi"
+#include "bcm6358-huawei-hg556a.dtsi"
 
 / {
        model = "Huawei EchoLife HG556a (version B)";
        compatible = "huawei,hg556a-b", "brcm,bcm6358";
 
-       aliases {
-               led-boot = &led_power_red;
-               led-failsafe = &led_power_red;
-               led-running = &led_power_red;
-               led-upgrade = &led_power_red;
-       };
-
-       keys {
-               compatible = "gpio-keys-polled";
-               poll-interval = <100>;
-
-               help {
-                       label = "help";
-                       gpios = <&gpio 8 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_HELP>;
-                       debounce-interval = <60>;
-               };
-
-               wlan {
-                       label = "wlan";
-                       gpios = <&gpio 9 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_WLAN>;
-                       debounce-interval = <60>;
-               };
-
-               restart {
-                       label = "restart";
-                       gpios = <&gpio 10 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_RESTART>;
-                       debounce-interval = <60>;
-               };
-
-               reset {
-                       label = "reset";
-                       gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
-                       linux,code = <KEY_CONFIG>;
-                       debounce-interval = <60>;
-               };
-       };
-
-       leds {
-               compatible = "gpio-leds";
-
-               led-0 {
-                       label = "red:message";
-                       gpios = <&gpio 0 GPIO_ACTIVE_LOW>;
-               };
-
-               led-1 {
-                       label = "red:hspa";
-                       gpios = <&gpio 1 GPIO_ACTIVE_LOW>;
-               };
-
-               led-2 {
-                       label = "red:dsl";
-                       gpios = <&gpio 2 GPIO_ACTIVE_LOW>;
-               };
-
-               led_power_red: led-3 {
-                       function = LED_FUNCTION_POWER;
-                       color = <LED_COLOR_ID_RED>;
-                       gpios = <&gpio 3 GPIO_ACTIVE_LOW>;
-               };
-
-               led-6 {
-                       label = "all";
-                       gpios = <&gpio 6 GPIO_ACTIVE_LOW>;
-                       default-state = "on";
-               };
-
-               led-12 {
-                       label = "green:lan1";
-                       gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
-               };
-
-               led-13 {
-                       label = "red:lan1";
-                       gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
-               };
-
-               led-15 {
-                       label = "green:lan2";
-                       gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
-               };
-
-               led-22 {
-                       label = "red:lan2";
-                       gpios = <&gpio 22 GPIO_ACTIVE_LOW>;
-               };
-
-               led-23 {
-                       label = "green:lan3";
-                       gpios = <&gpio 23 GPIO_ACTIVE_LOW>;
-               };
-
-               led-26 {
-                       label = "red:lan3";
-                       gpios = <&gpio 26 GPIO_ACTIVE_LOW>;
-               };
-
-               led-27 {
-                       label = "green:lan4";
-                       gpios = <&gpio 27 GPIO_ACTIVE_LOW>;
-               };
-
-               led-28 {
-                       label = "red:lan4";
-                       gpios = <&gpio 28 GPIO_ACTIVE_LOW>;
-               };
-       };
-
        ath9k-leds {
                compatible = "gpio-leds";
 
        };
 };
 
-&ehci {
-       status = "okay";
-};
-
-&ethernet1 {
-       status = "okay";
-
-       nvmem-cells = <&macaddr_cfe_6a0 0>;
-       nvmem-cell-names = "mac-address";
-
-       phy-mode = "mii";
-
-       fixed-link {
-               speed = <100>;
-               full-duplex;
+&gpio_keys {
+       help {
+               label = "help";
+               gpios = <&gpio 8 GPIO_ACTIVE_LOW>;
+               linux,code = <KEY_HELP>;
+               debounce-interval = <60>;
        };
 };
 
-&iudma {
-       status = "okay";
-};
-
-&mdio1 {
-       switch@1e {
-               compatible = "brcm,bcm5325";
-               reg = <30>;
-
-               ports {
-                       #address-cells = <1>;
-                       #size-cells = <0>;
-
-                       port@0 {
-                               reg = <0>;
-                               label = "lan1";
-
-                               phy-mode = "mii";
-                       };
-
-                       port@1 {
-                               reg = <1>;
-                               label = "lan2";
-
-                               phy-mode = "mii";
-                       };
-
-                       port@2 {
-                               reg = <2>;
-                               label = "lan3";
-
-                               phy-mode = "mii";
-                       };
-
-                       port@3 {
-                               reg = <3>;
-                               label = "lan4";
-
-                               phy-mode = "mii";
-                       };
+&gpio_leds {
+       led-0 {
+               label = "red:message";
+               gpios = <&gpio 0 GPIO_ACTIVE_LOW>;
+       };
 
-                       port@5 {
-                               reg = <5>;
-                               label = "cpu";
+       led-1 {
+               label = "red:hspa";
+               gpios = <&gpio 1 GPIO_ACTIVE_LOW>;
+       };
 
-                               phy-mode = "internal";
-                               ethernet = <&ethernet1>;
+       led-6 {
+               label = "all";
+               gpios = <&gpio 6 GPIO_ACTIVE_LOW>;
+               default-state = "on";
+       };
 
-                               fixed-link {
-                                       speed = <100>;
-                                       full-duplex;
-                               };
-                       };
-               };
+       led-12 {
+               label = "green:lan1";
+               gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
        };
-};
 
-&ohci {
-       status = "okay";
+       led-15 {
+               label = "green:lan2";
+               gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
+       };
 };
 
 &pci {
                gpio-controller;
        };
 };
-
-&pflash {
-       status = "okay";
-
-       partitions {
-               compatible = "fixed-partitions";
-               #address-cells = <1>;
-               #size-cells = <1>;
-
-               partition@0 {
-                       label = "cfe";
-                       reg = <0x000000 0x020000>;
-                       read-only;
-
-                       nvmem-layout {
-                               compatible = "fixed-layout";
-                               #address-cells = <1>;
-                               #size-cells = <1>;
-
-                               macaddr_cfe_6a0: macaddr@6a0 {
-                                       compatible = "mac-base";
-                                       reg = <0x6a0 0x6>;
-                                       #nvmem-cell-cells = <1>;
-                               };
-                       };
-               };
-
-               partition@20000 {
-                       label = "firmware";
-                       reg = <0x020000 0xec0000>;
-                       compatible = "brcm,bcm963xx-imagetag";
-               };
-
-               cal_data: partition@ee0000 {
-                       label = "cal_data";
-                       reg = <0xee0000 0x100000>;
-                       read-only;
-
-                       nvmem-layout {
-                               compatible = "fixed-layout";
-                               #address-cells = <1>;
-                               #size-cells = <1>;
-
-                               cal_data_1e000: cal@1e000 {
-                                       reg = <0x1e000 0xeb8>;
-                               };
-                       };
-               };
-
-               partition@fe0000 {
-                       label = "nvram";
-                       reg = <0xfe0000 0x020000>;
-               };
-       };
-};
-
-&uart0 {
-       status = "okay";
-};
-
-&usbh {
-       status = "okay";
-};
diff --git a/target/linux/bmips/dts/bcm6358-huawei-hg556a.dtsi b/target/linux/bmips/dts/bcm6358-huawei-hg556a.dtsi
new file mode 100644 (file)
index 0000000..e6ebe01
--- /dev/null
@@ -0,0 +1,215 @@
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "bcm6358.dtsi"
+
+/ {
+       aliases {
+               led-boot = &led_power_red;
+               led-failsafe = &led_power_red;
+               led-running = &led_power_red;
+               led-upgrade = &led_power_red;
+       };
+
+       gpio_keys: keys {
+               compatible = "gpio-keys-polled";
+               poll-interval = <100>;
+
+               wlan {
+                       label = "wlan";
+                       gpios = <&gpio 9 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_WLAN>;
+                       debounce-interval = <60>;
+               };
+
+               restart {
+                       label = "restart";
+                       gpios = <&gpio 10 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_RESTART>;
+                       debounce-interval = <60>;
+               };
+
+               reset {
+                       label = "reset";
+                       gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
+                       linux,code = <KEY_CONFIG>;
+                       debounce-interval = <60>;
+               };
+       };
+
+       gpio_leds: leds {
+               compatible = "gpio-leds";
+
+               led-2 {
+                       label = "red:dsl";
+                       gpios = <&gpio 2 GPIO_ACTIVE_LOW>;
+               };
+
+               led_power_red: led-3 {
+                       function = LED_FUNCTION_POWER;
+                       color = <LED_COLOR_ID_RED>;
+                       gpios = <&gpio 3 GPIO_ACTIVE_LOW>;
+               };
+
+               led-13 {
+                       label = "red:lan1";
+                       gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
+               };
+
+               led-22 {
+                       label = "red:lan2";
+                       gpios = <&gpio 22 GPIO_ACTIVE_LOW>;
+               };
+
+               led-23 {
+                       label = "green:lan3";
+                       gpios = <&gpio 23 GPIO_ACTIVE_LOW>;
+               };
+
+               led-26 {
+                       label = "red:lan3";
+                       gpios = <&gpio 26 GPIO_ACTIVE_LOW>;
+               };
+
+               led-27 {
+                       label = "green:lan4";
+                       gpios = <&gpio 27 GPIO_ACTIVE_LOW>;
+               };
+
+               led-28 {
+                       label = "red:lan4";
+                       gpios = <&gpio 28 GPIO_ACTIVE_LOW>;
+               };
+       };
+};
+
+&ehci {
+       status = "okay";
+};
+
+&ethernet1 {
+       status = "okay";
+
+       nvmem-cells = <&macaddr_cfe_6a0 0>;
+       nvmem-cell-names = "mac-address";
+
+       phy-mode = "mii";
+
+       fixed-link {
+               speed = <100>;
+               full-duplex;
+       };
+};
+
+&iudma {
+       status = "okay";
+};
+
+&mdio1 {
+       switch@1e {
+               compatible = "brcm,bcm5325";
+               reg = <30>;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       port@0 {
+                               reg = <0>;
+                               label = "lan1";
+
+                               phy-mode = "mii";
+                       };
+
+                       port@1 {
+                               reg = <1>;
+                               label = "lan2";
+
+                               phy-mode = "mii";
+                       };
+
+                       port@2 {
+                               reg = <2>;
+                               label = "lan3";
+
+                               phy-mode = "mii";
+                       };
+
+                       port@3 {
+                               reg = <3>;
+                               label = "lan4";
+
+                               phy-mode = "mii";
+                       };
+
+                       port@5 {
+                               reg = <5>;
+                               label = "cpu";
+
+                               phy-mode = "internal";
+                               ethernet = <&ethernet1>;
+
+                               fixed-link {
+                                       speed = <100>;
+                                       full-duplex;
+                               };
+                       };
+               };
+       };
+};
+
+&ohci {
+       status = "okay";
+};
+
+&pflash {
+       status = "okay";
+
+       partitions {
+               compatible = "fixed-partitions";
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               partition@0 {
+                       label = "cfe";
+                       reg = <0x000000 0x020000>;
+                       read-only;
+
+                       nvmem-layout {
+                               compatible = "fixed-layout";
+                               #address-cells = <1>;
+                               #size-cells = <1>;
+
+                               macaddr_cfe_6a0: macaddr@6a0 {
+                                       compatible = "mac-base";
+                                       reg = <0x6a0 0x6>;
+                                       #nvmem-cell-cells = <1>;
+                               };
+                       };
+               };
+
+               partition@20000 {
+                       label = "firmware";
+                       reg = <0x020000 0xec0000>;
+                       compatible = "brcm,bcm963xx-imagetag";
+               };
+
+               cal_data: partition@ee0000 {
+                       label = "cal_data";
+                       reg = <0xee0000 0x100000>;
+                       read-only;
+               };
+
+               partition@fe0000 {
+                       label = "nvram";
+                       reg = <0xfe0000 0x020000>;
+               };
+       };
+};
+
+&uart0 {
+       status = "okay";
+};
+
+&usbh {
+       status = "okay";
+};
index 33c87f9ce4a3db2a197e1de9d1da4a7246c3cd06..57b2b18590c985749273ff18bf9b80c61f85467a 100644 (file)
@@ -1,5 +1,19 @@
 # SPDX-License-Identifier: GPL-2.0-or-later
 
+define Device/huawei_hg556a-a
+  $(Device/bcm63xx-cfe-legacy)
+  DEVICE_VENDOR := Huawei
+  DEVICE_MODEL := EchoLife HG556a
+  DEVICE_VARIANT := A
+  CHIP_ID := 6358
+  CFE_BOARD_ID := HW556
+  CFE_EXTRAS += --rsa-signature "EchoLife_HG556a" --tag-version 8
+  IMAGE_OFFSET := 0x20000
+  DEVICE_PACKAGES += $(USB2_PACKAGES) $(ATH9K_PACKAGES) \
+    kmod-leds-gpio
+endef
+TARGET_DEVICES += huawei_hg556a-a
+
 define Device/huawei_hg556a-b
   $(Device/bcm63xx-cfe-legacy)
   DEVICE_VENDOR := Huawei