brcm63xx: add support for ADB P.DG A4001N A-000-1A1-AX
authorDaniele Castro <danielecastro@hotmail.it>
Mon, 2 Dec 2019 15:13:44 +0000 (16:13 +0100)
committerÁlvaro Fernández Rojas <noltari@gmail.com>
Fri, 22 May 2020 19:23:21 +0000 (21:23 +0200)
ADB P.DG A4001N A-000-1A1-AX a.k.a. Telecom Italia ADSL2+ Wi-Fi N (AGPWI)
has the same PCB as the OpenWrt's ADB P.DG A4001N1 with LEDs connected
to different GPIO PINs in active low configuration.

OpenWrt's ADB P.DG A4001N image is made for the ADB P.DG A4001N A-000-1A1-AE.
It has different LEDs configuration and flash size/layout
w.r.t the ADB P.DG A4001N A-000-1A1-AX.

Hardware:
* Board ID: 96328avng
* SoC: Broadcom BCM6328
* RAM DDR2-800: 32 Mbyte - winbond W9725G6KB-25
* Serial flash: 16 Mbyte - MXIC MX25L 12845EMI-10G
* Ethernet: 4x Ethernet 10/100 baseT
* Wifi 2.4GHz: Broadcom Corporation BCM43224/5 Wireless Network Adapter (rev 01)
* LEDs: 2x Power, 2x ADSL, 2x Internet, 2x Wi-Fi, 2x Service
* Buttons: 1x Reset, 1x WPS (named WiFi/LED)
* UART: 1x TTL 115200n8, TX  NC  RX, on J5 connector (short R192 and R193)
                         NC  GND NC

Installation via CFE:
* Stock CFE has to be overwriten with one for 96328avng boards that can upload
  .bin images with no signature check (cfe-A4001N-V0000_96328avng.bin)
* connect a serial port to the board
* Stop the boot process after power on by pressing enter
* set static IP 192.168.1.2 and subnet mask 255.255.255.0
* navigate to http://192.168.1.1/
* upload the OpenWrt image file

Signed-off-by: Daniele Castro <danielecastro@hotmail.it>
Signed-off-by: Álvaro Fernández Rojas <noltari@gmail.com>
target/linux/bcm63xx/base-files/etc/board.d/01_leds
target/linux/bcm63xx/base-files/etc/board.d/02_network
target/linux/bcm63xx/base-files/etc/uci-defaults/09_fix_crc
target/linux/bcm63xx/dts/bcm6328-adb-pdg-a4001n-a-000-1a1-ax.dts [new file with mode: 0644]
target/linux/bcm63xx/image/bcm63xx.mk
target/linux/bcm63xx/patches-5.4/567-board-adb_pdg-a4001n-a-000-1a1-ax.patch [new file with mode: 0644]

index 907a425d167739d8caca634429ea82b5db9a79ec..91d67f0c0bf7ac5692643bc0cfb624d682db5b12 100755 (executable)
@@ -21,6 +21,12 @@ adb,a4001n1)
        ucidef_set_led_netdev "lan" "LAN" "A4001N1:green:eth" "eth0"
        ucidef_set_led_usbdev "usb" "USB" "A4001N1:green:3g" "1-1"
        ;;
+adb,pdg-a4001n-a-000-1a1-ax)
+       ucidef_set_led_netdev "lan" "LAN" "$model:green:internet" "eth0.1"
+       ucidef_set_led_netdev "wan" "WAN" "$model:green:adsl" "eth0.2"
+       ucidef_set_led_netdev "wlan0" "WIFI" "$model:green:wifi" "wlan0"
+       ucidef_set_led_usbdev "usb" "USB" "$model:green:service" "1-1"
+       ;;
 adb,av4202n)
        ucidef_set_led_netdev "wlan0" "WLAN" "AV4202N:blue:wifi" "wlan0"
        ;;
index a3788adac2a661da100f28c16bd31e011c359390..784af29cb4fab435bc28fe6eac7f1debca15c835 100755 (executable)
@@ -20,6 +20,7 @@ t-com,speedport-w-500v)
        ;;
 adb,a4001n1|\
 adb,a4001n|\
+adb,pdg-a4001n-a-000-1a1-ax|\
 adb,av4202n|\
 brcm,bcm963281tan|\
 brcm,bcm96328avng|\
