fsl-ls2080a.dtsi 15 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520
  1. /*
  2. * Device Tree Include file for Freescale Layerscape-2080A family SoC.
  3. *
  4. * Copyright (C) 2014-2015, Freescale Semiconductor
  5. *
  6. * Bhupesh Sharma <bhupesh.sharma@freescale.com>
  7. *
  8. * This file is dual-licensed: you can use it either under the terms
  9. * of the GPLv2 or the X11 license, at your option. Note that this dual
  10. * licensing only applies to this file, and not this project as a
  11. * whole.
  12. *
  13. * a) This library is free software; you can redistribute it and/or
  14. * modify it under the terms of the GNU General Public License as
  15. * published by the Free Software Foundation; either version 2 of the
  16. * License, or (at your option) any later version.
  17. *
  18. * This library is distributed in the hope that it will be useful,
  19. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  20. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  21. * GNU General Public License for more details.
  22. *
  23. * Or, alternatively,
  24. *
  25. * b) Permission is hereby granted, free of charge, to any person
  26. * obtaining a copy of this software and associated documentation
  27. * files (the "Software"), to deal in the Software without
  28. * restriction, including without limitation the rights to use,
  29. * copy, modify, merge, publish, distribute, sublicense, and/or
  30. * sell copies of the Software, and to permit persons to whom the
  31. * Software is furnished to do so, subject to the following
  32. * conditions:
  33. *
  34. * The above copyright notice and this permission notice shall be
  35. * included in all copies or substantial portions of the Software.
  36. *
  37. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  38. * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
  39. * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  40. * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
  41. * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
  42. * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  43. * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
  44. * OTHER DEALINGS IN THE SOFTWARE.
  45. */
  46. / {
  47. compatible = "fsl,ls2080a";
  48. interrupt-parent = <&gic>;
  49. #address-cells = <2>;
  50. #size-cells = <2>;
  51. cpus {
  52. #address-cells = <2>;
  53. #size-cells = <0>;
  54. /*
  55. * We expect the enable-method for cpu's to be "psci", but this
  56. * is dependent on the SoC FW, which will fill this in.
  57. *
  58. * Currently supported enable-method is psci v0.2
  59. */
  60. /* We have 4 clusters having 2 Cortex-A57 cores each */
  61. cpu@0 {
  62. device_type = "cpu";
  63. compatible = "arm,cortex-a57";
  64. reg = <0x0 0x0>;
  65. clocks = <&clockgen 1 0>;
  66. };
  67. cpu@1 {
  68. device_type = "cpu";
  69. compatible = "arm,cortex-a57";
  70. reg = <0x0 0x1>;
  71. clocks = <&clockgen 1 0>;
  72. };
  73. cpu@100 {
  74. device_type = "cpu";
  75. compatible = "arm,cortex-a57";
  76. reg = <0x0 0x100>;
  77. clocks = <&clockgen 1 1>;
  78. };
  79. cpu@101 {
  80. device_type = "cpu";
  81. compatible = "arm,cortex-a57";
  82. reg = <0x0 0x101>;
  83. clocks = <&clockgen 1 1>;
  84. };
  85. cpu@200 {
  86. device_type = "cpu";
  87. compatible = "arm,cortex-a57";
  88. reg = <0x0 0x200>;
  89. clocks = <&clockgen 1 2>;
  90. };
  91. cpu@201 {
  92. device_type = "cpu";
  93. compatible = "arm,cortex-a57";
  94. reg = <0x0 0x201>;
  95. clocks = <&clockgen 1 2>;
  96. };
  97. cpu@300 {
  98. device_type = "cpu";
  99. compatible = "arm,cortex-a57";
  100. reg = <0x0 0x300>;
  101. clocks = <&clockgen 1 3>;
  102. };
  103. cpu@301 {
  104. device_type = "cpu";
  105. compatible = "arm,cortex-a57";
  106. reg = <0x0 0x301>;
  107. clocks = <&clockgen 1 3>;
  108. };
  109. };
  110. memory@80000000 {
  111. device_type = "memory";
  112. reg = <0x00000000 0x80000000 0 0x80000000>;
  113. /* DRAM space - 1, size : 2 GB DRAM */
  114. };
  115. sysclk: sysclk {
  116. compatible = "fixed-clock";
  117. #clock-cells = <0>;
  118. clock-frequency = <100000000>;
  119. clock-output-names = "sysclk";
  120. };
  121. gic: interrupt-controller@6000000 {
  122. compatible = "arm,gic-v3";
  123. reg = <0x0 0x06000000 0 0x10000>, /* GIC Dist */
  124. <0x0 0x06100000 0 0x100000>, /* GICR (RD_base + SGI_base) */
  125. <0x0 0x0c0c0000 0 0x2000>, /* GICC */
  126. <0x0 0x0c0d0000 0 0x1000>, /* GICH */
  127. <0x0 0x0c0e0000 0 0x20000>; /* GICV */
  128. #interrupt-cells = <3>;
  129. #address-cells = <2>;
  130. #size-cells = <2>;
  131. ranges;
  132. interrupt-controller;
  133. interrupts = <1 9 0x4>;
  134. its: gic-its@6020000 {
  135. compatible = "arm,gic-v3-its";
  136. msi-controller;
  137. reg = <0x0 0x6020000 0 0x20000>;
  138. };
  139. };
  140. timer {
  141. compatible = "arm,armv8-timer";
  142. interrupts = <1 13 0x8>, /* Physical Secure PPI, active-low */
  143. <1 14 0x8>, /* Physical Non-Secure PPI, active-low */
  144. <1 11 0x8>, /* Virtual PPI, active-low */
  145. <1 10 0x8>; /* Hypervisor PPI, active-low */
  146. };
  147. pmu {
  148. compatible = "arm,armv8-pmuv3";
  149. interrupts = <1 7 0x8>; /* PMU PPI, Level low type */
  150. };
  151. soc {
  152. compatible = "simple-bus";
  153. #address-cells = <2>;
  154. #size-cells = <2>;
  155. ranges;
  156. clockgen: clocking@1300000 {
  157. compatible = "fsl,ls2080a-clockgen";
  158. reg = <0 0x1300000 0 0xa0000>;
  159. #clock-cells = <2>;
  160. clocks = <&sysclk>;
  161. };
  162. serial0: serial@21c0500 {
  163. compatible = "fsl,ns16550", "ns16550a";
  164. reg = <0x0 0x21c0500 0x0 0x100>;
  165. clocks = <&clockgen 4 3>;
  166. interrupts = <0 32 0x4>; /* Level high type */
  167. };
  168. serial1: serial@21c0600 {
  169. compatible = "fsl,ns16550", "ns16550a";
  170. reg = <0x0 0x21c0600 0x0 0x100>;
  171. clocks = <&clockgen 4 3>;
  172. interrupts = <0 32 0x4>; /* Level high type */
  173. };
  174. fsl_mc: fsl-mc@80c000000 {
  175. compatible = "fsl,qoriq-mc";
  176. reg = <0x00000008 0x0c000000 0 0x40>, /* MC portal base */
  177. <0x00000000 0x08340000 0 0x40000>; /* MC control reg */
  178. };
  179. smmu: iommu@5000000 {
  180. compatible = "arm,mmu-500";
  181. reg = <0 0x5000000 0 0x800000>;
  182. #global-interrupts = <12>;
  183. interrupts = <0 13 4>, /* global secure fault */
  184. <0 14 4>, /* combined secure interrupt */
  185. <0 15 4>, /* global non-secure fault */
  186. <0 16 4>, /* combined non-secure interrupt */
  187. /* performance counter interrupts 0-7 */
  188. <0 211 4>, <0 212 4>,
  189. <0 213 4>, <0 214 4>,
  190. <0 215 4>, <0 216 4>,
  191. <0 217 4>, <0 218 4>,
  192. /* per context interrupt, 64 interrupts */
  193. <0 146 4>, <0 147 4>,
  194. <0 148 4>, <0 149 4>,
  195. <0 150 4>, <0 151 4>,
  196. <0 152 4>, <0 153 4>,
  197. <0 154 4>, <0 155 4>,
  198. <0 156 4>, <0 157 4>,
  199. <0 158 4>, <0 159 4>,
  200. <0 160 4>, <0 161 4>,
  201. <0 162 4>, <0 163 4>,
  202. <0 164 4>, <0 165 4>,
  203. <0 166 4>, <0 167 4>,
  204. <0 168 4>, <0 169 4>,
  205. <0 170 4>, <0 171 4>,
  206. <0 172 4>, <0 173 4>,
  207. <0 174 4>, <0 175 4>,
  208. <0 176 4>, <0 177 4>,
  209. <0 178 4>, <0 179 4>,
  210. <0 180 4>, <0 181 4>,
  211. <0 182 4>, <0 183 4>,
  212. <0 184 4>, <0 185 4>,
  213. <0 186 4>, <0 187 4>,
  214. <0 188 4>, <0 189 4>,
  215. <0 190 4>, <0 191 4>,
  216. <0 192 4>, <0 193 4>,
  217. <0 194 4>, <0 195 4>,
  218. <0 196 4>, <0 197 4>,
  219. <0 198 4>, <0 199 4>,
  220. <0 200 4>, <0 201 4>,
  221. <0 202 4>, <0 203 4>,
  222. <0 204 4>, <0 205 4>,
  223. <0 206 4>, <0 207 4>,
  224. <0 208 4>, <0 209 4>;
  225. mmu-masters = <&fsl_mc 0x300 0>;
  226. };
  227. dspi: dspi@2100000 {
  228. status = "disabled";
  229. compatible = "fsl,vf610-dspi";
  230. #address-cells = <1>;
  231. #size-cells = <0>;
  232. reg = <0x0 0x2100000 0x0 0x10000>;
  233. interrupts = <0 26 0x4>; /* Level high type */
  234. clocks = <&clockgen 4 3>;
  235. clock-names = "dspi";
  236. spi-num-chipselects = <5>;
  237. bus-num = <0>;
  238. };
  239. esdhc: esdhc@2140000 {
  240. status = "disabled";
  241. compatible = "fsl,ls2080a-esdhc", "fsl,esdhc";
  242. reg = <0x0 0x2140000 0x0 0x10000>;
  243. interrupts = <0 28 0x4>; /* Level high type */
  244. clock-frequency = <0>; /* Updated by bootloader */
  245. voltage-ranges = <1800 1800 3300 3300>;
  246. sdhci,auto-cmd12;
  247. little-endian;
  248. bus-width = <4>;
  249. };
  250. gpio0: gpio@2300000 {
  251. compatible = "fsl,qoriq-gpio";
  252. reg = <0x0 0x2300000 0x0 0x10000>;
  253. interrupts = <0 36 0x4>; /* Level high type */
  254. gpio-controller;
  255. little-endian;
  256. #gpio-cells = <2>;
  257. interrupt-controller;
  258. #interrupt-cells = <2>;
  259. };
  260. gpio1: gpio@2310000 {
  261. compatible = "fsl,qoriq-gpio";
  262. reg = <0x0 0x2310000 0x0 0x10000>;
  263. interrupts = <0 36 0x4>; /* Level high type */
  264. gpio-controller;
  265. little-endian;
  266. #gpio-cells = <2>;
  267. interrupt-controller;
  268. #interrupt-cells = <2>;
  269. };
  270. gpio2: gpio@2320000 {
  271. compatible = "fsl,qoriq-gpio";
  272. reg = <0x0 0x2320000 0x0 0x10000>;
  273. interrupts = <0 37 0x4>; /* Level high type */
  274. gpio-controller;
  275. little-endian;
  276. #gpio-cells = <2>;
  277. interrupt-controller;
  278. #interrupt-cells = <2>;
  279. };
  280. gpio3: gpio@2330000 {
  281. compatible = "fsl,qoriq-gpio";
  282. reg = <0x0 0x2330000 0x0 0x10000>;
  283. interrupts = <0 37 0x4>; /* Level high type */
  284. gpio-controller;
  285. little-endian;
  286. #gpio-cells = <2>;
  287. interrupt-controller;
  288. #interrupt-cells = <2>;
  289. };
  290. i2c0: i2c@2000000 {
  291. status = "disabled";
  292. compatible = "fsl,vf610-i2c";
  293. #address-cells = <1>;
  294. #size-cells = <0>;
  295. reg = <0x0 0x2000000 0x0 0x10000>;
  296. interrupts = <0 34 0x4>; /* Level high type */
  297. clock-names = "i2c";
  298. clocks = <&clockgen 4 3>;
  299. };
  300. i2c1: i2c@2010000 {
  301. status = "disabled";
  302. compatible = "fsl,vf610-i2c";
  303. #address-cells = <1>;
  304. #size-cells = <0>;
  305. reg = <0x0 0x2010000 0x0 0x10000>;
  306. interrupts = <0 34 0x4>; /* Level high type */
  307. clock-names = "i2c";
  308. clocks = <&clockgen 4 3>;
  309. };
  310. i2c2: i2c@2020000 {
  311. status = "disabled";
  312. compatible = "fsl,vf610-i2c";
  313. #address-cells = <1>;
  314. #size-cells = <0>;
  315. reg = <0x0 0x2020000 0x0 0x10000>;
  316. interrupts = <0 35 0x4>; /* Level high type */
  317. clock-names = "i2c";
  318. clocks = <&clockgen 4 3>;
  319. };
  320. i2c3: i2c@2030000 {
  321. status = "disabled";
  322. compatible = "fsl,vf610-i2c";
  323. #address-cells = <1>;
  324. #size-cells = <0>;
  325. reg = <0x0 0x2030000 0x0 0x10000>;
  326. interrupts = <0 35 0x4>; /* Level high type */
  327. clock-names = "i2c";
  328. clocks = <&clockgen 4 3>;
  329. };
  330. ifc: ifc@2240000 {
  331. compatible = "fsl,ifc", "simple-bus";
  332. reg = <0x0 0x2240000 0x0 0x20000>;
  333. interrupts = <0 21 0x4>; /* Level high type */
  334. little-endian;
  335. #address-cells = <2>;
  336. #size-cells = <1>;
  337. ranges = <0 0 0x5 0x80000000 0x08000000
  338. 2 0 0x5 0x30000000 0x00010000
  339. 3 0 0x5 0x20000000 0x00010000>;
  340. };
  341. qspi: quadspi@20c0000 {
  342. status = "disabled";
  343. compatible = "fsl,vf610-qspi";
  344. #address-cells = <1>;
  345. #size-cells = <0>;
  346. reg = <0x0 0x20c0000 0x0 0x10000>,
  347. <0x0 0x20000000 0x0 0x10000000>;
  348. reg-names = "QuadSPI", "QuadSPI-memory";
  349. interrupts = <0 25 0x4>; /* Level high type */
  350. clocks = <&clockgen 4 3>, <&clockgen 4 3>;
  351. clock-names = "qspi_en", "qspi";
  352. };
  353. pcie@3400000 {
  354. compatible = "fsl,ls2080a-pcie", "snps,dw-pcie";
  355. reg = <0x00 0x03400000 0x0 0x00100000 /* controller registers */
  356. 0x10 0x00000000 0x0 0x00002000>; /* configuration space */
  357. reg-names = "regs", "config";
  358. interrupts = <0 108 0x4>; /* Level high type */
  359. interrupt-names = "intr";
  360. #address-cells = <3>;
  361. #size-cells = <2>;
  362. device_type = "pci";
  363. num-lanes = <4>;
  364. bus-range = <0x0 0xff>;
  365. ranges = <0x81000000 0x0 0x00000000 0x10 0x00010000 0x0 0x00010000 /* downstream I/O */
  366. 0x82000000 0x0 0x40000000 0x10 0x40000000 0x0 0x40000000>; /* non-prefetchable memory */
  367. msi-parent = <&its>;
  368. #interrupt-cells = <1>;
  369. interrupt-map-mask = <0 0 0 7>;
  370. interrupt-map = <0000 0 0 1 &gic 0 0 0 109 4>,
  371. <0000 0 0 2 &gic 0 0 0 110 4>,
  372. <0000 0 0 3 &gic 0 0 0 111 4>,
  373. <0000 0 0 4 &gic 0 0 0 112 4>;
  374. };
  375. pcie@3500000 {
  376. compatible = "fsl,ls2080a-pcie", "snps,dw-pcie";
  377. reg = <0x00 0x03500000 0x0 0x00100000 /* controller registers */
  378. 0x12 0x00000000 0x0 0x00002000>; /* configuration space */
  379. reg-names = "regs", "config";
  380. interrupts = <0 113 0x4>; /* Level high type */
  381. interrupt-names = "intr";
  382. #address-cells = <3>;
  383. #size-cells = <2>;
  384. device_type = "pci";
  385. num-lanes = <4>;
  386. bus-range = <0x0 0xff>;
  387. ranges = <0x81000000 0x0 0x00000000 0x12 0x00010000 0x0 0x00010000 /* downstream I/O */
  388. 0x82000000 0x0 0x40000000 0x12 0x40000000 0x0 0x40000000>; /* non-prefetchable memory */
  389. msi-parent = <&its>;
  390. #interrupt-cells = <1>;
  391. interrupt-map-mask = <0 0 0 7>;
  392. interrupt-map = <0000 0 0 1 &gic 0 0 0 114 4>,
  393. <0000 0 0 2 &gic 0 0 0 115 4>,
  394. <0000 0 0 3 &gic 0 0 0 116 4>,
  395. <0000 0 0 4 &gic 0 0 0 117 4>;
  396. };
  397. pcie@3600000 {
  398. compatible = "fsl,ls2080a-pcie", "snps,dw-pcie";
  399. reg = <0x00 0x03600000 0x0 0x00100000 /* controller registers */
  400. 0x14 0x00000000 0x0 0x00002000>; /* configuration space */
  401. reg-names = "regs", "config";
  402. interrupts = <0 118 0x4>; /* Level high type */
  403. interrupt-names = "intr";
  404. #address-cells = <3>;
  405. #size-cells = <2>;
  406. device_type = "pci";
  407. num-lanes = <8>;
  408. bus-range = <0x0 0xff>;
  409. ranges = <0x81000000 0x0 0x00000000 0x14 0x00010000 0x0 0x00010000 /* downstream I/O */
  410. 0x82000000 0x0 0x40000000 0x14 0x40000000 0x0 0x40000000>; /* non-prefetchable memory */
  411. msi-parent = <&its>;
  412. #interrupt-cells = <1>;
  413. interrupt-map-mask = <0 0 0 7>;
  414. interrupt-map = <0000 0 0 1 &gic 0 0 0 119 4>,
  415. <0000 0 0 2 &gic 0 0 0 120 4>,
  416. <0000 0 0 3 &gic 0 0 0 121 4>,
  417. <0000 0 0 4 &gic 0 0 0 122 4>;
  418. };
  419. pcie@3700000 {
  420. compatible = "fsl,ls2080a-pcie", "snps,dw-pcie";
  421. reg = <0x00 0x03700000 0x0 0x00100000 /* controller registers */
  422. 0x16 0x00000000 0x0 0x00002000>; /* configuration space */
  423. reg-names = "regs", "config";
  424. interrupts = <0 123 0x4>; /* Level high type */
  425. interrupt-names = "intr";
  426. #address-cells = <3>;
  427. #size-cells = <2>;
  428. device_type = "pci";
  429. num-lanes = <4>;
  430. bus-range = <0x0 0xff>;
  431. ranges = <0x81000000 0x0 0x00000000 0x16 0x00010000 0x0 0x00010000 /* downstream I/O */
  432. 0x82000000 0x0 0x40000000 0x16 0x40000000 0x0 0x40000000>; /* non-prefetchable memory */
  433. msi-parent = <&its>;
  434. #interrupt-cells = <1>;
  435. interrupt-map-mask = <0 0 0 7>;
  436. interrupt-map = <0000 0 0 1 &gic 0 0 0 124 4>,
  437. <0000 0 0 2 &gic 0 0 0 125 4>,
  438. <0000 0 0 3 &gic 0 0 0 126 4>,
  439. <0000 0 0 4 &gic 0 0 0 127 4>;
  440. };
  441. sata0: sata@3200000 {
  442. status = "disabled";
  443. compatible = "fsl,ls2080a-ahci";
  444. reg = <0x0 0x3200000 0x0 0x10000>;
  445. interrupts = <0 133 0x4>; /* Level high type */
  446. clocks = <&clockgen 4 3>;
  447. };
  448. sata1: sata@3210000 {
  449. status = "disabled";
  450. compatible = "fsl,ls2080a-ahci";
  451. reg = <0x0 0x3210000 0x0 0x10000>;
  452. interrupts = <0 136 0x4>; /* Level high type */
  453. clocks = <&clockgen 4 3>;
  454. };
  455. usb0: usb3@3100000 {
  456. status = "disabled";
  457. compatible = "snps,dwc3";
  458. reg = <0x0 0x3100000 0x0 0x10000>;
  459. interrupts = <0 80 0x4>; /* Level high type */
  460. dr_mode = "host";
  461. };
  462. usb1: usb3@3110000 {
  463. status = "disabled";
  464. compatible = "snps,dwc3";
  465. reg = <0x0 0x3110000 0x0 0x10000>;
  466. interrupts = <0 81 0x4>; /* Level high type */
  467. dr_mode = "host";
  468. };
  469. ccn@4000000 {
  470. compatible = "arm,ccn-504";
  471. reg = <0x0 0x04000000 0x0 0x01000000>;
  472. interrupts = <0 12 4>;
  473. };
  474. };
  475. };