From f81b353c9f33f5afa32eebe0ee1dc290e927e5ee Mon Sep 17 00:00:00 2001
From: Ben Whitten <ben.whitten@gmail.com>
Date: Wed, 28 Jun 2017 11:28:12 +0100
Subject: at91: add support for the WB50N module from Laird

This module from Laird includes the following:
  - CPU Atmel SoC SAMA5D31
  - Wifi QCA6004
  - Bluetooth CSR8811
  - RAM 64MB LPDDR
  - FLASH 128MB

The flash is a dual image layout, kernel a/b, rootfs a/b, and a user
partition.

Signed-off-by: Ben Whitten <ben.whitten@gmail.com>
---
 .../linux/at91/files/arch/arm/boot/dts/wb50n.dts   | 117 ++++++++++++
 .../linux/at91/files/arch/arm/boot/dts/wb50n.dtsi  | 205 +++++++++++++++++++++
 2 files changed, 322 insertions(+)
 create mode 100644 target/linux/at91/files/arch/arm/boot/dts/wb50n.dts
 create mode 100644 target/linux/at91/files/arch/arm/boot/dts/wb50n.dtsi

(limited to 'target/linux/at91/files/arch/arm/boot')

diff --git a/target/linux/at91/files/arch/arm/boot/dts/wb50n.dts b/target/linux/at91/files/arch/arm/boot/dts/wb50n.dts
new file mode 100644
index 0000000000..9c28a2197c
--- /dev/null
+++ b/target/linux/at91/files/arch/arm/boot/dts/wb50n.dts
@@ -0,0 +1,117 @@
+/*
+ * wb50n.dts - Device Tree file for wb50n board
+ *
+ *  Copyright (C) 2015 Laird
+ *
+ * Licensed under GPLv2 or later.
+ */
+/dts-v1/;
+#include "wb50n.dtsi"
+
+/ {
+	model = "Laird Workgroup Bridge 50N - Atmel SAMA5D";
+	compatible = "laird,wb50n", "atmel,sama5d31ek", "atmel,sama5d3xmb", "atmel,sama5d3xcm", "atmel,sama5d31", "atmel,sama5d3", "atmel,sama5";
+
+	chosen {
+		bootargs = "console=ttyS0,115200 earlyprintk loglevel=4 mem=64M";
+	};
+
+	ahb {
+
+		apb {
+			mmc0: mmc@f0000000 {
+				status = "okay";
+			};
+
+			macb1: ethernet@f802c000 {
+				status = "okay";
+			};
+
+			dbgu: serial@ffffee00 {
+				status = "okay";
+			};
+
+			/* On BB40 this port is labeled UART1 */
+			usart0: serial@f001c000 {
+				status = "okay";
+			};
+
+			/* On BB40 this port is labeled UART0 */
+			usart1: serial@f0020000 {
+				status = "okay";
+			};
+
+			i2c0: i2c@f0014000 {
+				status = "okay";
+			};
+
+			spi1: spi@f8008000 {
+				status = "okay";
+
+			        spidev@0 {
+				          compatible = "spidev";
+				          reg = <0>;
+				          spi-max-frequency = <8000000>;
+			         };
+			};
+
+			watchdog@fffffe40 {
+				status = "okay";
+			};
+		};
+
+		usb0: gadget@00500000 {
+			status = "okay";
+		};
+
+		usb1: ohci@00600000 {
+			status = "okay";
+		};
+
+		usb2: ehci@00700000 {
+			status = "okay";
+		};
+
+	};
+
+	gpio_keys {
+		compatible = "gpio-keys";
+		#address-cells = <1>;
+		#size-cells = <0>;
+		btn0@pa10 {
+			label = "BTNESC";
+			linux,code = <1>; /* ESC button */
+			gpios = <&pioA 10 GPIO_ACTIVE_LOW>;
+			gpio-key,wakeup = <1>;
+		};
+
+		irqbtn@pe31 {
+			label = "IRQBTN";
+			linux,code = <99>; /* SysReq button */
+			gpios = <&pioE 31 GPIO_ACTIVE_LOW>;
+			gpio-key,wakeup = <1>;
+		};
+	};
+
+    leds {
+        compatible = "gpio-leds";
+
+        led0 {
+            label = "wb50n:blue:led0";
+            gpios = <&pioA 12 GPIO_ACTIVE_LOW>;
+            default-state = "off";
+        };
+
+        led1 {
+            label = "wb50n:green:led1";
+            gpios = <&pioA 24 GPIO_ACTIVE_LOW>;
+            default-state = "off";
+        };
+
+        led2 {
+            label = "wb50n:red:led2";
+            gpios = <&pioA 26 GPIO_ACTIVE_LOW>;
+            default-state = "off";
+        };
+    };
+};
diff --git a/target/linux/at91/files/arch/arm/boot/dts/wb50n.dtsi b/target/linux/at91/files/arch/arm/boot/dts/wb50n.dtsi
new file mode 100644
index 0000000000..8d30424442
--- /dev/null
+++ b/target/linux/at91/files/arch/arm/boot/dts/wb50n.dtsi
@@ -0,0 +1,205 @@
+/*
+ * wb50n.dts - Device Tree file for wb50n board
+ *
+ *  Copyright (C) 2015 Laird
+ *
+ * Licensed under GPLv2 or later.
+ */
+#include "sama5d31.dtsi"
+
+/ {
+	model = "Laird Workgroup Bridge 50N - Atmel SAMA5D";
+	compatible = "laird,wb50n", "atmel,sama5d31ek", "atmel,sama5d3xmb", "atmel,sama5d3xcm", "atmel,sama5d31", "atmel,sama5d3", "atmel,sama5";
+
+	chosen {
+		bootargs = "console=ttyS0,115200 earlyprintk loglevel=4 mem=64M";
+	};
+
+	memory {
+		reg = <0x20000000 0x4000000>;
+	};
+
+	clocks {
+		slow_xtal {
+			clock-frequency = <32768>;
+		};
+
+		main_xtal {
+			clock-frequency = <12000000>;
+		};
+	};
+
+	ahb {
+
+		apb {
+			pmc: pmc@fffffc00 {
+				main: mainck {
+					clock-frequency = <12000000>;
+				};
+
+				periphck {
+					usart1_clk: usart1_clk {
+						#clock-cells = <0>;
+						reg = <13>;
+						atmel,clk-output-range = <0 132000000>;
+					};
+				};
+			};
+
+			pinctrl@fffff200 {
+				board {
+					pinctrl_mmc0_cd: mmc0_cd {
+						atmel,pins =
+							<AT91_PIOC 26 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>; /* PC26 GPIO with pullup deglitch */
+					};
+
+					pinctrl_usba_vbus: usba_vbus {
+						atmel,pins =
+							<AT91_PIOB 13 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>; /* PB13 GPIO with deglitch */
+					};
+				};
+			};
+
+			mmc0: mmc@f0000000 {
+				pinctrl-names = "default";
+				pinctrl-0 = <&pinctrl_mmc0_clk_cmd_dat0 &pinctrl_mmc0_dat1_3 &pinctrl_mmc0_cd>;
+				cd-gpios = <&pioC 26 GPIO_ACTIVE_LOW>;
+				slot@0 {
+					reg = <0>;
+					bus-width = <4>;
+				};
+			};
+
+			mmc1: mmc@f8000000 {
+				pinctrl-names = "default";
+				pinctrl-0 = <&pinctrl_mmc1_clk_cmd_dat0 &pinctrl_mmc1_dat1_3>;
+				status = "okay";
+				slot@0 {
+					reg = <0>;
+					bus-width = <4>;
+				};
+			};
+
+			macb1: ethernet@f802c000 {
+				phy-mode = "rmii";
+			};
+
+
+			dbgu: serial@ffffee00 {
+				dmas = <0>, <0>;	/*  Do not use DMA for dbgu */
+			};
+
+			/* On BB40 this port is labeled UART1 */
+			usart0: serial@f001c000 {
+				atmel,use-dma-rx;
+				atmel,use-dma-tx;
+				pinctrl-names = "default";
+				pinctrl-0 = <&pinctrl_usart0 &pinctrl_usart0_rts_cts>;
+			};
+
+			/* On BB40 this port is labeled UART0 */
+			usart1: serial@f0020000 {
+				atmel,use-dma-rx;
+				atmel,use-dma-tx;
+				pinctrl-names = "default";
+				pinctrl-0 = <&pinctrl_usart1 &pinctrl_usart1_rts_cts>;
+				dtr-gpios = <&pioD 13 GPIO_ACTIVE_LOW>;
+				dsr-gpios = <&pioD 11 GPIO_ACTIVE_LOW>;
+				dcd-gpios = <&pioD 7 GPIO_ACTIVE_LOW>;
+				rng-gpios = <&pioD 8 GPIO_ACTIVE_LOW>;
+			};
+
+			/* USART3 is direct-connect to the Bluetooth UART on the radio SIP */
+			usart3: serial@f8024000 {
+				atmel,use-dma-rx;
+				atmel,use-dma-tx;
+				pinctrl-names = "default";
+				pinctrl-0 = <&pinctrl_usart3 &pinctrl_usart3_rts_cts>;
+				status = "okay";
+			};
+
+			spi1: spi@f8008000 {
+				cs-gpios = <&pioC 25 0>, <0>, <0>, <0>;
+			};
+
+			sckc@fffffe50 {
+				slow_osc: slow_osc {
+					atmel,osc-bypass;
+				};
+			};
+		};
+
+		nand0: nand@60000000 {
+			nand-bus-width = <8>;
+			nand-ecc-mode = "hw";
+			atmel,has-pmecc;
+			atmel,pmecc-cap = <8>;
+			atmel,pmecc-sector-size = <512>;
+			nand-on-flash-bbt;
+			status = "okay";
+
+			at91bootstrap@0 {
+				label = "at91bs";
+				reg = <0x0 0x20000>;
+			};
+
+			uboot@20000 {
+				label = "u-boot";
+				reg = <0x20000 0x80000>;
+			};
+
+			ubootenv@a0000 {
+				label = "u-boot-env";
+				reg = <0xa0000 0x20000>;
+			};
+
+			ubootenv@c0000 {
+				label = "u-boot-env";
+				reg = <0xc0000 0x20000>;
+			};
+
+			kernel-a@e0000 {
+				label = "kernel-a";
+				reg = <0xe0000 0x500000>;
+			};
+
+			kernel-b@5e0000 {
+				label = "kernel-b";
+				reg = <0x5e0000 0x500000>;
+			};
+
+			rootfs-a@ae0000 {
+				label = "rootfs-a";
+				reg = <0xae0000 0x3000000>;
+			};
+
+			rootfs-b@3ae0000 {
+				label = "rootfs-b";
+				reg = <0x3ae0000 0x3000000>;
+			};
+
+			user@6ae0000 {
+				label = "user";
+				reg = <0x6ae0000 0x14e0000>;
+			};
+
+		};
+
+		usb0: gadget@00500000 {
+			atmel,vbus-gpio = <&pioB 13 GPIO_ACTIVE_LOW>;
+			pinctrl-names = "default";
+			pinctrl-0 = <&pinctrl_usba_vbus>;
+		};
+
+		usb1: ohci@00600000 {
+			num-ports = <3>;
+			atmel,vbus-gpio = <&pioA 2 GPIO_ACTIVE_LOW>;
+			atmel,oc-gpio = <&pioA 4 GPIO_ACTIVE_LOW>;
+		};
+	};
+
+	atheros {
+		compatible = "atheros,ath6kl";
+		atheros,board-id = "SD32";
+ 	};
+};
-- 
cgit v1.2.3