brcm63xx: Add BT Home Hub 2A support.
authorJonas Gorski <jogo@openwrt.org>
Wed, 25 Mar 2015 15:35:12 +0000 (15:35 +0000)
committerJonas Gorski <jogo@openwrt.org>
Wed, 25 Mar 2015 15:35:12 +0000 (15:35 +0000)
Support for the BT HomeHub 2.0 Type A.

This router was manufactured by Thomson, and it's BCM6358 based.
The leds are controled by two chained HC594, all working ok. The BCM5325
switch has the RESET# pin wired to the GPIO15, but currently there is no
way to tell the b53 driver how to get this gpio number in brcm63xx,
therefore swconfig won't use it when performing a switch reset.

The patch was tested with several firmwares, and all except unsupported
stuff (i.e xDSL) works pretty well.

Tested-by: Tahir <tahir00ali@gmail.com>
Signed-off-by: Daniel Gonzalez <dgcbueu@gmail.com>
SVN-Revision: 44985

target/linux/brcm63xx/base-files/etc/diag.sh
target/linux/brcm63xx/base-files/etc/uci-defaults/01_leds
target/linux/brcm63xx/base-files/etc/uci-defaults/02_network
target/linux/brcm63xx/base-files/lib/brcm63xx.sh
target/linux/brcm63xx/dts/homehub2a.dts [new file with mode: 0644]
target/linux/brcm63xx/image/Makefile
target/linux/brcm63xx/patches-3.18/569-board_homehub2a.patch [new file with mode: 0644]
target/linux/brcm63xx/profiles/bt.mk

index 928c02ba1078274e670d3e3722ff5f7b93bc4572..03d98b9146999ad8087dfd1568629a7741ee681b 100644 (file)
@@ -72,6 +72,10 @@ set_state() {
        fast2704v2)
                status_led="F@ST2704V2:green:power"
                ;;
+       homehub2a)
+               status_led="HOMEHUB2A:green:upgrading"
+               status_led2="HOMEHUB2A:blue:upgrading"
+               ;;
        gw6200)
                status_led="GW6200:green:line1"
                status_led2="GW6200:green:tel"
index c9bf2f412dd0f2f9c6efff6b9a52661dbf292b82..58404a165f76c9cd864e2227e9f8080b3b8eb163 100644 (file)
@@ -34,6 +34,12 @@ hg556a_*)
        ucidef_set_led_netdev "lan" "LAN" "HW556:red:dsl" "eth0"
        ucidef_set_led_usbdev "usb" "USB" "HW556:red:hspa" "1-2"
        ;;
+homehub2a)
+       ucidef_set_led_netdev "lan" "LAN" "HOMEHUB2A:blue:broadband" "eth0.1"
+       ucidef_set_led_netdev "wlan0" "WIFI" "HOMEHUB2A:green:wireless" "wlan0"
+       ucidef_set_led_usbdev "usb1" "USB1" "HOMEHUB2A:blue:phone" "1-1"
+       ucidef_set_led_usbdev "usb2" "USB2" "HOMEHUB2A:green:phone" "2-1"
+       ;;
 esac
 
 ucidef_commit_leds
index df4e29307b070587fbe2431f17c3ad5fd773e148..814e1003cd6e9287659e309eeffd3a4d712cf0a9 100644 (file)
@@ -66,7 +66,8 @@ v2500v_bb)
 
 dsl-274xb-c |\
 hg553 |\
-hg556a_*)
+hg556a_* |\
+homehub2a)
        ucidef_set_interface_lan "eth0.1"
        ucidef_add_switch "eth0" "1" "1"
        ucidef_add_switch_vlan "eth0" "1" "0 1 2 3 4 5t"
index 2c18762d190b0817bec48cadedde626e92ba92db..9c8a612039860151668743a1b006a5af5d1da63a 100755 (executable)
@@ -60,6 +60,9 @@ brcm63xx_dt_detect() {
        "Broadcom BCM96368MVWG reference board")
                board_name="bcm96368mvwg"
                ;;
+       "BT Home Hub 2.0 Type A")
+               board_name="homehub2a"
+               ;;
        "BT Voyager V2500V")
                board_name="v2500v"
                ;;
