Livebox firmware is totally broken, fix it and make specific firmware for the DV4210 model.
- Added relocate stuff to allow boot the kernel - Fix RAM firmware - Rename dts file, now specific for the DV4210 model - Fix leds in the dts file - Add status led - Set button 1 as failsafe button - Disable dts flash detection, because physmap dts stuff seems to be broken for detecting Redboot partitions - Set eth0 as the LAN port, for coherence and comfortability. - Add led triggers - Make board data in the kernel file specific for DV4210. Add also DV4410 for future use or reference Signed-off-by: Daniel Gonzalez <dgcb...@gmail.com> diff --git a/target/linux/brcm63xx/base-files/etc/board.d/01_leds b/target/linux/brcm63xx/base-files/etc/board.d/01_leds index 8339254..209ebb9 100755 --- a/target/linux/brcm63xx/base-files/etc/board.d/01_leds +++ b/target/linux/brcm63xx/base-files/etc/board.d/01_leds @@ -51,6 +51,11 @@ homehub2a) ucidef_set_led_usbdev "usb1" "USB1" "HOMEHUB2A:blue:phone" "1-1" ucidef_set_led_usbdev "usb2" "USB2" "HOMEHUB2A:green:phone" "2-1" ;; +livebox1) + ucidef_set_led_netdev "lan" "LAN" "Livebox1:red:traffic" "eth0" + ucidef_set_led_netdev "wan" "WAN" "Livebox1:red:adsl" "eth1" + ucidef_set_led_netdev "wlan0" "WIFI" "Livebox1:red:wifi" "wlan0" + ;; r5010un_v2) ucidef_set_led_usbdev "usb" "USB" "R5010UNv2:green:usb" "1-1" ;; diff --git a/target/linux/brcm63xx/base-files/etc/board.d/02_network b/target/linux/brcm63xx/base-files/etc/board.d/02_network index f96da08..ffab119 100755 --- a/target/linux/brcm63xx/base-files/etc/board.d/02_network +++ b/target/linux/brcm63xx/base-files/etc/board.d/02_network @@ -128,6 +128,10 @@ bcm963268bu_p300) "0:lan" "3:lan" "4:lan" "5:lan" "6:lan" "7:lan" "8t@eth0" ;; +livebox1) + ucidef_set_interfaces_lan_wan "eth0" "eth1" + ;; + *) ucidef_set_interfaces_lan_wan "eth1" "eth0" ;; diff --git a/target/linux/brcm63xx/base-files/etc/diag.sh b/target/linux/brcm63xx/base-files/etc/diag.sh index b864964..2dd668d 100644 --- a/target/linux/brcm63xx/base-files/etc/diag.sh +++ b/target/linux/brcm63xx/base-files/etc/diag.sh @@ -99,6 +99,9 @@ set_state() { hg655b) status_led="HW65x:green:power" ;; + livebox1) + status_led="Livebox1:red:adsl-fail-power" + ;; p870hw-51a_v2) status_led="P870HW-51a:green:power" ;; diff --git a/target/linux/brcm63xx/dts/livebox-blue-5g.dts b/target/linux/brcm63xx/dts/livebox-blue-5g.dts deleted file mode 100644 index bc3d403..0000000 --- a/target/linux/brcm63xx/dts/livebox-blue-5g.dts +++ /dev/null @@ -1,68 +0,0 @@ -/dts-v1/; - -#include "bcm6348.dtsi" - -#include <dt-bindings/input/input.h> - -/ { - model = "Inventel Livebox 1"; - compatible = "inventel,livebox-blue-5g", "brcm,bcm6348"; - - gpio-keys-polled { - compatible = "gpio-keys-polled"; - #address-cells = <1>; - #size-cells = <0>; - - poll-interval = <20>; - debounce-interval = <60>; - - button1 { - label = "BTN_1"; - gpios = <&gpio1 4 1>; - linux,code = <BTN_1>; - }; - - button2 { - label = "BTN_2"; - gpios = <&gpio0 7 1>; - linux,code = <BTN_2>; - }; - }; - - gpio-leds { - compatible = "gpio-leds"; - - red_adsl_fail { - label = "Livebox-blue-5g:red:adsl-fail"; - gpios = <&gpio0 0 0>; - default-state = "on"; - }; - - red_adsl { - label = "Livebox-blue-5g:red:adsl-fail"; - gpios = <&gpio0 1 0>; - }; - - red_traffic { - label = "Livebox-blue-5g:red:adsl-fail"; - gpios = <&gpio0 2 0>; - }; - - red_phone { - label = "Livebox-blue-5g:red:adsl-fail"; - gpios = <&gpio0 3 0>; - }; - - red_wifi { - label = "Livebox-blue-5g:red:adsl-fail"; - gpios = <&gpio0 4 0>; - }; - }; -}; - -&pflash { - reg = <0x1e400000 0x800000>; - status = "ok"; - - linux,part-probe = "redboot"; -}; diff --git a/target/linux/brcm63xx/dts/livebox-dv4210.dts b/target/linux/brcm63xx/dts/livebox-dv4210.dts new file mode 100644 index 0000000..b4570ca --- /dev/null +++ b/target/linux/brcm63xx/dts/livebox-dv4210.dts @@ -0,0 +1,68 @@ +/dts-v1/; + +#include "bcm6348.dtsi" + +#include <dt-bindings/input/input.h> + +/ { + model = "Inventel Livebox 1"; + compatible = "inventel,livebox-dv4210", "brcm,bcm6348"; + + gpio-keys-polled { + compatible = "gpio-keys-polled"; + #address-cells = <1>; + #size-cells = <0>; + + poll-interval = <20>; + debounce-interval = <60>; + + button1 { + label = "BTN_1"; + gpios = <&gpio1 4 1>; + linux,code = <KEY_RESTART>; + }; + + button2 { + label = "BTN_2"; + gpios = <&gpio0 7 1>; + linux,code = <BTN_2>; + }; + }; + + gpio-leds { + compatible = "gpio-leds"; + + red_adsl_fail { + label = "Livebox1:red:adsl-fail-power"; + gpios = <&gpio0 0 0>; + default-state = "on"; + }; + + red_adsl { + label = "Livebox1:red:adsl"; + gpios = <&gpio0 1 0>; + }; + + red_traffic { + label = "Livebox1:red:traffic"; + gpios = <&gpio0 2 0>; + }; + + red_phone { + label = "Livebox1:red:phone"; + gpios = <&gpio0 3 0>; + }; + + red_wifi { + label = "Livebox1:red:wifi"; + gpios = <&gpio0 4 0>; + }; + }; +}; + +&pflash { + reg = <0x1e400000 0x800000>; + status = "disabled"; + + linux,part-probe = "RedBoot"; +}; diff --git a/target/linux/brcm63xx/image/Makefile b/target/linux/brcm63xx/image/Makefile index e00b6fb..da5bbbf 100644 --- a/target/linux/brcm63xx/image/Makefile +++ b/target/linux/brcm63xx/image/Makefile @@ -155,7 +155,7 @@ define Build/redboot-bin $(TOPDIR)/scripts/redboot-script.pl \ -k $(BIN_DIR)/$(REDBOOT_PREFIX)-vmlinux.gz \ -r $(BIN_DIR)/$(REDBOOT_PREFIX)-$(notdir $(word 2,$^)) \ - -a $(strip $(LOADADDR)) -f 0xbe430000 -l 0x7c0000 \ + -a $(strip $(LOADER_ENTRY)) -f 0xbe430000 -l 0x7c0000 \ -s 0x1000 -t 20 -o $@.redbootscript dd if="$@.redbootscript" of="$@.redbootscript.padded" bs=4096 conv=sync cat \ @@ -290,10 +290,11 @@ endef # Generates images compatible with RedBoot bootloader define Device/bcm63xxRedBoot FILESYSTEMS := squashfs - KERNEL := kernel-bin | append-dtb | gzip + KERNEL := kernel-bin | append-dtb | relocate-kernel | gzip IMAGES := redboot.bin IMAGE/redboot.bin := redboot-bin REDBOOT_PREFIX := $$(IMAGE_PREFIX) + KERNEL_INITRAMFS := kernel-bin | append-dtb | lzma | loader-lzma elf endef DEVICE_VARS += REDBOOT_PREFIX @@ -582,7 +583,7 @@ $(eval $(call bcm63xxCfe,HG655b,HG655b,hg655b,HW65x,6368,--image-offset 0x20000 # Inteno VG50 $(eval $(call bcm63xxCfeRamdisk,VG50,vg50,vg50,VW6339GU,63268)) # Inventel Livebox 1 -$(eval $(call bcm63xxRedBoot,Livebox,livebox,livebox-blue-5g)) +$(eval $(call bcm63xxRedBoot,Livebox,livebox_DV4210,livebox-dv4210)) # Netgear CVG834G $(eval $(call bcm33xxHcsRamdisk,CVG834G,cvg834g,cvg834g,0xa020,0001,0022)) # Netgear DG834GT/PN diff --git a/target/linux/brcm63xx/patches-4.1/513-MIPS-BCM63XX-add-inventel-Livebox-support.patch b/target/linux/brcm63xx/patches-4.1/513-MIPS-BCM63XX-add-inventel-Livebox-support.patch index 962f040..647530a 100644 --- a/target/linux/brcm63xx/patches-4.1/513-MIPS-BCM63XX-add-inventel-Livebox-support.patch +++ b/target/linux/brcm63xx/patches-4.1/513-MIPS-BCM63XX-add-inventel-Livebox-support.patch @@ -57,7 +57,7 @@ Subject: [PATCH] MIPS: BCM63XX: add inventel Livebox support #endif /* __BOARD_COMMON_H */ --- /dev/null +++ b/arch/mips/bcm63xx/boards/board_livebox.c -@@ -0,0 +1,164 @@ +@@ -0,0 +1,194 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file "COPYING" in the main directory of this archive @@ -88,8 +88,9 @@ Subject: [PATCH] MIPS: BCM63XX: add inventel Livebox support + * known 6348 boards + */ +#ifdef CONFIG_BCM63XX_CPU_6348 -+static struct board_info __initdata board_livebox_blue5g = { -+ .name = "Livebox-blue-5g", ++/*Livebox 1 - DV4210*/ ++static struct board_info __initdata board_livebox_dv4210 = { ++ .name = "DV4210", + .expected_cpu_id = 0x6348, + + .has_uart0 = 1, @@ -111,9 +112,37 @@ Subject: [PATCH] MIPS: BCM63XX: add inventel Livebox support + .ephy_reset_gpio_flags = GPIO_ACTIVE_LOW, + + .has_ohci0 = 1, ++}; ++ ++/*Livebox Pro v1 - DV4410*/ ++static struct board_info __initdata board_livebox_dv4410 = { ++ .name = "DV4410", ++ .expected_cpu_id = 0x6348, ++ ++ .has_uart0 = 1, ++ .has_enet0 = 1, ++ .has_enet1 = 1, ++ .has_pci = 1, ++ ++ .enet0 = { ++ .has_phy = 1, ++ .use_internal_phy = 1, ++ }, ++ ++ .enet1 = { ++ .has_phy = 1, ++ .phy_id = 0, ++ .force_speed_100 = 1, ++ .force_duplex_full = 1, ++ }, ++ ++ .ephy_reset_gpio = 29, /*keep SS1# HIGH*/ ++ .ephy_reset_gpio_flags = GPIO_ACTIVE_LOW, ++ ++ .has_ohci0 = 1, + .has_pccard = 1, + -+ .has_dsp = 0, /*TODO some Liveboxes have dsp*/ ++ .has_dsp = 1, + .dsp = { + .gpio_rst = 6, + .gpio_int = 35, @@ -128,12 +157,13 @@ Subject: [PATCH] MIPS: BCM63XX: add inventel Livebox support + */ +static const struct board_info __initdata *bcm963xx_boards[] = { +#ifdef CONFIG_BCM63XX_CPU_6348 -+ &board_livebox_blue5g ++ &board_livebox_dv4210, ++ &board_livebox_dv4410, +#endif +}; + +static struct of_device_id const livebox_boards_dt[] = { -+ { .compatible = "inventel,livebox-blue-5g", .data = &board_livebox_blue5g, }, ++ { .compatible = "inventel,livebox-dv4210", .data = &board_livebox_dv4210, }, + { } +}; + diff --git a/target/linux/brcm63xx/patches-4.4/513-MIPS-BCM63XX-add-inventel-Livebox-support.patch b/target/linux/brcm63xx/patches-4.4/513-MIPS-BCM63XX-add-inventel-Livebox-support.patch index e63ac5c..34da3d2 100644 --- a/target/linux/brcm63xx/patches-4.4/513-MIPS-BCM63XX-add-inventel-Livebox-support.patch +++ b/target/linux/brcm63xx/patches-4.4/513-MIPS-BCM63XX-add-inventel-Livebox-support.patch @@ -57,7 +57,7 @@ Subject: [PATCH] MIPS: BCM63XX: add inventel Livebox support #endif /* __BOARD_COMMON_H */ --- /dev/null +++ b/arch/mips/bcm63xx/boards/board_livebox.c -@@ -0,0 +1,164 @@ +@@ -0,0 +1,194 @@ +/* + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file "COPYING" in the main directory of this archive @@ -88,8 +88,9 @@ Subject: [PATCH] MIPS: BCM63XX: add inventel Livebox support + * known 6348 boards + */ +#ifdef CONFIG_BCM63XX_CPU_6348 -+static struct board_info __initdata board_livebox_blue5g = { -+ .name = "Livebox-blue-5g", ++/*Livebox 1 - DV4210*/ ++static struct board_info __initdata board_livebox_dv4210 = { ++ .name = "DV4210", + .expected_cpu_id = 0x6348, + + .has_uart0 = 1, @@ -111,9 +112,37 @@ Subject: [PATCH] MIPS: BCM63XX: add inventel Livebox support + .ephy_reset_gpio_flags = GPIO_ACTIVE_LOW, + + .has_ohci0 = 1, ++}; ++ ++/*Livebox Pro v1 - DV4410*/ ++static struct board_info __initdata board_livebox_dv4410 = { ++ .name = "DV4410", ++ .expected_cpu_id = 0x6348, ++ ++ .has_uart0 = 1, ++ .has_enet0 = 1, ++ .has_enet1 = 1, ++ .has_pci = 1, ++ ++ .enet0 = { ++ .has_phy = 1, ++ .use_internal_phy = 1, ++ }, ++ ++ .enet1 = { ++ .has_phy = 1, ++ .phy_id = 0, ++ .force_speed_100 = 1, ++ .force_duplex_full = 1, ++ }, ++ ++ .ephy_reset_gpio = 29, /*keep SS1# HIGH*/ ++ .ephy_reset_gpio_flags = GPIO_ACTIVE_LOW, ++ ++ .has_ohci0 = 1, + .has_pccard = 1, + -+ .has_dsp = 0, /*TODO some Liveboxes have dsp*/ ++ .has_dsp = 1, + .dsp = { + .gpio_rst = 6, + .gpio_int = 35, @@ -128,12 +157,13 @@ Subject: [PATCH] MIPS: BCM63XX: add inventel Livebox support + */ +static const struct board_info __initdata *bcm963xx_boards[] = { +#ifdef CONFIG_BCM63XX_CPU_6348 -+ &board_livebox_blue5g ++ &board_livebox_dv4210, ++ &board_livebox_dv4410, +#endif +}; + +static struct of_device_id const livebox_boards_dt[] = { -+ { .compatible = "inventel,livebox-blue-5g", .data = &board_livebox_blue5g, }, ++ { .compatible = "inventel,livebox-dv4210", .data = &board_livebox_dv4210, }, + { } +}; + _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/cgi-bin/mailman/listinfo/openwrt-devel