sun7i-a20.dtsi 26 KB

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