sun7i-a20.dtsi 23 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988
  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 = <&gic>;
  16. aliases {
  17. ethernet0 = &gmac;
  18. serial0 = &uart0;
  19. serial1 = &uart1;
  20. serial2 = &uart2;
  21. serial3 = &uart3;
  22. serial4 = &uart4;
  23. serial5 = &uart5;
  24. serial6 = &uart6;
  25. serial7 = &uart7;
  26. };
  27. cpus {
  28. #address-cells = <1>;
  29. #size-cells = <0>;
  30. cpu@0 {
  31. compatible = "arm,cortex-a7";
  32. device_type = "cpu";
  33. reg = <0>;
  34. };
  35. cpu@1 {
  36. compatible = "arm,cortex-a7";
  37. device_type = "cpu";
  38. reg = <1>;
  39. };
  40. };
  41. memory {
  42. reg = <0x40000000 0x80000000>;
  43. };
  44. timer {
  45. compatible = "arm,armv7-timer";
  46. interrupts = <1 13 0xf08>,
  47. <1 14 0xf08>,
  48. <1 11 0xf08>,
  49. <1 10 0xf08>;
  50. };
  51. pmu {
  52. compatible = "arm,cortex-a7-pmu", "arm,cortex-a15-pmu";
  53. interrupts = <0 120 4>,
  54. <0 121 4>;
  55. };
  56. clocks {
  57. #address-cells = <1>;
  58. #size-cells = <1>;
  59. ranges;
  60. osc24M: clk@01c20050 {
  61. #clock-cells = <0>;
  62. compatible = "allwinner,sun4i-a10-osc-clk";
  63. reg = <0x01c20050 0x4>;
  64. clock-frequency = <24000000>;
  65. clock-output-names = "osc24M";
  66. };
  67. osc32k: clk@0 {
  68. #clock-cells = <0>;
  69. compatible = "fixed-clock";
  70. clock-frequency = <32768>;
  71. clock-output-names = "osc32k";
  72. };
  73. pll1: clk@01c20000 {
  74. #clock-cells = <0>;
  75. compatible = "allwinner,sun4i-a10-pll1-clk";
  76. reg = <0x01c20000 0x4>;
  77. clocks = <&osc24M>;
  78. clock-output-names = "pll1";
  79. };
  80. pll4: clk@01c20018 {
  81. #clock-cells = <0>;
  82. compatible = "allwinner,sun7i-a20-pll4-clk";
  83. reg = <0x01c20018 0x4>;
  84. clocks = <&osc24M>;
  85. clock-output-names = "pll4";
  86. };
  87. pll5: clk@01c20020 {
  88. #clock-cells = <1>;
  89. compatible = "allwinner,sun4i-a10-pll5-clk";
  90. reg = <0x01c20020 0x4>;
  91. clocks = <&osc24M>;
  92. clock-output-names = "pll5_ddr", "pll5_other";
  93. };
  94. pll6: clk@01c20028 {
  95. #clock-cells = <1>;
  96. compatible = "allwinner,sun4i-a10-pll6-clk";
  97. reg = <0x01c20028 0x4>;
  98. clocks = <&osc24M>;
  99. clock-output-names = "pll6_sata", "pll6_other", "pll6";
  100. };
  101. pll8: clk@01c20040 {
  102. #clock-cells = <0>;
  103. compatible = "allwinner,sun7i-a20-pll4-clk";
  104. reg = <0x01c20040 0x4>;
  105. clocks = <&osc24M>;
  106. clock-output-names = "pll8";
  107. };
  108. cpu: cpu@01c20054 {
  109. #clock-cells = <0>;
  110. compatible = "allwinner,sun4i-a10-cpu-clk";
  111. reg = <0x01c20054 0x4>;
  112. clocks = <&osc32k>, <&osc24M>, <&pll1>, <&pll6 1>;
  113. clock-output-names = "cpu";
  114. };
  115. axi: axi@01c20054 {
  116. #clock-cells = <0>;
  117. compatible = "allwinner,sun4i-a10-axi-clk";
  118. reg = <0x01c20054 0x4>;
  119. clocks = <&cpu>;
  120. clock-output-names = "axi";
  121. };
  122. ahb: ahb@01c20054 {
  123. #clock-cells = <0>;
  124. compatible = "allwinner,sun4i-a10-ahb-clk";
  125. reg = <0x01c20054 0x4>;
  126. clocks = <&axi>;
  127. clock-output-names = "ahb";
  128. };
  129. ahb_gates: clk@01c20060 {
  130. #clock-cells = <1>;
  131. compatible = "allwinner,sun7i-a20-ahb-gates-clk";
  132. reg = <0x01c20060 0x8>;
  133. clocks = <&ahb>;
  134. clock-output-names = "ahb_usb0", "ahb_ehci0",
  135. "ahb_ohci0", "ahb_ehci1", "ahb_ohci1",
  136. "ahb_ss", "ahb_dma", "ahb_bist", "ahb_mmc0",
  137. "ahb_mmc1", "ahb_mmc2", "ahb_mmc3", "ahb_ms",
  138. "ahb_nand", "ahb_sdram", "ahb_ace",
  139. "ahb_emac", "ahb_ts", "ahb_spi0", "ahb_spi1",
  140. "ahb_spi2", "ahb_spi3", "ahb_sata",
  141. "ahb_hstimer", "ahb_ve", "ahb_tvd", "ahb_tve0",
  142. "ahb_tve1", "ahb_lcd0", "ahb_lcd1", "ahb_csi0",
  143. "ahb_csi1", "ahb_hdmi1", "ahb_hdmi0",
  144. "ahb_de_be0", "ahb_de_be1", "ahb_de_fe0",
  145. "ahb_de_fe1", "ahb_gmac", "ahb_mp",
  146. "ahb_mali";
  147. };
  148. apb0: apb0@01c20054 {
  149. #clock-cells = <0>;
  150. compatible = "allwinner,sun4i-a10-apb0-clk";
  151. reg = <0x01c20054 0x4>;
  152. clocks = <&ahb>;
  153. clock-output-names = "apb0";
  154. };
  155. apb0_gates: clk@01c20068 {
  156. #clock-cells = <1>;
  157. compatible = "allwinner,sun7i-a20-apb0-gates-clk";
  158. reg = <0x01c20068 0x4>;
  159. clocks = <&apb0>;
  160. clock-output-names = "apb0_codec", "apb0_spdif",
  161. "apb0_ac97", "apb0_iis0", "apb0_iis1",
  162. "apb0_pio", "apb0_ir0", "apb0_ir1",
  163. "apb0_iis2", "apb0_keypad";
  164. };
  165. apb1_mux: apb1_mux@01c20058 {
  166. #clock-cells = <0>;
  167. compatible = "allwinner,sun4i-a10-apb1-mux-clk";
  168. reg = <0x01c20058 0x4>;
  169. clocks = <&osc24M>, <&pll6 1>, <&osc32k>;
  170. clock-output-names = "apb1_mux";
  171. };
  172. apb1: apb1@01c20058 {
  173. #clock-cells = <0>;
  174. compatible = "allwinner,sun4i-a10-apb1-clk";
  175. reg = <0x01c20058 0x4>;
  176. clocks = <&apb1_mux>;
  177. clock-output-names = "apb1";
  178. };
  179. apb1_gates: clk@01c2006c {
  180. #clock-cells = <1>;
  181. compatible = "allwinner,sun7i-a20-apb1-gates-clk";
  182. reg = <0x01c2006c 0x4>;
  183. clocks = <&apb1>;
  184. clock-output-names = "apb1_i2c0", "apb1_i2c1",
  185. "apb1_i2c2", "apb1_i2c3", "apb1_can",
  186. "apb1_scr", "apb1_ps20", "apb1_ps21",
  187. "apb1_i2c4", "apb1_uart0", "apb1_uart1",
  188. "apb1_uart2", "apb1_uart3", "apb1_uart4",
  189. "apb1_uart5", "apb1_uart6", "apb1_uart7";
  190. };
  191. nand_clk: clk@01c20080 {
  192. #clock-cells = <0>;
  193. compatible = "allwinner,sun4i-a10-mod0-clk";
  194. reg = <0x01c20080 0x4>;
  195. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  196. clock-output-names = "nand";
  197. };
  198. ms_clk: clk@01c20084 {
  199. #clock-cells = <0>;
  200. compatible = "allwinner,sun4i-a10-mod0-clk";
  201. reg = <0x01c20084 0x4>;
  202. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  203. clock-output-names = "ms";
  204. };
  205. mmc0_clk: clk@01c20088 {
  206. #clock-cells = <0>;
  207. compatible = "allwinner,sun4i-a10-mod0-clk";
  208. reg = <0x01c20088 0x4>;
  209. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  210. clock-output-names = "mmc0";
  211. };
  212. mmc1_clk: clk@01c2008c {
  213. #clock-cells = <0>;
  214. compatible = "allwinner,sun4i-a10-mod0-clk";
  215. reg = <0x01c2008c 0x4>;
  216. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  217. clock-output-names = "mmc1";
  218. };
  219. mmc2_clk: clk@01c20090 {
  220. #clock-cells = <0>;
  221. compatible = "allwinner,sun4i-a10-mod0-clk";
  222. reg = <0x01c20090 0x4>;
  223. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  224. clock-output-names = "mmc2";
  225. };
  226. mmc3_clk: clk@01c20094 {
  227. #clock-cells = <0>;
  228. compatible = "allwinner,sun4i-a10-mod0-clk";
  229. reg = <0x01c20094 0x4>;
  230. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  231. clock-output-names = "mmc3";
  232. };
  233. ts_clk: clk@01c20098 {
  234. #clock-cells = <0>;
  235. compatible = "allwinner,sun4i-a10-mod0-clk";
  236. reg = <0x01c20098 0x4>;
  237. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  238. clock-output-names = "ts";
  239. };
  240. ss_clk: clk@01c2009c {
  241. #clock-cells = <0>;
  242. compatible = "allwinner,sun4i-a10-mod0-clk";
  243. reg = <0x01c2009c 0x4>;
  244. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  245. clock-output-names = "ss";
  246. };
  247. spi0_clk: clk@01c200a0 {
  248. #clock-cells = <0>;
  249. compatible = "allwinner,sun4i-a10-mod0-clk";
  250. reg = <0x01c200a0 0x4>;
  251. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  252. clock-output-names = "spi0";
  253. };
  254. spi1_clk: clk@01c200a4 {
  255. #clock-cells = <0>;
  256. compatible = "allwinner,sun4i-a10-mod0-clk";
  257. reg = <0x01c200a4 0x4>;
  258. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  259. clock-output-names = "spi1";
  260. };
  261. spi2_clk: clk@01c200a8 {
  262. #clock-cells = <0>;
  263. compatible = "allwinner,sun4i-a10-mod0-clk";
  264. reg = <0x01c200a8 0x4>;
  265. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  266. clock-output-names = "spi2";
  267. };
  268. pata_clk: clk@01c200ac {
  269. #clock-cells = <0>;
  270. compatible = "allwinner,sun4i-a10-mod0-clk";
  271. reg = <0x01c200ac 0x4>;
  272. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  273. clock-output-names = "pata";
  274. };
  275. ir0_clk: clk@01c200b0 {
  276. #clock-cells = <0>;
  277. compatible = "allwinner,sun4i-a10-mod0-clk";
  278. reg = <0x01c200b0 0x4>;
  279. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  280. clock-output-names = "ir0";
  281. };
  282. ir1_clk: clk@01c200b4 {
  283. #clock-cells = <0>;
  284. compatible = "allwinner,sun4i-a10-mod0-clk";
  285. reg = <0x01c200b4 0x4>;
  286. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  287. clock-output-names = "ir1";
  288. };
  289. usb_clk: clk@01c200cc {
  290. #clock-cells = <1>;
  291. #reset-cells = <1>;
  292. compatible = "allwinner,sun4i-a10-usb-clk";
  293. reg = <0x01c200cc 0x4>;
  294. clocks = <&pll6 1>;
  295. clock-output-names = "usb_ohci0", "usb_ohci1", "usb_phy";
  296. };
  297. spi3_clk: clk@01c200d4 {
  298. #clock-cells = <0>;
  299. compatible = "allwinner,sun4i-a10-mod0-clk";
  300. reg = <0x01c200d4 0x4>;
  301. clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
  302. clock-output-names = "spi3";
  303. };
  304. mbus_clk: clk@01c2015c {
  305. #clock-cells = <0>;
  306. compatible = "allwinner,sun4i-a10-mod0-clk";
  307. reg = <0x01c2015c 0x4>;
  308. clocks = <&osc24M>, <&pll6 2>, <&pll5 1>;
  309. clock-output-names = "mbus";
  310. };
  311. /*
  312. * The following two are dummy clocks, placeholders used in the gmac_tx
  313. * clock. The gmac driver will choose one parent depending on the PHY
  314. * interface mode, using clk_set_rate auto-reparenting.
  315. * The actual TX clock rate is not controlled by the gmac_tx clock.
  316. */
  317. mii_phy_tx_clk: clk@2 {
  318. #clock-cells = <0>;
  319. compatible = "fixed-clock";
  320. clock-frequency = <25000000>;
  321. clock-output-names = "mii_phy_tx";
  322. };
  323. gmac_int_tx_clk: clk@3 {
  324. #clock-cells = <0>;
  325. compatible = "fixed-clock";
  326. clock-frequency = <125000000>;
  327. clock-output-names = "gmac_int_tx";
  328. };
  329. gmac_tx_clk: clk@01c20164 {
  330. #clock-cells = <0>;
  331. compatible = "allwinner,sun7i-a20-gmac-clk";
  332. reg = <0x01c20164 0x4>;
  333. clocks = <&mii_phy_tx_clk>, <&gmac_int_tx_clk>;
  334. clock-output-names = "gmac_tx";
  335. };
  336. /*
  337. * Dummy clock used by output clocks
  338. */
  339. osc24M_32k: clk@1 {
  340. #clock-cells = <0>;
  341. compatible = "fixed-factor-clock";
  342. clock-div = <750>;
  343. clock-mult = <1>;
  344. clocks = <&osc24M>;
  345. clock-output-names = "osc24M_32k";
  346. };
  347. clk_out_a: clk@01c201f0 {
  348. #clock-cells = <0>;
  349. compatible = "allwinner,sun7i-a20-out-clk";
  350. reg = <0x01c201f0 0x4>;
  351. clocks = <&osc24M_32k>, <&osc32k>, <&osc24M>;
  352. clock-output-names = "clk_out_a";
  353. };
  354. clk_out_b: clk@01c201f4 {
  355. #clock-cells = <0>;
  356. compatible = "allwinner,sun7i-a20-out-clk";
  357. reg = <0x01c201f4 0x4>;
  358. clocks = <&osc24M_32k>, <&osc32k>, <&osc24M>;
  359. clock-output-names = "clk_out_b";
  360. };
  361. };
  362. soc@01c00000 {
  363. compatible = "simple-bus";
  364. #address-cells = <1>;
  365. #size-cells = <1>;
  366. ranges;
  367. nmi_intc: interrupt-controller@01c00030 {
  368. compatible = "allwinner,sun7i-a20-sc-nmi";
  369. interrupt-controller;
  370. #interrupt-cells = <2>;
  371. reg = <0x01c00030 0x0c>;
  372. interrupts = <0 0 4>;
  373. };
  374. spi0: spi@01c05000 {
  375. compatible = "allwinner,sun4i-a10-spi";
  376. reg = <0x01c05000 0x1000>;
  377. interrupts = <0 10 4>;
  378. clocks = <&ahb_gates 20>, <&spi0_clk>;
  379. clock-names = "ahb", "mod";
  380. status = "disabled";
  381. #address-cells = <1>;
  382. #size-cells = <0>;
  383. };
  384. spi1: spi@01c06000 {
  385. compatible = "allwinner,sun4i-a10-spi";
  386. reg = <0x01c06000 0x1000>;
  387. interrupts = <0 11 4>;
  388. clocks = <&ahb_gates 21>, <&spi1_clk>;
  389. clock-names = "ahb", "mod";
  390. status = "disabled";
  391. #address-cells = <1>;
  392. #size-cells = <0>;
  393. };
  394. emac: ethernet@01c0b000 {
  395. compatible = "allwinner,sun4i-a10-emac";
  396. reg = <0x01c0b000 0x1000>;
  397. interrupts = <0 55 4>;
  398. clocks = <&ahb_gates 17>;
  399. status = "disabled";
  400. };
  401. mdio@01c0b080 {
  402. compatible = "allwinner,sun4i-a10-mdio";
  403. reg = <0x01c0b080 0x14>;
  404. status = "disabled";
  405. #address-cells = <1>;
  406. #size-cells = <0>;
  407. };
  408. mmc0: mmc@01c0f000 {
  409. compatible = "allwinner,sun5i-a13-mmc";
  410. reg = <0x01c0f000 0x1000>;
  411. clocks = <&ahb_gates 8>, <&mmc0_clk>;
  412. clock-names = "ahb", "mmc";
  413. interrupts = <0 32 4>;
  414. status = "disabled";
  415. };
  416. mmc1: mmc@01c10000 {
  417. compatible = "allwinner,sun5i-a13-mmc";
  418. reg = <0x01c10000 0x1000>;
  419. clocks = <&ahb_gates 9>, <&mmc1_clk>;
  420. clock-names = "ahb", "mmc";
  421. interrupts = <0 33 4>;
  422. status = "disabled";
  423. };
  424. mmc2: mmc@01c11000 {
  425. compatible = "allwinner,sun5i-a13-mmc";
  426. reg = <0x01c11000 0x1000>;
  427. clocks = <&ahb_gates 10>, <&mmc2_clk>;
  428. clock-names = "ahb", "mmc";
  429. interrupts = <0 34 4>;
  430. status = "disabled";
  431. };
  432. mmc3: mmc@01c12000 {
  433. compatible = "allwinner,sun5i-a13-mmc";
  434. reg = <0x01c12000 0x1000>;
  435. clocks = <&ahb_gates 11>, <&mmc3_clk>;
  436. clock-names = "ahb", "mmc";
  437. interrupts = <0 35 4>;
  438. status = "disabled";
  439. };
  440. usbphy: phy@01c13400 {
  441. #phy-cells = <1>;
  442. compatible = "allwinner,sun7i-a20-usb-phy";
  443. reg = <0x01c13400 0x10 0x01c14800 0x4 0x01c1c800 0x4>;
  444. reg-names = "phy_ctrl", "pmu1", "pmu2";
  445. clocks = <&usb_clk 8>;
  446. clock-names = "usb_phy";
  447. resets = <&usb_clk 1>, <&usb_clk 2>;
  448. reset-names = "usb1_reset", "usb2_reset";
  449. status = "disabled";
  450. };
  451. ehci0: usb@01c14000 {
  452. compatible = "allwinner,sun7i-a20-ehci", "generic-ehci";
  453. reg = <0x01c14000 0x100>;
  454. interrupts = <0 39 4>;
  455. clocks = <&ahb_gates 1>;
  456. phys = <&usbphy 1>;
  457. phy-names = "usb";
  458. status = "disabled";
  459. };
  460. ohci0: usb@01c14400 {
  461. compatible = "allwinner,sun7i-a20-ohci", "generic-ohci";
  462. reg = <0x01c14400 0x100>;
  463. interrupts = <0 64 4>;
  464. clocks = <&usb_clk 6>, <&ahb_gates 2>;
  465. phys = <&usbphy 1>;
  466. phy-names = "usb";
  467. status = "disabled";
  468. };
  469. spi2: spi@01c17000 {
  470. compatible = "allwinner,sun4i-a10-spi";
  471. reg = <0x01c17000 0x1000>;
  472. interrupts = <0 12 4>;
  473. clocks = <&ahb_gates 22>, <&spi2_clk>;
  474. clock-names = "ahb", "mod";
  475. status = "disabled";
  476. #address-cells = <1>;
  477. #size-cells = <0>;
  478. };
  479. ahci: sata@01c18000 {
  480. compatible = "allwinner,sun4i-a10-ahci";
  481. reg = <0x01c18000 0x1000>;
  482. interrupts = <0 56 4>;
  483. clocks = <&pll6 0>, <&ahb_gates 25>;
  484. status = "disabled";
  485. };
  486. ehci1: usb@01c1c000 {
  487. compatible = "allwinner,sun7i-a20-ehci", "generic-ehci";
  488. reg = <0x01c1c000 0x100>;
  489. interrupts = <0 40 4>;
  490. clocks = <&ahb_gates 3>;
  491. phys = <&usbphy 2>;
  492. phy-names = "usb";
  493. status = "disabled";
  494. };
  495. ohci1: usb@01c1c400 {
  496. compatible = "allwinner,sun7i-a20-ohci", "generic-ohci";
  497. reg = <0x01c1c400 0x100>;
  498. interrupts = <0 65 4>;
  499. clocks = <&usb_clk 7>, <&ahb_gates 4>;
  500. phys = <&usbphy 2>;
  501. phy-names = "usb";
  502. status = "disabled";
  503. };
  504. spi3: spi@01c1f000 {
  505. compatible = "allwinner,sun4i-a10-spi";
  506. reg = <0x01c1f000 0x1000>;
  507. interrupts = <0 50 4>;
  508. clocks = <&ahb_gates 23>, <&spi3_clk>;
  509. clock-names = "ahb", "mod";
  510. status = "disabled";
  511. #address-cells = <1>;
  512. #size-cells = <0>;
  513. };
  514. pio: pinctrl@01c20800 {
  515. compatible = "allwinner,sun7i-a20-pinctrl";
  516. reg = <0x01c20800 0x400>;
  517. interrupts = <0 28 4>;
  518. clocks = <&apb0_gates 5>;
  519. gpio-controller;
  520. interrupt-controller;
  521. #interrupt-cells = <2>;
  522. #size-cells = <0>;
  523. #gpio-cells = <3>;
  524. pwm0_pins_a: pwm0@0 {
  525. allwinner,pins = "PB2";
  526. allwinner,function = "pwm";
  527. allwinner,drive = <0>;
  528. allwinner,pull = <0>;
  529. };
  530. pwm1_pins_a: pwm1@0 {
  531. allwinner,pins = "PI3";
  532. allwinner,function = "pwm";
  533. allwinner,drive = <0>;
  534. allwinner,pull = <0>;
  535. };
  536. uart0_pins_a: uart0@0 {
  537. allwinner,pins = "PB22", "PB23";
  538. allwinner,function = "uart0";
  539. allwinner,drive = <0>;
  540. allwinner,pull = <0>;
  541. };
  542. uart2_pins_a: uart2@0 {
  543. allwinner,pins = "PI16", "PI17", "PI18", "PI19";
  544. allwinner,function = "uart2";
  545. allwinner,drive = <0>;
  546. allwinner,pull = <0>;
  547. };
  548. uart6_pins_a: uart6@0 {
  549. allwinner,pins = "PI12", "PI13";
  550. allwinner,function = "uart6";
  551. allwinner,drive = <0>;
  552. allwinner,pull = <0>;
  553. };
  554. uart7_pins_a: uart7@0 {
  555. allwinner,pins = "PI20", "PI21";
  556. allwinner,function = "uart7";
  557. allwinner,drive = <0>;
  558. allwinner,pull = <0>;
  559. };
  560. i2c0_pins_a: i2c0@0 {
  561. allwinner,pins = "PB0", "PB1";
  562. allwinner,function = "i2c0";
  563. allwinner,drive = <0>;
  564. allwinner,pull = <0>;
  565. };
  566. i2c1_pins_a: i2c1@0 {
  567. allwinner,pins = "PB18", "PB19";
  568. allwinner,function = "i2c1";
  569. allwinner,drive = <0>;
  570. allwinner,pull = <0>;
  571. };
  572. i2c2_pins_a: i2c2@0 {
  573. allwinner,pins = "PB20", "PB21";
  574. allwinner,function = "i2c2";
  575. allwinner,drive = <0>;
  576. allwinner,pull = <0>;
  577. };
  578. emac_pins_a: emac0@0 {
  579. allwinner,pins = "PA0", "PA1", "PA2",
  580. "PA3", "PA4", "PA5", "PA6",
  581. "PA7", "PA8", "PA9", "PA10",
  582. "PA11", "PA12", "PA13", "PA14",
  583. "PA15", "PA16";
  584. allwinner,function = "emac";
  585. allwinner,drive = <0>;
  586. allwinner,pull = <0>;
  587. };
  588. clk_out_a_pins_a: clk_out_a@0 {
  589. allwinner,pins = "PI12";
  590. allwinner,function = "clk_out_a";
  591. allwinner,drive = <0>;
  592. allwinner,pull = <0>;
  593. };
  594. clk_out_b_pins_a: clk_out_b@0 {
  595. allwinner,pins = "PI13";
  596. allwinner,function = "clk_out_b";
  597. allwinner,drive = <0>;
  598. allwinner,pull = <0>;
  599. };
  600. gmac_pins_mii_a: gmac_mii@0 {
  601. allwinner,pins = "PA0", "PA1", "PA2",
  602. "PA3", "PA4", "PA5", "PA6",
  603. "PA7", "PA8", "PA9", "PA10",
  604. "PA11", "PA12", "PA13", "PA14",
  605. "PA15", "PA16";
  606. allwinner,function = "gmac";
  607. allwinner,drive = <0>;
  608. allwinner,pull = <0>;
  609. };
  610. gmac_pins_rgmii_a: gmac_rgmii@0 {
  611. allwinner,pins = "PA0", "PA1", "PA2",
  612. "PA3", "PA4", "PA5", "PA6",
  613. "PA7", "PA8", "PA10",
  614. "PA11", "PA12", "PA13",
  615. "PA15", "PA16";
  616. allwinner,function = "gmac";
  617. /*
  618. * data lines in RGMII mode use DDR mode
  619. * and need a higher signal drive strength
  620. */
  621. allwinner,drive = <3>;
  622. allwinner,pull = <0>;
  623. };
  624. spi1_pins_a: spi1@0 {
  625. allwinner,pins = "PI16", "PI17", "PI18", "PI19";
  626. allwinner,function = "spi1";
  627. allwinner,drive = <0>;
  628. allwinner,pull = <0>;
  629. };
  630. spi2_pins_a: spi2@0 {
  631. allwinner,pins = "PC19", "PC20", "PC21", "PC22";
  632. allwinner,function = "spi2";
  633. allwinner,drive = <0>;
  634. allwinner,pull = <0>;
  635. };
  636. mmc0_pins_a: mmc0@0 {
  637. allwinner,pins = "PF0","PF1","PF2","PF3","PF4","PF5";
  638. allwinner,function = "mmc0";
  639. allwinner,drive = <2>;
  640. allwinner,pull = <0>;
  641. };
  642. mmc0_cd_pin_reference_design: mmc0_cd_pin@0 {
  643. allwinner,pins = "PH1";
  644. allwinner,function = "gpio_in";
  645. allwinner,drive = <0>;
  646. allwinner,pull = <1>;
  647. };
  648. mmc3_pins_a: mmc3@0 {
  649. allwinner,pins = "PI4","PI5","PI6","PI7","PI8","PI9";
  650. allwinner,function = "mmc3";
  651. allwinner,drive = <2>;
  652. allwinner,pull = <0>;
  653. };
  654. ir0_pins_a: ir0@0 {
  655. allwinner,pins = "PB3","PB4";
  656. allwinner,function = "ir0";
  657. allwinner,drive = <0>;
  658. allwinner,pull = <0>;
  659. };
  660. ir1_pins_a: ir1@0 {
  661. allwinner,pins = "PB22","PB23";
  662. allwinner,function = "ir1";
  663. allwinner,drive = <0>;
  664. allwinner,pull = <0>;
  665. };
  666. };
  667. timer@01c20c00 {
  668. compatible = "allwinner,sun4i-a10-timer";
  669. reg = <0x01c20c00 0x90>;
  670. interrupts = <0 22 4>,
  671. <0 23 4>,
  672. <0 24 4>,
  673. <0 25 4>,
  674. <0 67 4>,
  675. <0 68 4>;
  676. clocks = <&osc24M>;
  677. };
  678. wdt: watchdog@01c20c90 {
  679. compatible = "allwinner,sun4i-a10-wdt";
  680. reg = <0x01c20c90 0x10>;
  681. };
  682. rtc: rtc@01c20d00 {
  683. compatible = "allwinner,sun7i-a20-rtc";
  684. reg = <0x01c20d00 0x20>;
  685. interrupts = <0 24 4>;
  686. };
  687. pwm: pwm@01c20e00 {
  688. compatible = "allwinner,sun7i-a20-pwm";
  689. reg = <0x01c20e00 0xc>;
  690. clocks = <&osc24M>;
  691. #pwm-cells = <3>;
  692. status = "disabled";
  693. };
  694. ir0: ir@01c21800 {
  695. compatible = "allwinner,sun4i-a10-ir";
  696. clocks = <&apb0_gates 6>, <&ir0_clk>;
  697. clock-names = "apb", "ir";
  698. interrupts = <0 5 4>;
  699. reg = <0x01c21800 0x40>;
  700. status = "disabled";
  701. };
  702. ir1: ir@01c21c00 {
  703. compatible = "allwinner,sun4i-a10-ir";
  704. clocks = <&apb0_gates 7>, <&ir1_clk>;
  705. clock-names = "apb", "ir";
  706. interrupts = <0 6 4>;
  707. reg = <0x01c21c00 0x40>;
  708. status = "disabled";
  709. };
  710. sid: eeprom@01c23800 {
  711. compatible = "allwinner,sun7i-a20-sid";
  712. reg = <0x01c23800 0x200>;
  713. };
  714. rtp: rtp@01c25000 {
  715. compatible = "allwinner,sun4i-a10-ts";
  716. reg = <0x01c25000 0x100>;
  717. interrupts = <0 29 4>;
  718. };
  719. uart0: serial@01c28000 {
  720. compatible = "snps,dw-apb-uart";
  721. reg = <0x01c28000 0x400>;
  722. interrupts = <0 1 4>;
  723. reg-shift = <2>;
  724. reg-io-width = <4>;
  725. clocks = <&apb1_gates 16>;
  726. status = "disabled";
  727. };
  728. uart1: serial@01c28400 {
  729. compatible = "snps,dw-apb-uart";
  730. reg = <0x01c28400 0x400>;
  731. interrupts = <0 2 4>;
  732. reg-shift = <2>;
  733. reg-io-width = <4>;
  734. clocks = <&apb1_gates 17>;
  735. status = "disabled";
  736. };
  737. uart2: serial@01c28800 {
  738. compatible = "snps,dw-apb-uart";
  739. reg = <0x01c28800 0x400>;
  740. interrupts = <0 3 4>;
  741. reg-shift = <2>;
  742. reg-io-width = <4>;
  743. clocks = <&apb1_gates 18>;
  744. status = "disabled";
  745. };
  746. uart3: serial@01c28c00 {
  747. compatible = "snps,dw-apb-uart";
  748. reg = <0x01c28c00 0x400>;
  749. interrupts = <0 4 4>;
  750. reg-shift = <2>;
  751. reg-io-width = <4>;
  752. clocks = <&apb1_gates 19>;
  753. status = "disabled";
  754. };
  755. uart4: serial@01c29000 {
  756. compatible = "snps,dw-apb-uart";
  757. reg = <0x01c29000 0x400>;
  758. interrupts = <0 17 4>;
  759. reg-shift = <2>;
  760. reg-io-width = <4>;
  761. clocks = <&apb1_gates 20>;
  762. status = "disabled";
  763. };
  764. uart5: serial@01c29400 {
  765. compatible = "snps,dw-apb-uart";
  766. reg = <0x01c29400 0x400>;
  767. interrupts = <0 18 4>;
  768. reg-shift = <2>;
  769. reg-io-width = <4>;
  770. clocks = <&apb1_gates 21>;
  771. status = "disabled";
  772. };
  773. uart6: serial@01c29800 {
  774. compatible = "snps,dw-apb-uart";
  775. reg = <0x01c29800 0x400>;
  776. interrupts = <0 19 4>;
  777. reg-shift = <2>;
  778. reg-io-width = <4>;
  779. clocks = <&apb1_gates 22>;
  780. status = "disabled";
  781. };
  782. uart7: serial@01c29c00 {
  783. compatible = "snps,dw-apb-uart";
  784. reg = <0x01c29c00 0x400>;
  785. interrupts = <0 20 4>;
  786. reg-shift = <2>;
  787. reg-io-width = <4>;
  788. clocks = <&apb1_gates 23>;
  789. status = "disabled";
  790. };
  791. i2c0: i2c@01c2ac00 {
  792. compatible = "allwinner,sun7i-a20-i2c", "allwinner,sun4i-a10-i2c";
  793. reg = <0x01c2ac00 0x400>;
  794. interrupts = <0 7 4>;
  795. clocks = <&apb1_gates 0>;
  796. clock-frequency = <100000>;
  797. status = "disabled";
  798. #address-cells = <1>;
  799. #size-cells = <0>;
  800. };
  801. i2c1: i2c@01c2b000 {
  802. compatible = "allwinner,sun7i-a20-i2c", "allwinner,sun4i-a10-i2c";
  803. reg = <0x01c2b000 0x400>;
  804. interrupts = <0 8 4>;
  805. clocks = <&apb1_gates 1>;
  806. clock-frequency = <100000>;
  807. status = "disabled";
  808. #address-cells = <1>;
  809. #size-cells = <0>;
  810. };
  811. i2c2: i2c@01c2b400 {
  812. compatible = "allwinner,sun7i-a20-i2c", "allwinner,sun4i-a10-i2c";
  813. reg = <0x01c2b400 0x400>;
  814. interrupts = <0 9 4>;
  815. clocks = <&apb1_gates 2>;
  816. clock-frequency = <100000>;
  817. status = "disabled";
  818. #address-cells = <1>;
  819. #size-cells = <0>;
  820. };
  821. i2c3: i2c@01c2b800 {
  822. compatible = "allwinner,sun7i-a20-i2c", "allwinner,sun4i-a10-i2c";
  823. reg = <0x01c2b800 0x400>;
  824. interrupts = <0 88 4>;
  825. clocks = <&apb1_gates 3>;
  826. clock-frequency = <100000>;
  827. status = "disabled";
  828. #address-cells = <1>;
  829. #size-cells = <0>;
  830. };
  831. i2c4: i2c@01c2c000 {
  832. compatible = "allwinner,sun7i-a20-i2c", "allwinner,sun4i-a10-i2c";
  833. reg = <0x01c2c000 0x400>;
  834. interrupts = <0 89 4>;
  835. clocks = <&apb1_gates 15>;
  836. clock-frequency = <100000>;
  837. status = "disabled";
  838. #address-cells = <1>;
  839. #size-cells = <0>;
  840. };
  841. gmac: ethernet@01c50000 {
  842. compatible = "allwinner,sun7i-a20-gmac";
  843. reg = <0x01c50000 0x10000>;
  844. interrupts = <0 85 4>;
  845. interrupt-names = "macirq";
  846. clocks = <&ahb_gates 49>, <&gmac_tx_clk>;
  847. clock-names = "stmmaceth", "allwinner_gmac_tx";
  848. snps,pbl = <2>;
  849. snps,fixed-burst;
  850. snps,force_sf_dma_mode;
  851. status = "disabled";
  852. #address-cells = <1>;
  853. #size-cells = <0>;
  854. };
  855. hstimer@01c60000 {
  856. compatible = "allwinner,sun7i-a20-hstimer";
  857. reg = <0x01c60000 0x1000>;
  858. interrupts = <0 81 4>,
  859. <0 82 4>,
  860. <0 83 4>,
  861. <0 84 4>;
  862. clocks = <&ahb_gates 28>;
  863. };
  864. gic: interrupt-controller@01c81000 {
  865. compatible = "arm,cortex-a7-gic", "arm,cortex-a15-gic";
  866. reg = <0x01c81000 0x1000>,
  867. <0x01c82000 0x1000>,
  868. <0x01c84000 0x2000>,
  869. <0x01c86000 0x2000>;
  870. interrupt-controller;
  871. #interrupt-cells = <3>;
  872. interrupts = <1 9 0xf04>;
  873. };
  874. };
  875. };