xref: /OK3568_Linux_fs/u-boot/arch/arm/dts/at91sam9n12ek.dts (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun/*
2*4882a593Smuzhiyun * at91sam9n12ek.dts - Device Tree file for AT91SAM9N12-EK board
3*4882a593Smuzhiyun *
4*4882a593Smuzhiyun *  Copyright (C) 2012 Atmel,
5*4882a593Smuzhiyun *                2012 Hong Xu <hong.xu@atmel.com>
6*4882a593Smuzhiyun *
7*4882a593Smuzhiyun * Licensed under GPLv2 or later.
8*4882a593Smuzhiyun */
9*4882a593Smuzhiyun/dts-v1/;
10*4882a593Smuzhiyun#include "at91sam9n12.dtsi"
11*4882a593Smuzhiyun
12*4882a593Smuzhiyun/ {
13*4882a593Smuzhiyun	model = "Atmel AT91SAM9N12-EK";
14*4882a593Smuzhiyun	compatible = "atmel,at91sam9n12ek", "atmel,at91sam9n12", "atmel,at91sam9";
15*4882a593Smuzhiyun
16*4882a593Smuzhiyun	chosen {
17*4882a593Smuzhiyun		bootargs = "root=/dev/mtdblock1 rw rootfstype=jffs2";
18*4882a593Smuzhiyun		stdout-path = "serial0:115200n8";
19*4882a593Smuzhiyun		u-boot,dm-pre-reloc;
20*4882a593Smuzhiyun	};
21*4882a593Smuzhiyun
22*4882a593Smuzhiyun	memory {
23*4882a593Smuzhiyun		reg = <0x20000000 0x8000000>;
24*4882a593Smuzhiyun	};
25*4882a593Smuzhiyun
26*4882a593Smuzhiyun	clocks {
27*4882a593Smuzhiyun		slow_xtal {
28*4882a593Smuzhiyun			clock-frequency = <32768>;
29*4882a593Smuzhiyun		};
30*4882a593Smuzhiyun
31*4882a593Smuzhiyun		main_xtal {
32*4882a593Smuzhiyun			clock-frequency = <16000000>;
33*4882a593Smuzhiyun		};
34*4882a593Smuzhiyun	};
35*4882a593Smuzhiyun
36*4882a593Smuzhiyun	ahb {
37*4882a593Smuzhiyun		apb {
38*4882a593Smuzhiyun			dbgu: serial@fffff200 {
39*4882a593Smuzhiyun				u-boot,dm-pre-reloc;
40*4882a593Smuzhiyun				status = "okay";
41*4882a593Smuzhiyun			};
42*4882a593Smuzhiyun
43*4882a593Smuzhiyun			ssc0: ssc@f0010000 {
44*4882a593Smuzhiyun				status = "okay";
45*4882a593Smuzhiyun			};
46*4882a593Smuzhiyun
47*4882a593Smuzhiyun			i2c0: i2c@f8010000 {
48*4882a593Smuzhiyun				status = "okay";
49*4882a593Smuzhiyun
50*4882a593Smuzhiyun				wm8904: codec@1a {
51*4882a593Smuzhiyun					compatible = "wlf,wm8904";
52*4882a593Smuzhiyun					reg = <0x1a>;
53*4882a593Smuzhiyun					clocks = <&pck0>;
54*4882a593Smuzhiyun					clock-names = "mclk";
55*4882a593Smuzhiyun				};
56*4882a593Smuzhiyun
57*4882a593Smuzhiyun				qt1070: keyboard@1b {
58*4882a593Smuzhiyun					compatible = "qt1070";
59*4882a593Smuzhiyun					reg = <0x1b>;
60*4882a593Smuzhiyun					interrupt-parent = <&pioA>;
61*4882a593Smuzhiyun					interrupts = <2 IRQ_TYPE_EDGE_FALLING>;
62*4882a593Smuzhiyun					pinctrl-names = "default";
63*4882a593Smuzhiyun					pinctrl-0 = <&pinctrl_qt1070_irq>;
64*4882a593Smuzhiyun				};
65*4882a593Smuzhiyun			};
66*4882a593Smuzhiyun
67*4882a593Smuzhiyun			mmc0: mmc@f0008000 {
68*4882a593Smuzhiyun				pinctrl-names = "default";
69*4882a593Smuzhiyun				pinctrl-0 = <
70*4882a593Smuzhiyun					&pinctrl_board_mmc0
71*4882a593Smuzhiyun					&pinctrl_mmc0_slot0_clk_cmd_dat0
72*4882a593Smuzhiyun					&pinctrl_mmc0_slot0_dat1_3>;
73*4882a593Smuzhiyun				status = "okay";
74*4882a593Smuzhiyun				slot@0 {
75*4882a593Smuzhiyun					reg = <0>;
76*4882a593Smuzhiyun					bus-width = <4>;
77*4882a593Smuzhiyun					cd-gpios = <&pioA 7 GPIO_ACTIVE_HIGH>;
78*4882a593Smuzhiyun				};
79*4882a593Smuzhiyun			};
80*4882a593Smuzhiyun
81*4882a593Smuzhiyun			pinctrl@fffff400 {
82*4882a593Smuzhiyun				mmc0 {
83*4882a593Smuzhiyun					pinctrl_board_mmc0: mmc0-board {
84*4882a593Smuzhiyun						atmel,pins =
85*4882a593Smuzhiyun							<AT91_PIOA 7 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;	/* PA7 gpio CD pin pull up and deglitch */
86*4882a593Smuzhiyun					};
87*4882a593Smuzhiyun				};
88*4882a593Smuzhiyun
89*4882a593Smuzhiyun				qt1070 {
90*4882a593Smuzhiyun					pinctrl_qt1070_irq: qt1070_irq {
91*4882a593Smuzhiyun						atmel,pins =
92*4882a593Smuzhiyun							<AT91_PIOA 2 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>;
93*4882a593Smuzhiyun					};
94*4882a593Smuzhiyun				};
95*4882a593Smuzhiyun
96*4882a593Smuzhiyun				sound {
97*4882a593Smuzhiyun					pinctrl_pck0_as_audio_mck: pck0_as_audio_mck {
98*4882a593Smuzhiyun						atmel,pins =
99*4882a593Smuzhiyun							<AT91_PIOB 10 AT91_PERIPH_B AT91_PINCTRL_NONE>;
100*4882a593Smuzhiyun					};
101*4882a593Smuzhiyun				};
102*4882a593Smuzhiyun
103*4882a593Smuzhiyun				usb1 {
104*4882a593Smuzhiyun					pinctrl_usb1_vbus_sense: usb1_vbus_sense {
105*4882a593Smuzhiyun						atmel,pins =
106*4882a593Smuzhiyun							<AT91_PIOB 16 AT91_PERIPH_GPIO AT91_PINCTRL_DEGLITCH>;	/* PB16 gpio usb vbus sense, no pull up and deglitch */
107*4882a593Smuzhiyun					};
108*4882a593Smuzhiyun				};
109*4882a593Smuzhiyun			};
110*4882a593Smuzhiyun
111*4882a593Smuzhiyun			spi0: spi@f0000000 {
112*4882a593Smuzhiyun				status = "okay";
113*4882a593Smuzhiyun				cs-gpios = <&pioA 14 0>, <0>, <0>, <0>;
114*4882a593Smuzhiyun				spi_flash@0 {
115*4882a593Smuzhiyun					compatible = "spi-flash";
116*4882a593Smuzhiyun					spi-max-frequency = <50000000>;
117*4882a593Smuzhiyun					reg = <0>;
118*4882a593Smuzhiyun				};
119*4882a593Smuzhiyun			};
120*4882a593Smuzhiyun
121*4882a593Smuzhiyun			hlcdc: hlcdc@f8038000 {
122*4882a593Smuzhiyun				status = "okay";
123*4882a593Smuzhiyun
124*4882a593Smuzhiyun				hlcdc-display-controller {
125*4882a593Smuzhiyun					pinctrl-names = "default";
126*4882a593Smuzhiyun					pinctrl-0 = <&pinctrl_lcd_base &pinctrl_lcd_rgb888>;
127*4882a593Smuzhiyun
128*4882a593Smuzhiyun					port@0 {
129*4882a593Smuzhiyun						hlcdc_panel_output: endpoint@0 {
130*4882a593Smuzhiyun							reg = <0>;
131*4882a593Smuzhiyun							remote-endpoint = <&panel_input>;
132*4882a593Smuzhiyun						};
133*4882a593Smuzhiyun					};
134*4882a593Smuzhiyun				};
135*4882a593Smuzhiyun			};
136*4882a593Smuzhiyun
137*4882a593Smuzhiyun			usb1: gadget@f803c000 {
138*4882a593Smuzhiyun				pinctrl-names = "default";
139*4882a593Smuzhiyun				pinctrl-0 = <&pinctrl_usb1_vbus_sense>;
140*4882a593Smuzhiyun				atmel,vbus-gpio = <&pioB 16 GPIO_ACTIVE_HIGH>;
141*4882a593Smuzhiyun				status = "okay";
142*4882a593Smuzhiyun			};
143*4882a593Smuzhiyun
144*4882a593Smuzhiyun			watchdog@fffffe40 {
145*4882a593Smuzhiyun				status = "okay";
146*4882a593Smuzhiyun			};
147*4882a593Smuzhiyun
148*4882a593Smuzhiyun			rtc@fffffeb0 {
149*4882a593Smuzhiyun				status = "okay";
150*4882a593Smuzhiyun			};
151*4882a593Smuzhiyun		};
152*4882a593Smuzhiyun
153*4882a593Smuzhiyun		nand0: nand@40000000 {
154*4882a593Smuzhiyun			nand-bus-width = <8>;
155*4882a593Smuzhiyun			nand-ecc-mode = "hw";
156*4882a593Smuzhiyun			atmel,has-pmecc;
157*4882a593Smuzhiyun			atmel,pmecc-cap = <2>;
158*4882a593Smuzhiyun			atmel,pmecc-sector-size = <512>;
159*4882a593Smuzhiyun			nand-on-flash-bbt;
160*4882a593Smuzhiyun			status = "okay";
161*4882a593Smuzhiyun		};
162*4882a593Smuzhiyun
163*4882a593Smuzhiyun		usb0: ohci@00500000 {
164*4882a593Smuzhiyun			num-ports = <1>;
165*4882a593Smuzhiyun			atmel,vbus-gpio = <&pioB 7 GPIO_ACTIVE_LOW>;
166*4882a593Smuzhiyun			status = "okay";
167*4882a593Smuzhiyun		};
168*4882a593Smuzhiyun	};
169*4882a593Smuzhiyun
170*4882a593Smuzhiyun	backlight: backlight {
171*4882a593Smuzhiyun		compatible = "pwm-backlight";
172*4882a593Smuzhiyun		pwms = <&hlcdc_pwm 0 50000 0>;
173*4882a593Smuzhiyun		brightness-levels = <0 4 8 16 32 64 128 255>;
174*4882a593Smuzhiyun		default-brightness-level = <6>;
175*4882a593Smuzhiyun		power-supply = <&bl_reg>;
176*4882a593Smuzhiyun		status = "okay";
177*4882a593Smuzhiyun	};
178*4882a593Smuzhiyun
179*4882a593Smuzhiyun	bl_reg: backlight_regulator {
180*4882a593Smuzhiyun		compatible = "regulator-fixed";
181*4882a593Smuzhiyun		regulator-name = "backlight-power-supply";
182*4882a593Smuzhiyun		regulator-min-microvolt = <5000000>;
183*4882a593Smuzhiyun		regulator-max-microvolt = <5000000>;
184*4882a593Smuzhiyun		status = "okay";
185*4882a593Smuzhiyun	};
186*4882a593Smuzhiyun
187*4882a593Smuzhiyun	leds {
188*4882a593Smuzhiyun		compatible = "gpio-leds";
189*4882a593Smuzhiyun
190*4882a593Smuzhiyun		d8 {
191*4882a593Smuzhiyun			label = "d8";
192*4882a593Smuzhiyun			gpios = <&pioB 4 GPIO_ACTIVE_LOW>;
193*4882a593Smuzhiyun			linux,default-trigger = "mmc0";
194*4882a593Smuzhiyun		};
195*4882a593Smuzhiyun
196*4882a593Smuzhiyun		d9 {
197*4882a593Smuzhiyun			label = "d9";
198*4882a593Smuzhiyun			gpios = <&pioB 5 GPIO_ACTIVE_LOW>;
199*4882a593Smuzhiyun			linux,default-trigger = "nand-disk";
200*4882a593Smuzhiyun		};
201*4882a593Smuzhiyun
202*4882a593Smuzhiyun		d10 {
203*4882a593Smuzhiyun			label = "d10";
204*4882a593Smuzhiyun			gpios = <&pioB 6 GPIO_ACTIVE_HIGH>;
205*4882a593Smuzhiyun			linux,default-trigger = "heartbeat";
206*4882a593Smuzhiyun		};
207*4882a593Smuzhiyun	};
208*4882a593Smuzhiyun
209*4882a593Smuzhiyun	gpio_keys {
210*4882a593Smuzhiyun		compatible = "gpio-keys";
211*4882a593Smuzhiyun
212*4882a593Smuzhiyun		enter {
213*4882a593Smuzhiyun			label = "Enter";
214*4882a593Smuzhiyun			gpios = <&pioB 3 GPIO_ACTIVE_LOW>;
215*4882a593Smuzhiyun			linux,code = <28>;
216*4882a593Smuzhiyun			wakeup-source;
217*4882a593Smuzhiyun		};
218*4882a593Smuzhiyun	};
219*4882a593Smuzhiyun
220*4882a593Smuzhiyun	panel: panel {
221*4882a593Smuzhiyun		compatible = "qiaodian,qd43003c0-40", "simple-panel";
222*4882a593Smuzhiyun		backlight = <&backlight>;
223*4882a593Smuzhiyun		power-supply = <&panel_reg>;
224*4882a593Smuzhiyun		#address-cells = <1>;
225*4882a593Smuzhiyun		#size-cells = <0>;
226*4882a593Smuzhiyun		status = "okay";
227*4882a593Smuzhiyun
228*4882a593Smuzhiyun		port@0 {
229*4882a593Smuzhiyun			reg = <0>;
230*4882a593Smuzhiyun			#address-cells = <1>;
231*4882a593Smuzhiyun			#size-cells = <0>;
232*4882a593Smuzhiyun
233*4882a593Smuzhiyun			panel_input: endpoint@0 {
234*4882a593Smuzhiyun				reg = <0>;
235*4882a593Smuzhiyun				remote-endpoint = <&hlcdc_panel_output>;
236*4882a593Smuzhiyun			};
237*4882a593Smuzhiyun		};
238*4882a593Smuzhiyun	};
239*4882a593Smuzhiyun
240*4882a593Smuzhiyun	panel_reg: panel_regulator {
241*4882a593Smuzhiyun		compatible = "regulator-fixed";
242*4882a593Smuzhiyun		regulator-name = "panel-power-supply";
243*4882a593Smuzhiyun		regulator-min-microvolt = <3300000>;
244*4882a593Smuzhiyun		regulator-max-microvolt = <3300000>;
245*4882a593Smuzhiyun		status = "okay";
246*4882a593Smuzhiyun	};
247*4882a593Smuzhiyun
248*4882a593Smuzhiyun	sound {
249*4882a593Smuzhiyun		compatible = "atmel,asoc-wm8904";
250*4882a593Smuzhiyun		pinctrl-names = "default";
251*4882a593Smuzhiyun		pinctrl-0 = <&pinctrl_pck0_as_audio_mck>;
252*4882a593Smuzhiyun
253*4882a593Smuzhiyun		atmel,model = "wm8904 @ AT91SAM9N12";
254*4882a593Smuzhiyun		atmel,audio-routing =
255*4882a593Smuzhiyun			"Headphone Jack", "HPOUTL",
256*4882a593Smuzhiyun			"Headphone Jack", "HPOUTR",
257*4882a593Smuzhiyun			"IN2L", "Line In Jack",
258*4882a593Smuzhiyun			"IN2R", "Line In Jack",
259*4882a593Smuzhiyun			"Mic", "MICBIAS",
260*4882a593Smuzhiyun			"IN1L", "Mic";
261*4882a593Smuzhiyun
262*4882a593Smuzhiyun		atmel,ssc-controller = <&ssc0>;
263*4882a593Smuzhiyun		atmel,audio-codec = <&wm8904>;
264*4882a593Smuzhiyun	};
265*4882a593Smuzhiyun};
266