fsp2.dts 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613
  1. /*
  2. * Device Tree Source for FSP2
  3. *
  4. * Copyright 2010,2012 IBM Corp.
  5. *
  6. * This file is licensed under the terms of the GNU General Public
  7. * License version 2. This program is licensed "as is" without
  8. * any warranty of any kind, whether express or implied.
  9. */
  10. /dts-v1/;
  11. / {
  12. #address-cells = <2>;
  13. #size-cells = <1>;
  14. model = "ibm,fsp2";
  15. compatible = "ibm,fsp2";
  16. dcr-parent = <&{/cpus/cpu@0}>;
  17. aliases {
  18. ethernet0 = &EMAC0;
  19. ethernet1 = &EMAC1;
  20. serial0 = &UART0;
  21. };
  22. cpus {
  23. #address-cells = <1>;
  24. #size-cells = <0>;
  25. cpu@0 {
  26. device_type = "cpu";
  27. model = "PowerPC, 476FSP2";
  28. reg = <0x0>;
  29. clock-frequency = <0>; /* Filled in by cuboot */
  30. timebase-frequency = <0>; /* Filled in by cuboot */
  31. i-cache-line-size = <32>;
  32. d-cache-line-size = <32>;
  33. d-cache-size = <32768>;
  34. i-cache-size = <32768>;
  35. dcr-controller;
  36. dcr-access-method = "native";
  37. };
  38. };
  39. memory {
  40. device_type = "memory";
  41. reg = <0x00000000 0x00000000 0x00000000>; /* Filled in by
  42. cuboot */
  43. };
  44. clocks {
  45. mmc_clk: mmc_clk {
  46. compatible = "fixed-clock";
  47. #clock-cells = <0>;
  48. clock-frequency = <50000000>;
  49. clock-output-names = "mmc_clk";
  50. };
  51. };
  52. UIC0: uic0 {
  53. #address-cells = <0>;
  54. #size-cells = <0>;
  55. #interrupt-cells = <2>;
  56. compatible = "ibm,uic";
  57. interrupt-controller;
  58. cell-index = <0>;
  59. dcr-reg = <0x2c0 0x8>;
  60. };
  61. /* "interrupts" field is <bit level bit level>
  62. first pair is non-critical, second is critical */
  63. UIC1_0: uic1_0 {
  64. #address-cells = <0>;
  65. #size-cells = <0>;
  66. #interrupt-cells = <2>;
  67. compatible = "ibm,uic";
  68. interrupt-controller;
  69. cell-index = <1>;
  70. dcr-reg = <0x2c8 0x8>;
  71. interrupt-parent = <&UIC0>;
  72. interrupts = <21 0x4 4 0x84>;
  73. };
  74. /* PSI and DMA */
  75. UIC1_1: uic1_1 {
  76. #address-cells = <0>;
  77. #size-cells = <0>;
  78. #interrupt-cells = <2>;
  79. compatible = "ibm,uic";
  80. interrupt-controller;
  81. cell-index = <2>;
  82. dcr-reg = <0x350 0x8>;
  83. interrupt-parent = <&UIC0>;
  84. interrupts = <22 0x4 5 0x84>;
  85. };
  86. /* Ethernet and USB */
  87. UIC1_2: uic1_2 {
  88. #address-cells = <0>;
  89. #size-cells = <0>;
  90. #interrupt-cells = <2>;
  91. compatible = "ibm,uic";
  92. interrupt-controller;
  93. cell-index = <3>;
  94. dcr-reg = <0x358 0x8>;
  95. interrupt-parent = <&UIC0>;
  96. interrupts = <23 0x4 6 0x84>;
  97. };
  98. /* PLB Errors */
  99. UIC1_3: uic1_3 {
  100. #address-cells = <0>;
  101. #size-cells = <0>;
  102. #interrupt-cells = <2>;
  103. compatible = "ibm,uic";
  104. interrupt-controller;
  105. cell-index = <4>;
  106. dcr-reg = <0x360 0x8>;
  107. interrupt-parent = <&UIC0>;
  108. interrupts = <24 0x4 7 0x84>;
  109. };
  110. UIC1_4: uic1_4 {
  111. #address-cells = <0>;
  112. #size-cells = <0>;
  113. #interrupt-cells = <2>;
  114. compatible = "ibm,uic";
  115. interrupt-controller;
  116. cell-index = <5>;
  117. dcr-reg = <0x368 0x8>;
  118. interrupt-parent = <&UIC0>;
  119. interrupts = <25 0x4 8 0x84>;
  120. };
  121. UIC1_5: uic1_5 {
  122. #address-cells = <0>;
  123. #size-cells = <0>;
  124. #interrupt-cells = <2>;
  125. compatible = "ibm,uic";
  126. interrupt-controller;
  127. cell-index = <6>;
  128. dcr-reg = <0x370 0x8>;
  129. interrupt-parent = <&UIC0>;
  130. interrupts = <26 0x4 9 0x84>;
  131. };
  132. /* 2nd level UICs for FSI */
  133. UIC2_0: uic2_0 {
  134. #address-cells = <0>;
  135. #size-cells = <0>;
  136. #interrupt-cells = <2>;
  137. compatible = "ibm,uic";
  138. interrupt-controller;
  139. cell-index = <7>;
  140. dcr-reg = <0x2d0 0x8>;
  141. interrupt-parent = <&UIC1_0>;
  142. interrupts = <16 0x4 0 0x84>;
  143. };
  144. UIC2_1: uic2_1 {
  145. #address-cells = <0>;
  146. #size-cells = <0>;
  147. #interrupt-cells = <2>;
  148. compatible = "ibm,uic";
  149. interrupt-controller;
  150. cell-index = <8>;
  151. dcr-reg = <0x2d8 0x8>;
  152. interrupt-parent = <&UIC1_0>;
  153. interrupts = <17 0x4 1 0x84>;
  154. };
  155. UIC2_2: uic2_2 {
  156. #address-cells = <0>;
  157. #size-cells = <0>;
  158. #interrupt-cells = <2>;
  159. compatible = "ibm,uic";
  160. interrupt-controller;
  161. cell-index = <9>;
  162. dcr-reg = <0x2e0 0x8>;
  163. interrupt-parent = <&UIC1_0>;
  164. interrupts = <18 0x4 2 0x84>;
  165. };
  166. UIC2_3: uic2_3 {
  167. #address-cells = <0>;
  168. #size-cells = <0>;
  169. #interrupt-cells = <2>;
  170. compatible = "ibm,uic";
  171. interrupt-controller;
  172. cell-index = <10>;
  173. dcr-reg = <0x2e8 0x8>;
  174. interrupt-parent = <&UIC1_0>;
  175. interrupts = <19 0x4 3 0x84>;
  176. };
  177. UIC2_4: uic2_4 {
  178. #address-cells = <0>;
  179. #size-cells = <0>;
  180. #interrupt-cells = <2>;
  181. compatible = "ibm,uic";
  182. interrupt-controller;
  183. cell-index = <11>;
  184. dcr-reg = <0x2f0 0x8>;
  185. interrupt-parent = <&UIC1_0>;
  186. interrupts = <20 0x4 4 0x84>;
  187. };
  188. UIC2_5: uic2_5 {
  189. #address-cells = <0>;
  190. #size-cells = <0>;
  191. #interrupt-cells = <2>;
  192. compatible = "ibm,uic";
  193. interrupt-controller;
  194. cell-index = <12>;
  195. dcr-reg = <0x2f8 0x8>;
  196. interrupt-parent = <&UIC1_0>;
  197. interrupts = <21 0x4 5 0x84>;
  198. };
  199. UIC2_6: uic2_6 {
  200. #address-cells = <0>;
  201. #size-cells = <0>;
  202. #interrupt-cells = <2>;
  203. compatible = "ibm,uic";
  204. interrupt-controller;
  205. cell-index = <13>;
  206. dcr-reg = <0x300 0x8>;
  207. interrupt-parent = <&UIC1_0>;
  208. interrupts = <22 0x4 6 0x84>;
  209. };
  210. UIC2_7: uic2_7 {
  211. #address-cells = <0>;
  212. #size-cells = <0>;
  213. #interrupt-cells = <2>;
  214. compatible = "ibm,uic";
  215. interrupt-controller;
  216. cell-index = <14>;
  217. dcr-reg = <0x308 0x8>;
  218. interrupt-parent = <&UIC1_0>;
  219. interrupts = <23 0x4 7 0x84>;
  220. };
  221. UIC2_8: uic2_8 {
  222. #address-cells = <0>;
  223. #size-cells = <0>;
  224. #interrupt-cells = <2>;
  225. compatible = "ibm,uic";
  226. interrupt-controller;
  227. cell-index = <15>;
  228. dcr-reg = <0x310 0x8>;
  229. interrupt-parent = <&UIC1_0>;
  230. interrupts = <24 0x4 8 0x84>;
  231. };
  232. UIC2_9: uic2_9 {
  233. #address-cells = <0>;
  234. #size-cells = <0>;
  235. #interrupt-cells = <2>;
  236. compatible = "ibm,uic";
  237. interrupt-controller;
  238. cell-index = <16>;
  239. dcr-reg = <0x318 0x8>;
  240. interrupt-parent = <&UIC1_0>;
  241. interrupts = <25 0x4 9 0x84>;
  242. };
  243. UIC2_10: uic2_10 {
  244. #address-cells = <0>;
  245. #size-cells = <0>;
  246. #interrupt-cells = <2>;
  247. compatible = "ibm,uic";
  248. interrupt-controller;
  249. cell-index = <17>;
  250. dcr-reg = <0x320 0x8>;
  251. interrupt-parent = <&UIC1_0>;
  252. interrupts = <26 0x4 10 0x84>;
  253. };
  254. UIC2_11: uic2_11 {
  255. #address-cells = <0>;
  256. #size-cells = <0>;
  257. #interrupt-cells = <2>;
  258. compatible = "ibm,uic";
  259. interrupt-controller;
  260. cell-index = <18>;
  261. dcr-reg = <0x328 0x8>;
  262. interrupt-parent = <&UIC1_0>;
  263. interrupts = <27 0x4 11 0x84>;
  264. };
  265. UIC2_12: uic2_12 {
  266. #address-cells = <0>;
  267. #size-cells = <0>;
  268. #interrupt-cells = <2>;
  269. compatible = "ibm,uic";
  270. interrupt-controller;
  271. cell-index = <19>;
  272. dcr-reg = <0x330 0x8>;
  273. interrupt-parent = <&UIC1_0>;
  274. interrupts = <28 0x4 12 0x84>;
  275. };
  276. UIC2_13: uic2_13 {
  277. #address-cells = <0>;
  278. #size-cells = <0>;
  279. #interrupt-cells = <2>;
  280. compatible = "ibm,uic";
  281. interrupt-controller;
  282. cell-index = <20>;
  283. dcr-reg = <0x338 0x8>;
  284. interrupt-parent = <&UIC1_0>;
  285. interrupts = <29 0x4 13 0x84>;
  286. };
  287. UIC2_14: uic2_14 {
  288. #address-cells = <0>;
  289. #size-cells = <0>;
  290. #interrupt-cells = <2>;
  291. compatible = "ibm,uic";
  292. interrupt-controller;
  293. cell-index = <21>;
  294. dcr-reg = <0x340 0x8>;
  295. interrupt-parent = <&UIC1_0>;
  296. interrupts = <30 0x4 14 0x84>;
  297. };
  298. UIC2_15: uic2_15 {
  299. #address-cells = <0>;
  300. #size-cells = <0>;
  301. #interrupt-cells = <2>;
  302. compatible = "ibm,uic";
  303. interrupt-controller;
  304. cell-index = <22>;
  305. dcr-reg = <0x348 0x8>;
  306. interrupt-parent = <&UIC1_0>;
  307. interrupts = <31 0x4 15 0x84>;
  308. };
  309. plb6 {
  310. compatible = "ibm,plb6";
  311. #address-cells = <2>;
  312. #size-cells = <1>;
  313. ranges;
  314. MCW0: memory-controller-wrapper {
  315. compatible = "ibm,cw-476fsp2";
  316. dcr-reg = <0x11111800 0x40>;
  317. };
  318. MCIF0: memory-controller {
  319. compatible = "ibm,sdram-476fsp2", "ibm,sdram-4xx-ddr3";
  320. dcr-reg = <0x11120000 0x10000>;
  321. mcer-device = <&MCW0>;
  322. interrupt-parent = <&UIC0>;
  323. interrupts = <10 0x84 /* ECC UE */
  324. 11 0x84>; /* ECC CE */
  325. };
  326. };
  327. plb4 {
  328. compatible = "ibm,plb4";
  329. #address-cells = <1>;
  330. #size-cells = <1>;
  331. ranges = <0x00000000 0x00000010 0x00000000 0x80000000
  332. 0x80000000 0x00000010 0x80000000 0x80000000>;
  333. clock-frequency = <333333334>;
  334. plb6-system-hung-irq {
  335. compatible = "ibm,bus-error-irq";
  336. #interrupt-cells = <2>;
  337. interrupt-parent = <&UIC0>;
  338. interrupts = <0 0x84>;
  339. };
  340. l2-error-irq {
  341. compatible = "ibm,bus-error-irq";
  342. #interrupt-cells = <2>;
  343. interrupt-parent = <&UIC0>;
  344. interrupts = <20 0x84>;
  345. };
  346. plb6-plb4-irq {
  347. compatible = "ibm,bus-error-irq";
  348. #interrupt-cells = <2>;
  349. interrupt-parent = <&UIC0>;
  350. interrupts = <1 0x84>;
  351. };
  352. plb4-ahb-irq {
  353. compatible = "ibm,bus-error-irq";
  354. #interrupt-cells = <2>;
  355. interrupt-parent = <&UIC1_3>;
  356. interrupts = <20 0x84>;
  357. };
  358. opbd-error-irq {
  359. compatible = "ibm,opbd-error-irq";
  360. #interrupt-cells = <2>;
  361. interrupt-parent = <&UIC1_4>;
  362. interrupts = <5 0x84>;
  363. };
  364. cmu-error-irq {
  365. compatible = "ibm,cmu-error-irq";
  366. #interrupt-cells = <2>;
  367. interrupt-parent = <&UIC0>;
  368. interrupts = <28 0x84>;
  369. };
  370. conf-error-irq {
  371. compatible = "ibm,conf-error-irq";
  372. #interrupt-cells = <2>;
  373. interrupt-parent = <&UIC1_4>;
  374. interrupts = <11 0x84>;
  375. };
  376. mc-ue-irq {
  377. compatible = "ibm,mc-ue-irq";
  378. #interrupt-cells = <2>;
  379. interrupt-parent = <&UIC0>;
  380. interrupts = <10 0x84>;
  381. };
  382. reset-warning-irq {
  383. compatible = "ibm,reset-warning-irq";
  384. #interrupt-cells = <2>;
  385. interrupt-parent = <&UIC0>;
  386. interrupts = <17 0x84>;
  387. };
  388. MAL0: mcmal0 {
  389. #interrupt-cells = <1>;
  390. #address-cells = <0>;
  391. #size-cells = <0>;
  392. compatible = "ibm,mcmal";
  393. dcr-reg = <0x80 0x80>;
  394. num-tx-chans = <1>;
  395. num-rx-chans = <1>;
  396. interrupt-parent = <&MAL0>;
  397. interrupts = <0 1 2 3 4>;
  398. /* index interrupt-parent interrupt# type */
  399. interrupt-map = </*TXEOB*/ 0 &UIC1_2 4 0x4
  400. /*RXEOB*/ 1 &UIC1_2 3 0x4
  401. /*SERR*/ 2 &UIC1_2 7 0x4
  402. /*TXDE*/ 3 &UIC1_2 6 0x4
  403. /*RXDE*/ 4 &UIC1_2 5 0x4>;
  404. };
  405. MAL1: mcmal1 {
  406. #interrupt-cells = <1>;
  407. #address-cells = <0>;
  408. #size-cells = <0>;
  409. compatible = "ibm,mcmal";
  410. dcr-reg = <0x100 0x80>;
  411. num-tx-chans = <1>;
  412. num-rx-chans = <1>;
  413. interrupt-parent = <&MAL1>;
  414. interrupts = <0 1 2 3 4>;
  415. /* index interrupt-parent interrupt# type */
  416. interrupt-map = </*TXEOB*/ 0 &UIC1_2 12 0x4
  417. /*RXEOB*/ 1 &UIC1_2 11 0x4
  418. /*SERR*/ 2 &UIC1_2 15 0x4
  419. /*TXDE*/ 3 &UIC1_2 14 0x4
  420. /*RXDE*/ 4 &UIC1_2 13 0x4>;
  421. };
  422. mmc0: mmc@20c0000 {
  423. compatible = "st,sdhci-stih407", "st,sdhci";
  424. reg = <0x020c0000 0x20000>;
  425. reg-names = "mmc";
  426. interrupts = <21 0x4>;
  427. interrupt-parent = <&UIC1_3>;
  428. interrupt-names = "mmcirq";
  429. pinctrl-names = "default";
  430. pinctrl-0 = <>;
  431. clock-names = "mmc";
  432. clocks = <&mmc_clk>;
  433. bus-width = <4>;
  434. non-removable;
  435. sd-uhs-sdr50;
  436. sd-uhs-sdr104;
  437. sd-uhs-ddr50;
  438. };
  439. opb {
  440. compatible = "ibm,opb";
  441. #address-cells = <1>;
  442. #size-cells = <1>;
  443. ranges; // pass-thru to parent bus
  444. clock-frequency = <83333334>;
  445. EMAC0: ethernet@b0000000 {
  446. linux,network-index = <0>;
  447. device_type = "network";
  448. compatible = "ibm,emac4sync";
  449. has-inverted-stacr-oc;
  450. interrupt-parent = <&UIC1_2>;
  451. interrupts = <1 0x4 0 0x4>;
  452. reg = <0xb0000000 0x100>;
  453. local-mac-address = [000000000000]; /* Filled in by
  454. cuboot */
  455. mal-device = <&MAL0>;
  456. mal-tx-channel = <0>;
  457. mal-rx-channel = <0>;
  458. cell-index = <0>;
  459. max-frame-size = <1500>;
  460. rx-fifo-size = <4096>;
  461. tx-fifo-size = <4096>;
  462. rx-fifo-size-gige = <16384>;
  463. tx-fifo-size-gige = <8192>;
  464. phy-address = <1>;
  465. phy-mode = "rgmii";
  466. phy-map = <00000003>;
  467. rgmii-device = <&RGMII>;
  468. rgmii-channel = <0>;
  469. };
  470. EMAC1: ethernet@b0000100 {
  471. linux,network-index = <1>;
  472. device_type = "network";
  473. compatible = "ibm,emac4sync";
  474. has-inverted-stacr-oc;
  475. interrupt-parent = <&UIC1_2>;
  476. interrupts = <9 0x4 8 0x4>;
  477. reg = <0xb0000100 0x100>;
  478. local-mac-address = [000000000000]; /* Filled in by
  479. cuboot */
  480. mal-device = <&MAL1>;
  481. mal-tx-channel = <0>;
  482. mal-rx-channel = <0>;
  483. cell-index = <1>;
  484. max-frame-size = <1500>;
  485. rx-fifo-size = <4096>;
  486. tx-fifo-size = <4096>;
  487. rx-fifo-size-gige = <16384>;
  488. tx-fifo-size-gige = <8192>;
  489. phy-address = <2>;
  490. phy-mode = "rgmii";
  491. phy-map = <00000003>;
  492. rgmii-device = <&RGMII>;
  493. rgmii-channel = <1>;
  494. };
  495. RGMII: rgmii@b0000600 {
  496. compatible = "ibm,rgmii";
  497. has-mdio;
  498. reg = <0xb0000600 0x8>;
  499. };
  500. UART0: serial@b0020000 {
  501. device_type = "serial";
  502. compatible = "ns16550";
  503. reg = <0xb0020000 0x8>;
  504. virtual-reg = <0xb0020000>;
  505. clock-frequency = <20833333>;
  506. current-speed = <115200>;
  507. interrupt-parent = <&UIC0>;
  508. interrupts = <31 0x4>;
  509. };
  510. };
  511. OHCI1: ohci@2040000 {
  512. compatible = "ohci-le";
  513. reg = <0x02040000 0xa0>;
  514. interrupt-parent = <&UIC1_3>;
  515. interrupts = <28 0x8 29 0x8>;
  516. };
  517. OHCI2: ohci@2080000 {
  518. compatible = "ohci-le";
  519. reg = <0x02080000 0xa0>;
  520. interrupt-parent = <&UIC1_3>;
  521. interrupts = <30 0x8 31 0x8>;
  522. };
  523. EHCI: ehci@2000000 {
  524. compatible = "usb-ehci";
  525. reg = <0x02000000 0xa4>;
  526. interrupt-parent = <&UIC1_3>;
  527. interrupts = <23 0x4>;
  528. };
  529. };
  530. chosen {
  531. stdout-path = "/plb/opb/serial@b0020000";
  532. bootargs = "console=ttyS0,115200 rw log_buf_len=32768 debug";
  533. };
  534. };