From 358aec77756d6bf850a533272f2685a45220dc0c Mon Sep 17 00:00:00 2001 From: Sungbo Eo Date: Sun, 12 Jan 2020 21:36:23 +0900 Subject: ath79: add support for Arduino Yun Arduino Yun is a microcontroller development board, based on Atmel ATmega32u4 and Atheros AR9331. Specifications: - MCU: ATmega32U4 - SoC: AR9331 - RAM: DDR2 64MB - Flash: SPI NOR 16MB - WiFi: - 2.4GHz: SoC internal - Ethernet: 1x 10/100Mbps - USB: 1x 2.0 - MicroSD: 1x SDHC Notes: - Stock firmware is based on OpenWrt AA. - The SoC UART can be accessed only through the MCU. YunSerialTerminal is recommended for access to serial console. - Stock firmware uses non-standard 250000 baudrate by default. - The MCU can be reprogrammed from the SoC with avrdude linuxgpio. Installation: 1. Update U-Boot environment variables to adapt to new partition scheme. > setenv bootcmd "run addboard; run addtty; run addparts; run addrootfs; bootm 0x9f050000 || bootm 0x9fea0000" > setenv mtdparts "spi0.0:256k(u-boot)ro,64k(u-boot-env),15936k(firmware),64k(nvram),64k(art)ro" > saveenv 2. Boot into stock firmware normally and perform sysupgrade with sysupgrade image. # sysupgrade -n -F /tmp/sysupgrade.bin Signed-off-by: Sungbo Eo --- target/linux/ath79/dts/ar9331_arduino_yun.dts | 223 ++++++++++++++++++++++++++ 1 file changed, 223 insertions(+) create mode 100644 target/linux/ath79/dts/ar9331_arduino_yun.dts (limited to 'target/linux/ath79/dts/ar9331_arduino_yun.dts') diff --git a/target/linux/ath79/dts/ar9331_arduino_yun.dts b/target/linux/ath79/dts/ar9331_arduino_yun.dts new file mode 100644 index 0000000000..0237fe58bf --- /dev/null +++ b/target/linux/ath79/dts/ar9331_arduino_yun.dts @@ -0,0 +1,223 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/dts-v1/; + +#include +#include + +#include "ar9331.dtsi" + +/ { + model = "Arduino Yun"; + compatible = "arduino,yun", "qca,ar9331"; + + aliases { + serial0 = &uart; + }; + + chosen { + bootargs = "console=ttyATH0,250000"; + }; + + ahb { + apb { + pinmux_extended: pinmux@18040030 { + compatible = "pinctrl-single"; + reg = <0x18040030 0x4>; + + pinctrl-single,bit-per-mux; + pinctrl-single,register-width = <32>; + pinctrl-single,function-mask = <0x1>; + #pinctrl-cells = <2>; + + enable_gpio11: pinmux_enable_gpio11 { + pinctrl-single,bits = <0x0 0x200 0x200>; + }; + }; + + pinmux_bootstrap: pinmux@180600ac { + compatible = "pinctrl-single"; + reg = <0x180600ac 0x4>; + + pinctrl-single,bit-per-mux; + pinctrl-single,register-width = <32>; + pinctrl-single,function-mask = <0x1>; + #pinctrl-cells = <2>; + + enable_gpio26_gpio27: pinmux_enable_gpio26_gpio27 { + pinctrl-single,bits = <0x0 0x40000 0x40000>; + }; + }; + }; + }; + + leds { + compatible = "gpio-leds"; + + wlan { + label = "yun:blue:wlan"; + gpios = <&gpio 0 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "phy0tpt"; + }; + + usb { + label = "yun:white:usb"; + gpios = <&gpio 1 GPIO_ACTIVE_HIGH>; + trigger-sources = <&hub_port1>; + linux,default-trigger = "usbport"; + }; + }; + + keys { + compatible = "gpio-keys"; + + config { + label = "config"; + linux,code = ; + gpios = <&gpio 20 GPIO_ACTIVE_LOW>; + }; + }; + + gpio-export { + compatible = "gpio-export"; + + gpio_spi_enable { + gpio-export,name = "yun:oe:spi"; + gpio-export,output = <0>; + gpios = <&gpio 21 GPIO_ACTIVE_HIGH>; + }; + + gpio_handshake_enable { + gpio-export,name = "yun:oe:hs"; + gpio-export,output = <0>; + gpios = <&gpio 22 GPIO_ACTIVE_HIGH>; + }; + + gpio_uart_enable { + gpio-export,name = "yun:oe:uart"; + gpio-export,output = <0>; + gpios = <&gpio 23 GPIO_ACTIVE_LOW>; + }; + }; + + reg_usb_vbus: reg_usb_vbus { + compatible = "regulator-fixed"; + regulator-name = "usb_vbus"; + regulator-min-microvolt = <5000000>; + regulator-max-microvolt = <5000000>; + enable-active-high; + }; +}; + +&uart { + status = "okay"; +}; + +&gpio { + status = "okay"; +}; + +&pinmux { + pinctrl-names = "default"; + pinctrl-0 = <&jtag_disable_pins &switch_led_disable_pins>; +}; + +&switch_led_disable_pins { + pinctrl-single,bits = <0x0 0x80 0xf8>; +}; + +&pinmux_extended { + pinctrl-names = "default"; + pinctrl-0 = <&enable_gpio11>; +}; + +&pinmux_bootstrap { + pinctrl-names = "default"; + pinctrl-0 = <&enable_gpio26_gpio27>; +}; + +&usb { + status = "okay"; + + #address-cells = <1>; + #size-cells = <0>; + dr_mode = "host"; + vbus-supply = <®_usb_vbus>; + + port@1 { + #address-cells = <1>; + #size-cells = <0>; + reg = <1>; + #trigger-source-cells = <0>; + + hub_port1: port@1 { + reg = <1>; + #trigger-source-cells = <0>; + }; + }; +}; + +&usb_phy { + status = "okay"; +}; + +&spi { + status = "okay"; + + num-cs = <1>; + + flash@0 { + compatible = "jedec,spi-nor"; + reg = <0>; + spi-max-frequency = <50000000>; + + partitions { + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "u-boot"; + reg = <0x0 0x40000>; + read-only; + }; + + partition@40000 { + label = "u-boot-env"; + reg = <0x40000 0x10000>; + }; + + partition@50000 { + compatible = "denx,uimage"; + label = "firmware"; + reg = <0x50000 0xf90000>; + }; + + partition@fe0000 { + label = "nvram"; + reg = <0xfe0000 0x10000>; + }; + + art: partition@ff0000 { + label = "art"; + reg = <0xff0000 0x10000>; + read-only; + }; + }; + }; +}; + +ð0 { + status = "okay"; +}; + +ð1 { + status = "okay"; + + compatible = "syscon", "simple-mfd"; +}; + +&wmac { + status = "okay"; + + mtd-cal-data = <&art 0x1000>; +}; -- cgit v1.2.3