diff options
Diffstat (limited to 'target/linux/bcm53xx/patches-4.4/130-ARM-BCM5301X-Add-basic-dts-for-BCM53573-based-Tenda-.patch')
-rw-r--r-- | target/linux/bcm53xx/patches-4.4/130-ARM-BCM5301X-Add-basic-dts-for-BCM53573-based-Tenda-.patch | 273 |
1 files changed, 273 insertions, 0 deletions
diff --git a/target/linux/bcm53xx/patches-4.4/130-ARM-BCM5301X-Add-basic-dts-for-BCM53573-based-Tenda-.patch b/target/linux/bcm53xx/patches-4.4/130-ARM-BCM5301X-Add-basic-dts-for-BCM53573-based-Tenda-.patch new file mode 100644 index 0000000000..9395b90920 --- /dev/null +++ b/target/linux/bcm53xx/patches-4.4/130-ARM-BCM5301X-Add-basic-dts-for-BCM53573-based-Tenda-.patch @@ -0,0 +1,273 @@ +From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com> +Subject: [PATCH] ARM: BCM5301X: Add basic dts for BCM53573 based Tenda AC9 +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +BCM53573 seems to be low priced alternative for standard Northstar +chipsets. It uses single core Cortex-A7, doesn't have SDU or local (TWD) +timer. It was also stripped out of independent SPI controller and 2 +GMACs. + +DTS for Tenda AC9 isn't completed yet. It misses e.g. switch entry (we +still need some bgmac/b53 fixes) and probably some clocks. It adds +support for basic features however and can be improved later. + +Signed-off-by: Rafał Miłecki <zajec5@gmail.com> +--- + MAINTAINERS | 2 + + arch/arm/boot/dts/Makefile | 1 + + arch/arm/boot/dts/bcm47189-tenda-ac9.dts | 74 ++++++++++++++++ + arch/arm/boot/dts/bcm53573.dtsi | 147 +++++++++++++++++++++++++++++++ + 4 files changed, 224 insertions(+) + create mode 100644 arch/arm/boot/dts/bcm47189-tenda-ac9.dts + create mode 100644 arch/arm/boot/dts/bcm53573.dtsi + +--- a/MAINTAINERS ++++ b/MAINTAINERS +@@ -2337,6 +2337,8 @@ S: Maintained + F: arch/arm/mach-bcm/bcm_5301x.c + F: arch/arm/boot/dts/bcm5301x.dtsi + F: arch/arm/boot/dts/bcm470* ++F: arch/arm/boot/dts/bcm53573* ++F: arch/arm/boot/dts/bcm47189* + + BROADCOM BCM63XX ARM ARCHITECTURE + M: Florian Fainelli <f.fainelli@gmail.com> +--- a/arch/arm/boot/dts/Makefile ++++ b/arch/arm/boot/dts/Makefile +@@ -77,6 +77,7 @@ dtb-$(CONFIG_ARCH_BCM_5301X) += \ + bcm4709-netgear-r7000.dtb \ + bcm4709-netgear-r8000.dtb \ + bcm47094-dlink-dir-885l.dtb \ ++ bcm47189-tenda-ac9.dtb \ + bcm94708.dtb \ + bcm94709.dtb \ + bcm953012er.dtb \ +--- /dev/null ++++ b/arch/arm/boot/dts/bcm47189-tenda-ac9.dts +@@ -0,0 +1,74 @@ ++/* ++ * Copyright (C) 2016 Rafał Miłecki <rafal@milecki.pl> ++ * ++ * Licensed under the ISC license. ++ */ ++ ++/dts-v1/; ++ ++#include "bcm53573.dtsi" ++ ++/ { ++ compatible = "tenda,ac9", "brcm,bcm47189", "brcm,bcm53573"; ++ model = "Tenda AC9"; ++ ++ chosen { ++ bootargs = "console=ttyS0,115200 earlycon"; ++ }; ++ ++ memory { ++ reg = <0x00000000 0x08000000>; ++ }; ++ ++ leds { ++ compatible = "gpio-leds"; ++ ++ usb { ++ label = "bcm53xx:blue:usb"; ++ gpios = <&chipcommon 1 GPIO_ACTIVE_HIGH>; ++ linux,default-trigger = "default-off"; ++ }; ++ ++ wps { ++ label = "bcm53xx:blue:wps"; ++ gpios = <&chipcommon 10 GPIO_ACTIVE_HIGH>; ++ linux,default-trigger = "default-off"; ++ }; ++ ++ 5ghz { ++ label = "bcm53xx:blue:5ghz"; ++ gpios = <&chipcommon 11 GPIO_ACTIVE_HIGH>; ++ linux,default-trigger = "default-off"; ++ }; ++ ++ system { ++ label = "bcm53xx:blue:system"; ++ gpios = <&chipcommon 15 GPIO_ACTIVE_HIGH>; ++ linux,default-trigger = "timer"; ++ }; ++ }; ++ ++ gpio-keys { ++ compatible = "gpio-keys"; ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ rfkill { ++ label = "WiFi"; ++ linux,code = <KEY_RFKILL>; ++ gpios = <&chipcommon 3 GPIO_ACTIVE_LOW>; ++ }; ++ ++ restart { ++ label = "Reset"; ++ linux,code = <KEY_RESTART>; ++ gpios = <&chipcommon 7 GPIO_ACTIVE_LOW>; ++ }; ++ ++ wps { ++ label = "WPS"; ++ linux,code = <KEY_WPS_BUTTON>; ++ gpios = <&chipcommon 9 GPIO_ACTIVE_LOW>; ++ }; ++ }; ++}; +--- /dev/null ++++ b/arch/arm/boot/dts/bcm53573.dtsi +@@ -0,0 +1,147 @@ ++/* ++ * Copyright (C) 2016 Rafał Miłecki <rafal@milecki.pl> ++ * ++ * Licensed under the ISC license. ++ */ ++ ++#include <dt-bindings/gpio/gpio.h> ++#include <dt-bindings/input/input.h> ++#include <dt-bindings/interrupt-controller/irq.h> ++#include <dt-bindings/interrupt-controller/arm-gic.h> ++#include "skeleton.dtsi" ++ ++/ { ++ interrupt-parent = <&gic>; ++ ++ chosen { ++ stdout-path = &uart0; ++ }; ++ ++ cpus { ++ #address-cells = <1>; ++ #size-cells = <0>; ++ ++ cpu@0 { ++ device_type = "cpu"; ++ compatible = "arm,cortex-a7"; ++ reg = <0x0>; ++ }; ++ }; ++ ++ mpcore { ++ compatible = "simple-bus"; ++ ranges = <0x00000000 0x18310000 0x00008000>; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ++ gic: interrupt-controller@1000 { ++ compatible = "arm,cortex-a7-gic"; ++ #interrupt-cells = <3>; ++ #address-cells = <0>; ++ interrupt-controller; ++ reg = <0x1000 0x1000>, ++ <0x2000 0x0100>; ++ }; ++ }; ++ ++ clocks { ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ranges; ++ ++ alp: oscillator { ++ #clock-cells = <0>; ++ compatible = "fixed-clock"; ++ clock-frequency = <40000000>; ++ }; ++ }; ++ ++ axi@18000000 { ++ compatible = "brcm,bus-axi"; ++ reg = <0x18000000 0x1000>; ++ ranges = <0x00000000 0x18000000 0x00100000>; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ++ #interrupt-cells = <1>; ++ interrupt-map-mask = <0x000fffff 0xffff>; ++ interrupt-map = ++ /* ChipCommon */ ++ <0x00000000 0 &gic GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>, ++ ++ /* IEEE 802.11 0 */ ++ <0x00001000 0 &gic GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>, ++ ++ /* PCIe Controller 0 */ ++ <0x00002000 0 &gic GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>, ++ <0x00002000 1 &gic GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>, ++ <0x00002000 2 &gic GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>, ++ <0x00002000 3 &gic GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>, ++ <0x00002000 4 &gic GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>, ++ <0x00002000 5 &gic GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>, ++ ++ /* USB 2.0 Controller */ ++ <0x00004000 0 &gic GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>, ++ ++ /* Ethernet Controller 0 */ ++ <0x00005000 0 &gic GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>, ++ ++ /* IEEE 802.11 1 */ ++ <0x0000a000 0 &gic GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>, ++ ++ /* Ethernet Controller 1 */ ++ <0x0000b000 0 &gic GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>; ++ ++ chipcommon: chipcommon@0 { ++ compatible = "simple-bus"; ++ reg = <0x00000000 0x1000>; ++ ranges; ++ ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ++ gpio-controller; ++ #gpio-cells = <2>; ++ ++ uart0: serial@0300 { ++ compatible = "ns16550a"; ++ reg = <0x0300 0x100>; ++ interrupt-parent = <&gic>; ++ interrupts = <GIC_PPI 16 IRQ_TYPE_LEVEL_HIGH>; ++ clocks = <&alp>; ++ status = "okay"; ++ }; ++ }; ++ ++ usb2: usb2@4000 { ++ reg = <0x4000 0x1000>; ++ ranges; ++ #address-cells = <1>; ++ #size-cells = <1>; ++ ++ ehci: ehci@4000 { ++ compatible = "generic-ehci"; ++ reg = <0x4000 0x1000>; ++ interrupt-parent = <&gic>; ++ interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>; ++ }; ++ ++ ohci: ohci@d000 { ++ #usb-cells = <0>; ++ ++ compatible = "generic-ohci"; ++ reg = <0xd000 0x1000>; ++ interrupt-parent = <&gic>; ++ interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>; ++ }; ++ }; ++ ++ gmac0: ethernet@5000 { ++ reg = <0x5000 0x1000>; ++ }; ++ ++ gmac1: ethernet@b000 { ++ reg = <0xb000 0x1000>; ++ }; ++ }; ++}; |