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 <[email protected]>
---
 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

diff --git a/MAINTAINERS b/MAINTAINERS
index 7304d2e..eceff03 100644
--- a/MAINTAINERS
+++ b/MAINTAINERS
@@ -2516,6 +2516,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 <[email protected]>
diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 973b0da..f7ce377 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -83,6 +83,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 \
diff --git a/arch/arm/boot/dts/bcm47189-tenda-ac9.dts 
b/arch/arm/boot/dts/bcm47189-tenda-ac9.dts
new file mode 100644
index 0000000..4403ae8
--- /dev/null
+++ b/arch/arm/boot/dts/bcm47189-tenda-ac9.dts
@@ -0,0 +1,74 @@
+/*
+ * Copyright (C) 2016 Rafał Miłecki <[email protected]>
+ *
+ * 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>;
+               };
+       };
+};
diff --git a/arch/arm/boot/dts/bcm53573.dtsi b/arch/arm/boot/dts/bcm53573.dtsi
new file mode 100644
index 0000000..efa07de
--- /dev/null
+++ b/arch/arm/boot/dts/bcm53573.dtsi
@@ -0,0 +1,147 @@
+/*
+ * Copyright (C) 2016 Rafał Miłecki <[email protected]>
+ *
+ * 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>;
+               };
+       };
+};
-- 
1.8.4.5

Reply via email to