currituck.dts 7.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243
  1. /*
  2. * Device Tree Source for IBM Embedded PPC 476 Platform
  3. *
  4. * Copyright © 2011 Tony Breeds IBM Corporation
  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. /memreserve/ 0x01f00000 0x00100000; // spin table
  12. / {
  13. #address-cells = <2>;
  14. #size-cells = <2>;
  15. model = "ibm,currituck";
  16. compatible = "ibm,currituck";
  17. dcr-parent = <&{/cpus/cpu@0}>;
  18. aliases {
  19. serial0 = &UART0;
  20. };
  21. cpus {
  22. #address-cells = <1>;
  23. #size-cells = <0>;
  24. cpu@0 {
  25. device_type = "cpu";
  26. model = "PowerPC,476";
  27. reg = <0>;
  28. clock-frequency = <1600000000>; // 1.6 GHz
  29. timebase-frequency = <100000000>; // 100Mhz
  30. i-cache-line-size = <32>;
  31. d-cache-line-size = <32>;
  32. i-cache-size = <32768>;
  33. d-cache-size = <32768>;
  34. dcr-controller;
  35. dcr-access-method = "native";
  36. status = "ok";
  37. };
  38. cpu@1 {
  39. device_type = "cpu";
  40. model = "PowerPC,476";
  41. reg = <1>;
  42. clock-frequency = <1600000000>; // 1.6 GHz
  43. timebase-frequency = <100000000>; // 100Mhz
  44. i-cache-line-size = <32>;
  45. d-cache-line-size = <32>;
  46. i-cache-size = <32768>;
  47. d-cache-size = <32768>;
  48. dcr-controller;
  49. dcr-access-method = "native";
  50. status = "disabled";
  51. enable-method = "spin-table";
  52. cpu-release-addr = <0x0 0x01f00000>;
  53. };
  54. };
  55. memory {
  56. device_type = "memory";
  57. reg = <0x0 0x0 0x0 0x0>; // filled in by zImage
  58. };
  59. MPIC: interrupt-controller {
  60. compatible = "chrp,open-pic";
  61. interrupt-controller;
  62. dcr-reg = <0xffc00000 0x00040000>;
  63. #address-cells = <0>;
  64. #size-cells = <0>;
  65. #interrupt-cells = <2>;
  66. };
  67. plb {
  68. compatible = "ibm,plb6";
  69. #address-cells = <2>;
  70. #size-cells = <2>;
  71. ranges;
  72. clock-frequency = <200000000>; // 200Mhz
  73. POB0: opb {
  74. compatible = "ibm,opb-4xx", "ibm,opb";
  75. #address-cells = <1>;
  76. #size-cells = <1>;
  77. /* Wish there was a nicer way of specifying a full
  78. * 32-bit range
  79. */
  80. ranges = <0x00000000 0x00000200 0x00000000 0x80000000
  81. 0x80000000 0x00000200 0x80000000 0x80000000>;
  82. clock-frequency = <100000000>;
  83. UART0: serial@10000000 {
  84. device_type = "serial";
  85. compatible = "ns16750", "ns16550";
  86. reg = <0x10000000 0x00000008>;
  87. virtual-reg = <0xe1000000>;
  88. clock-frequency = <1851851>; // PCIe refclk/MCGC0_CTL[UART]
  89. current-speed = <115200>;
  90. interrupt-parent = <&MPIC>;
  91. interrupts = <34 2>;
  92. };
  93. FPGA0: fpga@50000000 {
  94. compatible = "ibm,currituck-fpga";
  95. reg = <0x50000000 0x4>;
  96. };
  97. IIC0: i2c@00000000 {
  98. compatible = "ibm,iic-currituck", "ibm,iic";
  99. reg = <0x0 0x00000014>;
  100. interrupt-parent = <&MPIC>;
  101. interrupts = <79 2>;
  102. #address-cells = <1>;
  103. #size-cells = <0>;
  104. rtc@68 {
  105. compatible = "st,m41t80", "m41st85";
  106. reg = <0x68>;
  107. };
  108. };
  109. };
  110. PCIE0: pciex@10100000000 { // 4xGBIF1
  111. device_type = "pci";
  112. #interrupt-cells = <1>;
  113. #size-cells = <2>;
  114. #address-cells = <3>;
  115. compatible = "ibm,plb-pciex-476fpe", "ibm,plb-pciex";
  116. primary;
  117. port = <0x0>; /* port number */
  118. reg = <0x00000101 0x00000000 0x0 0x10000000 /* Config space access */
  119. 0x00000100 0x00000000 0x0 0x00001000>; /* UTL Registers space access */
  120. dcr-reg = <0x80 0x20>;
  121. // pci_space < pci_addr > < cpu_addr > < size >
  122. ranges = <0x02000000 0x00000000 0x80000000 0x00000110 0x80000000 0x0 0x80000000
  123. 0x01000000 0x0 0x0 0x00000140 0x0 0x0 0x00010000>;
  124. /* Inbound starting at 0 to memsize filled in by zImage */
  125. dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x0>;
  126. /* This drives busses 0 to 0xf */
  127. bus-range = <0x0 0xf>;
  128. /* Legacy interrupts (note the weird polarity, the bridge seems
  129. * to invert PCIe legacy interrupts).
  130. * We are de-swizzling here because the numbers are actually for
  131. * port of the root complex virtual P2P bridge. But I want
  132. * to avoid putting a node for it in the tree, so the numbers
  133. * below are basically de-swizzled numbers.
  134. * The real slot is on idsel 0, so the swizzling is 1:1
  135. */
  136. interrupt-map-mask = <0x0 0x0 0x0 0x7>;
  137. interrupt-map = <
  138. 0x0 0x0 0x0 0x1 &MPIC 46 0x2 /* int A */
  139. 0x0 0x0 0x0 0x2 &MPIC 47 0x2 /* int B */
  140. 0x0 0x0 0x0 0x3 &MPIC 48 0x2 /* int C */
  141. 0x0 0x0 0x0 0x4 &MPIC 49 0x2 /* int D */>;
  142. };
  143. PCIE1: pciex@30100000000 { // 4xGBIF0
  144. device_type = "pci";
  145. #interrupt-cells = <1>;
  146. #size-cells = <2>;
  147. #address-cells = <3>;
  148. compatible = "ibm,plb-pciex-476fpe", "ibm,plb-pciex";
  149. primary;
  150. port = <0x1>; /* port number */
  151. reg = <0x00000301 0x00000000 0x0 0x10000000 /* Config space access */
  152. 0x00000300 0x00000000 0x0 0x00001000>; /* UTL Registers space access */
  153. dcr-reg = <0x60 0x20>;
  154. ranges = <0x02000000 0x00000000 0x80000000 0x00000310 0x80000000 0x0 0x80000000
  155. 0x01000000 0x0 0x0 0x00000340 0x0 0x0 0x00010000>;
  156. /* Inbound starting at 0 to memsize filled in by zImage */
  157. dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x0>;
  158. /* This drives busses 0 to 0xf */
  159. bus-range = <0x0 0xf>;
  160. /* Legacy interrupts (note the weird polarity, the bridge seems
  161. * to invert PCIe legacy interrupts).
  162. * We are de-swizzling here because the numbers are actually for
  163. * port of the root complex virtual P2P bridge. But I want
  164. * to avoid putting a node for it in the tree, so the numbers
  165. * below are basically de-swizzled numbers.
  166. * The real slot is on idsel 0, so the swizzling is 1:1
  167. */
  168. interrupt-map-mask = <0x0 0x0 0x0 0x7>;
  169. interrupt-map = <
  170. 0x0 0x0 0x0 0x1 &MPIC 38 0x2 /* int A */
  171. 0x0 0x0 0x0 0x2 &MPIC 39 0x2 /* int B */
  172. 0x0 0x0 0x0 0x3 &MPIC 40 0x2 /* int C */
  173. 0x0 0x0 0x0 0x4 &MPIC 41 0x2 /* int D */>;
  174. };
  175. PCIE2: pciex@38100000000 { // 2xGBIF0
  176. device_type = "pci";
  177. #interrupt-cells = <1>;
  178. #size-cells = <2>;
  179. #address-cells = <3>;
  180. compatible = "ibm,plb-pciex-476fpe", "ibm,plb-pciex";
  181. primary;
  182. port = <0x2>; /* port number */
  183. reg = <0x00000381 0x00000000 0x0 0x10000000 /* Config space access */
  184. 0x00000380 0x00000000 0x0 0x00001000>; /* UTL Registers space access */
  185. dcr-reg = <0xA0 0x20>;
  186. ranges = <0x02000000 0x00000000 0x80000000 0x00000390 0x80000000 0x0 0x80000000
  187. 0x01000000 0x0 0x0 0x000003C0 0x0 0x0 0x00010000>;
  188. /* Inbound starting at 0 to memsize filled in by zImage */
  189. dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x0>;
  190. /* This drives busses 0 to 0xf */
  191. bus-range = <0x0 0xf>;
  192. /* Legacy interrupts (note the weird polarity, the bridge seems
  193. * to invert PCIe legacy interrupts).
  194. * We are de-swizzling here because the numbers are actually for
  195. * port of the root complex virtual P2P bridge. But I want
  196. * to avoid putting a node for it in the tree, so the numbers
  197. * below are basically de-swizzled numbers.
  198. * The real slot is on idsel 0, so the swizzling is 1:1
  199. */
  200. interrupt-map-mask = <0x0 0x0 0x0 0x7>;
  201. interrupt-map = <
  202. 0x0 0x0 0x0 0x1 &MPIC 54 0x2 /* int A */
  203. 0x0 0x0 0x0 0x2 &MPIC 55 0x2 /* int B */
  204. 0x0 0x0 0x0 0x3 &MPIC 56 0x2 /* int C */
  205. 0x0 0x0 0x0 0x4 &MPIC 57 0x2 /* int D */>;
  206. };
  207. };
  208. chosen {
  209. linux,stdout-path = &UART0;
  210. };
  211. };