<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">From ec88a9c344d9fd8c3b11bff1f99a0b6248ae256d Mon Sep 17 00:00:00 2001
From: Christian Lamparter &lt;chunkeey@gmail.com&gt;
Date: Sat, 22 Aug 2020 18:19:23 +0200
Subject: [PATCH] ARM: BCM5301X: Add DT for Meraki MR32

add support for the Cisco Meraki MR32.
This is a dual-band enterprise class 802.11ac access point.
The unit was donated by Chris Blake. Thank you!

SoC:    Broadcom BCM53016A1 (1 GHz, 2 cores)
RAM:    128 MiB
NAND:   128 MiB Spansion S34ML01G2 (~114 MiB useable)
ETH:    1GBit Ethernet Port - PoE
WIFI1:  Broadcom BCM43520 an+ac (2x2:2 - id: 0x4352)
WIFI2:  Broadcom BCM43520 bgn (2x2:2 - id: 0x4352)
WIFI3:  Broadcom BCM43428 abgn (1x1:1 - id: 43428)

BLE:    Broadcom BCM20732 (ttyS1)
LEDS:   1 x Programmable RGB Status LED (driven by a PWM)
        1 x White LED (GPIO)
        1 x Orange LED Fault Indicator (GPIO)
        2 x LAN Activity / Speed LEDs (On the RJ45 Port)
BUTTON: one Reset button
MISC:   AT24C64 8KiB EEPROM (i2c - stores Ethernet MAC)
        ina219 hardware monitor (i2c)
        Kensington Lock

SERIAL:
	WARNING: The serial port needs a TTL/RS-232 3V3 level converter!
        The Serial setting is 115200-8-N-1. The board has a populated
        right angle 1x4 0.1" pinheader.
        The pinout is: VCC, RX, TX, GND.

Odd stuff:
	- uart0 clock frequency is 62.5 MHz.
	- The LEDs are labeled as SYS-LED1 through SYS-LED3
	  because of the silkscreen on the PCB.
	- the original u-boot has been compiled with most functions
	  and commands disabled. The u-boot env isn't setup properly
	  either and as a result, the bcm47xxpart probing is not
	  working. Hence, the nand partitions are specified through a
	  "fixed-partition" binding.
	- The "WICED SMART(TM)" Bluetooth LE 4.0 BCM20732 chip is
	  connected to uart2 of the SoC. The BCM20732 does not
	  provide a HCI. So the linux' bluetooth stack is useless.
	  The mock-up node with the compatible binding and
	  enable-gpios property is provided solely as documentation.

Signed-off-by: Christian Lamparter &lt;chunkeey@gmail.com&gt;
Signed-off-by: Florian Fainelli &lt;f.fainelli@gmail.com&gt;
---
 arch/arm/boot/dts/Makefile                 |   1 +
 arch/arm/boot/dts/bcm53016-meraki-mr32.dts | 197 +++++++++++++++++++++
 2 files changed, 198 insertions(+)
 create mode 100644 arch/arm/boot/dts/bcm53016-meraki-mr32.dts

--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -118,6 +118,7 @@ dtb-$(CONFIG_ARCH_BCM_5301X) += \
 	bcm47094-luxul-xwr-3150-v1.dtb \
 	bcm47094-netgear-r8500.dtb \
 	bcm47094-phicomm-k3.dtb \
+	bcm53016-meraki-mr32.dtb \
 	bcm94708.dtb \
 	bcm94709.dtb \
 	bcm953012er.dtb \