diff --git a/target/linux/brcm63xx/dts/homehub2a.dts b/target/linux/brcm63xx/dts/homehub2a.dts
new file mode 100644 (file)
index 0000000..28de528
--- /dev/null
@@ -0,0 +1,140 @@
+/dts-v1/;
+
+/include/ "bcm6358.dtsi"
+
+/ {
+       model = "BT Home Hub 2.0 Type A";
+       compatible = "thomson,homehub2a", "brcm,bcm6358";
+
+       spi-gpio {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "spi-gpio";
+
+               gpio-mosi = <&gpio0 7 0>;
+               gpio-sck = <&gpio0 6 0>;
+               cs-gpios = <&gpio0 5 0>;
+               num-chipselects = <1>;
+
+               hc595: gpio-spi-controller@0 {
+                       compatible = "fairchild,74hc595";
+                       reg = <0>;
+                       registers-number = <2>;
+                       spi-max-frequency = <100000>;
+
+                       gpio-controller;
+                       #gpio-cells = <2>;
+               };
+       };
+
+       gpio-keys-polled {
+               compatible = "gpio-keys-polled";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               poll-interval = <20>;
+               debounce-interval = <60>;
+
+               phone {
+                       label = "phone";
+                       gpios = <&gpio0 1 1>;
+                       linux,code = <169>;
+               };
+               reset {
+                       label = "reset";
+                       gpios = <&gpio0 9 1>;
+                       linux,code = <0x198>;
+               };
+               wps {
+                       label = "wps";
+                       gpios = <&gpio0 11 1>;
+                       linux,code = <0x211>;
+               };
+       };
+
+       gpio-leds {
+               compatible = "gpio-leds";
+
+               power_red {
+                       label = "HOMEHUB2A:red:power";
+                       gpios = <&hc595 0 1>;
+               };
+               power_green {
+                       label = "HOMEHUB2A:green:power";
+                       gpios = <&hc595 1 1>;
+                       default-state = "on";
+               };
+               power_blue {
+                       label = "HOMEHUB2A:blue:power";
+                       gpios = <&hc595 2 1>;
+               };
+               broadband_red {
+                       label = "HOMEHUB2A:red:broadband";
+                       gpios = <&hc595 3 1>;
+               };
+               broadband_green {
+                       label = "HOMEHUB2A:green:broadband";
+                       gpios = <&hc595 4 1>;
+               };
+               broadband_blue {
+                       label = "HOMEHUB2A:blue:broadband";
+                       gpios = <&hc595 5 1>;
+               };
+               wireless_red {
+                       label = "HOMEHUB2A:red:wireless";
+                       gpios = <&hc595 6 1>;
+               };
+               wireless_green {
+                       label = "HOMEHUB2A:green:wireless";
+                       gpios = <&hc595 7 1>;
+               };
+               wireless_blue {
+                       label = "HOMEHUB2A:blue:wireless";
+                       gpios = <&hc595 8 1>;
+               };
+               phone_red {
+                       label = "HOMEHUB2A:red:phone";
+                       gpios = <&hc595 9 1>;
+               };
+               phone_green {
+                       label = "HOMEHUB2A:green:phone";
+                       gpios = <&hc595 10 1>;
+               };
+               phone_blue {
+                       label = "HOMEHUB2A:blue:phone";
+                       gpios = <&hc595 11 1>;
+               };
+               upgrading_red {
+                       label = "HOMEHUB2A:red:upgrading";
+                       gpios = <&hc595 12 1>;
+               };
+               upgrading_green {
+                       label = "HOMEHUB2A:green:upgrading";
+                       gpios = <&hc595 13 1>;
+               };
+               upgrading_blue {
+                       label = "HOMEHUB2A:blue:upgrading";
+                       gpios = <&hc595 14 1>;
+               };
+       };
+};
+
+&pflash {
+       status = "ok";
+
+       linux,part-probe = "bcm63xxpart";
+
+       cfe@0 {
+               label = "CFE";
+               reg = <0x000000 0x020000>;
+       };
+
+       linux@20000 {
+               label = "linux";
+               reg = <0x020000 0xfc0000>;
+       };
+
+       nvram@fe0000 {
+               label = "nvram";
+               reg = <0xfe0000 0x020000>;
+       };
+};
index a55fc46d6c191021db9b2a524d4c111a74c11bd9..bae025f7d223a08ffada2560f8e602d25fbeaa85 100755 (executable)
@@ -275,6 +275,8 @@ $(eval $(call ImageDTB,CFEDTB,RG100A,RG100A,rg100a,96358VW2,6358,--block-size 0x
 $(eval $(call ImageDTB,CFEDTB,AR1004G,AR1004G,ar1004g,96348GW-10,6348))
 # Belkin F5D7633
 $(eval $(call ImageDTB,CFEDTB,F5D7633,F5D7633,f5d7633,96348GW-10,6348,--block-size 0x20000 --image-offset 0x20000))
+# BT Home Hub 2.0 A
+$(eval $(call ImageDTB,CFEDTB,BTHOMEHUB2A,HomeHub2A,homehub2a,HOMEHUB2A,6358,--image-offset 0x20000 --block-size 0x20000))
 # BT Voyager V2500V, V2500V_SIP_CLUB, V2500V_AA
 $(eval $(call ImageDTB,CFEDTB,BTV2500V,BTV2500V,v2500v-bb,V2500V_BB,6348,--layoutver 5))
 # Comtrend AR-5381u
diff --git a/target/linux/brcm63xx/patches-3.18/569-board_homehub2a.patch b/target/linux/brcm63xx/patches-3.18/569-board_homehub2a.patch
new file mode 100644 (file)
index 0000000..2f3a02a
--- /dev/null
@@ -0,0 +1,51 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -1748,6 +1748,32 @@
+       },
+ };
++static struct board_info __initdata board_homehub2a = {
++      .name                           = "HOMEHUB2A",
++      .expected_cpu_id                = 0x6358,
++
++      .has_uart0                      = 1,
++      .has_pci                        = 1,
++      .use_fallback_sprom             = 1,
++      .has_ohci0                      = 1,
++      .has_ehci0                      = 1,
++      .num_usbh_ports                 = 2,
++
++      .has_enet1                      = 1,
++      .enet1 = {
++              .has_phy                = 1,
++              .phy_id                 = 0,
++              .force_speed_100        = 1,
++              .force_duplex_full      = 1,
++      },
++
++      .fallback_sprom = {
++              .type                   = SPROM_BCM4322,
++              .pci_bus                = 0,
++              .pci_dev                = 1,
++      },
++};
++
+ static struct board_info __initdata board_HW520 = {
+       .name                           = "HW6358GW_B",
+       .expected_cpu_id                = 0x6358,
+@@ -2748,6 +2774,7 @@
+       &board_nb4_ser_r0,
+       &board_nb4_fxc_r1,
+       &board_ct6373_1,
++      &board_homehub2a,
+       &board_HW520,
+       &board_HW553,
+       &board_HW556_A,
+@@ -2845,6 +2872,7 @@
+       { .compatible = "sfr,nb4-fxc-r1", .data = &board_nb4_fxc_r1, },
+       { .compatible = "t-com,spw303v", .data = &board_spw303v, },
+       { .compatible = "telsey,cpva642", .data = &board_CPVA642, },
++      { .compatible = "thomson,homehub2a", .data = &board_homehub2a, },
+ #endif
+ #ifdef CONFIG_BCM63XX_CPU_6362
+       { .compatible = "sagem,f@st2504n", .data = &board_fast2504n, },
index 086375241227d05e9fbbd519fa844c7cd28856d3..3ca8fe16ff97d423e381f81c1c5f039453b32242 100644 (file)
@@ -5,6 +5,16 @@
 # See /LICENSE for more information.
 #
 
+define Profile/BTHOMEHUB2A
+  NAME:=BT Home Hub 2A
+  PACKAGES:=kmod-b43 wpad-mini \
+       kmod-usb2 kmod-usb-ohci kmod-ledtrig-usbdev
+endef
+define Profile/BTHOMEHUB2A/Description
+  Package set optimized for BTHOMEHUB2A.
+endef
+$(eval $(call Profile,BTHOMEHUB2A))
+
 define Profile/BTV2500V
   NAME:=BT Voyager V2500V
   PACKAGES:=kmod-b43 wpad-mini