This patch adds the device-tree definitions for Meraki MR24
Accesspoint devices.

Board: MR24 - Meraki MR24 Cloud Managed Access Point
CPU: APM82181 SoC 800 MHz (PLB=200 OPB=100 EBC=100)
Flash size: 32MiB
RAM Size: 128MiB
Wireless: Atheros AR9380 5.0GHz + Atheros AR9380 2.4GHz
EPHY: 1x Gigabit Atheros AR8035

Ready to go images and install instruction can be found @OpenWrt.

Signed-off-by: Chris Blake <chrisrblak...@gmail.com>
Signed-off-by: Christian Lamparter <chunk...@gmail.com>
---
rfc v1 -> v2:
        - use new led naming scheme
        - space-vs-tab snafu cleanup
        - remove led-aliases (openwrt specific)
        - overhauled commit message
v2 -> v3:
        - added interrupt-properties legacy pci interrupt signalling
          to fix wifi
---
 arch/powerpc/boot/dts/meraki-mr24.dts      | 237 +++++++++++++++++++++
 arch/powerpc/platforms/44x/ppc44x_simple.c |   1 +
 2 files changed, 238 insertions(+)
 create mode 100644 arch/powerpc/boot/dts/meraki-mr24.dts

diff --git a/arch/powerpc/boot/dts/meraki-mr24.dts 
b/arch/powerpc/boot/dts/meraki-mr24.dts
new file mode 100644
index 000000000000..f91c243e7678
--- /dev/null
+++ b/arch/powerpc/boot/dts/meraki-mr24.dts
@@ -0,0 +1,237 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/*
+ * Device Tree Source for Meraki MR24 (Ikarem)
+ *
+ * Copyright (C) 2016 Chris Blake <chrisrblak...@gmail.com>
+ *
+ * Based on Cisco Meraki GPL Release r23-20150601 MR24 DTS
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/leds/common.h>
+#include "apm82181.dtsi"
+
+/ {
+       model = "Meraki MR24 Access Point";
+       compatible = "meraki,mr24";
+
+       aliases {
+               serial0 = &UART1;
+       };
+
+       chosen {
+               stdout-path = "/plb/opb/serial@ef600400";
+       };
+};
+
+&CRYPTO {
+       status = "okay";
+};
+
+&HWRNG {
+       status = "okay";
+};
+
+&NAND {
+       status = "okay";
+
+       /* 32 MiB NAND Flash */
+       nand {
+               partition@0 {
+                       label = "u-boot";
+                       reg = <0x00000000 0x00150000>;
+                       read-only;
+               };
+
+               partition@150000 {
+                       /*
+                        * The u-boot environment size is one NAND
+                        * block (16KiB). u-boot allocates four NAND
+                        * blocks (64KiB) in order to have spares
+                        * around for bad block management
+                        */
+                       label = "u-boot-env";
+                       reg = <0x00150000 0x00010000>;
+                       read-only;
+               };
+
+               partition@160000 {
+                       /*
+                        * redundant u-boot environment.
+                        * has to be kept it in sync with the
+                        * data in "u-boot-env".
+                        */
+                       label = "u-boot-env-redundant";
+                       reg = <0x00160000 0x00010000>;
+                       read-only;
+               };
+
+               partition@170000 {
+                       label = "oops";
+                       reg = <0x00170000 0x00010000>;
+               };
+
+               partition@180000 {
+                       label = "ubi";
+                       reg = <0x00180000 0x01e80000>;
+               };
+       };
+};
+
+&UART1 {
+       status = "okay";
+};
+
+&GPIO0 {
+       status = "okay";
+};
+
+&IIC0 {
+       status = "okay";
+       /* Boot ROM is at 0x52-0x53, do not touch */
+       /* Unknown chip at 0x6e, not sure what it is */
+};
+
+&EMAC0 {
+       status = "okay";
+
+       phy-mode = "rgmii-id";
+       phy-map = <0x2>;
+       phy-address = <0x1>;
+       phy-handle = <&phy>;
+
+       mdio {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               phy: phy@1 {
+                       compatible = "ethernet-phy-ieee802.3-c22";
+                       reg = <1>;
+               };
+       };
+};
+
+&POB0 {
+       leds {
+               compatible = "gpio-leds";
+
+               status: power-green {
+                       function = LED_FUNCTION_POWER;
+                       color = <LED_COLOR_ID_GREEN>;
+                       gpios = <&GPIO0 18 GPIO_ACTIVE_LOW>;
+               };
+
+               failsafe: power-amber {
+                       function = LED_FUNCTION_FAULT;
+                       color = <LED_COLOR_ID_AMBER>;
+                       gpios = <&GPIO0 19 GPIO_ACTIVE_LOW>;
+               };
+
+               lan {
+                       function = LED_FUNCTION_WAN;
+                       color = <LED_COLOR_ID_GREEN>;
+                       gpios = <&GPIO0 17 GPIO_ACTIVE_LOW>;
+               };
+
+               /* signal strength indicator */
+               ssi-0 {
+                       function = LED_FUNCTION_INDICATOR;
+                       color = <LED_COLOR_ID_GREEN>;
+                       gpios = <&GPIO0 23 GPIO_ACTIVE_LOW>;
+               };
+
+               ssi-1 {
+                       function = LED_FUNCTION_INDICATOR;
+                       color = <LED_COLOR_ID_GREEN>;
+                       gpios = <&GPIO0 22 GPIO_ACTIVE_LOW>;
+               };
+
+               ssi-2 {
+                       function = LED_FUNCTION_INDICATOR;
+                       color = <LED_COLOR_ID_GREEN>;
+                       gpios = <&GPIO0 21 GPIO_ACTIVE_LOW>;
+               };
+
+               ssi-3 {
+                       function = LED_FUNCTION_INDICATOR;
+                       color = <LED_COLOR_ID_GREEN>;
+                       gpios = <&GPIO0 20 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       keys {
+               compatible = "gpio-keys";
+
+               reset {
+                       /* Label as per Meraki's "MR24 Installation Guide" */
+                       label = "Factory Reset Button";
+                       linux,code = <KEY_RESTART>;
+                       interrupt-parent = <&UIC1>;
+                       interrupts = <0x15 IRQ_TYPE_EDGE_FALLING>;
+                       gpios = <&GPIO0 16 GPIO_ACTIVE_LOW>;
+                       debounce-interval = <60>;
+               };
+       };
+};
+
+&PCIE0 {
+       status = "okay";
+       /*
+        * relevant lspci topology:
+        *
+        *      -+-[0000:40]---00.0-[41-7f]----00.0-[42-45]--+-02.0-[43]----00.0
+        *                                                   +-03.0-[44]----00.0
+        *
+        */
+
+       bridge@40,0 {
+               reg = <0x00400000 0 0 0 0>;
+               #address-cells = <3>;
+               #size-cells = <2>;
+               ranges;
+
+               bridge@41,0 {
+                       /* IDT PES3T3 PCI Express Switch */
+                       compatible = "pci111d,8039";
+                       reg = <0x00410000 0 0 0 0>;
+                       #address-cells = <3>;
+                       #size-cells = <2>;
+                       ranges;
+
+                       bridge@42,2 {
+                               compatible = "pci111d,8039";
+                               reg = <0x00421000 0 0 0 0>;
+                               #address-cells = <3>;
+                               #size-cells = <2>;
+                               ranges;
+
+                               wifi0: wifi@43,0 {
+                                       /* Atheros AR9380 2.4GHz */
+                                       compatible = "pci168c,0030";
+                                       reg = <0x00430000 0 0 0 0>;
+                                       interrupts = <3>; /* INTC */
+                               };
+                       };
+
+                       bridge@42,3 {
+                               compatible = "pci111d,8039";
+                               reg = <0x00421800 0 0 0 0>;
+                               #address-cells = <3>;
+                               #size-cells = <2>;
+                               ranges;
+
+                               wifi1: wifi@44,0 {
+                                       /* Atheros AR9380 5GHz */
+                                       compatible = "pci168c,0030";
+                                       reg = <0x00440000 0 0 0 0>;
+                                       interrupts = <4>; /* INTD */
+                               };
+                       };
+               };
+       };
+};
+
+&MSI {
+       status = "okay";
+};
diff --git a/arch/powerpc/platforms/44x/ppc44x_simple.c 
b/arch/powerpc/platforms/44x/ppc44x_simple.c
index 1122702c804a..7d479928fd48 100644
--- a/arch/powerpc/platforms/44x/ppc44x_simple.c
+++ b/arch/powerpc/platforms/44x/ppc44x_simple.c
@@ -60,6 +60,7 @@ static char *board[] __initdata = {
        "amcc,taishan",
        "amcc,yosemite",
        "mosaixtech,icon",
+       "meraki,mr24",
        "wd,mybooklive",
 };
 
-- 
2.28.0

Reply via email to