123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264 |
- From 21c29be6a69d3ef4f5a2e16272deb4845f8208ad Mon Sep 17 00:00:00 2001
- From: =?UTF-8?q?Rafa=C5=82=20Mi=C5=82ecki?= <zajec5@gmail.com>
- Date: Tue, 23 Aug 2016 07:37:43 +0200
- 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 Northstar chipsts. It
- uses single core Cortex-A7 and 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 b53 fixes) and probably some clocks. It adds support for
- basic features however and can be improved later.
- Signed-off-by: Rafał Miłecki <rafal@milecki.pl>
- Signed-off-by: Florian Fainelli <f.fainelli@gmail.com>
- ---
- arch/arm/boot/dts/Makefile | 2 +
- arch/arm/boot/dts/bcm47189-tenda-ac9.dts | 74 ++++++++++++++++
- arch/arm/boot/dts/bcm53573.dtsi | 147 +++++++++++++++++++++++++++++++
- 3 files changed, 223 insertions(+)
- create mode 100644 arch/arm/boot/dts/bcm47189-tenda-ac9.dts
- create mode 100644 arch/arm/boot/dts/bcm53573.dtsi
- --- a/arch/arm/boot/dts/Makefile
- +++ b/arch/arm/boot/dts/Makefile
- @@ -82,6 +82,8 @@ dtb-$(CONFIG_ARCH_BCM_5301X) += \
- bcm94709.dtb \
- bcm953012er.dtb \
- bcm953012k.dtb
- +dtb-$(CONFIG_ARCH_BCM_53573) += \
- + bcm47189-tenda-ac9.dtb
- dtb-$(CONFIG_ARCH_BCM_63XX) += \
- bcm963138dvt.dtb
- dtb-$(CONFIG_ARCH_BCM_CYGNUS) += \
- --- /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>;
- + };
- + };
- +};
|