• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1/*
2 * Copyright (C) 2013,2014 Russell King
3 *
4 * This file is dual-licensed: you can use it either under the terms
5 * of the GPL or the X11 license, at your option. Note that this dual
6 * licensing only applies to this file, and not this project as a
7 * whole.
8 *
9 *  a) This file is free software; you can redistribute it and/or
10 *     modify it under the terms of the GNU General Public License
11 *     version 2 as published by the Free Software Foundation.
12 *
13 *     This file is distributed in the hope that it will be useful,
14 *     but WITHOUT ANY WARRANTY; without even the implied warranty of
15 *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16 *     GNU General Public License for more details.
17 *
18 * Or, alternatively,
19 *
20 *  b) Permission is hereby granted, free of charge, to any person
21 *     obtaining a copy of this software and associated documentation
22 *     files (the "Software"), to deal in the Software without
23 *     restriction, including without limitation the rights to use,
24 *     copy, modify, merge, publish, distribute, sublicense, and/or
25 *     sell copies of the Software, and to permit persons to whom the
26 *     Software is furnished to do so, subject to the following
27 *     conditions:
28 *
29 *     The above copyright notice and this permission notice shall be
30 *     included in all copies or substantial portions of the Software.
31 *
32 *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
33 *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
34 *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
35 *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
36 *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
37 *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
38 *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
39 *     OTHER DEALINGS IN THE SOFTWARE.
40 */
41#include <dt-bindings/sound/fsl-imx-audmux.h>
42
43/ {
44	/* Will be filled by the bootloader */
45	memory@10000000 {
46		reg = <0x10000000 0>;
47	};
48
49	chosen {
50		stdout-path = &uart1;
51	};
52
53	ir_recv: ir-receiver {
54		compatible = "gpio-ir-receiver";
55		gpios = <&gpio3 5 GPIO_ACTIVE_LOW>;
56		pinctrl-names = "default";
57		pinctrl-0 = <&pinctrl_hummingboard_gpio3_5>;
58	};
59
60	v_3v2: regulator-v-3v2 {
61		compatible = "regulator-fixed";
62		regulator-always-on;
63		regulator-max-microvolt = <3300000>;
64		regulator-min-microvolt = <3300000>;
65		regulator-name = "v_3v2";
66		vin-supply = <&v_5v0>;
67	};
68
69	v_5v0: regulator-v-5v0 {
70		compatible = "regulator-fixed";
71		regulator-always-on;
72		regulator-max-microvolt = <5000000>;
73		regulator-min-microvolt = <5000000>;
74		regulator-name = "v_5v0";
75	};
76
77	v_sd: regulator-v-sd {
78		compatible = "regulator-fixed";
79		gpio = <&gpio4 30 GPIO_ACTIVE_HIGH>;
80		pinctrl-names = "default";
81		pinctrl-0 = <&pinctrl_hummingboard_vmmc>;
82		regulator-boot-on;
83		regulator-max-microvolt = <3300000>;
84		regulator-min-microvolt = <3300000>;
85		regulator-name = "v_sd";
86		startup-delay-us = <1000>;
87		vin-supply = <&v_3v2>;
88	};
89
90	v_usb2: regulator-v-usb2 {
91		compatible = "regulator-fixed";
92		enable-active-high;
93		gpio = <&gpio1 0 GPIO_ACTIVE_HIGH>;
94		pinctrl-names = "default";
95		pinctrl-0 = <&pinctrl_hummingboard_usbh1_vbus>;
96		regulator-max-microvolt = <5000000>;
97		regulator-min-microvolt = <5000000>;
98		regulator-name = "v_usb2";
99		vin-supply = <&v_5v0>;
100	};
101
102	v_usb1: regulator-v-usb1 {
103		compatible = "regulator-fixed";
104		enable-active-high;
105		gpio = <&gpio3 22 GPIO_ACTIVE_HIGH>;
106		pinctrl-names = "default";
107		pinctrl-0 = <&pinctrl_hummingboard_usbotg_vbus>;
108		regulator-max-microvolt = <5000000>;
109		regulator-min-microvolt = <5000000>;
110		regulator-name = "v_usb1";
111		vin-supply = <&v_5v0>;
112	};
113
114	audio: sound-sgtl5000 {
115		compatible = "simple-audio-card";
116		simple-audio-card,name = "On-board Codec";
117		simple-audio-card,format = "i2s";
118		simple-audio-card,bitclock-master = <&sound_codec>;
119		simple-audio-card,frame-master = <&sound_codec>;
120		simple-audio-card,widgets =
121			"Microphone", "Headphone Jack",
122			"Headphone", "Headphone Jack";
123		simple-audio-card,routing =
124			"MIC_IN", "Headphone Jack",
125			"Headphone Jack", "Mic Bias",
126			"Headphone Jack", "HP_OUT";
127
128		sound_cpu: simple-audio-card,cpu {
129			sound-dai = <&ssi1>;
130		};
131
132		sound_codec: simple-audio-card,codec {
133			sound-dai = <&sgtl5000>;
134		};
135	};
136
137	sound-spdif {
138		compatible = "fsl,imx-audio-spdif";
139		model = "On-board SPDIF";
140		/* IMX6 doesn't implement this yet */
141		spdif-controller = <&spdif>;
142		spdif-out;
143	};
144};
145
146&audmux {
147	status = "okay";
148
149	ssi1 {
150		fsl,audmux-port = <0>;
151		fsl,port-config = <
152			(IMX_AUDMUX_V2_PTCR_SYN |
153			 IMX_AUDMUX_V2_PTCR_TFSEL(4) |
154			 IMX_AUDMUX_V2_PTCR_TCSEL(4) |
155			 IMX_AUDMUX_V2_PTCR_TFSDIR |
156			 IMX_AUDMUX_V2_PTCR_TCLKDIR)
157			 IMX_AUDMUX_V2_PDCR_RXDSEL(4)
158		>;
159	};
160
161	pins5 {
162		fsl,audmux-port = <4>;
163		fsl,port-config = <
164			IMX_AUDMUX_V2_PTCR_SYN
165			IMX_AUDMUX_V2_PDCR_RXDSEL(0)
166		>;
167	};
168};
169
170&can1 {
171	pinctrl-names = "default";
172	pinctrl-0 = <&pinctrl_hummingboard_flexcan1>;
173	status = "okay";
174};
175
176&hdmi {
177	pinctrl-names = "default";
178	pinctrl-0 = <&pinctrl_hummingboard_hdmi>;
179	ddc-i2c-bus = <&i2c2>;
180	status = "okay";
181};
182
183&i2c1 {
184	pinctrl-names = "default";
185	pinctrl-0 = <&pinctrl_hummingboard_i2c1>;
186	status = "okay";
187
188	/* Pro baseboard model */
189	rtc@68 {
190		compatible = "nxp,pcf8523";
191		reg = <0x68>;
192	};
193
194	/* Pro baseboard model */
195	sgtl5000: codec@a {
196		clocks = <&clks IMX6QDL_CLK_CKO>;
197		compatible = "fsl,sgtl5000";
198		pinctrl-names = "default";
199		pinctrl-0 = <&pinctrl_hummingboard_sgtl5000>;
200		#sound-dai-cells = <0>;
201		reg = <0x0a>;
202		VDDA-supply = <&v_3v2>;
203		VDDIO-supply = <&v_3v2>;
204	};
205};
206
207&i2c2 {
208	clock-frequency = <100000>;
209	pinctrl-names = "default";
210	pinctrl-0 = <&pinctrl_hummingboard_i2c2>;
211	status = "okay";
212};
213
214&iomuxc {
215	hummingboard {
216		pinctrl_hummingboard_flexcan1: hummingboard-flexcan1 {
217			fsl,pins = <
218				MX6QDL_PAD_SD3_CLK__FLEXCAN1_RX 0x80000000
219				MX6QDL_PAD_SD3_CMD__FLEXCAN1_TX 0x80000000
220			>;
221		};
222
223		pinctrl_hummingboard_gpio3_5: hummingboard-gpio3_5 {
224			fsl,pins = <
225				MX6QDL_PAD_EIM_DA5__GPIO3_IO05 0x1b0b1
226			>;
227		};
228
229		pinctrl_hummingboard_hdmi: hummingboard-hdmi {
230			fsl,pins = <
231				MX6QDL_PAD_KEY_ROW2__HDMI_TX_CEC_LINE 0x1f8b0
232			>;
233		};
234
235		pinctrl_hummingboard_i2c1: hummingboard-i2c1 {
236			fsl,pins = <
237				MX6QDL_PAD_EIM_D21__I2C1_SCL 0x4001b8b1
238				MX6QDL_PAD_EIM_D28__I2C1_SDA 0x4001b8b1
239			>;
240		};
241
242		pinctrl_hummingboard_i2c2: hummingboard-i2c2 {
243			fsl,pins = <
244				MX6QDL_PAD_KEY_COL3__I2C2_SCL 0x4001b8b1
245				MX6QDL_PAD_KEY_ROW3__I2C2_SDA 0x4001b8b1
246			>;
247		};
248
249		pinctrl_hummingboard_pcie_reset: hummingboard-pcie-reset {
250			fsl,pins = <
251				MX6QDL_PAD_EIM_DA4__GPIO3_IO04 0x1b0b1
252			>;
253		};
254
255		pinctrl_hummingboard_pwm1: pwm1grp {
256			fsl,pins = <MX6QDL_PAD_DISP0_DAT8__PWM1_OUT 0x1b0b1>;
257		};
258
259		pinctrl_hummingboard_sgtl5000: hummingboard-sgtl5000 {
260			fsl,pins = <
261				MX6QDL_PAD_DISP0_DAT19__AUD5_RXD 0x130b0
262				MX6QDL_PAD_KEY_COL0__AUD5_TXC 0x130b0
263				MX6QDL_PAD_KEY_ROW0__AUD5_TXD 0x110b0
264				MX6QDL_PAD_KEY_COL1__AUD5_TXFS 0x130b0
265				MX6QDL_PAD_GPIO_5__CCM_CLKO1 0x130b0
266			>;
267		};
268
269		pinctrl_hummingboard_spdif: hummingboard-spdif {
270			fsl,pins = <MX6QDL_PAD_GPIO_17__SPDIF_OUT 0x13091>;
271		};
272
273		pinctrl_hummingboard_usbh1_vbus: hummingboard-usbh1-vbus {
274			fsl,pins = <MX6QDL_PAD_GPIO_0__GPIO1_IO00 0x1b0b0>;
275		};
276
277		pinctrl_hummingboard_usbotg_id: hummingboard-usbotg-id {
278			/*
279			 * We want it pulled down for a fixed host connection.
280			 */
281			fsl,pins = <MX6QDL_PAD_ENET_RX_ER__USB_OTG_ID 0x13059>;
282		};
283
284		pinctrl_hummingboard_usbotg_vbus: hummingboard-usbotg-vbus {
285			fsl,pins = <MX6QDL_PAD_EIM_D22__GPIO3_IO22 0x1b0b0>;
286		};
287
288		pinctrl_hummingboard_usdhc2_aux: hummingboard-usdhc2-aux {
289			fsl,pins = <
290				MX6QDL_PAD_GPIO_4__GPIO1_IO04    0x1f071
291			>;
292		};
293
294		pinctrl_hummingboard_usdhc2: hummingboard-usdhc2 {
295			fsl,pins = <
296				MX6QDL_PAD_SD2_CMD__SD2_CMD    0x17059
297				MX6QDL_PAD_SD2_CLK__SD2_CLK    0x10059
298				MX6QDL_PAD_SD2_DAT0__SD2_DATA0 0x17059
299				MX6QDL_PAD_SD2_DAT1__SD2_DATA1 0x17059
300				MX6QDL_PAD_SD2_DAT2__SD2_DATA2 0x17059
301				MX6QDL_PAD_SD2_DAT3__SD2_DATA3 0x13059
302			>;
303		};
304		pinctrl_hummingboard_vmmc: hummingboard-vmmc {
305			fsl,pins = <
306				MX6QDL_PAD_DISP0_DAT9__GPIO4_IO30 0x1b0b0
307			>;
308		};
309	};
310};
311
312&pcie {
313	pinctrl-names = "default";
314	pinctrl-0 = <&pinctrl_hummingboard_pcie_reset>;
315	reset-gpio = <&gpio3 4 GPIO_ACTIVE_LOW>;
316	status = "okay";
317};
318
319&pwm1 {
320	 pinctrl-names = "default";
321	 pinctrl-0 = <&pinctrl_hummingboard_pwm1>;
322	 status = "okay";
323};
324
325&pwm2 {
326	 pinctrl-names = "default";
327	 status = "okay";
328};
329
330&spdif {
331	pinctrl-names = "default";
332	pinctrl-0 = <&pinctrl_hummingboard_spdif>;
333	status = "okay";
334};
335
336&ssi1 {
337	status = "okay";
338};
339
340&usbh1 {
341	disable-over-current;
342	vbus-supply = <&v_usb2>;
343	status = "okay";
344};
345
346&usbotg {
347	disable-over-current;
348	pinctrl-names = "default";
349	pinctrl-0 = <&pinctrl_hummingboard_usbotg_id>;
350	vbus-supply = <&v_usb1>;
351	status = "okay";
352};
353
354&usdhc2 {
355	pinctrl-names = "default";
356	pinctrl-0 = <
357		&pinctrl_hummingboard_usdhc2_aux
358		&pinctrl_hummingboard_usdhc2
359	>;
360	vmmc-supply = <&v_sd>;
361	cd-gpios = <&gpio1 4 GPIO_ACTIVE_LOW>;
362	status = "okay";
363};
364
365&vcc_3v3 {
366	vin-supply = <&v_3v2>;
367};
368