From f81b353c9f33f5afa32eebe0ee1dc290e927e5ee Mon Sep 17 00:00:00 2001 From: Ben Whitten Date: Wed, 28 Jun 2017 11:28:12 +0100 Subject: [PATCH] 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 --- .../at91/files/arch/arm/boot/dts/wb50n.dts | 117 ++++++++++ .../at91/files/arch/arm/boot/dts/wb50n.dtsi | 205 ++++++++++++++++++ target/linux/at91/image/sama5.mk | 14 ++ .../103-ARM-at91-build-dtb-for-wb50n.patch | 12 + 4 files changed, 348 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 create mode 100644 target/linux/at91/patches-4.4/103-ARM-at91-build-dtb-for-wb50n.patch 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 = + ; /* PC26 GPIO with pullup deglitch */ + }; + + pinctrl_usba_vbus: usba_vbus { + atmel,pins = + ; /* 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"; + }; +}; diff --git a/target/linux/at91/image/sama5.mk b/target/linux/at91/image/sama5.mk index 1c779ca327..b26715b8ae 100644 --- a/target/linux/at91/image/sama5.mk +++ b/target/linux/at91/image/sama5.mk @@ -29,3 +29,17 @@ define Device/at91-sama5d4_xplained MKUBIFS_OPTS := -m $$(PAGESIZE) -e 248KiB -c 2082 -x lzo endef TARGET_DEVICES += at91-sama5d4_xplained + +define Device/wb50n + $(Device/evaluation-fit) + DEVICE_TITLE := Laird WB50N + DEVICE_PACKAGES := \ + kmod-mmc-at91 kmod-ath6kl-sdio ath6k-firmware \ + kmod-usb-storage kmod-fs-vfat kmod-fs-msdos \ + kmod-leds-gpio + BLOCKSIZE := 128k + PAGESIZE := 2048 + SUBPAGESIZE := 2048 + MKUBIFS_OPTS := -m $$(PAGESIZE) -e 124KiB -c 955 +endef +TARGET_DEVICES += wb50n diff --git a/target/linux/at91/patches-4.4/103-ARM-at91-build-dtb-for-wb50n.patch b/target/linux/at91/patches-4.4/103-ARM-at91-build-dtb-for-wb50n.patch new file mode 100644 index 0000000000..00ffe09a0a --- /dev/null +++ b/target/linux/at91/patches-4.4/103-ARM-at91-build-dtb-for-wb50n.patch @@ -0,0 +1,12 @@ +--- a/arch/arm/boot/dts/Makefile ++++ b/arch/arm/boot/dts/Makefile +@@ -52,7 +52,8 @@ dtb-$(CONFIG_SOC_SAM_V7) += \ + sama5d35ek.dtb \ + sama5d36ek.dtb \ + at91-sama5d4_xplained.dtb \ +- at91-sama5d4ek.dtb ++ at91-sama5d4ek.dtb \ ++ wb50n.dtb + dtb-$(CONFIG_ARCH_ATLAS6) += \ + atlas6-evb.dtb + dtb-$(CONFIG_ARCH_ATLAS7) += \