[LEDE-DEV] [PATCH] This patch adds support for the Actiontec R1000H gateway to the brcm63xx targets.

Jonas Gorski jonas.gorski at gmail.com
Fri Feb 17 06:07:35 PST 2017


Hi,

Please Cc me for brcm63xx patches, this makes it easier for me to
apply them (especially if they get mangled by patchwork).

On 12 February 2017 at 14:48, Anthony Sepa via Lede-dev
<lede-dev at lists.infradead.org> wrote:
> The sender domain has a DMARC Reject/Quarantine policy which disallows
> sending mailing list messages using the original "From" header.
>
> To mitigate this problem, the original message has been wrapped
> automatically by the mailing list software.
>
> ---------- Forwarded message ----------
> From: Anthony Sepa <anthonysepa at yahoo.ca>
> To: lede-dev at lists.infradead.org
> Cc: Anthony Sepa <anthonysepa at yahoo.ca>
> Date: Sun, 12 Feb 2017 09:45:06 -0400
> Subject: [PATCH] This patch adds support for the Actiontec R1000H gateway to the brcm63xx targets.

Please use "[PATCH] brcm63xx: <foo>" as the subject.

> SOC: Broadcom BCM6368 (2 * Broadcom BMIPS4350 V3.1 / 400 MHz)
> Flash size: 32MB (split 16/16 dual boot)

You usually can use all 32MB and force it to not dual boot by giving
it large enough images (>= 16MB).

> RAM size: 64MB
> Wireless: BCM432x 802.11a/b/g/n(pci)
> Ethernet: Broadcom BCM53115
> USB: 1 x USB 2.0
>
> Known issues:
>  - Unable to detect 53115 switch. This appear to be a problem with
> probing for the PHY using MDIO and results in error 5. Doesn't seem to
> be a problem with the configuration, and could use someone with
> experience to have a look at it.

Currently MDIO connected switches/devices aren't supported yet.

>  - Uses the b43 driver as using the OpenWRT/LEDE broadcom-wl driver
> fails to load the firmware for the 4322, so 802.11n is not supported.

You probably just need to supply an sprom, see how other boards use
.use_fallback_sprom = 1 etc.

> The factory build uses a newer broadcom-wl driver.
>  - No support for the cable port
>
> More info on the device and the research can be found at:
> http://www.actiontec.com/212.html
>
> Same FCC ID as:
> https://wikidevi.com/wiki/Actiontec_V1000H_(Telus)
>
> Signed-off-by: Anthony Sepa <anthonysepa at yahoo.ca>
> ---
>  target/linux/brcm63xx/dts/r1000h.dts               | 89 ++++++++++++++++++++++
>  target/linux/brcm63xx/image/bcm63xx.mk             | 16 ++++
>  .../brcm63xx/patches-4.4/578-board_R1000H.patch    | 63 +++++++++++++++
>  3 files changed, 168 insertions(+)
>  create mode 100644 target/linux/brcm63xx/dts/r1000h.dts
>  create mode 100644 target/linux/brcm63xx/patches-4.4/578-board_R1000H.patch
>
> diff --git a/target/linux/brcm63xx/dts/r1000h.dts b/target/linux/brcm63xx/dts/r1000h.dts
> new file mode 100644
> index 0000000..a3a8073
> --- /dev/null
> +++ b/target/linux/brcm63xx/dts/r1000h.dts
> @@ -0,0 +1,89 @@
> +/dts-v1/;
> +
> +#include "bcm6368.dtsi"
> +
> +#include <dt-bindings/input/input.h>
> +
> +/ {
> +       model = "Actiontec R1000H";
> +       compatible = "actiontec,r1000h", "brcm,bcm6368";
> +
> +       chosen {
> +               bootargs = "root=/dev/mtdblock2 rootfstype=squashfs ubi.mtd=ubi_dev noinitrd console=ttyS0,115200";

What's up with the ubi partiton? Where does this come from?

> +       };
> +
> +       gpio-keys-polled {
> +               compatible = "gpio-keys-polled";
> +               #address-cells = <1>;
> +               #size-cells = <0>;
> +               poll-interval = <20>;
> +               debounce-interval = <60>;
> +
> +               reset {
> +                       label = "reset";
> +                       gpios = <&gpio1 2 1>;
> +                       linux,code = <KEY_RESTART>;
> +               };

Please add an empty line between nodes (I know that many boards don't,
I plan to fix it eventually).

> +               wps {
> +                       label = "wps";
> +                       gpios = <&gpio1 3 1>;
> +                       linux,code = <KEY_WPS_BUTTON>;
> +               };
> +       };
> +
> +       gpio-leds {
> +               compatible = "gpio-leds";
> +
> +               inet_green {
> +                       label = "R1000H:green:inet";
> +                       gpios = <&gpio0 5 0>;
> +               };

Same here etc.

> +               usb_green {
> +                       label = "R1000H:green:usb";
> +                       gpios = <&gpio0 21 1>;
> +               };
> +               power_green {
> +                       label = "R1000H:green:power";
> +                       gpios = <&gpio0 22 0>;
> +                       default-state = "on";
> +               };
> +               wps_green {
> +                       label = "R1000H:green:wps";
> +                       gpios = <&gpio0 23 1>;
> +               };
> +               power_red {
> +                       label = "R1000H:red:power";
> +                       gpios = <&gpio0 24 0>;
> +               };
> +               wps_red {
> +                       label = "R1000H:red:wps";
> +                       gpios = <&gpio0 30 1>;
> +               };
> +               inet_red {
> +                       label = "R1000H:red:inet";
> +                       gpios = <&gpio0 31 0>;
> +               };
> +       };
> +};
> +
> +&pflash {
> +       status = "ok";
> +
> +       linux,part-probe = "bcm63xxpart";
> +
> +       CFE at 0 {
> +               reg = <0x000000 0x020000>;

Please make this partition read-only.

> +       };
> +       linux at 20000 {
> +               reg = <0x020000 0x07e0000>;
> +       };
> +       ubi_dev at 800000 {
> +               reg = <0x0800000 0x0800000>;
> +       };

Same again, what's up with the ubi?

> +       factory at 1000000 {
> +               reg = <0x1000000 0x0fe0000>;
> +       };

So this is the second image? As mentioned above, you should be able to
use the full flash, unless actiontec did something strange.

> +       nvram at 1fe0000 {
> +               reg = <0x1fe0000 0x20000>;
> +       };
> +};
> diff --git a/target/linux/brcm63xx/image/bcm63xx.mk b/target/linux/brcm63xx/image/bcm63xx.mk
> index 0749c29..947259b 100644
> --- a/target/linux/brcm63xx/image/bcm63xx.mk
> +++ b/target/linux/brcm63xx/image/bcm63xx.mk
> @@ -1,3 +1,4 @@
> +
>  #
>  # BCM33XX/BCM63XX Profiles
>  #
> @@ -174,6 +175,21 @@ define Device/96368MVWG-generic
>  endef
>  TARGET_DEVICES += 96368MVWG-generic
>
> +### Actiontec ###
> +define Device/R1000H
> +  $(Device/bcm63xx)
> +  FILESYSTEMS := squashfs
> +  DEVICE_TITLE := Actiontec R1000H
> +  DEVICE_DTS := r1000h
> +  CFE_BOARD_ID := 96368MVWG
> +  CFE_CHIP_ID := 6368
> +  FLASH_MB := 8

