sun5i-a10s.dtsi 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611
  1. /*
  2. * Copyright 2013 Maxime Ripard
  3. *
  4. * Maxime Ripard <maxime.ripard@free-electrons.com>
  5. *
  6. * The code contained herein is licensed under the GNU General Public
  7. * License. You may obtain a copy of the GNU General Public License
  8. * Version 2 or later at the following locations:
  9. *
  10. * http://www.opensource.org/licenses/gpl-license.html
  11. * http://www.gnu.org/copyleft/gpl.html
  12. */
  13. /include/ "skeleton.dtsi"
  14. / {
  15. interrupt-parent = <&intc>;
  16. aliases {
  17. ethernet0 = &emac;
  18. serial0 = &uart0;
  19. serial1 = &uart1;
  20. serial2 = &uart2;
  21. serial3 = &uart3;
  22. };
  23. cpus {
  24. cpu@0 {
  25. compatible = "arm,cortex-a8";
  26. };
  27. };
  28. memory {
  29. reg = <0x40000000 0x20000000>;
  30. };
  31. clocks {
  32. #address-cells = <1>;
  33. #size-cells = <1>;
  34. ranges;
  35. /*
  36. * This is a dummy clock, to be used as placeholder on
  37. * other mux clocks when a specific parent clock is not
  38. * yet implemented. It should be dropped when the driver
  39. * is complete.
  40. */
  41. dummy: dummy {
  42. #clock-cells = <0>;
  43. compatible = "fixed-clock";
  44. clock-frequency = <0>;
  45. };
  46. osc24M: clk@01c20050 {
  47. #clock-cells = <0>;
  48. compatible = "allwinner,sun4i-a10-osc-clk";
  49. reg = <0x01c20050 0x4>;
  50. clock-frequency = <24000000>;
  51. clock-output-names = "osc24M";
  52. };
  53. osc32k: clk@0 {
  54. #clock-cells = <0>;
  55. compatible = "fixed-clock";
  56. clock-frequency = <32768>;
  57. clock-output-names = "osc32k";
  58. };
  59. pll1: clk@01c20000 {
  60. #clock-cells = <0>;
  61. compatible = "allwinner,sun4i-a10-pll1-clk";
  62. reg = <0x01c20000 0x4>;
  63. clocks = <&osc24M>;
  64. clock-output-names = "pll1";
  65. };
  66. pll4: clk@01c20018 {
  67. #clock-cells = <0>;
  68. compatible = "allwinner,sun4i-a10-pll1-clk";
  69. reg = <0x01c20018 0x4>;
  70. clocks = <&osc24M>;
  71. clock-output-names = "pll4";
  72. };
  73. pll5: clk@01c20020 {
  74. #clock-cells = <1>;
  75. compatible = "allwinner,sun4i-a10-pll5-clk";
  76. reg = <0x01c20020 0x4>;
  77. clocks = <&osc24M>;
  78. clock-output-names = "pll5_ddr", "pll5_other";
  79. };
  80. pll6: clk@01c20028 {
  81. #clock-cells = <1>;
  82. compatible = "allwinner,sun4i-a10-pll6-clk";
  83. reg = <0x01c20028 0x4>;
  84. clocks = <&osc24M>;
  85. clock-output-names = "pll6_sata", "pll6_other", "pll6";
  86. };
  87. /* dummy is 200M */
  88. cpu: cpu@01c20054 {
  89. #clock-cells = <0>;
  90. compatible = "allwinner,sun4i-a10-cpu-clk";
  91. reg = <0x01c20054 0x4>;
  92. clocks = <&osc32k>, <&osc24M>, <&pll1>, <&dummy>;
  93. clock-output-names = "cpu";
  94. };
  95. axi: axi@01c20054 {
  96. #clock-cells = <0>;
  97. compatible = "allwinner,sun4i-a10-axi-clk";
  98. reg = <0x01c20054 0x4>;
  99. clocks = <&cpu>;
  100. clock-output-names = "axi";
  101. };
  102. axi_gates: clk@01c2005c {
  103. #clock-cells = <1>;
  104. compatible = "allwinner,sun4i-a10-axi-gates-clk";
  105. reg = <0x01c2005c 0x4>;
  106. clocks = <&axi>;
  107. clock-output-names = "axi_dram";
  108. };
  109. ahb: ahb@01c20054 {
  110. #clock-cells = <0>;
  111. compatible = "allwinner,sun4i-a10-ahb-clk";
  112. reg = <0x01c20054 0x4>;
  113. clocks = <&axi>;
  114. clock-output-names = "ahb";
  115. };
  116. ahb_gates: clk@01c20060 {
  117. #clock-cells = <1>;
  118. compatible = "allwinner,sun5i-a10s-ahb-gates-clk";
  119. reg = <0x01c20060 0x8>;
  120. clocks = <&ahb>;
  121. clock-output-names = "ahb_usbotg", "ahb_ehci", "ahb_ohci",
  122. "ahb_ss", "ahb_dma", "ahb_bist", "ahb_mmc0",
  123. "ahb_mmc1", "ahb_mmc2", "ahb_nand", "ahb_sdram",
  124. "ahb_emac", "ahb_ts", "ahb_spi0", "ahb_spi1",
  125. "ahb_spi2", "ahb_gps", "ahb_stimer", "ahb_ve",
  126. "ahb_tve", "ahb_lcd", "ahb_csi", "ahb_hdmi",
  127. "ahb_de_be", "ahb_de_fe", "ahb_iep", "ahb_mali400";
  128. };
  129. apb0: apb0@01c20054 {
  130. #clock-cells = <0>;
  131. compatible = "allwinner,sun4i-a10-apb0-clk";
  132. reg = <0x01c20054 0x4>;
  133. clocks = <&ahb>;
  134. clock-output-names = "apb0";
  135. };
  136. apb0_gates: clk@01c20068 {
  137. #clock-cells = <1>;
  138. compatible = "allwinner,sun5i-a10s-apb0-gates-clk";
  139. reg = <0x01c20068 0x4>;
  140. clocks = <&apb0>;
  141. clock-output-names = "apb0_codec", "apb0_iis", "apb0_pio",
  142. "apb0_ir", "apb0_keypad";
  143. };
  144. apb1_mux: apb1_mux@01c20058 {
  145. #clock-cells = <0>;
  146. compatible = "allwinner,sun4i-a10-apb1-mux-clk";
  147. reg = <0x01c20058 0x4>;
  148. clocks = <&osc24M>, <&pll6 1>, <&osc32k>;
  149. clock-output-names = "apb1_mux";
  150. };
  151. apb1: apb1@01c20058 {
  152. #clock-cells = <0>;
  153. compatible = "allwinner,sun4i-a10-apb1-clk";
  154. reg = <0x01c20058 0x4>;
  155. clocks = <&apb1_mux>;
  156. clock-output-names = "apb1";
  157. };
  158. apb1_gates: clk@01c2006c {
  159. #clock-cells = <1>;
  160. compatible = "allwinner,sun5i-a10s-apb1-gates-clk";
  161. reg = <0x01c2006c 0x4>;
  162. clocks = <&apb1>;
  163. clock-output-names = "apb1_i2c0", "apb1_i2c1",
  164. "apb1_i2c2", "apb1_uart0", "apb1_uart1",
  165. "apb1_uart2", "apb1_uart3";
  166. };
  167. nand_clk: clk@01c20080 {
  168. #clock-cells = <0>;
  169. compatible = "allwinner,sun4i-a10-mod0-clk";
  170. reg = <0x01c20080 0x4>;
  171. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  172. clock-output-names = "nand";
  173. };
  174. ms_clk: clk@01c20084 {
  175. #clock-cells = <0>;
  176. compatible = "allwinner,sun4i-a10-mod0-clk";
  177. reg = <0x01c20084 0x4>;
  178. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  179. clock-output-names = "ms";
  180. };
  181. mmc0_clk: clk@01c20088 {
  182. #clock-cells = <0>;
  183. compatible = "allwinner,sun4i-a10-mod0-clk";
  184. reg = <0x01c20088 0x4>;
  185. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  186. clock-output-names = "mmc0";
  187. };
  188. mmc1_clk: clk@01c2008c {
  189. #clock-cells = <0>;
  190. compatible = "allwinner,sun4i-a10-mod0-clk";
  191. reg = <0x01c2008c 0x4>;
  192. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  193. clock-output-names = "mmc1";
  194. };
  195. mmc2_clk: clk@01c20090 {
  196. #clock-cells = <0>;
  197. compatible = "allwinner,sun4i-a10-mod0-clk";
  198. reg = <0x01c20090 0x4>;
  199. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  200. clock-output-names = "mmc2";
  201. };
  202. ts_clk: clk@01c20098 {
  203. #clock-cells = <0>;
  204. compatible = "allwinner,sun4i-a10-mod0-clk";
  205. reg = <0x01c20098 0x4>;
  206. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  207. clock-output-names = "ts";
  208. };
  209. ss_clk: clk@01c2009c {
  210. #clock-cells = <0>;
  211. compatible = "allwinner,sun4i-a10-mod0-clk";
  212. reg = <0x01c2009c 0x4>;
  213. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  214. clock-output-names = "ss";
  215. };
  216. spi0_clk: clk@01c200a0 {
  217. #clock-cells = <0>;
  218. compatible = "allwinner,sun4i-a10-mod0-clk";
  219. reg = <0x01c200a0 0x4>;
  220. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  221. clock-output-names = "spi0";
  222. };
  223. spi1_clk: clk@01c200a4 {
  224. #clock-cells = <0>;
  225. compatible = "allwinner,sun4i-a10-mod0-clk";
  226. reg = <0x01c200a4 0x4>;
  227. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  228. clock-output-names = "spi1";
  229. };
  230. spi2_clk: clk@01c200a8 {
  231. #clock-cells = <0>;
  232. compatible = "allwinner,sun4i-a10-mod0-clk";
  233. reg = <0x01c200a8 0x4>;
  234. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  235. clock-output-names = "spi2";
  236. };
  237. ir0_clk: clk@01c200b0 {
  238. #clock-cells = <0>;
  239. compatible = "allwinner,sun4i-a10-mod0-clk";
  240. reg = <0x01c200b0 0x4>;
  241. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  242. clock-output-names = "ir0";
  243. };
  244. usb_clk: clk@01c200cc {
  245. #clock-cells = <1>;
  246. #reset-cells = <1>;
  247. compatible = "allwinner,sun5i-a13-usb-clk";
  248. reg = <0x01c200cc 0x4>;
  249. clocks = <&pll6 1>;
  250. clock-output-names = "usb_ohci0", "usb_phy";
  251. };
  252. mbus_clk: clk@01c2015c {
  253. #clock-cells = <0>;
  254. compatible = "allwinner,sun5i-a13-mbus-clk";
  255. reg = <0x01c2015c 0x4>;
  256. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  257. clock-output-names = "mbus";
  258. };
  259. };
  260. soc@01c00000 {
  261. compatible = "simple-bus";
  262. #address-cells = <1>;
  263. #size-cells = <1>;
  264. ranges;
  265. dma: dma-controller@01c02000 {
  266. compatible = "allwinner,sun4i-a10-dma";
  267. reg = <0x01c02000 0x1000>;
  268. interrupts = <27>;
  269. clocks = <&ahb_gates 6>;
  270. #dma-cells = <2>;
  271. };
  272. spi0: spi@01c05000 {
  273. compatible = "allwinner,sun4i-a10-spi";
  274. reg = <0x01c05000 0x1000>;
  275. interrupts = <10>;
  276. clocks = <&ahb_gates 20>, <&spi0_clk>;
  277. clock-names = "ahb", "mod";
  278. dmas = <&dma 1 27>, <&dma 1 26>;
  279. dma-names = "rx", "tx";
  280. status = "disabled";
  281. #address-cells = <1>;
  282. #size-cells = <0>;
  283. };
  284. spi1: spi@01c06000 {
  285. compatible = "allwinner,sun4i-a10-spi";
  286. reg = <0x01c06000 0x1000>;
  287. interrupts = <11>;
  288. clocks = <&ahb_gates 21>, <&spi1_clk>;
  289. clock-names = "ahb", "mod";
  290. dmas = <&dma 1 9>, <&dma 1 8>;
  291. dma-names = "rx", "tx";
  292. status = "disabled";
  293. #address-cells = <1>;
  294. #size-cells = <0>;
  295. };
  296. emac: ethernet@01c0b000 {
  297. compatible = "allwinner,sun4i-a10-emac";
  298. reg = <0x01c0b000 0x1000>;
  299. interrupts = <55>;
  300. clocks = <&ahb_gates 17>;
  301. status = "disabled";
  302. };
  303. mdio@01c0b080 {
  304. compatible = "allwinner,sun4i-a10-mdio";
  305. reg = <0x01c0b080 0x14>;
  306. status = "disabled";
  307. #address-cells = <1>;
  308. #size-cells = <0>;
  309. };
  310. mmc0: mmc@01c0f000 {
  311. compatible = "allwinner,sun5i-a13-mmc";
  312. reg = <0x01c0f000 0x1000>;
  313. clocks = <&ahb_gates 8>, <&mmc0_clk>;
  314. clock-names = "ahb", "mmc";
  315. interrupts = <32>;
  316. status = "disabled";
  317. };
  318. mmc1: mmc@01c10000 {
  319. compatible = "allwinner,sun5i-a13-mmc";
  320. reg = <0x01c10000 0x1000>;
  321. clocks = <&ahb_gates 9>, <&mmc1_clk>;
  322. clock-names = "ahb", "mmc";
  323. interrupts = <33>;
  324. status = "disabled";
  325. };
  326. mmc2: mmc@01c11000 {
  327. compatible = "allwinner,sun5i-a13-mmc";
  328. reg = <0x01c11000 0x1000>;
  329. clocks = <&ahb_gates 10>, <&mmc2_clk>;
  330. clock-names = "ahb", "mmc";
  331. interrupts = <34>;
  332. status = "disabled";
  333. };
  334. usbphy: phy@01c13400 {
  335. #phy-cells = <1>;
  336. compatible = "allwinner,sun5i-a13-usb-phy";
  337. reg = <0x01c13400 0x10 0x01c14800 0x4>;
  338. reg-names = "phy_ctrl", "pmu1";
  339. clocks = <&usb_clk 8>;
  340. clock-names = "usb_phy";
  341. resets = <&usb_clk 1>;
  342. reset-names = "usb1_reset";
  343. status = "disabled";
  344. };
  345. ehci0: usb@01c14000 {
  346. compatible = "allwinner,sun5i-a10s-ehci", "generic-ehci";
  347. reg = <0x01c14000 0x100>;
  348. interrupts = <39>;
  349. clocks = <&ahb_gates 1>;
  350. phys = <&usbphy 1>;
  351. phy-names = "usb";
  352. status = "disabled";
  353. };
  354. ohci0: usb@01c14400 {
  355. compatible = "allwinner,sun5i-a10s-ohci", "generic-ohci";
  356. reg = <0x01c14400 0x100>;
  357. interrupts = <40>;
  358. clocks = <&usb_clk 6>, <&ahb_gates 2>;
  359. phys = <&usbphy 1>;
  360. phy-names = "usb";
  361. status = "disabled";
  362. };
  363. spi2: spi@01c17000 {
  364. compatible = "allwinner,sun4i-a10-spi";
  365. reg = <0x01c17000 0x1000>;
  366. interrupts = <12>;
  367. clocks = <&ahb_gates 22>, <&spi2_clk>;
  368. clock-names = "ahb", "mod";
  369. dmas = <&dma 1 29>, <&dma 1 28>;
  370. dma-names = "rx", "tx";
  371. status = "disabled";
  372. #address-cells = <1>;
  373. #size-cells = <0>;
  374. };
  375. intc: interrupt-controller@01c20400 {
  376. compatible = "allwinner,sun4i-a10-ic";
  377. reg = <0x01c20400 0x400>;
  378. interrupt-controller;
  379. #interrupt-cells = <1>;
  380. };
  381. pio: pinctrl@01c20800 {
  382. compatible = "allwinner,sun5i-a10s-pinctrl";
  383. reg = <0x01c20800 0x400>;
  384. interrupts = <28>;
  385. clocks = <&apb0_gates 5>;
  386. gpio-controller;
  387. interrupt-controller;
  388. #interrupt-cells = <2>;
  389. #size-cells = <0>;
  390. #gpio-cells = <3>;
  391. uart0_pins_a: uart0@0 {
  392. allwinner,pins = "PB19", "PB20";
  393. allwinner,function = "uart0";
  394. allwinner,drive = <0>;
  395. allwinner,pull = <0>;
  396. };
  397. uart2_pins_a: uart2@0 {
  398. allwinner,pins = "PC18", "PC19";
  399. allwinner,function = "uart2";
  400. allwinner,drive = <0>;
  401. allwinner,pull = <0>;
  402. };
  403. uart3_pins_a: uart3@0 {
  404. allwinner,pins = "PG9", "PG10";
  405. allwinner,function = "uart3";
  406. allwinner,drive = <0>;
  407. allwinner,pull = <0>;
  408. };
  409. emac_pins_a: emac0@0 {
  410. allwinner,pins = "PA0", "PA1", "PA2",
  411. "PA3", "PA4", "PA5", "PA6",
  412. "PA7", "PA8", "PA9", "PA10",
  413. "PA11", "PA12", "PA13", "PA14",
  414. "PA15", "PA16";
  415. allwinner,function = "emac";
  416. allwinner,drive = <0>;
  417. allwinner,pull = <0>;
  418. };
  419. i2c0_pins_a: i2c0@0 {
  420. allwinner,pins = "PB0", "PB1";
  421. allwinner,function = "i2c0";
  422. allwinner,drive = <0>;
  423. allwinner,pull = <0>;
  424. };
  425. i2c1_pins_a: i2c1@0 {
  426. allwinner,pins = "PB15", "PB16";
  427. allwinner,function = "i2c1";
  428. allwinner,drive = <0>;
  429. allwinner,pull = <0>;
  430. };
  431. i2c2_pins_a: i2c2@0 {
  432. allwinner,pins = "PB17", "PB18";
  433. allwinner,function = "i2c2";
  434. allwinner,drive = <0>;
  435. allwinner,pull = <0>;
  436. };
  437. mmc0_pins_a: mmc0@0 {
  438. allwinner,pins = "PF0","PF1","PF2","PF3","PF4","PF5";
  439. allwinner,function = "mmc0";
  440. allwinner,drive = <2>;
  441. allwinner,pull = <0>;
  442. };
  443. mmc1_pins_a: mmc1@0 {
  444. allwinner,pins = "PG3","PG4","PG5","PG6","PG7","PG8";
  445. allwinner,function = "mmc1";
  446. allwinner,drive = <2>;
  447. allwinner,pull = <0>;
  448. };
  449. };
  450. timer@01c20c00 {
  451. compatible = "allwinner,sun4i-a10-timer";
  452. reg = <0x01c20c00 0x90>;
  453. interrupts = <22>;
  454. clocks = <&osc24M>;
  455. };
  456. wdt: watchdog@01c20c90 {
  457. compatible = "allwinner,sun4i-a10-wdt";
  458. reg = <0x01c20c90 0x10>;
  459. };
  460. sid: eeprom@01c23800 {
  461. compatible = "allwinner,sun4i-a10-sid";
  462. reg = <0x01c23800 0x10>;
  463. };
  464. rtp: rtp@01c25000 {
  465. compatible = "allwinner,sun4i-a10-ts";
  466. reg = <0x01c25000 0x100>;
  467. interrupts = <29>;
  468. };
  469. uart0: serial@01c28000 {
  470. compatible = "snps,dw-apb-uart";
  471. reg = <0x01c28000 0x400>;
  472. interrupts = <1>;
  473. reg-shift = <2>;
  474. reg-io-width = <4>;
  475. clocks = <&apb1_gates 16>;
  476. status = "disabled";
  477. };
  478. uart1: serial@01c28400 {
  479. compatible = "snps,dw-apb-uart";
  480. reg = <0x01c28400 0x400>;
  481. interrupts = <2>;
  482. reg-shift = <2>;
  483. reg-io-width = <4>;
  484. clocks = <&apb1_gates 17>;
  485. status = "disabled";
  486. };
  487. uart2: serial@01c28800 {
  488. compatible = "snps,dw-apb-uart";
  489. reg = <0x01c28800 0x400>;
  490. interrupts = <3>;
  491. reg-shift = <2>;
  492. reg-io-width = <4>;
  493. clocks = <&apb1_gates 18>;
  494. status = "disabled";
  495. };
  496. uart3: serial@01c28c00 {
  497. compatible = "snps,dw-apb-uart";
  498. reg = <0x01c28c00 0x400>;
  499. interrupts = <4>;
  500. reg-shift = <2>;
  501. reg-io-width = <4>;
  502. clocks = <&apb1_gates 19>;
  503. status = "disabled";
  504. };
  505. i2c0: i2c@01c2ac00 {
  506. #address-cells = <1>;
  507. #size-cells = <0>;
  508. compatible = "allwinner,sun5i-a10s-i2c", "allwinner,sun4i-a10-i2c";
  509. reg = <0x01c2ac00 0x400>;
  510. interrupts = <7>;
  511. clocks = <&apb1_gates 0>;
  512. status = "disabled";
  513. };
  514. i2c1: i2c@01c2b000 {
  515. #address-cells = <1>;
  516. #size-cells = <0>;
  517. compatible = "allwinner,sun5i-a10s-i2c", "allwinner,sun4i-a10-i2c";
  518. reg = <0x01c2b000 0x400>;
  519. interrupts = <8>;
  520. clocks = <&apb1_gates 1>;
  521. status = "disabled";
  522. };
  523. i2c2: i2c@01c2b400 {
  524. #address-cells = <1>;
  525. #size-cells = <0>;
  526. compatible = "allwinner,sun5i-a10s-i2c", "allwinner,sun4i-a10-i2c";
  527. reg = <0x01c2b400 0x400>;
  528. interrupts = <9>;
  529. clocks = <&apb1_gates 2>;
  530. status = "disabled";
  531. };
  532. timer@01c60000 {
  533. compatible = "allwinner,sun5i-a13-hstimer";
  534. reg = <0x01c60000 0x1000>;
  535. interrupts = <82>, <83>;
  536. clocks = <&ahb_gates 28>;
  537. };
  538. };
  539. };