Hi, > -----Original Message----- > From: openwrt-devel [mailto:openwrt-devel-boun...@lists.openwrt.org] > On Behalf Of Daniel González Cabanelas > Sent: Donnerstag, 4. Juni 2020 00:48 > To: openwrt-devel@lists.openwrt.org > Cc: nolt...@gmail.com > Subject: [OpenWrt-Devel] [PATCH 4/4] bcm63xx: add support for the > Sercomm H500-s > > Sercomm H500-s is an xDSL dual band wireless router based on Broadcom > BCM63167 SoC > > Hardware: > SoC: Broadcom BCM63167 > CPU: BMIPS4350 V8.0, 400 MHz, 2 cores > Flash: NAND 128 MiB > RAM: DDR3 128 MiB > Ethernet: 4x 10/100/1000 Mbps > Switch: BCM53134S > Wireless: 802.11b/g/n: BCM435f (integrated) > 802.11ac: Quantenna QT3740BC (onboard SoC) > USB: 1x 2.0 > LEDs/Buttons: 11x / 2x > > Flash instruction, web UI: > 1. Reset to defaults using the reset button if the admin password is > unknown > 2. Login into the web UI as admin. > Address: http://192.168.0.1 > User: admin > Password: VF-ESad1018 > 3. Go to Settings -> Firmware Update, and select the Openwrt factory > firmware > 4. Update the firmware. > 5. Wait until it finish, the device will reboot with Openwrt installed > on the alternative image partitions keeping the stock firmware in > the former. > > Notes: > - The patch also adds support for the lowi version. Only the factory > firmware is different. > - The integrated Wifi in the Broadcom Soc isn't still supported. > - The Quantenna 802.11ac wifi works ok, but needs to be configured with > the Quantenna client application. It can't be configured with Luci > nor any iw command since it's a separated subsystem linked via > ethernet. > > Signed-off-by: Daniel González Cabanelas <dgcb...@gmail.com> > --- > .../bcm63xx/base-files/etc/board.d/01_leds | 3 + > .../bcm63xx/base-files/etc/board.d/02_network | 3 + > .../base-files/lib/upgrade/platform.sh | 3 +- > .../bcm63xx/dts/bcm63167-sercomm-h500s.dts | 201 > ++++++++++++++++++ > target/linux/bcm63xx/image/bcm63xx_nand.mk | 53 +++++ > .../bcm63xx/patches-5.4/568-board-H500s.patch | 72 +++++++ > 6 files changed, 334 insertions(+), 1 deletion(-) create mode 100644 > target/linux/bcm63xx/dts/bcm63167-sercomm-h500s.dts > create mode 100644 target/linux/bcm63xx/patches-5.4/568-board- > H500s.patch > > diff --git a/target/linux/bcm63xx/base-files/etc/board.d/01_leds > b/target/linux/bcm63xx/base-files/etc/board.d/01_leds > index 91d67f0c0b..5894108457 100755 > --- a/target/linux/bcm63xx/base-files/etc/board.d/01_leds > +++ b/target/linux/bcm63xx/base-files/etc/board.d/01_leds > @@ -100,6 +100,9 @@ sercomm,ad1018) > sercomm,ad1018-nor) > ucidef_set_led_netdev "wlan0" "WLAN" "AD1018:green:wifi" > "wlan0" > ;; > +sercomm,h500s) > + ucidef_set_led_netdev "wan" "WAN" "$model:green:internet" > "eth0.2" > + ;; > telsey,cpva502plus) > ucidef_set_led_netdev "lan" "LAN" "CPVA502+:amber:link" "eth0" > ;; > diff --git a/target/linux/bcm63xx/base-files/etc/board.d/02_network > b/target/linux/bcm63xx/base-files/etc/board.d/02_network > index 784af29cb4..30649b3abe 100755 > --- a/target/linux/bcm63xx/base-files/etc/board.d/02_network > +++ b/target/linux/bcm63xx/base-files/etc/board.d/02_network > @@ -142,6 +142,9 @@ sercomm,ad1018-nor) > ucidef_add_switch "switch0" \ > "1:lan:3" "2:lan:2" "3:lan:1" "0:wan" "8t@eth0" > ;; > +sercomm,h500s) > + ucidef_add_switch "switch0" "4:lan" "3:wan" "8t@eth0" > + ;; > sfr,neufbox-6-sercomm-r0) > ucidef_add_switch "switch0" \ > "1:lan" "2:lan" "3:lan" "4:lan" "0:wan" "9t@eth0" > diff --git a/target/linux/bcm63xx/base-files/lib/upgrade/platform.sh > b/target/linux/bcm63xx/base-files/lib/upgrade/platform.sh > index 7d416297dd..cea66f63ef 100644 > --- a/target/linux/bcm63xx/base-files/lib/upgrade/platform.sh > +++ b/target/linux/bcm63xx/base-files/lib/upgrade/platform.sh > @@ -69,7 +69,8 @@ platform_do_upgrade() { > comtrend,vr-3032u|\ > huawei,hg253s-v2|\ > netgear,dgnd3700-v2|\ > - sercomm,ad1018) > + sercomm,ad1018|\ > + sercomm,h500s) > REQUIRE_IMAGE_METADATA=1 > cfe_jffs2_upgrade_tar "$1" > ;; > diff --git a/target/linux/bcm63xx/dts/bcm63167-sercomm-h500s.dts > b/target/linux/bcm63xx/dts/bcm63167-sercomm-h500s.dts > new file mode 100644 > index 0000000000..5a999ef24e > --- /dev/null > +++ b/target/linux/bcm63xx/dts/bcm63167-sercomm-h500s.dts > @@ -0,0 +1,201 @@ > +// SPDX-License-Identifier: (GPL-2.0+ OR MIT) > +/* > + * Device Tree file for Sercomm H500-s > + * > + * Copyright (C) 2020 Daniel González Cabanelas <dgcb...@gmail.com> */ > + > +/dts-v1/; > + > +#include "bcm63268.dtsi" > + > +#include <dt-bindings/input/input.h> > + > +/ { > + model = "Sercomm H500-s"; > + compatible = "sercomm,h500s", "brcm,bcm63268";
If the model name is H500-s, then the compatible, device node name etc. should also be "sercomm,h500-s" > + > + aliases { > + led-boot = &led_power_green; > + led-failsafe = &led_power_red; > + led-running = &led_power_green; > + led-upgrade = &led_power_green; > + }; > + > + chosen { > + bootargs = "rootfstype=squashfs,ubifs noinitrd > console=ttyS0,115200"; > + stdout-path = "serial0:115200n8"; > + }; > + > + keys { > + compatible = "gpio-keys-polled"; > + #address-cells = <1>; > + #size-cells = <0>; > + poll-interval = <20>; > + > + wps { > + label = "wps"; > + gpios = <&pinctrl 34 1>; > + linux,code = <KEY_WPS_BUTTON>; > + debounce-interval = <60>; > + }; > + > + reset { > + label = "reset"; > + gpios = <&pinctrl 35 1>; > + linux,code = <KEY_RESTART>; > + debounce-interval = <60>; > + }; > + }; > +}; > + > +&leds { > + status = "ok"; ok -> okay > + > + pinctrl-names = "default"; > + pinctrl-0 = <&pinctrl_leds>; > + > + led@0 { As stated earlier, it's common in OpenWrt to use the relevant parts of the label for the node name, i.e. "mobile_red" or something similar in this case. I noticed that Noltari also used this notation here during a recent change, so maybe he can give an update if the old common syntax shouldn't be used for this setup. > + reg = <0>; > + label = "h500s:red:mobile"; > + }; > + > + led@1 { > + reg = <1>; > + label = "h500s:green:mobile"; > + }; > + > + led_power_red: led@8 { > + reg = <8>; > + label = "h500s:red:power"; > + }; > + > + led@9 { > + reg = <9>; > + label = "h500s:green:wifi"; > + }; > + > + led@12 { > + reg = <12>; > + label = "h500s:red:phone"; > + }; > + > + led@13 { > + reg = <13>; > + label = "h500s:red:wifi"; > + }; > + > + led@14 { > + reg = <14>; > + label = "h500s:red:internet"; > + }; > + > + led@15 { > + reg = <15>; > + label = "h500s:green:internet"; > + }; > + > + led@16 { > + reg = <16>; > + label = "h500s:green:phone"; > + }; > + > + led_power_green: led@17 { > + reg = <17>; > + label = "h500s:green:power"; > + default-state = "on"; > + }; > + > + led@23 { > + reg = <23>; > + label = "h500s:blue:mobile"; > + }; > +}; > + > +&nflash { > + status = "ok"; okay > + > + nandcs@0 { > + compatible = "brcm,nandcs"; > + reg = <0>; > + > + pinctrl-names = "default"; > + pinctrl-0 = <&pinctrl_nand>; > + > + nand-on-flash-bbt; > + nand-ecc-strength = <4>; > + nand-ecc-step-size = <512>; > + brcm,nand-oob-sector-size = <64>; > + > + partitions { > + compatible = "fixed-partitions"; > + #address-cells = <1>; > + #size-cells = <1>; > + > + partition@0 { > + label = "cferom"; > + reg = <0x0000000 0x0020000>; /* 128 KiB */ Personally, I don't think the size comments are necessary, and would drop them completely. > + read-only; > + }; > + > + partition@20000 { > + label = "part_map"; > + reg = <0x0020000 0x00a0000>; /* 640 KiB */ > + read-only; > + }; > + > + partition@c0000 { > + label = "cferam1"; > + reg = <0x00c0000 0x0140000>; /* 1280 KiB */ > + read-only; > + }; > + > + partition@200000 { > + label = "cferam2"; > + reg = <0x0200000 0x0140000>; /* 1280 KiB */ > + read-only; > + }; > + > + partition@6920000 { > + label = "bootflag1"; > + reg = <0x6920000 0x0140000>; /* 1280 KiB */ > + }; > + > + partition@6a60000 { > + label = "bootflag2"; > + reg = <0x6a60000 0x0140000>; /* 1280 KiB */ > + }; > + > + partition@520000 { > + compatible = "sercomm,wfi"; > + label = "wfi"; > + reg = <0x0520000 0x6400000>; /* 2 images, > 97152 KiB */ > + }; Can somebody enlighten me why this ordering is used (also in other recent patches)? > + > + partition@6ba0000 { > + label = "xml_cfg"; > + reg = <0x6ba0000 0x0280000>; /* 2560 KiB */ > + read-only; > + }; > + > + partition@6e20000 { > + label = "app_data"; > + reg = <0x6e20000 0x0280000>; /* 2560 KiB */ > + read-only; > + }; > + }; > + }; > +}; > + > +&pinctrl { > + pinctrl_leds: leds { > + function = "led"; > + pins = "gpio0", "gpio1", "gpio8", "gpio9", > + "gpio12", "gpio13", "gpio14", "gpio15", > + "gpio16", "gpio17", "gpio23"; > + }; > +}; > + > +&uart0 { > + status = "ok"; okay > +}; > diff --git a/target/linux/bcm63xx/image/bcm63xx_nand.mk > b/target/linux/bcm63xx/image/bcm63xx_nand.mk > index 74f23f52af..5cc3f34f0c 100644 > --- a/target/linux/bcm63xx/image/bcm63xx_nand.mk > +++ b/target/linux/bcm63xx/image/bcm63xx_nand.mk > @@ -150,3 +150,56 @@ define Device/sercomm_ad1018 > SERCOMM_VERSION := 1001 > endef > TARGET_DEVICES += sercomm_ad1018 > + > +define Device/sercomm_h500s As stated above, this should be sercomm_h500-s > + $(Device/sercomm-nand) > + DEVICE_VENDOR := Sercomm > + DEVICE_MODEL := H500-s > + IMAGES := factory.img sysupgrade.bin > + KERNEL := kernel-bin | append-dtb | lzma | cfe-jffs2-kernel > +$$(KERNEL_LOADADDR) > + CHIP_ID := 63268 > + SOC := bcm63167 > + BLOCKSIZE := 128k > + PAGESIZE := 2048 > + SUBPAGESIZE := 512 > + VID_HDR_OFFSET := 2048 > + DEVICE_PACKAGES += $(B43_PACKAGES) $(USB2_PACKAGES) > + SERCOMM_PID := \ > + 30 30 30 30 30 30 30 31 34 32 35 38 34 62 30 30 \ > + 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 \ > + 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 \ > + 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 \ > + 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 \ > + 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 \ > + 30 30 30 30 33 34 31 37 30 30 30 30 30 30 30 30 \ > + 0D 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > + SERCOMM_VERSION := 1001 > +endef > +TARGET_DEVICES += sercomm_h500s > + > +define Device/sercomm_h500s_lowi Should be sercomm_h500-s-lowi then. > + $(Device/sercomm-nand) > + DEVICE_VENDOR := Sercomm > + DEVICE_MODEL := H500-s lowi I agree with the device variant. > + DEVICE_DTS := bcm63167-sercomm-h500s Classic sysupgrade won't work with this approach (as SUPPORTED_DEVICES would not match compatible here), but I don't think that's relevant for bcm63xx? Personally, I'd prefer a DTSI and separate DTSes for both devices, so the compatible can be matched with the device name. Best Adrian > + IMAGES := factory.img sysupgrade.bin > + KERNEL := kernel-bin | append-dtb | lzma | cfe-jffs2-kernel > +$$(KERNEL_LOADADDR) > + CHIP_ID := 63268 > + SOC := bcm63167 > + BLOCKSIZE := 128k > + PAGESIZE := 2048 > + SUBPAGESIZE := 512 > + VID_HDR_OFFSET := 2048 > + DEVICE_PACKAGES += $(B43_PACKAGES) $(USB2_PACKAGES) > + SERCOMM_PID := \ > + 30 30 30 30 30 30 30 31 34 33 34 62 33 31 30 30 \ > + 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 \ > + 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 \ > + 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 \ > + 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 \ > + 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 \ > + 30 30 30 30 33 33 30 35 30 30 30 30 30 30 30 30 \ > + 0D 0A 00 00 00 00 00 00 00 00 00 00 00 00 00 00 > + SERCOMM_VERSION := 1001 > +endef > +TARGET_DEVICES += sercomm_h500s_lowi > diff --git a/target/linux/bcm63xx/patches-5.4/568-board-H500s.patch > b/target/linux/bcm63xx/patches-5.4/568-board-H500s.patch > new file mode 100644 > index 0000000000..f14e29bfba > --- /dev/null > +++ b/target/linux/bcm63xx/patches-5.4/568-board-H500s.patch > @@ -0,0 +1,72 @@ > +--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c > ++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c > +@@ -2867,10 +2867,45 @@ > + }, > + > + }, > + }, > + }; > ++ > ++static struct board_info __initdata board_H500s = { > ++ .name = "BXK00C-1.6", > ++ .expected_cpu_id = 0x63268, > ++ > ++ .has_pci = 0, > ++ .use_fallback_sprom = 0, > ++ > ++ .has_ehci0 = 1, > ++ .has_ohci0 = 1, > ++ .num_usbh_ports = 1, > ++ > ++ .has_enetsw = 1, > ++ > ++ .enetsw = { > ++ .used_ports = { > ++ [3] = { > ++ .used = 1, > ++ .phy_id = 12, > ++ .name = "WAN", > ++ }, > ++ > ++ [4] = { > ++ .used = 1, > ++ .phy_id = 0, > ++ .bypass_link = 1, > ++ .force_speed = 1000, > ++ .force_duplex_full = 1, > ++ .mii_override = 1, > ++ .timing_sel = 1, > ++ .name = "RGMII", > ++ }, > ++ }, > ++ }, > ++}; > + #endif /* CONFIG_BCM63XX_CPU_63268 */ > + > + /* > + * all boards > + */ > +@@ -2981,10 +3016,11 @@ > + &board_963269bhr, > + &board_VG8050, > + &board_VR3032u, > + &board_vw6339gu, > + &board_BSKYB_63168, > ++ &board_H500s, > + #endif > + }; > + > + static struct of_device_id const bcm963xx_boards_dt[] = { #ifdef > +CONFIG_OF @@ -3099,10 +3135,11 @@ > + { .compatible = "brcm,bcm963268bu-p300", .data = > &board_963268bu_p300, }, > + { .compatible = "brcm,bcm963269bhr", .data = &board_963269bhr, }, > + { .compatible = "comtrend,vg-8050", .data = &board_VG8050, }, > + { .compatible = "comtrend,vr-3032u", .data = &board_VR3032u, }, > + { .compatible = "inteno,vg50", .data = &board_vw6339gu, }, > ++ { .compatible = "sercomm,h500s", .data = &board_H500s, }, > + { .compatible = "sky,sr102", .data = &board_BSKYB_63168, }, #endif > + #endif /* CONFIG_OF */ > + { }, > + }; > -- > 2.27.0 > > > > > > _______________________________________________ > openwrt-devel mailing list > openwrt-devel@lists.openwrt.org > https://lists.openwrt.org/mailman/listinfo/openwrt-devel _______________________________________________ openwrt-devel mailing list openwrt-devel@lists.openwrt.org https://lists.openwrt.org/mailman/listinfo/openwrt-devel