From d6f66dd88e5d833f88fa4b6e056499ec7644ff7c Mon Sep 17 00:00:00 2001 From: Daniele Castro Date: Mon, 2 Dec 2019 16:13:44 +0100 Subject: [PATCH] brcm63xx: add support for ADB P.DG A4001N A-000-1A1-AX MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 Signed-off-by: Álvaro Fernández Rojas --- .../bcm63xx/base-files/etc/board.d/01_leds | 6 + .../bcm63xx/base-files/etc/board.d/02_network | 1 + .../base-files/etc/uci-defaults/09_fix_crc | 1 + .../bcm6328-adb-pdg-a4001n-a-000-1a1-ax.dts | 166 ++++++++++++++++++ target/linux/bcm63xx/image/bcm63xx.mk | 12 ++ ...67-board-adb_pdg-a4001n-a-000-1a1-ax.patch | 68 +++++++ 6 files changed, 254 insertions(+) create mode 100644 target/linux/bcm63xx/dts/bcm6328-adb-pdg-a4001n-a-000-1a1-ax.dts create mode 100644 target/linux/bcm63xx/patches-5.4/567-board-adb_pdg-a4001n-a-000-1a1-ax.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 907a425d16..91d67f0c0b 100755 --- a/target/linux/bcm63xx/base-files/etc/board.d/01_leds +++ b/target/linux/bcm63xx/base-files/etc/board.d/01_leds @@ -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" ;; 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 a3788adac2..784af29cb4 100755 --- a/target/linux/bcm63xx/base-files/etc/board.d/02_network +++ b/target/linux/bcm63xx/base-files/etc/board.d/02_network @@ -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|\ diff --git a/target/linux/bcm63xx/base-files/etc/uci-defaults/09_fix_crc b/target/linux/bcm63xx/base-files/etc/uci-defaults/09_fix_crc index 813b51fb52..3fcf40434f 100644 --- a/target/linux/bcm63xx/base-files/etc/uci-defaults/09_fix_crc +++ b/target/linux/bcm63xx/base-files/etc/uci-defaults/09_fix_crc @@ -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 index 0000000000..8a6a8b58a2 --- /dev/null +++ b/target/linux/bcm63xx/dts/bcm6328-adb-pdg-a4001n-a-000-1a1-ax.dts @@ -0,0 +1,166 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT + +/dts-v1/; + +#include "bcm6328.dtsi" + +#include + +/ { + 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 = ; + debounce-interval = <60>; + }; + + wps { + label = "wifi-led"; + gpios = <&pinctrl 24 1>; + linux,code = ; + 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"; +}; diff --git a/target/linux/bcm63xx/image/bcm63xx.mk b/target/linux/bcm63xx/image/bcm63xx.mk index 219eff5183..2627cbb509 100644 --- a/target/linux/bcm63xx/image/bcm63xx.mk +++ b/target/linux/bcm63xx/image/bcm63xx.mk @@ -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 index 0000000000..3976527b37 --- /dev/null +++ b/target/linux/bcm63xx/patches-5.4/567-board-adb_pdg-a4001n-a-000-1a1-ax.patch @@ -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, },