From 86d037e4a27fcf8f465fb1e79db727995ad5c684 Mon Sep 17 00:00:00 2001 From: Ben Whitten Date: Fri, 10 Jun 2016 20:07:32 +0100 Subject: [PATCH] at91: add support for the WB45N module from Laird This module from Laird includes the following: - CPU Atmel SoC ARM926EJS - Wifi AR6003 - Bluetooth CSR8510 - 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/wb45n.dts | 220 ++++++++++++++++++ target/linux/at91/image/Makefile | 6 + target/linux/at91/image/legacy.mk | 15 ++ .../102-ARM-at91-build-dtb-for-wb45n.patch | 12 + 4 files changed, 253 insertions(+) create mode 100644 target/linux/at91/files/arch/arm/boot/dts/wb45n.dts create mode 100644 target/linux/at91/patches-4.4/102-ARM-at91-build-dtb-for-wb45n.patch diff --git a/target/linux/at91/files/arch/arm/boot/dts/wb45n.dts b/target/linux/at91/files/arch/arm/boot/dts/wb45n.dts new file mode 100644 index 00000000000..2d1fe0c0830 --- /dev/null +++ b/target/linux/at91/files/arch/arm/boot/dts/wb45n.dts @@ -0,0 +1,220 @@ +/* + * wb45n.dts - Device Tree file for WB45NBT board + * + * Copyright (C) 2015 Laird + * + * Licensed under GPLv2 or later. + */ +/dts-v1/; +#include "at91sam9g25.dtsi" + +/ { + model = "Laird Workgroup Bridge 45N - Atmel AT91SAM (dt)"; + compatible = "laird,wb45n", "laird,wbxx", "atmel,at91sam9x5", "atmel,at91sam9"; + + chosen { + bootargs = "console=ttyS0,115200 root=/dev/mtdblock1 rw rootfstype=ubifs ubi.mtd=1 root=ubi0:rootfs"; + }; + + memory { + reg = <0x20000000 0x4000000>; + }; + + clocks { + #address-cells = <1>; + #size-cells = <1>; + ranges; + + main_clock: clock@0 { + compatible = "atmel,osc", "fixed-clock"; + clock-frequency = <12000000>; + }; + + slow_xtal { + clock-frequency = <32768>; + }; + + main_xtal { + clock-frequency = <12000000>; + }; + }; + + ahb { + apb { + + rstc@fffffe00 { + compatible = "atmel,sama5d3-rstc"; + }; + + pinctrl@fffff400 { + nand { + pinctrl_nand: nand-0 { + atmel,pins = + ; /* PD5 gpio RDY/BUSY pin pull_up */ + }; + }; + + usb2 { + pinctrl_board_usb2: usb2-board { + atmel,pins = + ; /* PB11 gpio vbus sense, deglitch */ + }; + }; + }; + + dbgu: serial@fffff200 { + status = "okay"; + }; + + usart0: serial@f801c000 { + status = "okay"; + }; + + usart3: serial@f8028000 { + status = "okay"; + }; + + spi0: spi@f0000000 { + status = "okay"; + cs-gpios = <&pioA 14 0>, <&pioA 7 0>, <0>, <0>; + }; + + mmc0: mmc@f0008000 { + pinctrl-0 = < + &pinctrl_mmc0_slot0_clk_cmd_dat0 + &pinctrl_mmc0_slot0_dat1_3>; + status = "okay"; + /delete-property/dmas; + /delete-property/dma-names; + slot@0 { + reg = <0>; + bus-width = <4>; + }; + }; + + macb0: ethernet@f802c000 { + phy-mode = "rmii"; + status = "okay"; + }; + + usb2: gadget@f803c000 { + pinctrl-names = "default"; + pinctrl-0 = <&pinctrl_board_usb2>; + atmel,vbus-gpio = <&pioB 11 GPIO_ACTIVE_HIGH>; + status = "okay"; + }; + + i2c1: i2c@f8014000 { + status = "okay"; + }; + + watchdog@fffffe40 { + status = "okay"; + }; + + shdwc@fffffe10 { + atmel,wakeup-mode = "low"; + }; + + rtc@fffffeb0 { + status = "okay"; + }; + }; + + usb0: ohci@00600000 { + status = "okay"; + num-ports = <2>; + atmel,vbus-gpio = < + &pioB 12 GPIO_ACTIVE_HIGH + &pioA 31 GPIO_ACTIVE_HIGH + >; + atmel,oc-gpio = <&pioB 13 GPIO_ACTIVE_LOW>; + }; + + usb1: ehci@00700000 { + status = "okay"; + }; + + nand0: nand@40000000 { + nand-bus-width = <8>; + nand-ecc-mode = "hw"; + atmel,has-pmecc; /* Enable PMECC */ + atmel,pmecc-cap = <4>; + 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 = "redund-env"; + reg = <0xc0000 0x20000>; + }; + + kernel-a@e0000 { + label = "kernel-a"; + reg = <0xe0000 0x280000>; + }; + + kernel-b@360000 { + label = "kernel-b"; + reg = <0x360000 0x280000>; + }; + + rootfs-a@5e0000 { + label = "rootfs-a"; + reg = <0x5e0000 0x2600000>; + }; + + rootfs-b@2be0000 { + label = "rootfs-b"; + reg = <0x2be0000 0x2600000>; + }; + + user@51e0000 { + label = "user"; + reg = <0x51e0000 0x2dc0000>; + }; + + logs@7fa0000 { + label = "logs"; + reg = <0x7fa0000 0x60000>; + }; + }; + }; + + atheros { + compatible = "atheros,ath6kl"; + atheros,board-id = "SD32"; + }; + + gpio_keys { + compatible = "gpio-keys"; + #address-cells = <1>; + #size-cells = <0>; + irqbtn@pb18 { + label = "IRQBTN"; + linux,code = <99>; + gpios = <&pioB 18 GPIO_ACTIVE_LOW>; + gpio-key,wakeup = <1>; + }; + }; +}; diff --git a/target/linux/at91/image/Makefile b/target/linux/at91/image/Makefile index db480ac7545..fedefe42878 100644 --- a/target/linux/at91/image/Makefile +++ b/target/linux/at91/image/Makefile @@ -51,6 +51,12 @@ define Device/evaluation-dtb IMAGE/dtb := install-dtb endef +define Device/evaluation-fit + $(Device/evaluation) + KERNEL_SUFFIX := -fit-uImage.itb + KERNEL := kernel-bin | lzma | fit lzma $$(DTS_DIR)/$$(DEVICE_DTS).dtb +endef + define Device/production UBINIZE_OPTS := -E 5 IMAGES := factory.bin diff --git a/target/linux/at91/image/legacy.mk b/target/linux/at91/image/legacy.mk index be8c2db21cd..c6d9ed81082 100644 --- a/target/linux/at91/image/legacy.mk +++ b/target/linux/at91/image/legacy.mk @@ -116,3 +116,18 @@ define Device/at91-q5xr5 KERNEL_SIZE := 2048k endef TARGET_DEVICES += at91-q5xr5 + +define Device/wb45n + $(Device/evaluation-fit) + DEVICE_TITLE := Laird WB45N + 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 += wb45n + diff --git a/target/linux/at91/patches-4.4/102-ARM-at91-build-dtb-for-wb45n.patch b/target/linux/at91/patches-4.4/102-ARM-at91-build-dtb-for-wb45n.patch new file mode 100644 index 00000000000..b7486626abd --- /dev/null +++ b/target/linux/at91/patches-4.4/102-ARM-at91-build-dtb-for-wb45n.patch @@ -0,0 +1,12 @@ +--- a/arch/arm/boot/dts/Makefile ++++ b/arch/arm/boot/dts/Makefile +@@ -40,7 +40,8 @@ dtb-$(CONFIG_SOC_SAM_V4_V5) += \ + at91sam9g25ek.dtb \ + at91sam9g35ek.dtb \ + at91sam9x25ek.dtb \ +- at91sam9x35ek.dtb ++ at91sam9x35ek.dtb \ ++ wb45n.dtb + dtb-$(CONFIG_SOC_SAM_V7) += \ + at91-kizbox2.dtb \ + at91-sama5d2_xplained.dtb \