index 813b51fb52c79ec6fa84da8dfd230bd796312309..3fcf40434f47bf6b1aed982b10a868aadce30b1b 100644 (file)
@@ -14,6 +14,7 @@ case "$(board_name)" in
        actiontec,r1000h|\
        adb,a4001n|\
        adb,a4001n1|\
+       adb,pdg-a4001n-a-000-1a1-ax|\
        brcm,bcm96328avng|\
        brcm,bcm963281tan|\
        bt,voyager-2110|\
diff --git a/target/linux/bcm63xx/dts/bcm6328-adb-pdg-a4001n-a-000-1a1-ax.dts b/target/linux/bcm63xx/dts/bcm6328-adb-pdg-a4001n-a-000-1a1-ax.dts
new file mode 100644 (file)
index 0000000..8a6a8b5
--- /dev/null
@@ -0,0 +1,166 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+/dts-v1/;
+
+#include "bcm6328.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+       model = "ADB P.DG A4001N A-000-1A1-AX";
+       compatible = "adb,pdg-a4001n-a-000-1a1-ax", "brcm,bcm6328";
+
+       aliases {
+               led-boot = &led_power_green;
+               led-failsafe = &led_power_green;
+               led-running = &led_power_green;
+               led-upgrade = &led_power_green;
+       };
+
+       chosen {
+               bootargs = "rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+               stdout-path = "serial0:115200n8";
+       };
+
+       keys {
+               compatible = "gpio-keys-polled";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               poll-interval = <20>;
+
+               reset {
+                       label = "reset";
+                       gpios = <&pinctrl 23 1>;
+                       linux,code = <KEY_RESTART>;
+                       debounce-interval = <60>;
+               };
+
+               wps {
+                       label = "wifi-led";
+                       gpios = <&pinctrl 24 1>;
+                       linux,code = <KEY_WPS_BUTTON>;
+                       debounce-interval = <60>;
+               };
+       };
+};
+
+&leds {
+       status = "okay";
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&pinctrl_leds>;
+
+       led@2 {
+               reg = <2>;
+               active-low;
+               label = "pdg-a4001n-a-000-1a1-ax:red:internet";
+       };
+
+       led@3 {
+               reg = <3>;
+               active-low;
+               label = "pdg-a4001n-a-000-1a1-ax:green:adsl";
+       };
+
+       led@5 {
+               reg = <5>;
+               active-low;
+               label = "pdg-a4001n-a-000-1a1-ax:red:adsl";
+       };
+
+       led@6 {
+               reg = <6>;
+               active-low;
+               label = "pdg-a4001n-a-000-1a1-ax:green:service";
+       };
+
+       led@7 {
+               reg = <7>;
+               active-low;
+               label = "pdg-a4001n-a-000-1a1-ax:red:service";
+       };
+
+       led@8 {
+               reg = <8>;
+               active-low;
+               label = "pdg-a4001n-a-000-1a1-ax:red:power";
+       };
+
+       led@9 {
+               reg = <9>;
+               active-low;
+               label = "pdg-a4001n-a-000-1a1-ax:green:wifi";
+       };
+
+       led@10 {
+               reg = <10>;
+               active-low;
+               label = "pdg-a4001n-a-000-1a1-ax:red:wifi";
+       };
+
+       led@11 {
+               reg = <11>;
+               active-low;
+               label = "pdg-a4001n-a-000-1a1-ax:green:internet";
+       };
+
+       led_power_green: led@12 {
+               reg = <12>;
+               active-low;
+               label = "pdg-a4001n-a-000-1a1-ax:green:power";
+               default-state = "on";
+       };
+};
+
+&hsspi {
+       status = "okay";
+
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               spi-max-frequency = <16666667>;
+               spi-tx-bus-width = <2>;
+               spi-rx-bus-width = <2>;
+               reg = <0>;
+
+               #address-cells = <1>;
+               #size-cells = <1>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               reg = <0x000000 0x010000>;
+                               label = "cfe";
+                               read-only;
+                       };
+
+                       partition@10000 {
+                               reg = <0x010000 0xfe0000>;
+                               label = "linux";
+                               compatible = "brcm,bcm963xx-imagetag";
+                       };
+
+                       partition@ff0000 {
+                               reg = <0xff0000 0x010000>;
+                               label = "nvram";
+                       };
+               };
+       };
+};
+
+&pinctrl {
+       pinctrl_leds: leds {
+               function = "led";
+               pins = "gpio2", "gpio3",
+                      "gpio5", "gpio6",
+                      "gpio7", "gpio8",
+                      "gpio9", "gpio10",
+                      "gpio11", "gpio12";
+       };
+};
+
+&uart0 {
+       status = "okay";
+};
index 219eff5183f8630cb94bd186150623563c08efc6..2627cbb50986c4c0301bab4ae42c965129f0c794 100644 (file)
@@ -220,6 +220,18 @@ define Device/adb_a4001n1
 endef
 TARGET_DEVICES += adb_a4001n1
 