--- /dev/null
+++ b/arch/arm/boot/dts/bcm53016-meraki-mr32.dts
@@ -0,0 +1,197 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/*
+ * Broadcom BCM470X / BCM5301X ARM platform code.
+ * DTS for Meraki MR32 / Codename: Espresso
+ *
+ * Copyright (C) 2018-2020 Christian Lamparter &lt;chunkeey@gmail.com&gt;
+ */
+
+/dts-v1/;
+
+#include "bcm4708.dtsi"
+#include "bcm5301x-nand-cs0-bch8.dtsi"
+#include &lt;dt-bindings/leds/common.h&gt;
+
+/ {
+	compatible = "meraki,mr32", "brcm,brcm53016", "brcm,bcm4708";
+	model = "Meraki MR32";
+
+	chosen {
+		bootargs = " console=ttyS0,115200n8 earlycon";
+	};
+
+	memory {
+		reg = &lt;0x00000000 0x08000000&gt;;
+		device_type = "memory";
+	};
+
+	aliases {
+		serial1 = &amp;uart2;
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		sysled3 {
+			function = LED_FUNCTION_FAULT;
+			color = &lt;LED_COLOR_ID_AMBER&gt;;
+			gpios = &lt;&amp;chipcommon 18 GPIO_ACTIVE_LOW&gt;;
+			panic-indicator;
+		};
+		sysled2 {
+			function = LED_FUNCTION_INDICATOR;
+			color = &lt;LED_COLOR_ID_WHITE&gt;;
+			gpios = &lt;&amp;chipcommon 19 GPIO_ACTIVE_HIGH&gt;;
+		};
+	};
+
+	keys {
+		compatible = "gpio-keys";
+		#address-cells = &lt;1&gt;;
+		#size-cells = &lt;0&gt;;
+
+		restart {
+			label = "Reset";
+			linux,code = &lt;KEY_RESTART&gt;;
+			gpios = &lt;&amp;chipcommon 21 GPIO_ACTIVE_LOW&gt;;
+		};
+	};
+
+	pwm-leds {
+		compatible = "pwm-leds";
+
+		red {
+			/* SYS-LED 1 - Tricolor */
+			function = LED_FUNCTION_INDICATOR;
+			color = &lt;LED_COLOR_ID_RED&gt;;
+			pwms = &lt;&amp;pwm 0 50000 0&gt;;
+			max-brightness = &lt;255&gt;;
+		};
+
+		green {
+			/* SYS-LED 1 - Tricolor */
+			function = LED_FUNCTION_POWER;
+			color = &lt;LED_COLOR_ID_GREEN&gt;;
+			pwms = &lt;&amp;pwm 1 50000 0&gt;;
+			max-brightness = &lt;255&gt;;
+		};
+
+		blue {
+			/* SYS-LED 1 - Tricolor */
+			function = LED_FUNCTION_INDICATOR;
+			color = &lt;LED_COLOR_ID_BLUE&gt;;
+			pwms = &lt;&amp;pwm 2 50000 0&gt;;
+			max-brightness = &lt;255&gt;;
+		};
+	};
+
+	i2c {
+		/*
+		 * The platform provided I2C does not budge.
+		 * This is a replacement until I can figure
+		 * out what are the missing bits...
+		 */
+
+		compatible = "i2c-gpio";
+		sda-gpios = &lt;&amp;chipcommon 5 GPIO_ACTIVE_HIGH&gt;;
+		scl-gpios = &lt;&amp;chipcommon 4 GPIO_ACTIVE_HIGH&gt;;
+		i2c-gpio,delay-us = &lt;10&gt;; /* close to 100 kHz */
+		#address-cells = &lt;1&gt;;
+		#size-cells = &lt;0&gt;;
+
+		current_sense: ina219@45 {
+			compatible = "ti,ina219";
+			reg = &lt;0x45&gt;;
+			shunt-resistor = &lt;60000&gt;; /* = 60 mOhms */
+		};
+
+		eeprom: eeprom@50 {
+			compatible = "atmel,24c64";
+			reg = &lt;0x50&gt;;
+			pagesize = &lt;32&gt;;
+			read-only;
+		};
+	};
+};
+
+&amp;uart0 {
+	clock-frequency = &lt;62500000&gt;;
+	/delete-property/ clocks;
+};
+
+&amp;uart1 {
+	status = "disabled";
+};
+
+&amp;uart2 {
+	status = "okay";
+	/*
+	 * bluetooth-le {
+	 *	compatible = "brcm,bcm20732";
+	 *	enable-gpios = &lt;&amp;chipcommon 20 GPIO_ACTIVE_HIGH&gt;;
+	 *};
+	 */
+};
+
+&amp;gmac1 {
+	status = "disabled";
+};
+&amp;gmac2 {
+	status = "disabled";
+};
+&amp;gmac3 {
+	status = "disabled";
+};
+
+&amp;pwm {
+	status = "okay";
+	pinctrl-names = "default";
+	pinctrl-0 = &lt;&amp;pinmux_pwm&gt;;
+};
+
+&amp;nandcs {
+	nand-ecc-algo = "hw";
+
+	partitions {
+		/*
+		 * The partition autodetection does not work for this device.
+		 * It will only detect the "nvram" partition with an incorrect size.
+		 *	[    1.721667] 1 bcm47xxpart partitions found on MTD device brcmnand.0
+		 *	[    1.727962] Creating 1 MTD partitions on "brcmnand.0":
+		 *	[    1.733117] 0x000000400000-0x000008000000 : "nvram"
+		 */
+
+		compatible = "fixed-partitions";
+		#address-cells = &lt;0x1&gt;;
+		#size-cells = &lt;0x1&gt;;
+
+		partition0@0 {
+			label = "u-boot";
+			reg = &lt;0x0 0x100000&gt;;
+			read-only;
+		};
+
+		partition1@100000 {
+			label = "bootkernel1";
+			reg = &lt;0x100000 0x300000&gt;;
+			read-only;
+		};
+
+		partition2@400000 {
+			label = "nvram";
+			reg = &lt;0x400000 0x100000&gt;;
+			read-only;
+		};
+
+		partition3@500000 {
+			label = "bootkernel2";
+			reg = &lt;0x500000 0x300000&gt;;
+			read-only;
+		};
+
+		partition4@800000 {
+			label = "ubi";
+			reg = &lt;0x800000 0x7780000&gt;;
+		};
+	};
+};
</pre></body></html>