imx27.dtsi 14.3 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11
/*
 * Copyright 2012 Sascha Hauer, Pengutronix
 *
 * The code contained herein is licensed under the GNU General Public
 * License. You may obtain a copy of the GNU General Public License
 * Version 2 or later at the following locations:
 *
 * http://www.opensource.org/licenses/gpl-license.html
 * http://www.gnu.org/copyleft/gpl.html
 */

12
#include "skeleton.dtsi"
13
#include "imx27-pinfunc.h"
14 15 16

#include <dt-bindings/clock/imx27-clock.h>
#include <dt-bindings/gpio/gpio.h>
17
#include <dt-bindings/input/input.h>
18
#include <dt-bindings/interrupt-controller/irq.h>
19 20 21

/ {
	aliases {
22
		ethernet0 = &fec;
S
Shawn Guo 已提交
23 24 25 26 27 28
		gpio0 = &gpio1;
		gpio1 = &gpio2;
		gpio2 = &gpio3;
		gpio3 = &gpio4;
		gpio4 = &gpio5;
		gpio5 = &gpio6;
S
Sascha Hauer 已提交
29 30 31 32 33 34 35 36
		i2c0 = &i2c1;
		i2c1 = &i2c2;
		serial0 = &uart1;
		serial1 = &uart2;
		serial2 = &uart3;
		serial3 = &uart4;
		serial4 = &uart5;
		serial5 = &uart6;
37 38 39
		spi0 = &cspi1;
		spi1 = &cspi2;
		spi2 = &cspi3;
40 41
	};

42 43
	aitc: aitc-interrupt-controller@e0000000 {
		compatible = "fsl,imx27-aitc", "fsl,avic";
44 45 46 47 48 49 50 51 52 53 54
		interrupt-controller;
		#interrupt-cells = <1>;
		reg = <0x10040000 0x1000>;
	};

	clocks {
		#address-cells = <1>;
		#size-cells = <0>;

		osc26m {
			compatible = "fsl,imx-osc26m", "fixed-clock";
55
			#clock-cells = <0>;
56 57 58 59
			clock-frequency = <26000000>;
		};
	};

60 61 62 63
	cpus {
		#size-cells = <0>;
		#address-cells = <1>;

64
		cpu: cpu@0 {
65 66 67
			device_type = "cpu";
			compatible = "arm,arm926ej-s";
			operating-points = <
68 69 70
				/* kHz uV */
				266000 1300000
				399000 1450000
71
			>;
72
			clock-latency = <62500>;
73
			clocks = <&clks IMX27_CLK_CPU_DIV>;
74
			voltage-tolerance = <5>;
75 76 77
		};
	};

78 79 80 81
	soc {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "simple-bus";
82
		interrupt-parent = <&aitc>;
83 84 85 86 87 88
		ranges;

		aipi@10000000 { /* AIPI1 */
			compatible = "fsl,aipi-bus", "simple-bus";
			#address-cells = <1>;
			#size-cells = <1>;
89
			reg = <0x10000000 0x20000>;
90 91
			ranges;

92 93 94 95
			dma: dma@10001000 {
				compatible = "fsl,imx27-dma";
				reg = <0x10001000 0x1000>;
				interrupts = <32>;
96 97
				clocks = <&clks IMX27_CLK_DMA_IPG_GATE>,
					 <&clks IMX27_CLK_DMA_AHB_GATE>;
98 99 100 101 102
				clock-names = "ipg", "ahb";
				#dma-cells = <1>;
				#dma-channels = <16>;
			};

103
			wdog: wdog@10002000 {
104
				compatible = "fsl,imx27-wdt", "fsl,imx21-wdt";
105
				reg = <0x10002000 0x1000>;
106
				interrupts = <27>;
107
				clocks = <&clks IMX27_CLK_WDOG_IPG_GATE>;
108 109
			};

110
			gpt1: timer@10003000 {
111
				compatible = "fsl,imx27-gpt", "fsl,imx21-gpt";
112 113
				reg = <0x10003000 0x1000>;
				interrupts = <26>;
114 115
				clocks = <&clks IMX27_CLK_GPT1_IPG_GATE>,
					 <&clks IMX27_CLK_PER1_GATE>;
116
				clock-names = "ipg", "per";
117 118 119
			};

			gpt2: timer@10004000 {
120
				compatible = "fsl,imx27-gpt", "fsl,imx21-gpt";
121 122
				reg = <0x10004000 0x1000>;
				interrupts = <25>;
123 124
				clocks = <&clks IMX27_CLK_GPT2_IPG_GATE>,
					 <&clks IMX27_CLK_PER1_GATE>;
125
				clock-names = "ipg", "per";
126 127 128
			};

			gpt3: timer@10005000 {
129
				compatible = "fsl,imx27-gpt", "fsl,imx21-gpt";
130 131
				reg = <0x10005000 0x1000>;
				interrupts = <24>;
132 133
				clocks = <&clks IMX27_CLK_GPT3_IPG_GATE>,
					 <&clks IMX27_CLK_PER1_GATE>;
134
				clock-names = "ipg", "per";
135 136
			};

137
			pwm: pwm@10006000 {
138
				#pwm-cells = <2>;
139 140 141
				compatible = "fsl,imx27-pwm";
				reg = <0x10006000 0x1000>;
				interrupts = <23>;
142 143
				clocks = <&clks IMX27_CLK_PWM_IPG_GATE>,
					 <&clks IMX27_CLK_PER1_GATE>;
144 145 146
				clock-names = "ipg", "per";
			};

147 148 149 150
			kpp: kpp@10008000 {
				compatible = "fsl,imx27-kpp", "fsl,imx21-kpp";
				reg = <0x10008000 0x1000>;
				interrupts = <21>;
151
				clocks = <&clks IMX27_CLK_KPP_IPG_GATE>;
152 153 154
				status = "disabled";
			};

M
Markus Pargmann 已提交
155 156 157
			owire: owire@10009000 {
				compatible = "fsl,imx27-owire", "fsl,imx21-owire";
				reg = <0x10009000 0x1000>;
158
				clocks = <&clks IMX27_CLK_OWIRE_IPG_GATE>;
M
Markus Pargmann 已提交
159 160 161
				status = "disabled";
			};

162
			uart1: serial@1000a000 {
163 164 165
				compatible = "fsl,imx27-uart", "fsl,imx21-uart";
				reg = <0x1000a000 0x1000>;
				interrupts = <20>;
166 167
				clocks = <&clks IMX27_CLK_UART1_IPG_GATE>,
					 <&clks IMX27_CLK_PER1_GATE>;
168
				clock-names = "ipg", "per";
169 170 171
				status = "disabled";
			};

172
			uart2: serial@1000b000 {
173 174 175
				compatible = "fsl,imx27-uart", "fsl,imx21-uart";
				reg = <0x1000b000 0x1000>;
				interrupts = <19>;
176 177
				clocks = <&clks IMX27_CLK_UART2_IPG_GATE>,
					 <&clks IMX27_CLK_PER1_GATE>;
178
				clock-names = "ipg", "per";
179 180 181
				status = "disabled";
			};

182
			uart3: serial@1000c000 {
183 184 185
				compatible = "fsl,imx27-uart", "fsl,imx21-uart";
				reg = <0x1000c000 0x1000>;
				interrupts = <18>;
186 187
				clocks = <&clks IMX27_CLK_UART3_IPG_GATE>,
					 <&clks IMX27_CLK_PER1_GATE>;
188
				clock-names = "ipg", "per";
189 190 191
				status = "disabled";
			};

192
			uart4: serial@1000d000 {
193 194 195
				compatible = "fsl,imx27-uart", "fsl,imx21-uart";
				reg = <0x1000d000 0x1000>;
				interrupts = <17>;
196 197
				clocks = <&clks IMX27_CLK_UART4_IPG_GATE>,
					 <&clks IMX27_CLK_PER1_GATE>;
198
				clock-names = "ipg", "per";
199 200 201 202 203 204 205 206 207
				status = "disabled";
			};

			cspi1: cspi@1000e000 {
				#address-cells = <1>;
				#size-cells = <0>;
				compatible = "fsl,imx27-cspi";
				reg = <0x1000e000 0x1000>;
				interrupts = <16>;
208 209
				clocks = <&clks IMX27_CLK_CSPI1_IPG_GATE>,
					 <&clks IMX27_CLK_PER2_GATE>;
210
				clock-names = "ipg", "per";
211 212 213 214 215 216 217 218 219
				status = "disabled";
			};

			cspi2: cspi@1000f000 {
				#address-cells = <1>;
				#size-cells = <0>;
				compatible = "fsl,imx27-cspi";
				reg = <0x1000f000 0x1000>;
				interrupts = <15>;
220 221
				clocks = <&clks IMX27_CLK_CSPI2_IPG_GATE>,
					 <&clks IMX27_CLK_PER2_GATE>;
222
				clock-names = "ipg", "per";
223 224 225
				status = "disabled";
			};

226 227 228 229 230
			ssi1: ssi@10010000 {
				#sound-dai-cells = <0>;
				compatible = "fsl,imx27-ssi", "fsl,imx21-ssi";
				reg = <0x10010000 0x1000>;
				interrupts = <14>;
231
				clocks = <&clks IMX27_CLK_SSI1_IPG_GATE>;
232 233 234 235 236 237 238 239 240 241 242
				dmas = <&dma 12>, <&dma 13>, <&dma 14>, <&dma 15>;
				dma-names = "rx0", "tx0", "rx1", "tx1";
				fsl,fifo-depth = <8>;
				status = "disabled";
			};

			ssi2: ssi@10011000 {
				#sound-dai-cells = <0>;
				compatible = "fsl,imx27-ssi", "fsl,imx21-ssi";
				reg = <0x10011000 0x1000>;
				interrupts = <13>;
243
				clocks = <&clks IMX27_CLK_SSI2_IPG_GATE>;
244 245 246 247 248 249
				dmas = <&dma 8>, <&dma 9>, <&dma 10>, <&dma 11>;
				dma-names = "rx0", "tx0", "rx1", "tx1";
				fsl,fifo-depth = <8>;
				status = "disabled";
			};

250 251 252
			i2c1: i2c@10012000 {
				#address-cells = <1>;
				#size-cells = <0>;
253
				compatible = "fsl,imx27-i2c", "fsl,imx21-i2c";
254 255
				reg = <0x10012000 0x1000>;
				interrupts = <12>;
256
				clocks = <&clks IMX27_CLK_I2C1_IPG_GATE>;
257 258 259
				status = "disabled";
			};

260 261 262 263
			sdhci1: sdhci@10013000 {
				compatible = "fsl,imx27-mmc", "fsl,imx21-mmc";
				reg = <0x10013000 0x1000>;
				interrupts = <11>;
264 265
				clocks = <&clks IMX27_CLK_SDHC1_IPG_GATE>,
					 <&clks IMX27_CLK_PER2_GATE>;
266 267 268 269 270 271 272 273 274 275
				clock-names = "ipg", "per";
				dmas = <&dma 7>;
				dma-names = "rx-tx";
				status = "disabled";
			};

			sdhci2: sdhci@10014000 {
				compatible = "fsl,imx27-mmc", "fsl,imx21-mmc";
				reg = <0x10014000 0x1000>;
				interrupts = <10>;
276 277
				clocks = <&clks IMX27_CLK_SDHC2_IPG_GATE>,
					 <&clks IMX27_CLK_PER2_GATE>;
278 279 280 281 282 283
				clock-names = "ipg", "per";
				dmas = <&dma 6>;
				dma-names = "rx-tx";
				status = "disabled";
			};

284 285 286 287 288 289 290 291 292 293
			iomuxc: iomuxc@10015000 {
				compatible = "fsl,imx27-iomuxc";
				reg = <0x10015000 0x600>;
				#address-cells = <1>;
				#size-cells = <1>;
				ranges;

				gpio1: gpio@10015000 {
					compatible = "fsl,imx27-gpio", "fsl,imx21-gpio";
					reg = <0x10015000 0x100>;
294
					clocks = <&clks IMX27_CLK_GPIO_IPG_GATE>;
295 296 297 298 299 300 301 302 303 304
					interrupts = <8>;
					gpio-controller;
					#gpio-cells = <2>;
					interrupt-controller;
					#interrupt-cells = <2>;
				};

				gpio2: gpio@10015100 {
					compatible = "fsl,imx27-gpio", "fsl,imx21-gpio";
					reg = <0x10015100 0x100>;
305
					clocks = <&clks IMX27_CLK_GPIO_IPG_GATE>;
306 307 308 309 310 311 312 313 314 315
					interrupts = <8>;
					gpio-controller;
					#gpio-cells = <2>;
					interrupt-controller;
					#interrupt-cells = <2>;
				};

				gpio3: gpio@10015200 {
					compatible = "fsl,imx27-gpio", "fsl,imx21-gpio";
					reg = <0x10015200 0x100>;
316
					clocks = <&clks IMX27_CLK_GPIO_IPG_GATE>;
317 318 319 320 321 322 323 324 325 326
					interrupts = <8>;
					gpio-controller;
					#gpio-cells = <2>;
					interrupt-controller;
					#interrupt-cells = <2>;
				};

				gpio4: gpio@10015300 {
					compatible = "fsl,imx27-gpio", "fsl,imx21-gpio";
					reg = <0x10015300 0x100>;
327
					clocks = <&clks IMX27_CLK_GPIO_IPG_GATE>;
328 329 330 331 332 333 334 335 336 337
					interrupts = <8>;
					gpio-controller;
					#gpio-cells = <2>;
					interrupt-controller;
					#interrupt-cells = <2>;
				};

				gpio5: gpio@10015400 {
					compatible = "fsl,imx27-gpio", "fsl,imx21-gpio";
					reg = <0x10015400 0x100>;
338
					clocks = <&clks IMX27_CLK_GPIO_IPG_GATE>;
339 340 341 342 343 344 345 346 347 348
					interrupts = <8>;
					gpio-controller;
					#gpio-cells = <2>;
					interrupt-controller;
					#interrupt-cells = <2>;
				};

				gpio6: gpio@10015500 {
					compatible = "fsl,imx27-gpio", "fsl,imx21-gpio";
					reg = <0x10015500 0x100>;
349
					clocks = <&clks IMX27_CLK_GPIO_IPG_GATE>;
350 351 352 353 354 355
					interrupts = <8>;
					gpio-controller;
					#gpio-cells = <2>;
					interrupt-controller;
					#interrupt-cells = <2>;
				};
356 357
			};

358 359 360
			audmux: audmux@10016000 {
				compatible = "fsl,imx27-audmux", "fsl,imx21-audmux";
				reg = <0x10016000 0x1000>;
361
				clocks = <&clks IMX27_CLK_DUMMY>;
362
				clock-names = "audmux";
363
				status = "disabled";
364 365
			};

366 367 368 369 370 371
			cspi3: cspi@10017000 {
				#address-cells = <1>;
				#size-cells = <0>;
				compatible = "fsl,imx27-cspi";
				reg = <0x10017000 0x1000>;
				interrupts = <6>;
372 373
				clocks = <&clks IMX27_CLK_CSPI3_IPG_GATE>,
					 <&clks IMX27_CLK_PER2_GATE>;
374
				clock-names = "ipg", "per";
375 376 377
				status = "disabled";
			};

378
			gpt4: timer@10019000 {
379
				compatible = "fsl,imx27-gpt", "fsl,imx21-gpt";
380 381
				reg = <0x10019000 0x1000>;
				interrupts = <4>;
382 383
				clocks = <&clks IMX27_CLK_GPT4_IPG_GATE>,
					 <&clks IMX27_CLK_PER1_GATE>;
384
				clock-names = "ipg", "per";
385 386 387
			};

			gpt5: timer@1001a000 {
388
				compatible = "fsl,imx27-gpt", "fsl,imx21-gpt";
389 390
				reg = <0x1001a000 0x1000>;
				interrupts = <3>;
391 392
				clocks = <&clks IMX27_CLK_GPT5_IPG_GATE>,
					 <&clks IMX27_CLK_PER1_GATE>;
393
				clock-names = "ipg", "per";
394 395
			};

396
			uart5: serial@1001b000 {
397 398 399
				compatible = "fsl,imx27-uart", "fsl,imx21-uart";
				reg = <0x1001b000 0x1000>;
				interrupts = <49>;
400 401
				clocks = <&clks IMX27_CLK_UART5_IPG_GATE>,
					 <&clks IMX27_CLK_PER1_GATE>;
402
				clock-names = "ipg", "per";
403 404 405
				status = "disabled";
			};

406
			uart6: serial@1001c000 {
407 408 409
				compatible = "fsl,imx27-uart", "fsl,imx21-uart";
				reg = <0x1001c000 0x1000>;
				interrupts = <48>;
410 411
				clocks = <&clks IMX27_CLK_UART6_IPG_GATE>,
					 <&clks IMX27_CLK_PER1_GATE>;
412
				clock-names = "ipg", "per";
413 414 415 416 417 418
				status = "disabled";
			};

			i2c2: i2c@1001d000 {
				#address-cells = <1>;
				#size-cells = <0>;
419
				compatible = "fsl,imx27-i2c", "fsl,imx21-i2c";
420 421
				reg = <0x1001d000 0x1000>;
				interrupts = <1>;
422
				clocks = <&clks IMX27_CLK_I2C2_IPG_GATE>;
423 424 425
				status = "disabled";
			};

426 427 428 429
			sdhci3: sdhci@1001e000 {
				compatible = "fsl,imx27-mmc", "fsl,imx21-mmc";
				reg = <0x1001e000 0x1000>;
				interrupts = <9>;
430 431
				clocks = <&clks IMX27_CLK_SDHC3_IPG_GATE>,
					 <&clks IMX27_CLK_PER2_GATE>;
432 433 434 435 436 437
				clock-names = "ipg", "per";
				dmas = <&dma 36>;
				dma-names = "rx-tx";
				status = "disabled";
			};

438
			gpt6: timer@1001f000 {
439
				compatible = "fsl,imx27-gpt", "fsl,imx21-gpt";
440 441
				reg = <0x1001f000 0x1000>;
				interrupts = <2>;
442 443
				clocks = <&clks IMX27_CLK_GPT6_IPG_GATE>,
					 <&clks IMX27_CLK_PER1_GATE>;
444
				clock-names = "ipg", "per";
445
			};
446 447 448 449 450 451 452 453 454
		};

		aipi@10020000 { /* AIPI2 */
			compatible = "fsl,aipi-bus", "simple-bus";
			#address-cells = <1>;
			#size-cells = <1>;
			reg = <0x10020000 0x20000>;
			ranges;

455 456 457 458
			fb: fb@10021000 {
				compatible = "fsl,imx27-fb", "fsl,imx21-fb";
				interrupts = <61>;
				reg = <0x10021000 0x1000>;
459 460 461
				clocks = <&clks IMX27_CLK_LCDC_IPG_GATE>,
					 <&clks IMX27_CLK_LCDC_AHB_GATE>,
					 <&clks IMX27_CLK_PER3_GATE>;
462 463 464 465
				clock-names = "ipg", "ahb", "per";
				status = "disabled";
			};

466
			coda: coda@10023000 {
467
				compatible = "fsl,imx27-vpu", "cnm,codadx6";
468 469
				reg = <0x10023000 0x0200>;
				interrupts = <53>;
470 471
				clocks = <&clks IMX27_CLK_VPU_BAUD_GATE>,
					 <&clks IMX27_CLK_VPU_AHB_GATE>;
472 473 474 475
				clock-names = "per", "ahb";
				iram = <&iram>;
			};

476 477 478 479
			usbotg: usb@10024000 {
				compatible = "fsl,imx27-usb";
				reg = <0x10024000 0x200>;
				interrupts = <56>;
480
				clocks = <&clks IMX27_CLK_USB_IPG_GATE>;
481 482 483 484 485 486 487 488
				fsl,usbmisc = <&usbmisc 0>;
				status = "disabled";
			};

			usbh1: usb@10024200 {
				compatible = "fsl,imx27-usb";
				reg = <0x10024200 0x200>;
				interrupts = <54>;
489
				clocks = <&clks IMX27_CLK_USB_IPG_GATE>;
490
				fsl,usbmisc = <&usbmisc 1>;
491
				dr_mode = "host";
492 493 494 495 496 497 498
				status = "disabled";
			};

			usbh2: usb@10024400 {
				compatible = "fsl,imx27-usb";
				reg = <0x10024400 0x200>;
				interrupts = <55>;
499
				clocks = <&clks IMX27_CLK_USB_IPG_GATE>;
500
				fsl,usbmisc = <&usbmisc 2>;
501
				dr_mode = "host";
502 503 504 505 506 507 508
				status = "disabled";
			};

			usbmisc: usbmisc@10024600 {
				#index-cells = <1>;
				compatible = "fsl,imx27-usbmisc";
				reg = <0x10024600 0x200>;
509
				clocks = <&clks IMX27_CLK_USB_AHB_GATE>;
510 511
			};

512 513 514 515
			sahara2: sahara@10025000 {
				compatible = "fsl,imx27-sahara";
				reg = <0x10025000 0x1000>;
				interrupts = <59>;
516 517
				clocks = <&clks IMX27_CLK_SAHARA_IPG_GATE>,
					 <&clks IMX27_CLK_SAHARA_AHB_GATE>;
518 519 520
				clock-names = "ipg", "ahb";
			};

521 522 523 524 525 526
			clks: ccm@10027000{
				compatible = "fsl,imx27-ccm";
				reg = <0x10027000 0x1000>;
				#clock-cells = <1>;
			};

527 528 529 530
			iim: iim@10028000 {
				compatible = "fsl,imx27-iim";
				reg = <0x10028000 0x1000>;
				interrupts = <62>;
531
				clocks = <&clks IMX27_CLK_IIM_IPG_GATE>;
532 533
			};

534
			fec: ethernet@1002b000 {
535
				compatible = "fsl,imx27-fec";
536
				reg = <0x1002b000 0x1000>;
537
				interrupts = <50>;
538 539
				clocks = <&clks IMX27_CLK_FEC_IPG_GATE>,
					 <&clks IMX27_CLK_FEC_AHB_GATE>;
540
				clock-names = "ipg", "ahb";
541 542 543
				status = "disabled";
			};
		};
544 545

		nfc: nand@d8000000 {
546 547 548 549 550
			#address-cells = <1>;
			#size-cells = <1>;
			compatible = "fsl,imx27-nand";
			reg = <0xd8000000 0x1000>;
			interrupts = <29>;
551
			clocks = <&clks IMX27_CLK_NFC_BAUD_GATE>;
552 553
			status = "disabled";
		};
554

555 556 557 558 559
		weim: weim@d8002000 {
			#address-cells = <2>;
			#size-cells = <1>;
			compatible = "fsl,imx27-weim";
			reg = <0xd8002000 0x1000>;
560
			clocks = <&clks IMX27_CLK_EMI_AHB_GATE>;
561 562 563 564 565 566 567 568 569 570 571
			ranges = <
				0 0 0xc0000000 0x08000000
				1 0 0xc8000000 0x08000000
				2 0 0xd0000000 0x02000000
				3 0 0xd2000000 0x02000000
				4 0 0xd4000000 0x02000000
				5 0 0xd6000000 0x02000000
			>;
			status = "disabled";
		};

572 573 574 575
		iram: iram@ffff4c00 {
			compatible = "mmio-sram";
			reg = <0xffff4c00 0xb400>;
		};
576 577
	};
};