+define Device/adb_pdg-a4001n-a-000-1a1-ax
+  $(Device/bcm63xx)
+  DEVICE_VENDOR := ADB
+  DEVICE_MODEL := P.DG A4001N A-000-1A1-AX
+  IMAGES += sysupgrade.bin
+  CFE_BOARD_ID := 96328avng
+  CHIP_ID := 6328
+  FLASH_MB := 16
+  DEVICE_PACKAGES := $(USB2_PACKAGES) $(B43_PACKAGES)
+endef
+TARGET_DEVICES += adb_pdg-a4001n-a-000-1a1-ax
+
 define Device/adb_av4202n
   $(Device/bcm63xx)
   DEVICE_VENDOR := ADB
diff --git a/target/linux/bcm63xx/patches-5.4/567-board-adb_pdg-a4001n-a-000-1a1-ax.patch b/target/linux/bcm63xx/patches-5.4/567-board-adb_pdg-a4001n-a-000-1a1-ax.patch
new file mode 100644 (file)
index 0000000..3976527
--- /dev/null
@@ -0,0 +1,68 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -627,6 +627,49 @@ static struct board_info __initdata boar
+       },
+ };
++static struct board_info __initdata board_PDG_A4001N_A_000_1A1_AX = {
++      .name                                   = "96328avng",
++      .expected_cpu_id                        = 0x6328,
++
++      .has_pci                                = 1,
++      .use_fallback_sprom             = 1,
++      .has_ohci0                              = 1,
++      .has_ehci0                              = 1,
++      .num_usbh_ports                         = 1,
++      .has_enetsw                             = 1,
++
++      .enetsw = {
++              .used_ports = {
++                      [0] = {
++                              .used           = 1,
++                              .phy_id         = 1,
++                              .name           = "Port 1",
++                      },
++                      [1] = {
++                              .used           = 1,
++                              .phy_id         = 2,
++                              .name           = "Port 2",
++                      },
++                      [2] = {
++                              .used           = 1,
++                              .phy_id         = 3,
++                              .name           = "Port 3",
++                      },
++                      [3] = {
++                              .used           = 1,
++                              .phy_id         = 4,
++                              .name           = "Port 4",
++                      },
++              },
++      },
++
++      .fallback_sprom = {
++              .type                           = SPROM_BCM43225,
++              .pci_bus                        = 1,
++              .pci_dev                        = 0,
++      },
++};
++
+ static struct board_info __initdata board_A4001N1 = {
+       .name                                   = "963281T_TEF",
+       .expected_cpu_id                        = 0x6328,
+@@ -2849,6 +2892,7 @@ static const struct board_info __initcon
+       &board_AR5387un,
+       &board_963281TAN,
+       &board_A4001N,
++      &board_PDG_A4001N_A_000_1A1_AX,
+       &board_A4001N1,
+       &board_dsl_274xb_f1,
+       &board_FAST2704V2,
+@@ -2957,6 +3001,7 @@ static struct of_device_id const bcm963x
+ #ifdef CONFIG_BCM63XX_CPU_6328
+       { .compatible = "adb,a4001n", .data = &board_A4001N, },
+       { .compatible = "adb,a4001n1", .data = &board_A4001N1, },
++      { .compatible = "adb,pdg-a4001n-a-000-1a1-ax", .data = &board_PDG_A4001N_A_000_1A1_AX, },
+       { .compatible = "brcm,bcm963281tan", .data = &board_963281TAN, },
+       { .compatible = "brcm,bcm96328avng", .data = &board_96328avng, },
+       { .compatible = "comtrend,ar-5381u", .data = &board_AR5381u, },