apm-storm.dtsi 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660
  1. /*
  2. * dts file for AppliedMicro (APM) X-Gene Storm SOC
  3. *
  4. * Copyright (C) 2013, Applied Micro Circuits Corporation
  5. *
  6. * This program is free software; you can redistribute it and/or
  7. * modify it under the terms of the GNU General Public License as
  8. * published by the Free Software Foundation; either version 2 of
  9. * the License, or (at your option) any later version.
  10. */
  11. / {
  12. compatible = "apm,xgene-storm";
  13. interrupt-parent = <&gic>;
  14. #address-cells = <2>;
  15. #size-cells = <2>;
  16. cpus {
  17. #address-cells = <2>;
  18. #size-cells = <0>;
  19. cpu@000 {
  20. device_type = "cpu";
  21. compatible = "apm,potenza", "arm,armv8";
  22. reg = <0x0 0x000>;
  23. enable-method = "spin-table";
  24. cpu-release-addr = <0x1 0x0000fff8>;
  25. };
  26. cpu@001 {
  27. device_type = "cpu";
  28. compatible = "apm,potenza", "arm,armv8";
  29. reg = <0x0 0x001>;
  30. enable-method = "spin-table";
  31. cpu-release-addr = <0x1 0x0000fff8>;
  32. };
  33. cpu@100 {
  34. device_type = "cpu";
  35. compatible = "apm,potenza", "arm,armv8";
  36. reg = <0x0 0x100>;
  37. enable-method = "spin-table";
  38. cpu-release-addr = <0x1 0x0000fff8>;
  39. };
  40. cpu@101 {
  41. device_type = "cpu";
  42. compatible = "apm,potenza", "arm,armv8";
  43. reg = <0x0 0x101>;
  44. enable-method = "spin-table";
  45. cpu-release-addr = <0x1 0x0000fff8>;
  46. };
  47. cpu@200 {
  48. device_type = "cpu";
  49. compatible = "apm,potenza", "arm,armv8";
  50. reg = <0x0 0x200>;
  51. enable-method = "spin-table";
  52. cpu-release-addr = <0x1 0x0000fff8>;
  53. };
  54. cpu@201 {
  55. device_type = "cpu";
  56. compatible = "apm,potenza", "arm,armv8";
  57. reg = <0x0 0x201>;
  58. enable-method = "spin-table";
  59. cpu-release-addr = <0x1 0x0000fff8>;
  60. };
  61. cpu@300 {
  62. device_type = "cpu";
  63. compatible = "apm,potenza", "arm,armv8";
  64. reg = <0x0 0x300>;
  65. enable-method = "spin-table";
  66. cpu-release-addr = <0x1 0x0000fff8>;
  67. };
  68. cpu@301 {
  69. device_type = "cpu";
  70. compatible = "apm,potenza", "arm,armv8";
  71. reg = <0x0 0x301>;
  72. enable-method = "spin-table";
  73. cpu-release-addr = <0x1 0x0000fff8>;
  74. };
  75. };
  76. gic: interrupt-controller@78010000 {
  77. compatible = "arm,cortex-a15-gic";
  78. #interrupt-cells = <3>;
  79. interrupt-controller;
  80. reg = <0x0 0x78010000 0x0 0x1000>, /* GIC Dist */
  81. <0x0 0x78020000 0x0 0x1000>, /* GIC CPU */
  82. <0x0 0x78040000 0x0 0x2000>, /* GIC VCPU Control */
  83. <0x0 0x78060000 0x0 0x2000>; /* GIC VCPU */
  84. interrupts = <1 9 0xf04>; /* GIC Maintenence IRQ */
  85. };
  86. timer {
  87. compatible = "arm,armv8-timer";
  88. interrupts = <1 0 0xff01>, /* Secure Phys IRQ */
  89. <1 13 0xff01>, /* Non-secure Phys IRQ */
  90. <1 14 0xff01>, /* Virt IRQ */
  91. <1 15 0xff01>; /* Hyp IRQ */
  92. clock-frequency = <50000000>;
  93. };
  94. soc {
  95. compatible = "simple-bus";
  96. #address-cells = <2>;
  97. #size-cells = <2>;
  98. ranges;
  99. clocks {
  100. #address-cells = <2>;
  101. #size-cells = <2>;
  102. ranges;
  103. refclk: refclk {
  104. compatible = "fixed-clock";
  105. #clock-cells = <1>;
  106. clock-frequency = <100000000>;
  107. clock-output-names = "refclk";
  108. };
  109. pcppll: pcppll@17000100 {
  110. compatible = "apm,xgene-pcppll-clock";
  111. #clock-cells = <1>;
  112. clocks = <&refclk 0>;
  113. clock-names = "pcppll";
  114. reg = <0x0 0x17000100 0x0 0x1000>;
  115. clock-output-names = "pcppll";
  116. type = <0>;
  117. };
  118. socpll: socpll@17000120 {
  119. compatible = "apm,xgene-socpll-clock";
  120. #clock-cells = <1>;
  121. clocks = <&refclk 0>;
  122. clock-names = "socpll";
  123. reg = <0x0 0x17000120 0x0 0x1000>;
  124. clock-output-names = "socpll";
  125. type = <1>;
  126. };
  127. socplldiv2: socplldiv2 {
  128. compatible = "fixed-factor-clock";
  129. #clock-cells = <1>;
  130. clocks = <&socpll 0>;
  131. clock-names = "socplldiv2";
  132. clock-mult = <1>;
  133. clock-div = <2>;
  134. clock-output-names = "socplldiv2";
  135. };
  136. qmlclk: qmlclk {
  137. compatible = "apm,xgene-device-clock";
  138. #clock-cells = <1>;
  139. clocks = <&socplldiv2 0>;
  140. clock-names = "qmlclk";
  141. reg = <0x0 0x1703C000 0x0 0x1000>;
  142. reg-names = "csr-reg";
  143. clock-output-names = "qmlclk";
  144. };
  145. ethclk: ethclk {
  146. compatible = "apm,xgene-device-clock";
  147. #clock-cells = <1>;
  148. clocks = <&socplldiv2 0>;
  149. clock-names = "ethclk";
  150. reg = <0x0 0x17000000 0x0 0x1000>;
  151. reg-names = "div-reg";
  152. divider-offset = <0x238>;
  153. divider-width = <0x9>;
  154. divider-shift = <0x0>;
  155. clock-output-names = "ethclk";
  156. };
  157. menetclk: menetclk {
  158. compatible = "apm,xgene-device-clock";
  159. #clock-cells = <1>;
  160. clocks = <&ethclk 0>;
  161. reg = <0x0 0x1702C000 0x0 0x1000>;
  162. reg-names = "csr-reg";
  163. clock-output-names = "menetclk";
  164. };
  165. sge0clk: sge0clk@1f21c000 {
  166. compatible = "apm,xgene-device-clock";
  167. #clock-cells = <1>;
  168. clocks = <&socplldiv2 0>;
  169. reg = <0x0 0x1f21c000 0x0 0x1000>;
  170. reg-names = "csr-reg";
  171. csr-mask = <0x3>;
  172. clock-output-names = "sge0clk";
  173. };
  174. xge0clk: xge0clk@1f61c000 {
  175. compatible = "apm,xgene-device-clock";
  176. #clock-cells = <1>;
  177. clocks = <&socplldiv2 0>;
  178. reg = <0x0 0x1f61c000 0x0 0x1000>;
  179. reg-names = "csr-reg";
  180. csr-mask = <0x3>;
  181. clock-output-names = "xge0clk";
  182. };
  183. sataphy1clk: sataphy1clk@1f21c000 {
  184. compatible = "apm,xgene-device-clock";
  185. #clock-cells = <1>;
  186. clocks = <&socplldiv2 0>;
  187. reg = <0x0 0x1f21c000 0x0 0x1000>;
  188. reg-names = "csr-reg";
  189. clock-output-names = "sataphy1clk";
  190. status = "disabled";
  191. csr-offset = <0x4>;
  192. csr-mask = <0x00>;
  193. enable-offset = <0x0>;
  194. enable-mask = <0x06>;
  195. };
  196. sataphy2clk: sataphy1clk@1f22c000 {
  197. compatible = "apm,xgene-device-clock";
  198. #clock-cells = <1>;
  199. clocks = <&socplldiv2 0>;
  200. reg = <0x0 0x1f22c000 0x0 0x1000>;
  201. reg-names = "csr-reg";
  202. clock-output-names = "sataphy2clk";
  203. status = "ok";
  204. csr-offset = <0x4>;
  205. csr-mask = <0x3a>;
  206. enable-offset = <0x0>;
  207. enable-mask = <0x06>;
  208. };
  209. sataphy3clk: sataphy1clk@1f23c000 {
  210. compatible = "apm,xgene-device-clock";
  211. #clock-cells = <1>;
  212. clocks = <&socplldiv2 0>;
  213. reg = <0x0 0x1f23c000 0x0 0x1000>;
  214. reg-names = "csr-reg";
  215. clock-output-names = "sataphy3clk";
  216. status = "ok";
  217. csr-offset = <0x4>;
  218. csr-mask = <0x3a>;
  219. enable-offset = <0x0>;
  220. enable-mask = <0x06>;
  221. };
  222. sata01clk: sata01clk@1f21c000 {
  223. compatible = "apm,xgene-device-clock";
  224. #clock-cells = <1>;
  225. clocks = <&socplldiv2 0>;
  226. reg = <0x0 0x1f21c000 0x0 0x1000>;
  227. reg-names = "csr-reg";
  228. clock-output-names = "sata01clk";
  229. csr-offset = <0x4>;
  230. csr-mask = <0x05>;
  231. enable-offset = <0x0>;
  232. enable-mask = <0x39>;
  233. };
  234. sata23clk: sata23clk@1f22c000 {
  235. compatible = "apm,xgene-device-clock";
  236. #clock-cells = <1>;
  237. clocks = <&socplldiv2 0>;
  238. reg = <0x0 0x1f22c000 0x0 0x1000>;
  239. reg-names = "csr-reg";
  240. clock-output-names = "sata23clk";
  241. csr-offset = <0x4>;
  242. csr-mask = <0x05>;
  243. enable-offset = <0x0>;
  244. enable-mask = <0x39>;
  245. };
  246. sata45clk: sata45clk@1f23c000 {
  247. compatible = "apm,xgene-device-clock";
  248. #clock-cells = <1>;
  249. clocks = <&socplldiv2 0>;
  250. reg = <0x0 0x1f23c000 0x0 0x1000>;
  251. reg-names = "csr-reg";
  252. clock-output-names = "sata45clk";
  253. csr-offset = <0x4>;
  254. csr-mask = <0x05>;
  255. enable-offset = <0x0>;
  256. enable-mask = <0x39>;
  257. };
  258. rtcclk: rtcclk@17000000 {
  259. compatible = "apm,xgene-device-clock";
  260. #clock-cells = <1>;
  261. clocks = <&socplldiv2 0>;
  262. reg = <0x0 0x17000000 0x0 0x2000>;
  263. reg-names = "csr-reg";
  264. csr-offset = <0xc>;
  265. csr-mask = <0x2>;
  266. enable-offset = <0x10>;
  267. enable-mask = <0x2>;
  268. clock-output-names = "rtcclk";
  269. };
  270. rngpkaclk: rngpkaclk@17000000 {
  271. compatible = "apm,xgene-device-clock";
  272. #clock-cells = <1>;
  273. clocks = <&socplldiv2 0>;
  274. reg = <0x0 0x17000000 0x0 0x2000>;
  275. reg-names = "csr-reg";
  276. csr-offset = <0xc>;
  277. csr-mask = <0x10>;
  278. enable-offset = <0x10>;
  279. enable-mask = <0x10>;
  280. clock-output-names = "rngpkaclk";
  281. };
  282. pcie0clk: pcie0clk@1f2bc000 {
  283. status = "disabled";
  284. compatible = "apm,xgene-device-clock";
  285. #clock-cells = <1>;
  286. clocks = <&socplldiv2 0>;
  287. reg = <0x0 0x1f2bc000 0x0 0x1000>;
  288. reg-names = "csr-reg";
  289. clock-output-names = "pcie0clk";
  290. };
  291. pcie1clk: pcie1clk@1f2cc000 {
  292. status = "disabled";
  293. compatible = "apm,xgene-device-clock";
  294. #clock-cells = <1>;
  295. clocks = <&socplldiv2 0>;
  296. reg = <0x0 0x1f2cc000 0x0 0x1000>;
  297. reg-names = "csr-reg";
  298. clock-output-names = "pcie1clk";
  299. };
  300. pcie2clk: pcie2clk@1f2dc000 {
  301. status = "disabled";
  302. compatible = "apm,xgene-device-clock";
  303. #clock-cells = <1>;
  304. clocks = <&socplldiv2 0>;
  305. reg = <0x0 0x1f2dc000 0x0 0x1000>;
  306. reg-names = "csr-reg";
  307. clock-output-names = "pcie2clk";
  308. };
  309. pcie3clk: pcie3clk@1f50c000 {
  310. status = "disabled";
  311. compatible = "apm,xgene-device-clock";
  312. #clock-cells = <1>;
  313. clocks = <&socplldiv2 0>;
  314. reg = <0x0 0x1f50c000 0x0 0x1000>;
  315. reg-names = "csr-reg";
  316. clock-output-names = "pcie3clk";
  317. };
  318. pcie4clk: pcie4clk@1f51c000 {
  319. status = "disabled";
  320. compatible = "apm,xgene-device-clock";
  321. #clock-cells = <1>;
  322. clocks = <&socplldiv2 0>;
  323. reg = <0x0 0x1f51c000 0x0 0x1000>;
  324. reg-names = "csr-reg";
  325. clock-output-names = "pcie4clk";
  326. };
  327. };
  328. pcie0: pcie@1f2b0000 {
  329. status = "disabled";
  330. device_type = "pci";
  331. compatible = "apm,xgene-storm-pcie", "apm,xgene-pcie";
  332. #interrupt-cells = <1>;
  333. #size-cells = <2>;
  334. #address-cells = <3>;
  335. reg = < 0x00 0x1f2b0000 0x0 0x00010000 /* Controller registers */
  336. 0xe0 0xd0000000 0x0 0x00040000>; /* PCI config space */
  337. reg-names = "csr", "cfg";
  338. ranges = <0x01000000 0x00 0x00000000 0xe0 0x10000000 0x00 0x00010000 /* io */
  339. 0x02000000 0x00 0x80000000 0xe1 0x80000000 0x00 0x80000000>; /* mem */
  340. dma-ranges = <0x42000000 0x80 0x00000000 0x80 0x00000000 0x00 0x80000000
  341. 0x42000000 0x00 0x00000000 0x00 0x00000000 0x80 0x00000000>;
  342. interrupt-map-mask = <0x0 0x0 0x0 0x7>;
  343. interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0xc2 0x1
  344. 0x0 0x0 0x0 0x2 &gic 0x0 0xc3 0x1
  345. 0x0 0x0 0x0 0x3 &gic 0x0 0xc4 0x1
  346. 0x0 0x0 0x0 0x4 &gic 0x0 0xc5 0x1>;
  347. dma-coherent;
  348. clocks = <&pcie0clk 0>;
  349. };
  350. pcie1: pcie@1f2c0000 {
  351. status = "disabled";
  352. device_type = "pci";
  353. compatible = "apm,xgene-storm-pcie", "apm,xgene-pcie";
  354. #interrupt-cells = <1>;
  355. #size-cells = <2>;
  356. #address-cells = <3>;
  357. reg = < 0x00 0x1f2c0000 0x0 0x00010000 /* Controller registers */
  358. 0xd0 0xd0000000 0x0 0x00040000>; /* PCI config space */
  359. reg-names = "csr", "cfg";
  360. ranges = <0x01000000 0x0 0x00000000 0xd0 0x10000000 0x00 0x00010000 /* io */
  361. 0x02000000 0x0 0x80000000 0xd1 0x80000000 0x00 0x80000000>; /* mem */
  362. dma-ranges = <0x42000000 0x80 0x00000000 0x80 0x00000000 0x00 0x80000000
  363. 0x42000000 0x00 0x00000000 0x00 0x00000000 0x80 0x00000000>;
  364. interrupt-map-mask = <0x0 0x0 0x0 0x7>;
  365. interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0xc8 0x1
  366. 0x0 0x0 0x0 0x2 &gic 0x0 0xc9 0x1
  367. 0x0 0x0 0x0 0x3 &gic 0x0 0xca 0x1
  368. 0x0 0x0 0x0 0x4 &gic 0x0 0xcb 0x1>;
  369. dma-coherent;
  370. clocks = <&pcie1clk 0>;
  371. };
  372. pcie2: pcie@1f2d0000 {
  373. status = "disabled";
  374. device_type = "pci";
  375. compatible = "apm,xgene-storm-pcie", "apm,xgene-pcie";
  376. #interrupt-cells = <1>;
  377. #size-cells = <2>;
  378. #address-cells = <3>;
  379. reg = < 0x00 0x1f2d0000 0x0 0x00010000 /* Controller registers */
  380. 0x90 0xd0000000 0x0 0x00040000>; /* PCI config space */
  381. reg-names = "csr", "cfg";
  382. ranges = <0x01000000 0x0 0x00000000 0x90 0x10000000 0x0 0x00010000 /* io */
  383. 0x02000000 0x0 0x80000000 0x91 0x80000000 0x0 0x80000000>; /* mem */
  384. dma-ranges = <0x42000000 0x80 0x00000000 0x80 0x00000000 0x00 0x80000000
  385. 0x42000000 0x00 0x00000000 0x00 0x00000000 0x80 0x00000000>;
  386. interrupt-map-mask = <0x0 0x0 0x0 0x7>;
  387. interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0xce 0x1
  388. 0x0 0x0 0x0 0x2 &gic 0x0 0xcf 0x1
  389. 0x0 0x0 0x0 0x3 &gic 0x0 0xd0 0x1
  390. 0x0 0x0 0x0 0x4 &gic 0x0 0xd1 0x1>;
  391. dma-coherent;
  392. clocks = <&pcie2clk 0>;
  393. };
  394. pcie3: pcie@1f500000 {
  395. status = "disabled";
  396. device_type = "pci";
  397. compatible = "apm,xgene-storm-pcie", "apm,xgene-pcie";
  398. #interrupt-cells = <1>;
  399. #size-cells = <2>;
  400. #address-cells = <3>;
  401. reg = < 0x00 0x1f500000 0x0 0x00010000 /* Controller registers */
  402. 0xa0 0xd0000000 0x0 0x00040000>; /* PCI config space */
  403. reg-names = "csr", "cfg";
  404. ranges = <0x01000000 0x0 0x00000000 0xa0 0x10000000 0x0 0x00010000 /* io */
  405. 0x02000000 0x0 0x80000000 0xa1 0x80000000 0x0 0x80000000>; /* mem */
  406. dma-ranges = <0x42000000 0x80 0x00000000 0x80 0x00000000 0x00 0x80000000
  407. 0x42000000 0x00 0x00000000 0x00 0x00000000 0x80 0x00000000>;
  408. interrupt-map-mask = <0x0 0x0 0x0 0x7>;
  409. interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0xd4 0x1
  410. 0x0 0x0 0x0 0x2 &gic 0x0 0xd5 0x1
  411. 0x0 0x0 0x0 0x3 &gic 0x0 0xd6 0x1
  412. 0x0 0x0 0x0 0x4 &gic 0x0 0xd7 0x1>;
  413. dma-coherent;
  414. clocks = <&pcie3clk 0>;
  415. };
  416. pcie4: pcie@1f510000 {
  417. status = "disabled";
  418. device_type = "pci";
  419. compatible = "apm,xgene-storm-pcie", "apm,xgene-pcie";
  420. #interrupt-cells = <1>;
  421. #size-cells = <2>;
  422. #address-cells = <3>;
  423. reg = < 0x00 0x1f510000 0x0 0x00010000 /* Controller registers */
  424. 0xc0 0xd0000000 0x0 0x00200000>; /* PCI config space */
  425. reg-names = "csr", "cfg";
  426. ranges = <0x01000000 0x0 0x00000000 0xc0 0x10000000 0x0 0x00010000 /* io */
  427. 0x02000000 0x0 0x80000000 0xc1 0x80000000 0x0 0x80000000>; /* mem */
  428. dma-ranges = <0x42000000 0x80 0x00000000 0x80 0x00000000 0x00 0x80000000
  429. 0x42000000 0x00 0x00000000 0x00 0x00000000 0x80 0x00000000>;
  430. interrupt-map-mask = <0x0 0x0 0x0 0x7>;
  431. interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0xda 0x1
  432. 0x0 0x0 0x0 0x2 &gic 0x0 0xdb 0x1
  433. 0x0 0x0 0x0 0x3 &gic 0x0 0xdc 0x1
  434. 0x0 0x0 0x0 0x4 &gic 0x0 0xdd 0x1>;
  435. dma-coherent;
  436. clocks = <&pcie4clk 0>;
  437. };
  438. serial0: serial@1c020000 {
  439. status = "disabled";
  440. device_type = "serial";
  441. compatible = "ns16550a";
  442. reg = <0 0x1c020000 0x0 0x1000>;
  443. reg-shift = <2>;
  444. clock-frequency = <10000000>; /* Updated by bootloader */
  445. interrupt-parent = <&gic>;
  446. interrupts = <0x0 0x4c 0x4>;
  447. };
  448. serial1: serial@1c021000 {
  449. status = "disabled";
  450. device_type = "serial";
  451. compatible = "ns16550a";
  452. reg = <0 0x1c021000 0x0 0x1000>;
  453. reg-shift = <2>;
  454. clock-frequency = <10000000>; /* Updated by bootloader */
  455. interrupt-parent = <&gic>;
  456. interrupts = <0x0 0x4d 0x4>;
  457. };
  458. serial2: serial@1c022000 {
  459. status = "disabled";
  460. device_type = "serial";
  461. compatible = "ns16550a";
  462. reg = <0 0x1c022000 0x0 0x1000>;
  463. reg-shift = <2>;
  464. clock-frequency = <10000000>; /* Updated by bootloader */
  465. interrupt-parent = <&gic>;
  466. interrupts = <0x0 0x4e 0x4>;
  467. };
  468. serial3: serial@1c023000 {
  469. status = "disabled";
  470. device_type = "serial";
  471. compatible = "ns16550a";
  472. reg = <0 0x1c023000 0x0 0x1000>;
  473. reg-shift = <2>;
  474. clock-frequency = <10000000>; /* Updated by bootloader */
  475. interrupt-parent = <&gic>;
  476. interrupts = <0x0 0x4f 0x4>;
  477. };
  478. phy1: phy@1f21a000 {
  479. compatible = "apm,xgene-phy";
  480. reg = <0x0 0x1f21a000 0x0 0x100>;
  481. #phy-cells = <1>;
  482. clocks = <&sataphy1clk 0>;
  483. status = "disabled";
  484. apm,tx-boost-gain = <30 30 30 30 30 30>;
  485. apm,tx-eye-tuning = <2 10 10 2 10 10>;
  486. };
  487. phy2: phy@1f22a000 {
  488. compatible = "apm,xgene-phy";
  489. reg = <0x0 0x1f22a000 0x0 0x100>;
  490. #phy-cells = <1>;
  491. clocks = <&sataphy2clk 0>;
  492. status = "ok";
  493. apm,tx-boost-gain = <30 30 30 30 30 30>;
  494. apm,tx-eye-tuning = <1 10 10 2 10 10>;
  495. };
  496. phy3: phy@1f23a000 {
  497. compatible = "apm,xgene-phy";
  498. reg = <0x0 0x1f23a000 0x0 0x100>;
  499. #phy-cells = <1>;
  500. clocks = <&sataphy3clk 0>;
  501. status = "ok";
  502. apm,tx-boost-gain = <31 31 31 31 31 31>;
  503. apm,tx-eye-tuning = <2 10 10 2 10 10>;
  504. };
  505. sata1: sata@1a000000 {
  506. compatible = "apm,xgene-ahci";
  507. reg = <0x0 0x1a000000 0x0 0x1000>,
  508. <0x0 0x1f210000 0x0 0x1000>,
  509. <0x0 0x1f21d000 0x0 0x1000>,
  510. <0x0 0x1f21e000 0x0 0x1000>,
  511. <0x0 0x1f217000 0x0 0x1000>;
  512. interrupts = <0x0 0x86 0x4>;
  513. dma-coherent;
  514. status = "disabled";
  515. clocks = <&sata01clk 0>;
  516. phys = <&phy1 0>;
  517. phy-names = "sata-phy";
  518. };
  519. sata2: sata@1a400000 {
  520. compatible = "apm,xgene-ahci";
  521. reg = <0x0 0x1a400000 0x0 0x1000>,
  522. <0x0 0x1f220000 0x0 0x1000>,
  523. <0x0 0x1f22d000 0x0 0x1000>,
  524. <0x0 0x1f22e000 0x0 0x1000>,
  525. <0x0 0x1f227000 0x0 0x1000>;
  526. interrupts = <0x0 0x87 0x4>;
  527. dma-coherent;
  528. status = "ok";
  529. clocks = <&sata23clk 0>;
  530. phys = <&phy2 0>;
  531. phy-names = "sata-phy";
  532. };
  533. sata3: sata@1a800000 {
  534. compatible = "apm,xgene-ahci";
  535. reg = <0x0 0x1a800000 0x0 0x1000>,
  536. <0x0 0x1f230000 0x0 0x1000>,
  537. <0x0 0x1f23d000 0x0 0x1000>,
  538. <0x0 0x1f23e000 0x0 0x1000>;
  539. interrupts = <0x0 0x88 0x4>;
  540. dma-coherent;
  541. status = "ok";
  542. clocks = <&sata45clk 0>;
  543. phys = <&phy3 0>;
  544. phy-names = "sata-phy";
  545. };
  546. rtc: rtc@10510000 {
  547. compatible = "apm,xgene-rtc";
  548. reg = <0x0 0x10510000 0x0 0x400>;
  549. interrupts = <0x0 0x46 0x4>;
  550. #clock-cells = <1>;
  551. clocks = <&rtcclk 0>;
  552. };
  553. menet: ethernet@17020000 {
  554. compatible = "apm,xgene-enet";
  555. status = "disabled";
  556. reg = <0x0 0x17020000 0x0 0xd100>,
  557. <0x0 0X17030000 0x0 0Xc300>,
  558. <0x0 0X10000000 0x0 0X200>;
  559. reg-names = "enet_csr", "ring_csr", "ring_cmd";
  560. interrupts = <0x0 0x3c 0x4>;
  561. dma-coherent;
  562. clocks = <&menetclk 0>;
  563. /* mac address will be overwritten by the bootloader */
  564. local-mac-address = [00 00 00 00 00 00];
  565. phy-connection-type = "rgmii";
  566. phy-handle = <&menetphy>;
  567. mdio {
  568. compatible = "apm,xgene-mdio";
  569. #address-cells = <1>;
  570. #size-cells = <0>;
  571. menetphy: menetphy@3 {
  572. compatible = "ethernet-phy-id001c.c915";
  573. reg = <0x3>;
  574. };
  575. };
  576. };
  577. sgenet0: ethernet@1f210000 {
  578. compatible = "apm,xgene-enet";
  579. status = "disabled";
  580. reg = <0x0 0x1f210000 0x0 0xd100>,
  581. <0x0 0x1f200000 0x0 0Xc300>,
  582. <0x0 0x1B000000 0x0 0X200>;
  583. reg-names = "enet_csr", "ring_csr", "ring_cmd";
  584. interrupts = <0x0 0xA0 0x4>;
  585. dma-coherent;
  586. clocks = <&sge0clk 0>;
  587. local-mac-address = [00 00 00 00 00 00];
  588. phy-connection-type = "sgmii";
  589. };
  590. xgenet: ethernet@1f610000 {
  591. compatible = "apm,xgene-enet";
  592. status = "disabled";
  593. reg = <0x0 0x1f610000 0x0 0xd100>,
  594. <0x0 0x1f600000 0x0 0Xc300>,
  595. <0x0 0x18000000 0x0 0X200>;
  596. reg-names = "enet_csr", "ring_csr", "ring_cmd";
  597. interrupts = <0x0 0x60 0x4>;
  598. dma-coherent;
  599. clocks = <&xge0clk 0>;
  600. /* mac address will be overwritten by the bootloader */
  601. local-mac-address = [00 00 00 00 00 00];
  602. phy-connection-type = "xgmii";
  603. };
  604. rng: rng@10520000 {
  605. compatible = "apm,xgene-rng";
  606. reg = <0x0 0x10520000 0x0 0x100>;
  607. interrupts = <0x0 0x41 0x4>;
  608. clocks = <&rngpkaclk 0>;
  609. };
  610. };
  611. };