mpc5121.dtsi 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530
  1. /*
  2. * base MPC5121 Device Tree Source
  3. *
  4. * Copyright 2007-2008 Freescale Semiconductor Inc.
  5. *
  6. * This program is free software; you can redistribute it and/or modify it
  7. * under the terms of the GNU General Public License as published by the
  8. * Free Software Foundation; either version 2 of the License, or (at your
  9. * option) any later version.
  10. */
  11. #include <dt-bindings/clock/mpc512x-clock.h>
  12. /dts-v1/;
  13. / {
  14. model = "mpc5121";
  15. compatible = "fsl,mpc5121";
  16. #address-cells = <1>;
  17. #size-cells = <1>;
  18. interrupt-parent = <&ipic>;
  19. aliases {
  20. ethernet0 = &eth0;
  21. pci = &pci;
  22. };
  23. cpus {
  24. #address-cells = <1>;
  25. #size-cells = <0>;
  26. PowerPC,5121@0 {
  27. device_type = "cpu";
  28. reg = <0>;
  29. d-cache-line-size = <0x20>; /* 32 bytes */
  30. i-cache-line-size = <0x20>; /* 32 bytes */
  31. d-cache-size = <0x8000>; /* L1, 32K */
  32. i-cache-size = <0x8000>; /* L1, 32K */
  33. timebase-frequency = <49500000>;/* 49.5 MHz (csb/4) */
  34. bus-frequency = <198000000>; /* 198 MHz csb bus */
  35. clock-frequency = <396000000>; /* 396 MHz ppc core */
  36. };
  37. };
  38. memory {
  39. device_type = "memory";
  40. reg = <0x00000000 0x10000000>; /* 256MB at 0 */
  41. };
  42. mbx@20000000 {
  43. compatible = "fsl,mpc5121-mbx";
  44. reg = <0x20000000 0x4000>;
  45. interrupts = <66 0x8>;
  46. clocks = <&clks MPC512x_CLK_MBX_BUS>,
  47. <&clks MPC512x_CLK_MBX_3D>,
  48. <&clks MPC512x_CLK_MBX>;
  49. clock-names = "mbx-bus", "mbx-3d", "mbx";
  50. };
  51. sram@30000000 {
  52. compatible = "fsl,mpc5121-sram";
  53. reg = <0x30000000 0x20000>; /* 128K at 0x30000000 */
  54. };
  55. nfc@40000000 {
  56. compatible = "fsl,mpc5121-nfc";
  57. reg = <0x40000000 0x100000>; /* 1M at 0x40000000 */
  58. interrupts = <6 8>;
  59. #address-cells = <1>;
  60. #size-cells = <1>;
  61. clocks = <&clks MPC512x_CLK_NFC>;
  62. clock-names = "ipg";
  63. };
  64. localbus@80000020 {
  65. compatible = "fsl,mpc5121-localbus";
  66. #address-cells = <2>;
  67. #size-cells = <1>;
  68. reg = <0x80000020 0x40>;
  69. ranges = <0x0 0x0 0xfc000000 0x04000000>;
  70. };
  71. clocks {
  72. #address-cells = <1>;
  73. #size-cells = <0>;
  74. osc: osc {
  75. compatible = "fixed-clock";
  76. #clock-cells = <0>;
  77. clock-frequency = <33000000>;
  78. };
  79. };
  80. soc@80000000 {
  81. compatible = "fsl,mpc5121-immr";
  82. #address-cells = <1>;
  83. #size-cells = <1>;
  84. ranges = <0x0 0x80000000 0x400000>;
  85. reg = <0x80000000 0x400000>;
  86. bus-frequency = <66000000>; /* 66 MHz ips bus */
  87. /*
  88. * IPIC
  89. * interrupts cell = <intr #, sense>
  90. * sense values match linux IORESOURCE_IRQ_* defines:
  91. * sense == 8: Level, low assertion
  92. * sense == 2: Edge, high-to-low change
  93. */
  94. ipic: interrupt-controller@c00 {
  95. compatible = "fsl,mpc5121-ipic", "fsl,ipic";
  96. interrupt-controller;
  97. #address-cells = <0>;
  98. #interrupt-cells = <2>;
  99. reg = <0xc00 0x100>;
  100. };
  101. /* Watchdog timer */
  102. wdt@900 {
  103. compatible = "fsl,mpc5121-wdt";
  104. reg = <0x900 0x100>;
  105. };
  106. /* Real time clock */
  107. rtc@a00 {
  108. compatible = "fsl,mpc5121-rtc";
  109. reg = <0xa00 0x100>;
  110. interrupts = <79 0x8 80 0x8>;
  111. };
  112. /* Reset module */
  113. reset@e00 {
  114. compatible = "fsl,mpc5121-reset";
  115. reg = <0xe00 0x100>;
  116. };
  117. /* Clock control */
  118. clks: clock@f00 {
  119. compatible = "fsl,mpc5121-clock";
  120. reg = <0xf00 0x100>;
  121. #clock-cells = <1>;
  122. clocks = <&osc>;
  123. clock-names = "osc";
  124. };
  125. /* Power Management Controller */
  126. pmc@1000{
  127. compatible = "fsl,mpc5121-pmc";
  128. reg = <0x1000 0x100>;
  129. interrupts = <83 0x8>;
  130. };
  131. gpio@1100 {
  132. compatible = "fsl,mpc5121-gpio";
  133. reg = <0x1100 0x100>;
  134. interrupts = <78 0x8>;
  135. };
  136. can@1300 {
  137. compatible = "fsl,mpc5121-mscan";
  138. reg = <0x1300 0x80>;
  139. interrupts = <12 0x8>;
  140. clocks = <&clks MPC512x_CLK_BDLC>,
  141. <&clks MPC512x_CLK_IPS>,
  142. <&clks MPC512x_CLK_SYS>,
  143. <&clks MPC512x_CLK_REF>,
  144. <&clks MPC512x_CLK_MSCAN0_MCLK>;
  145. clock-names = "ipg", "ips", "sys", "ref", "mclk";
  146. };
  147. can@1380 {
  148. compatible = "fsl,mpc5121-mscan";
  149. reg = <0x1380 0x80>;
  150. interrupts = <13 0x8>;
  151. clocks = <&clks MPC512x_CLK_BDLC>,
  152. <&clks MPC512x_CLK_IPS>,
  153. <&clks MPC512x_CLK_SYS>,
  154. <&clks MPC512x_CLK_REF>,
  155. <&clks MPC512x_CLK_MSCAN1_MCLK>;
  156. clock-names = "ipg", "ips", "sys", "ref", "mclk";
  157. };
  158. sdhc@1500 {
  159. compatible = "fsl,mpc5121-sdhc";
  160. reg = <0x1500 0x100>;
  161. interrupts = <8 0x8>;
  162. dmas = <&dma0 30>;
  163. dma-names = "rx-tx";
  164. clocks = <&clks MPC512x_CLK_IPS>,
  165. <&clks MPC512x_CLK_SDHC>;
  166. clock-names = "ipg", "per";
  167. };
  168. i2c@1700 {
  169. #address-cells = <1>;
  170. #size-cells = <0>;
  171. compatible = "fsl,mpc5121-i2c", "fsl-i2c";
  172. reg = <0x1700 0x20>;
  173. interrupts = <9 0x8>;
  174. clocks = <&clks MPC512x_CLK_I2C>;
  175. clock-names = "ipg";
  176. };
  177. i2c@1720 {
  178. #address-cells = <1>;
  179. #size-cells = <0>;
  180. compatible = "fsl,mpc5121-i2c", "fsl-i2c";
  181. reg = <0x1720 0x20>;
  182. interrupts = <10 0x8>;
  183. clocks = <&clks MPC512x_CLK_I2C>;
  184. clock-names = "ipg";
  185. };
  186. i2c@1740 {
  187. #address-cells = <1>;
  188. #size-cells = <0>;
  189. compatible = "fsl,mpc5121-i2c", "fsl-i2c";
  190. reg = <0x1740 0x20>;
  191. interrupts = <11 0x8>;
  192. clocks = <&clks MPC512x_CLK_I2C>;
  193. clock-names = "ipg";
  194. };
  195. i2ccontrol@1760 {
  196. compatible = "fsl,mpc5121-i2c-ctrl";
  197. reg = <0x1760 0x8>;
  198. };
  199. axe@2000 {
  200. compatible = "fsl,mpc5121-axe";
  201. reg = <0x2000 0x100>;
  202. interrupts = <42 0x8>;
  203. clocks = <&clks MPC512x_CLK_AXE>;
  204. clock-names = "ipg";
  205. };
  206. display@2100 {
  207. compatible = "fsl,mpc5121-diu";
  208. reg = <0x2100 0x100>;
  209. interrupts = <64 0x8>;
  210. clocks = <&clks MPC512x_CLK_DIU>;
  211. clock-names = "ipg";
  212. };
  213. can@2300 {
  214. compatible = "fsl,mpc5121-mscan";
  215. reg = <0x2300 0x80>;
  216. interrupts = <90 0x8>;
  217. clocks = <&clks MPC512x_CLK_BDLC>,
  218. <&clks MPC512x_CLK_IPS>,
  219. <&clks MPC512x_CLK_SYS>,
  220. <&clks MPC512x_CLK_REF>,
  221. <&clks MPC512x_CLK_MSCAN2_MCLK>;
  222. clock-names = "ipg", "ips", "sys", "ref", "mclk";
  223. };
  224. can@2380 {
  225. compatible = "fsl,mpc5121-mscan";
  226. reg = <0x2380 0x80>;
  227. interrupts = <91 0x8>;
  228. clocks = <&clks MPC512x_CLK_BDLC>,
  229. <&clks MPC512x_CLK_IPS>,
  230. <&clks MPC512x_CLK_SYS>,
  231. <&clks MPC512x_CLK_REF>,
  232. <&clks MPC512x_CLK_MSCAN3_MCLK>;
  233. clock-names = "ipg", "ips", "sys", "ref", "mclk";
  234. };
  235. viu@2400 {
  236. compatible = "fsl,mpc5121-viu";
  237. reg = <0x2400 0x400>;
  238. interrupts = <67 0x8>;
  239. clocks = <&clks MPC512x_CLK_VIU>;
  240. clock-names = "ipg";
  241. };
  242. mdio@2800 {
  243. compatible = "fsl,mpc5121-fec-mdio";
  244. reg = <0x2800 0x800>;
  245. #address-cells = <1>;
  246. #size-cells = <0>;
  247. clocks = <&clks MPC512x_CLK_FEC>;
  248. clock-names = "per";
  249. };
  250. eth0: ethernet@2800 {
  251. device_type = "network";
  252. compatible = "fsl,mpc5121-fec";
  253. reg = <0x2800 0x800>;
  254. local-mac-address = [ 00 00 00 00 00 00 ];
  255. interrupts = <4 0x8>;
  256. clocks = <&clks MPC512x_CLK_FEC>;
  257. clock-names = "per";
  258. };
  259. /* USB1 using external ULPI PHY */
  260. usb@3000 {
  261. compatible = "fsl,mpc5121-usb2-dr";
  262. reg = <0x3000 0x600>;
  263. #address-cells = <1>;
  264. #size-cells = <0>;
  265. interrupts = <43 0x8>;
  266. dr_mode = "otg";
  267. phy_type = "ulpi";
  268. clocks = <&clks MPC512x_CLK_USB1>;
  269. clock-names = "ipg";
  270. };
  271. /* USB0 using internal UTMI PHY */
  272. usb@4000 {
  273. compatible = "fsl,mpc5121-usb2-dr";
  274. reg = <0x4000 0x600>;
  275. #address-cells = <1>;
  276. #size-cells = <0>;
  277. interrupts = <44 0x8>;
  278. dr_mode = "otg";
  279. phy_type = "utmi_wide";
  280. clocks = <&clks MPC512x_CLK_USB2>;
  281. clock-names = "ipg";
  282. };
  283. /* IO control */
  284. ioctl@a000 {
  285. compatible = "fsl,mpc5121-ioctl";
  286. reg = <0xA000 0x1000>;
  287. };
  288. /* LocalPlus controller */
  289. lpc@10000 {
  290. compatible = "fsl,mpc5121-lpc";
  291. reg = <0x10000 0x100>;
  292. };
  293. sclpc@10100 {
  294. compatible = "fsl,mpc512x-lpbfifo";
  295. reg = <0x10100 0x50>;
  296. interrupts = <7 0x8>;
  297. dmas = <&dma0 26>;
  298. dma-names = "rx-tx";
  299. };
  300. pata@10200 {
  301. compatible = "fsl,mpc5121-pata";
  302. reg = <0x10200 0x100>;
  303. interrupts = <5 0x8>;
  304. clocks = <&clks MPC512x_CLK_PATA>;
  305. clock-names = "ipg";
  306. };
  307. /* 512x PSCs are not 52xx PSC compatible */
  308. /* PSC0 */
  309. psc@11000 {
  310. compatible = "fsl,mpc5121-psc";
  311. reg = <0x11000 0x100>;
  312. interrupts = <40 0x8>;
  313. fsl,rx-fifo-size = <16>;
  314. fsl,tx-fifo-size = <16>;
  315. clocks = <&clks MPC512x_CLK_PSC0>,
  316. <&clks MPC512x_CLK_PSC0_MCLK>;
  317. clock-names = "ipg", "mclk";
  318. };
  319. /* PSC1 */
  320. psc@11100 {
  321. compatible = "fsl,mpc5121-psc";
  322. reg = <0x11100 0x100>;
  323. interrupts = <40 0x8>;
  324. fsl,rx-fifo-size = <16>;
  325. fsl,tx-fifo-size = <16>;
  326. clocks = <&clks MPC512x_CLK_PSC1>,
  327. <&clks MPC512x_CLK_PSC1_MCLK>;
  328. clock-names = "ipg", "mclk";
  329. };
  330. /* PSC2 */
  331. psc@11200 {
  332. compatible = "fsl,mpc5121-psc";
  333. reg = <0x11200 0x100>;
  334. interrupts = <40 0x8>;
  335. fsl,rx-fifo-size = <16>;
  336. fsl,tx-fifo-size = <16>;
  337. clocks = <&clks MPC512x_CLK_PSC2>,
  338. <&clks MPC512x_CLK_PSC2_MCLK>;
  339. clock-names = "ipg", "mclk";
  340. };
  341. /* PSC3 */
  342. psc@11300 {
  343. compatible = "fsl,mpc5121-psc-uart", "fsl,mpc5121-psc";
  344. reg = <0x11300 0x100>;
  345. interrupts = <40 0x8>;
  346. fsl,rx-fifo-size = <16>;
  347. fsl,tx-fifo-size = <16>;
  348. clocks = <&clks MPC512x_CLK_PSC3>,
  349. <&clks MPC512x_CLK_PSC3_MCLK>;
  350. clock-names = "ipg", "mclk";
  351. };
  352. /* PSC4 */
  353. psc@11400 {
  354. compatible = "fsl,mpc5121-psc-uart", "fsl,mpc5121-psc";
  355. reg = <0x11400 0x100>;
  356. interrupts = <40 0x8>;
  357. fsl,rx-fifo-size = <16>;
  358. fsl,tx-fifo-size = <16>;
  359. clocks = <&clks MPC512x_CLK_PSC4>,
  360. <&clks MPC512x_CLK_PSC4_MCLK>;
  361. clock-names = "ipg", "mclk";
  362. };
  363. /* PSC5 */
  364. psc@11500 {
  365. compatible = "fsl,mpc5121-psc";
  366. reg = <0x11500 0x100>;
  367. interrupts = <40 0x8>;
  368. fsl,rx-fifo-size = <16>;
  369. fsl,tx-fifo-size = <16>;
  370. clocks = <&clks MPC512x_CLK_PSC5>,
  371. <&clks MPC512x_CLK_PSC5_MCLK>;
  372. clock-names = "ipg", "mclk";
  373. };
  374. /* PSC6 */
  375. psc@11600 {
  376. compatible = "fsl,mpc5121-psc";
  377. reg = <0x11600 0x100>;
  378. interrupts = <40 0x8>;
  379. fsl,rx-fifo-size = <16>;
  380. fsl,tx-fifo-size = <16>;
  381. clocks = <&clks MPC512x_CLK_PSC6>,
  382. <&clks MPC512x_CLK_PSC6_MCLK>;
  383. clock-names = "ipg", "mclk";
  384. };
  385. /* PSC7 */
  386. psc@11700 {
  387. compatible = "fsl,mpc5121-psc";
  388. reg = <0x11700 0x100>;
  389. interrupts = <40 0x8>;
  390. fsl,rx-fifo-size = <16>;
  391. fsl,tx-fifo-size = <16>;
  392. clocks = <&clks MPC512x_CLK_PSC7>,
  393. <&clks MPC512x_CLK_PSC7_MCLK>;
  394. clock-names = "ipg", "mclk";
  395. };
  396. /* PSC8 */
  397. psc@11800 {
  398. compatible = "fsl,mpc5121-psc";
  399. reg = <0x11800 0x100>;
  400. interrupts = <40 0x8>;
  401. fsl,rx-fifo-size = <16>;
  402. fsl,tx-fifo-size = <16>;
  403. clocks = <&clks MPC512x_CLK_PSC8>,
  404. <&clks MPC512x_CLK_PSC8_MCLK>;
  405. clock-names = "ipg", "mclk";
  406. };
  407. /* PSC9 */
  408. psc@11900 {
  409. compatible = "fsl,mpc5121-psc";
  410. reg = <0x11900 0x100>;
  411. interrupts = <40 0x8>;
  412. fsl,rx-fifo-size = <16>;
  413. fsl,tx-fifo-size = <16>;
  414. clocks = <&clks MPC512x_CLK_PSC9>,
  415. <&clks MPC512x_CLK_PSC9_MCLK>;
  416. clock-names = "ipg", "mclk";
  417. };
  418. /* PSC10 */
  419. psc@11a00 {
  420. compatible = "fsl,mpc5121-psc";
  421. reg = <0x11a00 0x100>;
  422. interrupts = <40 0x8>;
  423. fsl,rx-fifo-size = <16>;
  424. fsl,tx-fifo-size = <16>;
  425. clocks = <&clks MPC512x_CLK_PSC10>,
  426. <&clks MPC512x_CLK_PSC10_MCLK>;
  427. clock-names = "ipg", "mclk";
  428. };
  429. /* PSC11 */
  430. psc@11b00 {
  431. compatible = "fsl,mpc5121-psc";
  432. reg = <0x11b00 0x100>;
  433. interrupts = <40 0x8>;
  434. fsl,rx-fifo-size = <16>;
  435. fsl,tx-fifo-size = <16>;
  436. clocks = <&clks MPC512x_CLK_PSC11>,
  437. <&clks MPC512x_CLK_PSC11_MCLK>;
  438. clock-names = "ipg", "mclk";
  439. };
  440. pscfifo@11f00 {
  441. compatible = "fsl,mpc5121-psc-fifo";
  442. reg = <0x11f00 0x100>;
  443. interrupts = <40 0x8>;
  444. clocks = <&clks MPC512x_CLK_PSC_FIFO>;
  445. clock-names = "ipg";
  446. };
  447. dma0: dma@14000 {
  448. compatible = "fsl,mpc5121-dma";
  449. reg = <0x14000 0x1800>;
  450. interrupts = <65 0x8>;
  451. #dma-cells = <1>;
  452. };
  453. };
  454. pci: pci@80008500 {
  455. compatible = "fsl,mpc5121-pci";
  456. device_type = "pci";
  457. interrupts = <1 0x8>;
  458. clock-frequency = <0>;
  459. #address-cells = <3>;
  460. #size-cells = <2>;
  461. #interrupt-cells = <1>;
  462. clocks = <&clks MPC512x_CLK_PCI>;
  463. clock-names = "ipg";
  464. reg = <0x80008500 0x100 /* internal registers */
  465. 0x80008300 0x8>; /* config space access registers */
  466. bus-range = <0x0 0x0>;
  467. ranges = <0x42000000 0x0 0xa0000000 0xa0000000 0x0 0x10000000
  468. 0x02000000 0x0 0xb0000000 0xb0000000 0x0 0x10000000
  469. 0x01000000 0x0 0x00000000 0x84000000 0x0 0x01000000>;
  470. };
  471. };