diff options
author | ganbold <ganbold@FreeBSD.org> | 2015-05-24 08:45:19 +0000 |
---|---|---|
committer | ganbold <ganbold@FreeBSD.org> | 2015-05-24 08:45:19 +0000 |
commit | de543c1a0d9583b1bd82372daf18bcd9c59795a5 (patch) | |
tree | ec88bfcde732b13f9056f562ec04dc6a1060e658 /sys/boot/fdt/dts | |
parent | b3dcb943c4b3562db28255732cc34b27b51db46e (diff) | |
download | FreeBSD-src-de543c1a0d9583b1bd82372daf18bcd9c59795a5.zip FreeBSD-src-de543c1a0d9583b1bd82372daf18bcd9c59795a5.tar.gz |
Add kernel config and dts files for an aml8726-m3
based device.
Following u-boot commands allow FreeBSD boot on
Yiyate Android TV Box (aml8726-m3):
tv open 480p
mmc rescan 0
fatload mmc 0 0x80100000 kernel.bin
go 0x80100000
The current FreeBSD driver doesn't program the video
clocks so the u-boot tv command is necessary in order
for the frame buffer to be useful (otherwise it can
be skipped).
The SD card for the Yiyate Android TV Box doesn't need
anything special beyond creating a FAT16 and a UFS
filesystem.
Differential Revision: https://reviews.freebsd.org/D2636
Submitted by: John Wehle
Diffstat (limited to 'sys/boot/fdt/dts')
-rw-r--r-- | sys/boot/fdt/dts/arm/meson3.dtsi | 77 | ||||
-rw-r--r-- | sys/boot/fdt/dts/arm/yyhd18-m3.dts | 237 |
2 files changed, 314 insertions, 0 deletions
diff --git a/sys/boot/fdt/dts/arm/meson3.dtsi b/sys/boot/fdt/dts/arm/meson3.dtsi new file mode 100644 index 0000000..444e3cf --- /dev/null +++ b/sys/boot/fdt/dts/arm/meson3.dtsi @@ -0,0 +1,77 @@ +/*- + * Copyright (c) 2015 John Wehle <john@feith.com> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * The basic single core aml8726 (aka meson) uses an Amlogic interrupt + * controller, however meson.dtsi specifies GIC (which is present on + * the multicore aml8726) so we need to override things here. + */ + +/include/ "meson.dtsi" + +/ { + model = "Amlogic Meson3 SoC"; + compatible = "amlogic,meson3"; + + interrupt-parent = <&pic>; + + pic: pic@c1109a40 { + device_type = "interrupt-controller"; + compatible = "amlogic,aml8726-pic"; + reg = <0xc1109a40 128>; /* cbus 0x2690 */ + + interrupt-controller; + #interrupt-cells = <3>; + }; + + cpus { + #address-cells = <1>; + #size-cells = <0>; + + cpu@200 { + device_type = "cpu"; + compatible = "arm,cortex-a9"; + next-level-cache = <&L2>; + reg = <0x200>; + }; + }; + + clk81: clk@0 { + #clock-cells = <0>; + compatible = "fixed-clock"; + clock-frequency = <0>; + }; +}; + +&gic { + status = "disabled"; +}; + +&L2 { + interrupts = <0 61 1>; +}; diff --git a/sys/boot/fdt/dts/arm/yyhd18-m3.dts b/sys/boot/fdt/dts/arm/yyhd18-m3.dts new file mode 100644 index 0000000..bdb425d --- /dev/null +++ b/sys/boot/fdt/dts/arm/yyhd18-m3.dts @@ -0,0 +1,237 @@ +/*- + * Copyright (c) 2015 John Wehle <john@feith.com> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * + * $FreeBSD$ + */ + +/* + * The ordering of certain devices is significant (e.g. usb depends on + * usb-phy which depends on gpio, also the timer should appear early on + * to provide a reasonably accurate DELAY implementation). + */ + +/dts-v1/; + +/memreserve/ 0x84900000 0x00600000; /* 6MB frame buffer */ + +#include "meson3.dtsi" + +/ { + /* + * My development unit is a Yiyate Android TV Box containing + * a HD18 motherboard and an aml8726-m3 SoC ... later versions + * shipped with an aml8726-m6. Printenv in uboot shows m3-oplay + * as the boardname supplied as part of mmcargs. + */ + + model = "yiyate,hd18-m3"; + compatible = "yiyate,hd18-m3", "amlogic,meson3"; + + #address-cells = <1>; + #size-cells = <1>; + + aliases { + soc = &soc; + screen = &screen; + uart0 = &uart_AO; + }; + + memory { + device_type = "memory"; + reg = <0x80000000 0x40000000>; /* 1GB RAM */ + }; + + soc: soc { + device_type = "soc"; + bus-frequency = <0>; + + ccm@c1104140 { + compatible = "amlogic,aml8726-ccm"; + reg = <0xc1104140 20>; /* cbus 0x1050 */ + + functions = "ethernet", "i2c", "rng", "sdio", + "uart-a", "uart-b", "uart-c", + "usb-a", "usb-b"; + }; + + pinctrl: pinctrl@c11080b0 { + compatible = "amlogic,aml8726-pinctrl"; + reg = <0xc11080b0 40>, /* mux */ + <0xc11080e8 24>, /* pu/pd */ + <0xc11080e8 24>, /* pull enable */ + <0xc8100014 4>, /* ao mux */ + <0xc810002c 4>, /* ao pu/pd */ + <0xc810002c 4>; /* ao pull enable */ + + /* + * Currently only pin muxing that deviates + * from the power on default of gpio is + * specified here. + */ + + pinctrl-names = "default"; + pinctrl-0 = <&pins_uartao &pins_ethernet &pins_hdmi>; + + pins_ethernet: ethernet { + amlogic,pins = "clk_out", "tx_en", + "tx_d0", "tx_d1", + "crs_dv", "rx_err", + "rx_d0", "rx_d1", + "mdc", "mdio"; + amlogic,function = "ethernet"; + }; + + pins_hdmi: hdmi { + amlogic,pins = "cec", "hpd", + "scl", "sda"; + amlogic,function = "hdmi"; + }; + + pins_sdio_b: sdio_b { + amlogic,pins = "clk", "cmd", + "d0", "d1", + "d2", "d3"; + amlogic,function = "sdio-b"; + }; + + pins_uartao: uartao { + amlogic,pins = "tx", "rx"; + amlogic,function = "uart-ao"; + }; + }; + + rtc@c8100740 { + compatible = "amlogic,aml8726-rtc"; + reg = <0xc8100740 20>; /* aobus 0x1d0 */ + interrupts = <0 72 1>; /* AM_IRQ2(8) */ + }; + + clkmsr: clkmsr@c1108758 { + compatible = "amlogic,aml8726-clkmsr"; + reg = <0xc1108758 16>; /* cbus 0x21d6 */ + + clocks = <&clk81>; + }; + + gpio5: gpio@c110806c { + compatible = "amlogic,aml8726-gpio"; + reg = <0xc110806c 4>, /* oen cbus 0x201b */ + <0xc1108070 4>, /* out */ + <0xc1108074 4>; /* in */ + + gpio-controller; + #gpio-cells = <1>; + pin-count = <32>; + }; + + mmc@c1108c20 { + compatible = "amlogic,aml8726-mmc"; + reg = <0xc1108c20 32>; /* cbus 0x2308 */ + interrupts = <0 28 1>; /* AM_IRQ0(28) */ + + clocks = <&clk81>; + + pinctrl-names = "default"; + pinctrl-0 = <&pins_sdio_b>; + + mmc-voltages = "3.3"; + + mmc-pwr-en = <&gpio5 31 0>; /* card_8 */ + ins-detect = <&gpio5 29 0>; /* card_6 */ + }; + + rng@c1108100 { + compatible = "amlogic,aml8726-rng"; + reg = <0xc1108100 8>; /* cbus 0x2040 */ + }; + + usb-phy@c1108400 { + /* usb-a and usb-b phy */ + compatible = "amlogic,aml8726-m3-usb-phy"; + reg = <0xc1108400 32>; /* cbus 0x2100 */ + }; + + usb@c9040000 { + /* usb-a */ + compatible = "synopsys,designware-hs-otg2"; + reg = <0xc9040000 0x40000>; /* ahbbus 0x40000*/ + interrupts = <0 30 4>; /* AM_IRQ0(30) */ + #address-cells = <1>; + #size-cells = <0>; + }; + + usb@c90c0000 { + /* usb-b */ + compatible = "synopsys,designware-hs-otg2"; + reg = <0xc90c0000 0x40000>; /* ahbbus 0xc0000 */ + interrupts = <0 31 4>; /* AM_IRQ0(31) */ + #address-cells = <1>; + #size-cells = <0>; + + dr_mode = "host"; + }; + + eth@c9410000 { + /* ethernet */ + compatible = "snps,dwmac"; + reg = <0xc9410000 0x2000>; /* ahbbus 0x410000 */ + interrupts = <0 8 1>; /* AM_IRQ0(8) */ + #address-cells = <1>; + #size-cells = <0>; + }; + + screen: fb@c8001324 { + device_type = "display"; + compatible = "amlogic,aml8726-fb"; + reg = <0xc8001324 12>, /* CANVAS */ + <0xc1106800 1024>, /* VIU */ + <0xc1107400 1024>; /* VPP */ + interrupts = <0 2 1>, /* AM_IRQ0(2) */ + <0 3 1>, /* AM_IRQ0(3) */ + <0 12 1>, /* AM_IRQ0(12) */ + <0 13 1>; /* AM_IRQ0(13) */ + + address = <0x84900000>; /* match memreserve */ + width = <720>; + height = <480>; + depth = <24>; + linebytes = <2160>; + }; + }; + + chosen { + stdin = "uart0"; + stdout = "uart0"; + }; +}; + +&clk81 { + clock-frequency = <0>; +}; + +&uart_AO { + status = "okay"; + current-speed = <115200>; +}; |