From: Álvaro Fernández Rojas Date: Sat, 7 Jun 2025 10:01:54 +0000 (+0200) Subject: bmips: bcm6358: add support for Huawei HG556a ver A X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=refs%2Fpull%2F19059%2Fhead;p=thirdparty%2Fopenwrt.git bmips: bcm6358: add support for Huawei HG556a ver A 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 --- diff --git a/target/linux/bmips/bcm6358/base-files/etc/board.d/01_leds b/target/linux/bmips/bcm6358/base-files/etc/board.d/01_leds index 08919eb82c0..270a6d4bd11 100644 --- a/target/linux/bmips/bcm6358/base-files/etc/board.d/01_leds +++ b/target/linux/bmips/bcm6358/base-files/etc/board.d/01_leds @@ -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" diff --git a/target/linux/bmips/bcm6358/base-files/etc/board.d/02_network b/target/linux/bmips/bcm6358/base-files/etc/board.d/02_network index 4a539a2d9f7..79b3c6451bc 100644 --- a/target/linux/bmips/bcm6358/base-files/etc/board.d/02_network +++ b/target/linux/bmips/bcm6358/base-files/etc/board.d/02_network @@ -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" 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 index b12d89f29d9..e369835ab1a 100644 --- 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 @@ -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 index 00000000000..0c38dc3e7a8 --- /dev/null +++ b/target/linux/bmips/dts/bcm6358-huawei-hg556a-a.dts @@ -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 = ; + gpios = <&ath9k 2 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "phy0tpt"; + }; + }; +}; + +&gpio_keys { + help { + label = "help"; + gpios = <&gpio 8 GPIO_ACTIVE_LOW>; + linux,code = ; + 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; + }; +}; diff --git a/target/linux/bmips/dts/bcm6358-huawei-hg556a-b.dts b/target/linux/bmips/dts/bcm6358-huawei-hg556a-b.dts index 70f4de74943..925dce4f491 100644 --- a/target/linux/bmips/dts/bcm6358-huawei-hg556a-b.dts +++ b/target/linux/bmips/dts/bcm6358-huawei-hg556a-b.dts @@ -1,122 +1,11 @@ // 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 = ; - debounce-interval = <60>; - }; - - wlan { - label = "wlan"; - gpios = <&gpio 9 GPIO_ACTIVE_LOW>; - linux,code = ; - debounce-interval = <60>; - }; - - restart { - label = "restart"; - gpios = <&gpio 10 GPIO_ACTIVE_LOW>; - linux,code = ; - debounce-interval = <60>; - }; - - reset { - label = "reset"; - gpios = <&gpio 11 GPIO_ACTIVE_LOW>; - linux,code = ; - 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 = ; - 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"; @@ -129,83 +18,41 @@ }; }; -&ehci { - status = "okay"; -}; - -ðernet1 { - 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 = ; + 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 = <ðernet1>; + 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 { @@ -224,66 +71,3 @@ 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 index 00000000000..e6ebe01a26f --- /dev/null +++ b/target/linux/bmips/dts/bcm6358-huawei-hg556a.dtsi @@ -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 = ; + debounce-interval = <60>; + }; + + restart { + label = "restart"; + gpios = <&gpio 10 GPIO_ACTIVE_LOW>; + linux,code = ; + debounce-interval = <60>; + }; + + reset { + label = "reset"; + gpios = <&gpio 11 GPIO_ACTIVE_LOW>; + linux,code = ; + 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 = ; + 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"; +}; + +ðernet1 { + 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 = <ðernet1>; + + 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"; +}; diff --git a/target/linux/bmips/image/bcm6358.mk b/target/linux/bmips/image/bcm6358.mk index 33c87f9ce4a..57b2b18590c 100644 --- a/target/linux/bmips/image/bcm6358.mk +++ b/target/linux/bmips/image/bcm6358.mk @@ -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