In your patch notes you say, 32, here you say 8. So how much is it?

> +  IMAGE_OFFSET := 0x20000
> +  DEVICE_PACKAGES := \
> +    $(USB2_PACKAGES)
> +endef
> +TARGET_DEVICES += R1000H
> +
>  ### ADB ###
>  define Device/A4001N
>    $(Device/bcm63xx)
> diff --git a/target/linux/brcm63xx/patches-4.4/578-board_R1000H.patch b/target/linux/brcm63xx/patches-4.4/578-board_R1000H.patch
> new file mode 100644
> index 0000000..c9c919a
> --- /dev/null
> +++ b/target/linux/brcm63xx/patches-4.4/578-board_R1000H.patch
> @@ -0,0 +1,63 @@
> +--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
> ++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
> +@@ -2200,6 +2200,44 @@
> +               .type                           = SPROM_BCM4318,
> +               .pci_bus                        = 0,
> +               .pci_dev                        = 1,
> ++      },
> ++};
> ++
> ++static struct board_info __initdata board_R1000H = {
> ++      .name                           = "R1000H",
> ++      .expected_cpu_id                = 0x6368,
> ++
> ++      .has_uart0                      = 1,
> ++      .has_uart1                      = 1,
> ++      .has_pci                        = 1,
> ++      .has_ohci0                      = 1,
> ++      .has_ehci0                      = 1,
> ++      .has_usbd                       = 1,
> ++      .usbd = {
> ++              .use_fullspeed          = 0,
> ++              .port_no                = 0,
> ++      },

I don't see any usb device port. Did I miss it? If not, please drop
the .has_usbd etc.

> ++
> ++      .has_enetsw                     = 1,
> ++      .enetsw = {
> ++              .used_ports = {
> ++                      [4] = {
> ++                              .used  = 1,
> ++                              .phy_id  = 0xff,
> ++                              .bypass_link = 1,
> ++                              .force_speed = 1000,
> ++                              .force_duplex_full = 1,
> ++                              .name  = "RGMII",
> ++                      },
> ++                      [5] = {
> ++                              .used  = 1,
> ++                              .phy_id  = 0xff,
> ++                              .bypass_link = 1,
> ++                              .force_speed = 1000,
> ++                              .force_duplex_full = 1,
> ++                              .name  = "RGMII",
> ++                      },

Does it really use both ports. Is one the wan port? is it the cable
port? Anyways, you should give them unique names.

> ++              },
> +       },
> + };
> +
> +@@ -2701,6 +2739,7 @@
> +       &board_HG622,
> +       &board_HG655b,
> +       &board_P870HW51A_V2,
> ++      &board_R1000H,
> +       &board_VH4032N,
> +       &board_VR3025u,
> +       &board_VR3025un,
> +@@ -2802,6 +2841,7 @@
> +       { .compatible = "sfr,nb6-ser-r0", .data = &board_nb6, },
> + #endif
> + #ifdef CONFIG_BCM63XX_CPU_6368
> ++      { .compatible = "actiontec,r1000h", .data = &board_R1000H, },
> +       { .compatible = "adb,av4202n", .data = &board_AV4202N, },
> +       { .compatible = "brcm,bcm96368mvngr", .data = &board_96368mvngr, },
> +       { .compatible = "brcm,bcm96368mvwg", .data = &board_96368mvwg, },

I don't see you modifying
target/linux/brcm63xx/base-files/etc/board.d/02_network, please add it
at the appropriate place.

You also might want to add it to 01_leds for its usb-led.


Regards
Jonas



More information about the Lede-dev mailing list