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 <chrisrblake93@xxxxxxxxx> Signed-off-by: Christian Lamparter <chunkeey@xxxxxxxxx> --- 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 <chrisrblake93@xxxxxxxxx> + * + * 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