From c7b4b4cee2c7b72d6f52592f3b57f2c45e48b253 Mon Sep 17 00:00:00 2001 From: Daniel Gonzalez Cabanelas Date: Sat, 12 Aug 2017 12:40:22 +0200 Subject: [PATCH] brcm63xx: Add Comtrend AR-5315u support Add support for the Comtrend AR-5315u router This a BCM6318 based board, 64 MB RAM, 16 MB SPI flash, with an onboard BCM43217 wifi, 4 ethernet ports and 1 USB host port Signed-off-by: Daniel Gonzalez Cabanelas [jonas.gorski: refreshed patch] Signed-off-by: Jonas Gorski --- .../brcm63xx/base-files/etc/board.d/01_leds | 3 + .../base-files/etc/board.d/02_network | 1 + target/linux/brcm63xx/base-files/etc/diag.sh | 3 + .../base-files/etc/uci-defaults/09_fix_crc | 1 + .../linux/brcm63xx/base-files/lib/brcm63xx.sh | 3 + target/linux/brcm63xx/dts/ar-5315u.dts | 106 ++++++++++++++++++ target/linux/brcm63xx/image/bcm63xx.mk | 13 +++ .../patches-4.4/579-board_AR-5315u.patch | 87 ++++++++++++++ 8 files changed, 217 insertions(+) create mode 100644 target/linux/brcm63xx/dts/ar-5315u.dts create mode 100644 target/linux/brcm63xx/patches-4.4/579-board_AR-5315u.patch diff --git a/target/linux/brcm63xx/base-files/etc/board.d/01_leds b/target/linux/brcm63xx/base-files/etc/board.d/01_leds index a9096739b693..ef70cde79199 100755 --- a/target/linux/brcm63xx/base-files/etc/board.d/01_leds +++ b/target/linux/brcm63xx/base-files/etc/board.d/01_leds @@ -15,6 +15,9 @@ a4001n1) a4001n) ucidef_set_led_usbdev "usb" "USB" "A4001N:green:usb" "1-1" ;; +ar-5315u) + ucidef_set_led_usbdev "usb" "USB" "AR-5315u:green:usb" "1-1" + ;; av4202n) ucidef_set_led_netdev "wlan0" "WLAN" "AV4202N:blue:wifi" "wlan0" ;; diff --git a/target/linux/brcm63xx/base-files/etc/board.d/02_network b/target/linux/brcm63xx/base-files/etc/board.d/02_network index 9d9f95d2d817..9addba654a69 100755 --- a/target/linux/brcm63xx/base-files/etc/board.d/02_network +++ b/target/linux/brcm63xx/base-files/etc/board.d/02_network @@ -98,6 +98,7 @@ vr-3026e) "0:lan:1" "1:lan:2" "2:lan:3" "3:lan:4" "8t@eth0" ;; +ar-5315u |\ vh4032n) ucidef_add_switch "switch0" \ "0:lan:4" "1:lan:3" "2:lan:2" "3:lan:1" "8t@eth0" diff --git a/target/linux/brcm63xx/base-files/etc/diag.sh b/target/linux/brcm63xx/base-files/etc/diag.sh index 24939a9cc109..700c9ea85a32 100644 --- a/target/linux/brcm63xx/base-files/etc/diag.sh +++ b/target/linux/brcm63xx/base-files/etc/diag.sh @@ -12,6 +12,9 @@ set_state() { a4001n) status_led="A4001N:green:power" ;; + ar-5315u) + status_led="AR-5315u:green:power" + ;; ar-5381u) status_led="AR-5381u:green:power" ;; diff --git a/target/linux/brcm63xx/base-files/etc/uci-defaults/09_fix_crc b/target/linux/brcm63xx/base-files/etc/uci-defaults/09_fix_crc index 94c422392ea3..bfd485c27ba1 100644 --- a/target/linux/brcm63xx/base-files/etc/uci-defaults/09_fix_crc +++ b/target/linux/brcm63xx/base-files/etc/uci-defaults/09_fix_crc @@ -13,6 +13,7 @@ do_fixcrc() { case "$(board_name)" in a4001n |\ a4001n1 |\ + ar-5315u |\ ar-5381u |\ ar-5387un |\ bcm96328avng |\ diff --git a/target/linux/brcm63xx/base-files/lib/brcm63xx.sh b/target/linux/brcm63xx/base-files/lib/brcm63xx.sh index fc3d6990f32e..3f46633fad2b 100755 --- a/target/linux/brcm63xx/base-files/lib/brcm63xx.sh +++ b/target/linux/brcm63xx/base-files/lib/brcm63xx.sh @@ -87,6 +87,9 @@ brcm63xx_dt_detect() { "BT Voyager V2500V") board_name="v2500v_bb" ;; + "Comtrend AR-5315u") + board_name="ar-5315u" + ;; "Comtrend AR-5381u") board_name="ar-5381u" ;; diff --git a/target/linux/brcm63xx/dts/ar-5315u.dts b/target/linux/brcm63xx/dts/ar-5315u.dts new file mode 100644 index 000000000000..63883f048ba8 --- /dev/null +++ b/target/linux/brcm63xx/dts/ar-5315u.dts @@ -0,0 +1,106 @@ +/dts-v1/; + +#include "bcm6318.dtsi" + +#include + +/ { + model = "Comtrend AR-5315u"; + compatible = "comtrend,ar-5315u", "brcm,bcm6318"; + + 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 3 1>; + linux,code = ; + }; + reset { + label = "reset"; + gpios = <&pinctrl 33 1>; + linux,code = ; + }; + }; + + gpio-leds { + compatible = "gpio-leds"; + + wps_green { + label = "AR-5315u:green:wps"; + gpios = <&pinctrl 0 1>; + }; + power_green { + label = "AR-5315u:green:power"; + gpios = <&pinctrl 1 1>; + default-state = "on"; + }; + usb_green { + label = "AR-5315u:green:usb"; + gpios = <&pinctrl 2 1>; + }; + inet_green { + label = "AR-5315u:green:inet"; + gpios = <&pinctrl 8 1>; + }; + inet_red { + label = "AR-5315u:red:inet"; + gpios = <&pinctrl 9 1>; + }; + dsl_green { + label = "AR-5315u:green:dsl"; + gpios = <&pinctrl 10 1>; + }; + power_red { + label = "AR-5315u:red:power"; + gpios = <&pinctrl 11 1>; + }; + }; +}; + +&hsspi { + status = "ok"; + + flash@0 { + compatible = "jedec,spi-nor"; + spi-max-frequency = <62500000>; + spi-tx-bus-width = <2>; + spi-rx-bus-width = <2>; + reg = <0>; + + #address-cells = <1>; + #size-cells = <1>; + + linux,part-probe = "bcm63xxpart"; + + cfe@0 { + reg = <0x000000 0x010000>; + label = "cfe"; + read-only; + }; + + linux@10000 { + reg = <0x010000 0xfe0000>; + label = "linux"; + }; + + nvram@ff0000 { + reg = <0xff0000 0x010000>; + label = "nvram"; + }; + }; +}; + +&pinctrl { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_ephy0_act_led &pinctrl_ephy1_act_led + &pinctrl_ephy2_act_led &pinctrl_ephy3_act_led>; +}; diff --git a/target/linux/brcm63xx/image/bcm63xx.mk b/target/linux/brcm63xx/image/bcm63xx.mk index dd1ad86501c2..6ad15a25e7b9 100644 --- a/target/linux/brcm63xx/image/bcm63xx.mk +++ b/target/linux/brcm63xx/image/bcm63xx.mk @@ -357,6 +357,19 @@ endef TARGET_DEVICES += BTV2500V ### Comtrend ### +define Device/AR5315u + $(Device/bcm63xx) + IMAGES += sysupgrade.bin + DEVICE_TITLE := Comtrend AR-5315u + DEVICE_DTS := ar-5315u + CFE_BOARD_ID := 96318A-1441N1 + CFE_CHIP_ID := 6318 + FLASH_MB := 16 + DEVICE_PACKAGES := \ + $(B43_PACKAGES) $(USB2_PACKAGES) +endef +TARGET_DEVICES += AR5315u + define Device/AR5381u $(Device/bcm63xx) IMAGES += sysupgrade.bin diff --git a/target/linux/brcm63xx/patches-4.4/579-board_AR-5315u.patch b/target/linux/brcm63xx/patches-4.4/579-board_AR-5315u.patch new file mode 100644 index 000000000000..6f7f26c320ba --- /dev/null +++ b/target/linux/brcm63xx/patches-4.4/579-board_AR-5315u.patch @@ -0,0 +1,87 @@ +--- a/arch/mips/bcm63xx/boards/board_bcm963xx.c ++++ b/arch/mips/bcm63xx/boards/board_bcm963xx.c +@@ -148,6 +148,68 @@ static struct board_info __initdata boar + }, + }; + ++static struct sprom_fixup __initdata ar5315u_fixups[] = { ++ { .offset = 6, .value = 0x1c00 }, ++ { .offset = 65, .value = 0x1255 }, ++ { .offset = 97, .value = 0xfe55 }, ++ { .offset = 98, .value = 0x171d }, ++ { .offset = 99, .value = 0xfa42 }, ++ { .offset = 113, .value = 0xfeb7 }, ++ { .offset = 114, .value = 0x18cd }, ++ { .offset = 115, .value = 0xfa4f }, ++ { .offset = 162, .value = 0x6444 }, ++ { .offset = 170, .value = 0x6444 }, ++ { .offset = 172, .value = 0x6444 }, ++}; ++ ++static struct board_info __initdata board_AR5315u = { ++ .name = "96318A-1441N1", ++ .expected_cpu_id = 0x6318, ++ ++ .has_uart0 = 1, ++ .has_pci = 1, ++ .use_fallback_sprom = 1, ++ ++ .has_enetsw = 1, ++ ++ .has_ohci0 = 1, ++ .has_ehci0 = 1, ++ .num_usbh_ports = 1, ++ ++ .enetsw = { ++ .used_ports = { ++ [0] = { ++ .used = 1, ++ .phy_id = 1, ++ .name = "LAN4", ++ }, ++ [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 = ar5315u_fixups, ++ .num_board_fixups = ARRAY_SIZE(ar5315u_fixups), ++ }, ++}; ++ + static struct sprom_fixup __initdata dsl2751b_e1_fixups[] = { + { .offset = 96, .value = 0x2046 }, + { .offset = 97, .value = 0xfe9d }, +@@ -2616,6 +2678,7 @@ static const struct board_info __initcon + #ifdef CONFIG_BCM63XX_CPU_6318 + &board_96318ref, + &board_96318ref_p300, ++ &board_AR5315u, + &board_dsl_2751b_d1, + &board_FAST2704N, + #endif +@@ -2721,6 +2784,7 @@ static struct of_device_id const bcm963x + #ifdef CONFIG_BCM63XX_CPU_6318 + { .compatible = "brcm,bcm96318ref", .data = &board_96318ref, }, + { .compatible = "brcm,bcm96318ref_p300", .data = &board_96318ref_p300, }, ++ { .compatible = "comtrend,ar-5315u", .data = &board_AR5315u, }, + { .compatible = "d-link,dsl-275xb-d", .data = &board_dsl_2751b_d1, }, + { .compatible = "sagem,f@st2704n", .data = &board_FAST2704N, }, + #endif -- 2.30.2