@@ -15,6 +15,9 @@ a4001n1)
a4001n)
ucidef_set_led_usbdev "usb" "USB" "A4001N:green:usb" "1-1"
;;
+ad1018)
+ ucidef_set_led_netdev "wlan0" "WLAN" "AD1018:green:wifi" "wlan0"
+ ;;
ar-5315u)
ucidef_set_led_usbdev "usb" "USB" "AR-5315u:green:usb" "1-1"
;;
@@ -98,6 +98,7 @@ vr-3026e)
"0:lan:1" "1:lan:2" "2:lan:3" "3:lan:4" "8t@eth0"
;;
+ad1018 |\
ar-5315u |\
vh4032n)
ucidef_add_switch "switch0" \
@@ -12,6 +12,9 @@ set_state() {
a4001n)
status_led="A4001N:green:power"
;;
+ ad1018)
+ status_led="AD1018:green:power"
+ ;;
ar-5315u)
status_led="AR-5315u:green:power"
;;
@@ -228,6 +228,9 @@ brcm63xx_dt_detect() {
"Sagem F@ST2704V2")
board_name="fast2704v2"
;;
+ "Sercomm AD1018 (SPI flash mod)")
+ board_name="ad1018"
+ ;;
"SFR Neuf Box 4"*)
board_name="neufbox4"
;;
new file mode 100644
@@ -0,0 +1,136 @@
+/dts-v1/;
+
+#include "bcm6328.dtsi"
+
+#include <dt-bindings/input/input.h>
+
+/ {
+ model = "Sercomm AD1018 (SPI flash mod)";
+ compatible = "sercomm,ad1018", "brcm,bcm6328";
+
+ chosen {
+ bootargs = "root=/dev/mtdblock2 rootfstype=squashfs,jffs2 noinitrd console=ttyS0,115200";
+ };
+
+ gpio-keys-polled {
+ compatible = "gpio-keys-polled";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ poll-interval = <20>;
+ debounce-interval = <60>;
+
+ wps {
+ label = "wps";
+ gpios = <&pinctrl 24 1>;
+ linux,code = <KEY_WPS_BUTTON>;
+ };
+ wifi {
+ label = "wifi";
+ gpios = <&pinctrl 25 1>;
+ linux,code = <KEY_WLAN>;
+ };
+ reset {
+ label = "reset";
+ gpios = <&pinctrl 31 1>;
+ linux,code = <KEY_RESTART>;
+ };
+ };
+
+};
+
+&pinctrl {
+ pinctrl_leds: leds {
+ function = "led";
+ pins = "gpio0", "gpio1";
+ };
+};
+
+&leds {
+ status = "ok";
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&pinctrl_leds &pinctrl_serial_led
+ &pinctrl_ephy0_spd_led &pinctrl_ephy1_act_led
+ &pinctrl_ephy2_act_led &pinctrl_ephy3_act_led>;
+
+ brcm,serial-leds;
+ brcm,serial-shift-inv;
+ brcm,serial-dat-low;
+
+ inet_red@0 {
+ reg = <0>;
+ active-low;
+ label = "AD1018:red:internet";
+ };
+
+ inet_green@1 {
+ reg = <1>;
+ active-low;
+ label = "AD1018:green:internet";
+ };
+
+ power_green@8 {
+ reg = <8>;
+ active-low;
+ label = "AD1018:green:power";
+ default-state = "on";
+ };
+
+ adsl_green@10 {
+ reg = <10>;
+ active-low;
+ label = "AD1018:green:adsl";
+ };
+
+ adsl_red@11 {
+ reg = <11>;
+ active-low;
+ label = "AD1018:red:adsl";
+ };
+
+ phone_green@12 {
+ reg = <12>;
+ active-low;
+ label = "AD1018:green:phone";
+ };
+
+ wps_green@13 {
+ reg = <13>;
+ active-low;
+ label = "AD1018:green:wps";
+ };
+
+ wifi_green@14 {
+ reg = <14>;
+ active-low;
+ label = "AD1018:green:wifi";
+ };
+
+ usb_green@15 {
+ reg = <15>;
+ active-low;
+ label = "AD1018:green:usb";
+ };
+
+ ephy0_spd@17 {
+ reg = <17>;
+ brcm,hardware-controlled;
+ };
+};
+
+&hsspi {
+ status = "ok";
+
+ 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>;
+
+ linux,part-probe = "bcm63xxpart";
+ };
+};
@@ -971,6 +971,18 @@ define Device/FAST2704V2
endef
TARGET_DEVICES += FAST2704V2
+### Sercomm ###
+define Device/AD1018-SPI_flash
+ $(Device/bcm63xx)
+ DEVICE_TITLE := Sercomm AD1018 (SPI flash mod)
+ DEVICE_DTS := ad1018-nor
+ CFE_BOARD_ID := 96328avngr
+ CFE_CHIP_ID := 6328
+ DEVICE_PACKAGES := \
+ $(B43_PACKAGES) $(USB2_PACKAGES)
+endef
+TARGET_DEVICES += AD1018-SPI_flash
+
### SFR ###
define Device/NEUFBOX4-SER
$(Device/bcm63xx)
new file mode 100644
@@ -0,0 +1,99 @@
+--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c
++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c
+@@ -365,8 +365,76 @@
+ },
+ },
+ };
+
++static struct sprom_fixup __initdata ad1018_fixups[] = {
++ { .offset = 6, .value = 0x1c00 },
++ { .offset = 65, .value = 0x1256 },
++ { .offset = 96, .value = 0x2046 },
++ { .offset = 97, .value = 0xfe69 },
++ { .offset = 98, .value = 0x1726 },
++ { .offset = 99, .value = 0xfa5c },
++ { .offset = 112, .value = 0x2046 },
++ { .offset = 113, .value = 0xfea8 },
++ { .offset = 114, .value = 0x1978 },
++ { .offset = 115, .value = 0xfa26 },
++ { .offset = 161, .value = 0x2222 },
++ { .offset = 169, .value = 0x2222 },
++ { .offset = 171, .value = 0x2222 },
++ { .offset = 173, .value = 0x2222 },
++ { .offset = 174, .value = 0x4444 },
++ { .offset = 175, .value = 0x2222 },
++ { .offset = 176, .value = 0x4444 },
++};
++
++static struct board_info __initdata board_AD1018 = {
++ .name = "96328avngr",
++ .expected_cpu_id = 0x6328,
++
++ .has_uart0 = 1,
++ .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 = "FIBRE",
++ },
++ [1] = {
++ .used = 1,
++ .phy_id = 2,
++ .name = "LAN3",
++ },
++ [2] = {
++ .used = 1,
++ .phy_id = 3,
++ .name = "LAN2",
++ },
++ [3] = {
++ .used = 1,
++ .phy_id = 4,
++ .name = "LAN1",
++ },
++ },
++ },
++
++ .fallback_sprom = {
++ .type = SPROM_BCM43217,
++ .pci_bus = 1,
++ .pci_dev = 0,
++ .board_fixups = ad1018_fixups,
++ .num_board_fixups = ARRAY_SIZE(ad1018_fixups),
++ },
++};
++
+ static struct sprom_fixup __initdata ar5381u_fixups[] = {
+ { .offset = 97, .value = 0xfee5 },
+ { .offset = 98, .value = 0x157c },
+ { .offset = 99, .value = 0xfae7 },
+@@ -2683,8 +2751,9 @@
+ &board_FAST2704N,
+ #endif
+ #ifdef CONFIG_BCM63XX_CPU_6328
+ &board_96328avng,
++ &board_AD1018,
+ &board_AR5381u,
+ &board_AR5387un,
+ &board_963281TAN,
+ &board_A4001N,
+@@ -2797,8 +2866,9 @@
+ { .compatible = "comtrend,ar-5387un", .data = &board_AR5387un, },
+ { .compatible = "d-link,dsl-274xb-f", .data = &board_dsl_274xb_f1, },
+ { .compatible = "nucom,r5010unv2", .data = &board_R5010UNV2, },
+ { .compatible = "sagem,f@st2704v2", .data = &board_FAST2704V2, },
++ { .compatible = "sercomm,ad1018", .data = &board_AD1018, },
+ #endif
+ #ifdef CONFIG_BCM63XX_CPU_6338
+ { .compatible = "brcm,bcm96338gw", .data = &board_96338gw, },
+ { .compatible = "brcm,bcm96338w", .data = &board_96338w, },
Add support for the Sercomm AD1018 router This a BCM6328 based board, 128 MB RAM, 128 MiB NAND flash, with an onboard BCM43217 wifi, 4 ethernet ports and 1 USB host port (not soldered). The board also has an FXS chip (Si32177) connected via SPI (SS2#), without support in LEDE. Since NAND flash chips aren't still supported in brcm63xx, the support is for now added to work only with SPI flash chips. Therefore hardware modding, soldering a new SPI flash chip, is required to make the board work with LEDE (tested and working OK). The flash at dts is intentionally left without partitioning to let the user choose a NOR chip of any size (8, 16 or 32 MB). Signed-off-by: Daniel Gonzalez Cabanelas <dgcbueu@gmail.com> --- Change in v2: - rename the board at dts for indicating this is a firmware for SPI NOR flash chips, and minor changes - add USB LED --- .../linux/brcm63xx/base-files/etc/board.d/01_leds | 3 + .../brcm63xx/base-files/etc/board.d/02_network | 1 + target/linux/brcm63xx/base-files/etc/diag.sh | 3 + target/linux/brcm63xx/base-files/lib/brcm63xx.sh | 3 + target/linux/brcm63xx/dts/ad1018-nor.dts | 136 +++++++++++++++++++++ target/linux/brcm63xx/image/bcm63xx.mk | 12 ++ .../brcm63xx/patches-4.4/580-board_AD1018.patch | 99 +++++++++++++++ 7 files changed, 257 insertions(+) create mode 100644 target/linux/brcm63xx/dts/ad1018-nor.dts create mode 100644 target/linux/brcm63xx/patches-4.4/580-board_AD1018.patch