imx51.dtsi 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602
  1. /*
  2. * Copyright 2011 Freescale Semiconductor, Inc.
  3. * Copyright 2011 Linaro Ltd.
  4. *
  5. * The code contained herein is licensed under the GNU General Public
  6. * License. You may obtain a copy of the GNU General Public License
  7. * Version 2 or later at the following locations:
  8. *
  9. * http://www.opensource.org/licenses/gpl-license.html
  10. * http://www.gnu.org/copyleft/gpl.html
  11. */
  12. #include "imx51-pinfunc.h"
  13. #include <dt-bindings/clock/imx5-clock.h>
  14. #include <dt-bindings/gpio/gpio.h>
  15. #include <dt-bindings/input/input.h>
  16. #include <dt-bindings/interrupt-controller/irq.h>
  17. / {
  18. #address-cells = <1>;
  19. #size-cells = <1>;
  20. /*
  21. * The decompressor and also some bootloaders rely on a
  22. * pre-existing /chosen node to be available to insert the
  23. * command line and merge other ATAGS info.
  24. * Also for U-Boot there must be a pre-existing /memory node.
  25. */
  26. chosen {};
  27. memory { device_type = "memory"; reg = <0 0>; };
  28. aliases {
  29. ethernet0 = &fec;
  30. gpio0 = &gpio1;
  31. gpio1 = &gpio2;
  32. gpio2 = &gpio3;
  33. gpio3 = &gpio4;
  34. i2c0 = &i2c1;
  35. i2c1 = &i2c2;
  36. mmc0 = &esdhc1;
  37. mmc1 = &esdhc2;
  38. mmc2 = &esdhc3;
  39. mmc3 = &esdhc4;
  40. serial0 = &uart1;
  41. serial1 = &uart2;
  42. serial2 = &uart3;
  43. spi0 = &ecspi1;
  44. spi1 = &ecspi2;
  45. spi2 = &cspi;
  46. };
  47. tzic: tz-interrupt-controller@e0000000 {
  48. compatible = "fsl,imx51-tzic", "fsl,tzic";
  49. interrupt-controller;
  50. #interrupt-cells = <1>;
  51. reg = <0xe0000000 0x4000>;
  52. };
  53. clocks {
  54. #address-cells = <1>;
  55. #size-cells = <0>;
  56. ckil {
  57. compatible = "fsl,imx-ckil", "fixed-clock";
  58. #clock-cells = <0>;
  59. clock-frequency = <32768>;
  60. };
  61. ckih1 {
  62. compatible = "fsl,imx-ckih1", "fixed-clock";
  63. #clock-cells = <0>;
  64. clock-frequency = <0>;
  65. };
  66. ckih2 {
  67. compatible = "fsl,imx-ckih2", "fixed-clock";
  68. #clock-cells = <0>;
  69. clock-frequency = <0>;
  70. };
  71. osc {
  72. compatible = "fsl,imx-osc", "fixed-clock";
  73. #clock-cells = <0>;
  74. clock-frequency = <24000000>;
  75. };
  76. };
  77. cpus {
  78. #address-cells = <1>;
  79. #size-cells = <0>;
  80. cpu: cpu@0 {
  81. device_type = "cpu";
  82. compatible = "arm,cortex-a8";
  83. reg = <0>;
  84. clock-latency = <62500>;
  85. clocks = <&clks IMX5_CLK_CPU_PODF>;
  86. clock-names = "cpu";
  87. operating-points = <
  88. 166000 1000000
  89. 600000 1050000
  90. 800000 1100000
  91. >;
  92. voltage-tolerance = <5>;
  93. };
  94. };
  95. usbphy {
  96. #address-cells = <1>;
  97. #size-cells = <0>;
  98. compatible = "simple-bus";
  99. usbphy0: usbphy@0 {
  100. compatible = "usb-nop-xceiv";
  101. reg = <0>;
  102. clocks = <&clks IMX5_CLK_USB_PHY_GATE>;
  103. clock-names = "main_clk";
  104. };
  105. };
  106. display-subsystem {
  107. compatible = "fsl,imx-display-subsystem";
  108. ports = <&ipu_di0>, <&ipu_di1>;
  109. };
  110. soc {
  111. #address-cells = <1>;
  112. #size-cells = <1>;
  113. compatible = "simple-bus";
  114. interrupt-parent = <&tzic>;
  115. ranges;
  116. iram: iram@1ffe0000 {
  117. compatible = "mmio-sram";
  118. reg = <0x1ffe0000 0x20000>;
  119. };
  120. ipu: ipu@40000000 {
  121. #address-cells = <1>;
  122. #size-cells = <0>;
  123. compatible = "fsl,imx51-ipu";
  124. reg = <0x40000000 0x20000000>;
  125. interrupts = <11 10>;
  126. clocks = <&clks IMX5_CLK_IPU_GATE>,
  127. <&clks IMX5_CLK_IPU_DI0_GATE>,
  128. <&clks IMX5_CLK_IPU_DI1_GATE>;
  129. clock-names = "bus", "di0", "di1";
  130. resets = <&src 2>;
  131. ipu_di0: port@2 {
  132. reg = <2>;
  133. ipu_di0_disp0: endpoint {
  134. };
  135. };
  136. ipu_di1: port@3 {
  137. reg = <3>;
  138. ipu_di1_disp1: endpoint {
  139. };
  140. };
  141. };
  142. aips@70000000 { /* AIPS1 */
  143. compatible = "fsl,aips-bus", "simple-bus";
  144. #address-cells = <1>;
  145. #size-cells = <1>;
  146. reg = <0x70000000 0x10000000>;
  147. ranges;
  148. spba@70000000 {
  149. compatible = "fsl,spba-bus", "simple-bus";
  150. #address-cells = <1>;
  151. #size-cells = <1>;
  152. reg = <0x70000000 0x40000>;
  153. ranges;
  154. esdhc1: esdhc@70004000 {
  155. compatible = "fsl,imx51-esdhc";
  156. reg = <0x70004000 0x4000>;
  157. interrupts = <1>;
  158. clocks = <&clks IMX5_CLK_ESDHC1_IPG_GATE>,
  159. <&clks IMX5_CLK_DUMMY>,
  160. <&clks IMX5_CLK_ESDHC1_PER_GATE>;
  161. clock-names = "ipg", "ahb", "per";
  162. status = "disabled";
  163. };
  164. esdhc2: esdhc@70008000 {
  165. compatible = "fsl,imx51-esdhc";
  166. reg = <0x70008000 0x4000>;
  167. interrupts = <2>;
  168. clocks = <&clks IMX5_CLK_ESDHC2_IPG_GATE>,
  169. <&clks IMX5_CLK_DUMMY>,
  170. <&clks IMX5_CLK_ESDHC2_PER_GATE>;
  171. clock-names = "ipg", "ahb", "per";
  172. bus-width = <4>;
  173. status = "disabled";
  174. };
  175. uart3: serial@7000c000 {
  176. compatible = "fsl,imx51-uart", "fsl,imx21-uart";
  177. reg = <0x7000c000 0x4000>;
  178. interrupts = <33>;
  179. clocks = <&clks IMX5_CLK_UART3_IPG_GATE>,
  180. <&clks IMX5_CLK_UART3_PER_GATE>;
  181. clock-names = "ipg", "per";
  182. status = "disabled";
  183. };
  184. ecspi1: ecspi@70010000 {
  185. #address-cells = <1>;
  186. #size-cells = <0>;
  187. compatible = "fsl,imx51-ecspi";
  188. reg = <0x70010000 0x4000>;
  189. interrupts = <36>;
  190. clocks = <&clks IMX5_CLK_ECSPI1_IPG_GATE>,
  191. <&clks IMX5_CLK_ECSPI1_PER_GATE>;
  192. clock-names = "ipg", "per";
  193. status = "disabled";
  194. };
  195. ssi2: ssi@70014000 {
  196. #sound-dai-cells = <0>;
  197. compatible = "fsl,imx51-ssi", "fsl,imx21-ssi";
  198. reg = <0x70014000 0x4000>;
  199. interrupts = <30>;
  200. clocks = <&clks IMX5_CLK_SSI2_IPG_GATE>,
  201. <&clks IMX5_CLK_SSI2_ROOT_GATE>;
  202. clock-names = "ipg", "baud";
  203. dmas = <&sdma 24 1 0>,
  204. <&sdma 25 1 0>;
  205. dma-names = "rx", "tx";
  206. fsl,fifo-depth = <15>;
  207. status = "disabled";
  208. };
  209. esdhc3: esdhc@70020000 {
  210. compatible = "fsl,imx51-esdhc";
  211. reg = <0x70020000 0x4000>;
  212. interrupts = <3>;
  213. clocks = <&clks IMX5_CLK_ESDHC3_IPG_GATE>,
  214. <&clks IMX5_CLK_DUMMY>,
  215. <&clks IMX5_CLK_ESDHC3_PER_GATE>;
  216. clock-names = "ipg", "ahb", "per";
  217. bus-width = <4>;
  218. status = "disabled";
  219. };
  220. esdhc4: esdhc@70024000 {
  221. compatible = "fsl,imx51-esdhc";
  222. reg = <0x70024000 0x4000>;
  223. interrupts = <4>;
  224. clocks = <&clks IMX5_CLK_ESDHC4_IPG_GATE>,
  225. <&clks IMX5_CLK_DUMMY>,
  226. <&clks IMX5_CLK_ESDHC4_PER_GATE>;
  227. clock-names = "ipg", "ahb", "per";
  228. bus-width = <4>;
  229. status = "disabled";
  230. };
  231. };
  232. usbotg: usb@73f80000 {
  233. compatible = "fsl,imx51-usb", "fsl,imx27-usb";
  234. reg = <0x73f80000 0x0200>;
  235. interrupts = <18>;
  236. clocks = <&clks IMX5_CLK_USBOH3_GATE>;
  237. fsl,usbmisc = <&usbmisc 0>;
  238. fsl,usbphy = <&usbphy0>;
  239. status = "disabled";
  240. };
  241. usbh1: usb@73f80200 {
  242. compatible = "fsl,imx51-usb", "fsl,imx27-usb";
  243. reg = <0x73f80200 0x0200>;
  244. interrupts = <14>;
  245. clocks = <&clks IMX5_CLK_USBOH3_GATE>;
  246. fsl,usbmisc = <&usbmisc 1>;
  247. dr_mode = "host";
  248. status = "disabled";
  249. };
  250. usbh2: usb@73f80400 {
  251. compatible = "fsl,imx51-usb", "fsl,imx27-usb";
  252. reg = <0x73f80400 0x0200>;
  253. interrupts = <16>;
  254. clocks = <&clks IMX5_CLK_USBOH3_GATE>;
  255. fsl,usbmisc = <&usbmisc 2>;
  256. dr_mode = "host";
  257. status = "disabled";
  258. };
  259. usbh3: usb@73f80600 {
  260. compatible = "fsl,imx51-usb", "fsl,imx27-usb";
  261. reg = <0x73f80600 0x0200>;
  262. interrupts = <17>;
  263. clocks = <&clks IMX5_CLK_USBOH3_GATE>;
  264. fsl,usbmisc = <&usbmisc 3>;
  265. dr_mode = "host";
  266. status = "disabled";
  267. };
  268. usbmisc: usbmisc@73f80800 {
  269. #index-cells = <1>;
  270. compatible = "fsl,imx51-usbmisc";
  271. reg = <0x73f80800 0x200>;
  272. clocks = <&clks IMX5_CLK_USBOH3_GATE>;
  273. };
  274. gpio1: gpio@73f84000 {
  275. compatible = "fsl,imx51-gpio", "fsl,imx35-gpio";
  276. reg = <0x73f84000 0x4000>;
  277. interrupts = <50 51>;
  278. gpio-controller;
  279. #gpio-cells = <2>;
  280. interrupt-controller;
  281. #interrupt-cells = <2>;
  282. };
  283. gpio2: gpio@73f88000 {
  284. compatible = "fsl,imx51-gpio", "fsl,imx35-gpio";
  285. reg = <0x73f88000 0x4000>;
  286. interrupts = <52 53>;
  287. gpio-controller;
  288. #gpio-cells = <2>;
  289. interrupt-controller;
  290. #interrupt-cells = <2>;
  291. };
  292. gpio3: gpio@73f8c000 {
  293. compatible = "fsl,imx51-gpio", "fsl,imx35-gpio";
  294. reg = <0x73f8c000 0x4000>;
  295. interrupts = <54 55>;
  296. gpio-controller;
  297. #gpio-cells = <2>;
  298. interrupt-controller;
  299. #interrupt-cells = <2>;
  300. };
  301. gpio4: gpio@73f90000 {
  302. compatible = "fsl,imx51-gpio", "fsl,imx35-gpio";
  303. reg = <0x73f90000 0x4000>;
  304. interrupts = <56 57>;
  305. gpio-controller;
  306. #gpio-cells = <2>;
  307. interrupt-controller;
  308. #interrupt-cells = <2>;
  309. };
  310. kpp: kpp@73f94000 {
  311. compatible = "fsl,imx51-kpp", "fsl,imx21-kpp";
  312. reg = <0x73f94000 0x4000>;
  313. interrupts = <60>;
  314. clocks = <&clks IMX5_CLK_DUMMY>;
  315. status = "disabled";
  316. };
  317. wdog1: wdog@73f98000 {
  318. compatible = "fsl,imx51-wdt", "fsl,imx21-wdt";
  319. reg = <0x73f98000 0x4000>;
  320. interrupts = <58>;
  321. clocks = <&clks IMX5_CLK_DUMMY>;
  322. };
  323. wdog2: wdog@73f9c000 {
  324. compatible = "fsl,imx51-wdt", "fsl,imx21-wdt";
  325. reg = <0x73f9c000 0x4000>;
  326. interrupts = <59>;
  327. clocks = <&clks IMX5_CLK_DUMMY>;
  328. status = "disabled";
  329. };
  330. gpt: timer@73fa0000 {
  331. compatible = "fsl,imx51-gpt", "fsl,imx31-gpt";
  332. reg = <0x73fa0000 0x4000>;
  333. interrupts = <39>;
  334. clocks = <&clks IMX5_CLK_GPT_IPG_GATE>,
  335. <&clks IMX5_CLK_GPT_HF_GATE>;
  336. clock-names = "ipg", "per";
  337. };
  338. iomuxc: iomuxc@73fa8000 {
  339. compatible = "fsl,imx51-iomuxc";
  340. reg = <0x73fa8000 0x4000>;
  341. };
  342. pwm1: pwm@73fb4000 {
  343. #pwm-cells = <2>;
  344. compatible = "fsl,imx51-pwm", "fsl,imx27-pwm";
  345. reg = <0x73fb4000 0x4000>;
  346. clocks = <&clks IMX5_CLK_PWM1_IPG_GATE>,
  347. <&clks IMX5_CLK_PWM1_HF_GATE>;
  348. clock-names = "ipg", "per";
  349. interrupts = <61>;
  350. };
  351. pwm2: pwm@73fb8000 {
  352. #pwm-cells = <2>;
  353. compatible = "fsl,imx51-pwm", "fsl,imx27-pwm";
  354. reg = <0x73fb8000 0x4000>;
  355. clocks = <&clks IMX5_CLK_PWM2_IPG_GATE>,
  356. <&clks IMX5_CLK_PWM2_HF_GATE>;
  357. clock-names = "ipg", "per";
  358. interrupts = <94>;
  359. };
  360. uart1: serial@73fbc000 {
  361. compatible = "fsl,imx51-uart", "fsl,imx21-uart";
  362. reg = <0x73fbc000 0x4000>;
  363. interrupts = <31>;
  364. clocks = <&clks IMX5_CLK_UART1_IPG_GATE>,
  365. <&clks IMX5_CLK_UART1_PER_GATE>;
  366. clock-names = "ipg", "per";
  367. status = "disabled";
  368. };
  369. uart2: serial@73fc0000 {
  370. compatible = "fsl,imx51-uart", "fsl,imx21-uart";
  371. reg = <0x73fc0000 0x4000>;
  372. interrupts = <32>;
  373. clocks = <&clks IMX5_CLK_UART2_IPG_GATE>,
  374. <&clks IMX5_CLK_UART2_PER_GATE>;
  375. clock-names = "ipg", "per";
  376. status = "disabled";
  377. };
  378. src: src@73fd0000 {
  379. compatible = "fsl,imx51-src";
  380. reg = <0x73fd0000 0x4000>;
  381. #reset-cells = <1>;
  382. };
  383. clks: ccm@73fd4000{
  384. compatible = "fsl,imx51-ccm";
  385. reg = <0x73fd4000 0x4000>;
  386. interrupts = <0 71 0x04 0 72 0x04>;
  387. #clock-cells = <1>;
  388. };
  389. };
  390. aips@80000000 { /* AIPS2 */
  391. compatible = "fsl,aips-bus", "simple-bus";
  392. #address-cells = <1>;
  393. #size-cells = <1>;
  394. reg = <0x80000000 0x10000000>;
  395. ranges;
  396. iim: iim@83f98000 {
  397. compatible = "fsl,imx51-iim", "fsl,imx27-iim";
  398. reg = <0x83f98000 0x4000>;
  399. interrupts = <69>;
  400. clocks = <&clks IMX5_CLK_IIM_GATE>;
  401. };
  402. owire: owire@83fa4000 {
  403. compatible = "fsl,imx51-owire", "fsl,imx21-owire";
  404. reg = <0x83fa4000 0x4000>;
  405. interrupts = <88>;
  406. clocks = <&clks IMX5_CLK_OWIRE_GATE>;
  407. status = "disabled";
  408. };
  409. ecspi2: ecspi@83fac000 {
  410. #address-cells = <1>;
  411. #size-cells = <0>;
  412. compatible = "fsl,imx51-ecspi";
  413. reg = <0x83fac000 0x4000>;
  414. interrupts = <37>;
  415. clocks = <&clks IMX5_CLK_ECSPI2_IPG_GATE>,
  416. <&clks IMX5_CLK_ECSPI2_PER_GATE>;
  417. clock-names = "ipg", "per";
  418. status = "disabled";
  419. };
  420. sdma: sdma@83fb0000 {
  421. compatible = "fsl,imx51-sdma", "fsl,imx35-sdma";
  422. reg = <0x83fb0000 0x4000>;
  423. interrupts = <6>;
  424. clocks = <&clks IMX5_CLK_SDMA_GATE>,
  425. <&clks IMX5_CLK_SDMA_GATE>;
  426. clock-names = "ipg", "ahb";
  427. #dma-cells = <3>;
  428. fsl,sdma-ram-script-name = "imx/sdma/sdma-imx51.bin";
  429. };
  430. cspi: cspi@83fc0000 {
  431. #address-cells = <1>;
  432. #size-cells = <0>;
  433. compatible = "fsl,imx51-cspi", "fsl,imx35-cspi";
  434. reg = <0x83fc0000 0x4000>;
  435. interrupts = <38>;
  436. clocks = <&clks IMX5_CLK_CSPI_IPG_GATE>,
  437. <&clks IMX5_CLK_CSPI_IPG_GATE>;
  438. clock-names = "ipg", "per";
  439. status = "disabled";
  440. };
  441. i2c2: i2c@83fc4000 {
  442. #address-cells = <1>;
  443. #size-cells = <0>;
  444. compatible = "fsl,imx51-i2c", "fsl,imx21-i2c";
  445. reg = <0x83fc4000 0x4000>;
  446. interrupts = <63>;
  447. clocks = <&clks IMX5_CLK_I2C2_GATE>;
  448. status = "disabled";
  449. };
  450. i2c1: i2c@83fc8000 {
  451. #address-cells = <1>;
  452. #size-cells = <0>;
  453. compatible = "fsl,imx51-i2c", "fsl,imx21-i2c";
  454. reg = <0x83fc8000 0x4000>;
  455. interrupts = <62>;
  456. clocks = <&clks IMX5_CLK_I2C1_GATE>;
  457. status = "disabled";
  458. };
  459. ssi1: ssi@83fcc000 {
  460. #sound-dai-cells = <0>;
  461. compatible = "fsl,imx51-ssi", "fsl,imx21-ssi";
  462. reg = <0x83fcc000 0x4000>;
  463. interrupts = <29>;
  464. clocks = <&clks IMX5_CLK_SSI1_IPG_GATE>,
  465. <&clks IMX5_CLK_SSI1_ROOT_GATE>;
  466. clock-names = "ipg", "baud";
  467. dmas = <&sdma 28 0 0>,
  468. <&sdma 29 0 0>;
  469. dma-names = "rx", "tx";
  470. fsl,fifo-depth = <15>;
  471. status = "disabled";
  472. };
  473. audmux: audmux@83fd0000 {
  474. compatible = "fsl,imx51-audmux", "fsl,imx31-audmux";
  475. reg = <0x83fd0000 0x4000>;
  476. clocks = <&clks IMX5_CLK_DUMMY>;
  477. clock-names = "audmux";
  478. status = "disabled";
  479. };
  480. weim: weim@83fda000 {
  481. #address-cells = <2>;
  482. #size-cells = <1>;
  483. compatible = "fsl,imx51-weim";
  484. reg = <0x83fda000 0x1000>;
  485. clocks = <&clks IMX5_CLK_EMI_SLOW_GATE>;
  486. ranges = <
  487. 0 0 0xb0000000 0x08000000
  488. 1 0 0xb8000000 0x08000000
  489. 2 0 0xc0000000 0x08000000
  490. 3 0 0xc8000000 0x04000000
  491. 4 0 0xcc000000 0x02000000
  492. 5 0 0xce000000 0x02000000
  493. >;
  494. status = "disabled";
  495. };
  496. nfc: nand@83fdb000 {
  497. #address-cells = <1>;
  498. #size-cells = <1>;
  499. compatible = "fsl,imx51-nand";
  500. reg = <0x83fdb000 0x1000 0xcfff0000 0x10000>;
  501. interrupts = <8>;
  502. clocks = <&clks IMX5_CLK_NFC_GATE>;
  503. status = "disabled";
  504. };
  505. pata: pata@83fe0000 {
  506. compatible = "fsl,imx51-pata", "fsl,imx27-pata";
  507. reg = <0x83fe0000 0x4000>;
  508. interrupts = <70>;
  509. clocks = <&clks IMX5_CLK_PATA_GATE>;
  510. status = "disabled";
  511. };
  512. ssi3: ssi@83fe8000 {
  513. #sound-dai-cells = <0>;
  514. compatible = "fsl,imx51-ssi", "fsl,imx21-ssi";
  515. reg = <0x83fe8000 0x4000>;
  516. interrupts = <96>;
  517. clocks = <&clks IMX5_CLK_SSI3_IPG_GATE>,
  518. <&clks IMX5_CLK_SSI3_ROOT_GATE>;
  519. clock-names = "ipg", "baud";
  520. dmas = <&sdma 46 0 0>,
  521. <&sdma 47 0 0>;
  522. dma-names = "rx", "tx";
  523. fsl,fifo-depth = <15>;
  524. status = "disabled";
  525. };
  526. fec: ethernet@83fec000 {
  527. compatible = "fsl,imx51-fec", "fsl,imx27-fec";
  528. reg = <0x83fec000 0x4000>;
  529. interrupts = <87>;
  530. clocks = <&clks IMX5_CLK_FEC_GATE>,
  531. <&clks IMX5_CLK_FEC_GATE>,
  532. <&clks IMX5_CLK_FEC_GATE>;
  533. clock-names = "ipg", "ahb", "ptp";
  534. status = "disabled";
  535. };
  536. };
  537. };
  538. };