xref: /linux/arch/arm/boot/dts/marvell/dove-cm-a510.dtsi (revision a23e1966932464e1c5226cb9ac4ce1d5fc10ba22)
1896dd272SSebastian Hesselbarth/*
2896dd272SSebastian Hesselbarth * Device Tree include for Compulab CM-A510 System-on-Module
3896dd272SSebastian Hesselbarth *
4896dd272SSebastian Hesselbarth * Copyright (C) 2015, Sebastian Hesselbarth <sebastian.hesselbarth@gmail.com>
5896dd272SSebastian Hesselbarth *
6896dd272SSebastian Hesselbarth * This file is dual-licensed: you can use it either under the terms
7896dd272SSebastian Hesselbarth * of the GPL or the X11 license, at your option. Note that this dual
8896dd272SSebastian Hesselbarth * licensing only applies to this file, and not this project as a
9896dd272SSebastian Hesselbarth * whole.
10896dd272SSebastian Hesselbarth *
11896dd272SSebastian Hesselbarth *  a) This file is free software; you can redistribute it and/or
12896dd272SSebastian Hesselbarth *     modify it under the terms of the GNU General Public License as
13896dd272SSebastian Hesselbarth *     published by the Free Software Foundation; version 2 of the
14896dd272SSebastian Hesselbarth *     License.
15896dd272SSebastian Hesselbarth *
1624f0b6feSAlexandre Belloni *     This file is distributed in the hope that it will be useful,
17896dd272SSebastian Hesselbarth *     but WITHOUT ANY WARRANTY; without even the implied warranty of
18896dd272SSebastian Hesselbarth *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19896dd272SSebastian Hesselbarth *     GNU General Public License for more details.
20896dd272SSebastian Hesselbarth *
2124f0b6feSAlexandre Belloni * Or, alternatively,
22896dd272SSebastian Hesselbarth *
23896dd272SSebastian Hesselbarth *  b) Permission is hereby granted, free of charge, to any person
24896dd272SSebastian Hesselbarth *     obtaining a copy of this software and associated documentation
25896dd272SSebastian Hesselbarth *     files (the "Software"), to deal in the Software without
2624f0b6feSAlexandre Belloni *     restriction, including without limitation the rights to use,
27896dd272SSebastian Hesselbarth *     copy, modify, merge, publish, distribute, sublicense, and/or
28896dd272SSebastian Hesselbarth *     sell copies of the Software, and to permit persons to whom the
29896dd272SSebastian Hesselbarth *     Software is furnished to do so, subject to the following
30896dd272SSebastian Hesselbarth *     conditions:
31896dd272SSebastian Hesselbarth *
32896dd272SSebastian Hesselbarth *     The above copyright notice and this permission notice shall be
33896dd272SSebastian Hesselbarth *     included in all copies or substantial portions of the Software.
34896dd272SSebastian Hesselbarth *
3524f0b6feSAlexandre Belloni *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
36896dd272SSebastian Hesselbarth *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
37896dd272SSebastian Hesselbarth *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
38896dd272SSebastian Hesselbarth *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
3924f0b6feSAlexandre Belloni *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
40896dd272SSebastian Hesselbarth *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
41896dd272SSebastian Hesselbarth *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
42896dd272SSebastian Hesselbarth *     OTHER DEALINGS IN THE SOFTWARE.
43896dd272SSebastian Hesselbarth */
44896dd272SSebastian Hesselbarth
45896dd272SSebastian Hesselbarth/*
46896dd272SSebastian Hesselbarth * The CM-A510 comes with several optional components:
47896dd272SSebastian Hesselbarth *
48896dd272SSebastian Hesselbarth * Memory options:
49896dd272SSebastian Hesselbarth *  D512: 512M
50896dd272SSebastian Hesselbarth *  D1024: 1G
51896dd272SSebastian Hesselbarth *
52896dd272SSebastian Hesselbarth * NAND options:
53896dd272SSebastian Hesselbarth *  N512: 512M NAND
54896dd272SSebastian Hesselbarth *
55896dd272SSebastian Hesselbarth * Ethernet options:
56896dd272SSebastian Hesselbarth *  E1: PHY RTL8211D on internal GbE (SMI address 0x03)
57896dd272SSebastian Hesselbarth *  E2: Additional ethernet NIC RTL8111D on PCIe1
58896dd272SSebastian Hesselbarth *
59896dd272SSebastian Hesselbarth * Audio options:
60896dd272SSebastian Hesselbarth *  A: TI TLV320AIC23b audio codec (I2C address 0x1a)
61896dd272SSebastian Hesselbarth *
62896dd272SSebastian Hesselbarth * Touchscreen options:
63896dd272SSebastian Hesselbarth *  I: TI TSC2046 touchscreen controller (on SPI1)
64896dd272SSebastian Hesselbarth *
65896dd272SSebastian Hesselbarth * USB options:
66896dd272SSebastian Hesselbarth *  U2: 2 dual-role USB2.0 ports
67896dd272SSebastian Hesselbarth *  U4: 2 additional USB2.0 host ports (via USB1)
68896dd272SSebastian Hesselbarth *
69896dd272SSebastian Hesselbarth * WiFi options:
70896dd272SSebastian Hesselbarth *  W: Broadcom BCM4319 802.11b/g/n (USI WM-N-BM-01 on SDIO1)
71896dd272SSebastian Hesselbarth *
72896dd272SSebastian Hesselbarth * GPIOs used on CM-A510:
73896dd272SSebastian Hesselbarth *   1 GbE PHY reset (active low)
74896dd272SSebastian Hesselbarth *   3 WakeUp
75896dd272SSebastian Hesselbarth *   8 PowerOff (active low)
76896dd272SSebastian Hesselbarth *  13 Touchscreen pen irq (active low)
77896dd272SSebastian Hesselbarth *  65 System LED (active high)
78896dd272SSebastian Hesselbarth *  69 USB Hub reset (active low)
79896dd272SSebastian Hesselbarth *  70 WLAN reset (active low)
80896dd272SSebastian Hesselbarth *  71 WLAN regulator (active high)
81896dd272SSebastian Hesselbarth */
82896dd272SSebastian Hesselbarth
83896dd272SSebastian Hesselbarth#include "dove.dtsi"
84896dd272SSebastian Hesselbarth
85896dd272SSebastian Hesselbarth/ {
86896dd272SSebastian Hesselbarth	model = "Compulab CM-A510";
87896dd272SSebastian Hesselbarth	compatible = "compulab,cm-a510", "marvell,dove";
88896dd272SSebastian Hesselbarth
89896dd272SSebastian Hesselbarth	/*
90896dd272SSebastian Hesselbarth	 * Set the minimum memory size here and let the
91896dd272SSebastian Hesselbarth	 * bootloader set the real size.
92896dd272SSebastian Hesselbarth	 */
93896dd272SSebastian Hesselbarth	memory {
94896dd272SSebastian Hesselbarth		device_type = "memory";
95896dd272SSebastian Hesselbarth		reg = <0x00000000 0x20000000>;
96896dd272SSebastian Hesselbarth	};
97896dd272SSebastian Hesselbarth
98896dd272SSebastian Hesselbarth	leds {
99896dd272SSebastian Hesselbarth		compatible = "gpio-leds";
100896dd272SSebastian Hesselbarth		/* Set upper NAND data bit to GPO */
101896dd272SSebastian Hesselbarth		pinctrl-0 = <&pmx_nand_gpo>;
102896dd272SSebastian Hesselbarth		pinctrl-names = "default";
103896dd272SSebastian Hesselbarth
10430a39ce8SKrzysztof Kozlowski		led-system {
105896dd272SSebastian Hesselbarth			label = "cm-a510:system:green";
106896dd272SSebastian Hesselbarth			gpios = <&gpio2 1 GPIO_ACTIVE_HIGH>;
107896dd272SSebastian Hesselbarth			default-state = "keep";
108896dd272SSebastian Hesselbarth		};
109896dd272SSebastian Hesselbarth	};
110896dd272SSebastian Hesselbarth
111*afc19882SKrzysztof Kozlowski	wifi_power: regulator-1 {
112896dd272SSebastian Hesselbarth		compatible = "regulator-fixed";
113896dd272SSebastian Hesselbarth		regulator-name = "WiFi Power";
114896dd272SSebastian Hesselbarth		regulator-min-microvolt = <3300000>;
115896dd272SSebastian Hesselbarth		regulator-max-microvolt = <3300000>;
116896dd272SSebastian Hesselbarth		gpio = <&gpio2 7 GPIO_ACTIVE_HIGH>;
117896dd272SSebastian Hesselbarth	};
118896dd272SSebastian Hesselbarth};
119896dd272SSebastian Hesselbarth
120896dd272SSebastian Hesselbarth/* Optional RTL8211D GbE PHY on SMI address 0x03 */
12112cb7a33SMichał Grzelak&mdio {
12212cb7a33SMichał Grzelak	ethphy: ethernet-phy@3 {
123896dd272SSebastian Hesselbarth		reg = <3>;
124896dd272SSebastian Hesselbarth		status = "disabled";
125896dd272SSebastian Hesselbarth	};
12612cb7a33SMichał Grzelak};
12712cb7a33SMichał Grzelak
12812cb7a33SMichał Grzelak&eth {
12912cb7a33SMichał Grzelak	ethernet-port@0 {
13012cb7a33SMichał Grzelak		phy-handle = <&ethphy>;
13112cb7a33SMichał Grzelak	};
13212cb7a33SMichał Grzelak};
133896dd272SSebastian Hesselbarth
134896dd272SSebastian Hesselbarth&i2c0 {
135896dd272SSebastian Hesselbarth	/* Optional TI TLV320AIC23b audio codec */
136896dd272SSebastian Hesselbarth	opt_audio: audio@1a {
137896dd272SSebastian Hesselbarth		compatible = "ti,tlv320aic23";
138896dd272SSebastian Hesselbarth		reg = <0x1a>;
139896dd272SSebastian Hesselbarth		status = "disabled";
140896dd272SSebastian Hesselbarth	};
141896dd272SSebastian Hesselbarth};
142896dd272SSebastian Hesselbarth
143896dd272SSebastian Hesselbarth/* Optional RTL8111D GbE NIC on PCIe1 */
144896dd272SSebastian Hesselbarth&pcie { status = "disabled"; };
145896dd272SSebastian Hesselbarth
146896dd272SSebastian Hesselbarth&pcie1 {
147896dd272SSebastian Hesselbarth	pinctrl-0 = <&pmx_pcie1_clkreq>;
148896dd272SSebastian Hesselbarth	pinctrl-names = "default";
149896dd272SSebastian Hesselbarth	status = "disabled";
150896dd272SSebastian Hesselbarth};
151896dd272SSebastian Hesselbarth
152896dd272SSebastian Hesselbarth&pinctrl {
153896dd272SSebastian Hesselbarth	pmx_uart2: pmx-uart2 {
154896dd272SSebastian Hesselbarth		marvell,pins = "mpp14", "mpp15";
155896dd272SSebastian Hesselbarth		marvell,function = "uart2";
156896dd272SSebastian Hesselbarth	};
157896dd272SSebastian Hesselbarth};
158896dd272SSebastian Hesselbarth
159896dd272SSebastian Hesselbarth/* Optional Broadcom BCM4319 802.11b/g/n WiFi module */
160896dd272SSebastian Hesselbarth&sdio1 {
161896dd272SSebastian Hesselbarth	non-removable;
162896dd272SSebastian Hesselbarth	vmmc-supply = <&wifi_power>;
163896dd272SSebastian Hesselbarth	reset-gpio = <&gpio2 6 GPIO_ACTIVE_LOW>;
164896dd272SSebastian Hesselbarth	status = "disabled";
165896dd272SSebastian Hesselbarth};
166896dd272SSebastian Hesselbarth
167896dd272SSebastian Hesselbarth&spi0 {
168896dd272SSebastian Hesselbarth	status = "okay";
169896dd272SSebastian Hesselbarth
170896dd272SSebastian Hesselbarth	/* 1M Flash Winbond W25Q80BL */
171896dd272SSebastian Hesselbarth	flash@0 {
172896dd272SSebastian Hesselbarth		compatible = "winbond,w25q80";
173896dd272SSebastian Hesselbarth		spi-max-frequency = <80000000>;
174896dd272SSebastian Hesselbarth		reg = <0>;
175896dd272SSebastian Hesselbarth	};
176896dd272SSebastian Hesselbarth};
177896dd272SSebastian Hesselbarth
178896dd272SSebastian Hesselbarth&spi1 {
179896dd272SSebastian Hesselbarth	pinctrl-0 = <&pmx_spi1_20_23>;
180896dd272SSebastian Hesselbarth	pinctrl-names = "default";
181896dd272SSebastian Hesselbarth	status = "disabled";
182896dd272SSebastian Hesselbarth
183896dd272SSebastian Hesselbarth	/* Optional TI TSC2046 touchscreen controller */
184896dd272SSebastian Hesselbarth	opt_touch: touchscreen@0 {
185896dd272SSebastian Hesselbarth		compatible = "ti,tsc2046";
186896dd272SSebastian Hesselbarth		spi-max-frequency = <2500000>;
187896dd272SSebastian Hesselbarth		reg = <0>;
188896dd272SSebastian Hesselbarth		pinctrl-0 = <&pmx_gpio_13>;
189896dd272SSebastian Hesselbarth		pinctrl-names = "default";
190896dd272SSebastian Hesselbarth		interrupts-extended = <&gpio0 13 IRQ_TYPE_EDGE_FALLING>;
191896dd272SSebastian Hesselbarth	};
192896dd272SSebastian Hesselbarth};
193896dd272SSebastian Hesselbarth
194896dd272SSebastian Hesselbarth&uart2 {
195896dd272SSebastian Hesselbarth	pinctrl-0 = <&pmx_uart2>;
196896dd272SSebastian Hesselbarth	pinctrl-names = "default";
197896dd272SSebastian Hesselbarth};
198