sun4i-a10.dtsi 27 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166
  1. /*
  2. * Copyright 2012 Stefan Roese
  3. * Stefan Roese <sr@denx.de>
  4. *
  5. * This file is dual-licensed: you can use it either under the terms
  6. * of the GPL or the X11 license, at your option. Note that this dual
  7. * licensing only applies to this file, and not this project as a
  8. * whole.
  9. *
  10. * a) This library is free software; you can redistribute it and/or
  11. * modify it under the terms of the GNU General Public License as
  12. * published by the Free Software Foundation; either version 2 of the
  13. * License, or (at your option) any later version.
  14. *
  15. * This library is distributed in the hope that it will be useful,
  16. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  17. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  18. * GNU General Public License for more details.
  19. *
  20. * Or, alternatively,
  21. *
  22. * b) Permission is hereby granted, free of charge, to any person
  23. * obtaining a copy of this software and associated documentation
  24. * files (the "Software"), to deal in the Software without
  25. * restriction, including without limitation the rights to use,
  26. * copy, modify, merge, publish, distribute, sublicense, and/or
  27. * sell copies of the Software, and to permit persons to whom the
  28. * Software is furnished to do so, subject to the following
  29. * conditions:
  30. *
  31. * The above copyright notice and this permission notice shall be
  32. * included in all copies or substantial portions of the Software.
  33. *
  34. * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
  35. * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
  36. * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
  37. * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
  38. * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
  39. * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
  40. * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
  41. * OTHER DEALINGS IN THE SOFTWARE.
  42. */
  43. #include <dt-bindings/thermal/thermal.h>
  44. #include <dt-bindings/dma/sun4i-a10.h>
  45. #include <dt-bindings/clock/sun4i-a10-ccu.h>
  46. #include <dt-bindings/reset/sun4i-a10-ccu.h>
  47. / {
  48. #address-cells = <1>;
  49. #size-cells = <1>;
  50. interrupt-parent = <&intc>;
  51. aliases {
  52. ethernet0 = &emac;
  53. };
  54. chosen {
  55. #address-cells = <1>;
  56. #size-cells = <1>;
  57. ranges;
  58. framebuffer-lcd0-hdmi {
  59. compatible = "allwinner,simple-framebuffer",
  60. "simple-framebuffer";
  61. allwinner,pipeline = "de_be0-lcd0-hdmi";
  62. clocks = <&ccu CLK_AHB_LCD0>, <&ccu CLK_AHB_HDMI0>,
  63. <&ccu CLK_AHB_DE_BE0>, <&ccu CLK_DE_BE0>,
  64. <&ccu CLK_TCON0_CH1>, <&ccu CLK_DRAM_DE_BE0>;
  65. status = "disabled";
  66. };
  67. framebuffer-fe0-lcd0-hdmi {
  68. compatible = "allwinner,simple-framebuffer",
  69. "simple-framebuffer";
  70. allwinner,pipeline = "de_fe0-de_be0-lcd0-hdmi";
  71. clocks = <&ccu CLK_AHB_LCD0>, <&ccu CLK_AHB_HDMI0>,
  72. <&ccu CLK_AHB_DE_BE0>, <&ccu CLK_AHB_DE_FE0>,
  73. <&ccu CLK_DE_BE0>, <&ccu CLK_AHB_DE_FE0>,
  74. <&ccu CLK_TCON0_CH1>, <&ccu CLK_HDMI>,
  75. <&ccu CLK_DRAM_DE_FE0>, <&ccu CLK_DRAM_DE_BE0>;
  76. status = "disabled";
  77. };
  78. framebuffer-fe0-lcd0 {
  79. compatible = "allwinner,simple-framebuffer",
  80. "simple-framebuffer";
  81. allwinner,pipeline = "de_fe0-de_be0-lcd0";
  82. clocks = <&ccu CLK_AHB_LCD0>, <&ccu CLK_AHB_DE_BE0>,
  83. <&ccu CLK_AHB_DE_FE0>, <&ccu CLK_DE_BE0>,
  84. <&ccu CLK_AHB_DE_FE0>, <&ccu CLK_TCON0_CH0>,
  85. <&ccu CLK_DRAM_DE_FE0>, <&ccu CLK_DRAM_DE_BE0>;
  86. status = "disabled";
  87. };
  88. framebuffer-fe0-lcd0-tve0 {
  89. compatible = "allwinner,simple-framebuffer",
  90. "simple-framebuffer";
  91. allwinner,pipeline = "de_fe0-de_be0-lcd0-tve0";
  92. clocks = <&ccu CLK_AHB_TVE0>, <&ccu CLK_AHB_LCD0>,
  93. <&ccu CLK_AHB_DE_BE0>, <&ccu CLK_AHB_DE_FE0>,
  94. <&ccu CLK_DE_BE0>, <&ccu CLK_AHB_DE_FE0>,
  95. <&ccu CLK_TCON0_CH1>, <&ccu CLK_DRAM_TVE0>,
  96. <&ccu CLK_DRAM_DE_FE0>, <&ccu CLK_DRAM_DE_BE0>;
  97. status = "disabled";
  98. };
  99. };
  100. cpus {
  101. #address-cells = <1>;
  102. #size-cells = <0>;
  103. cpu0: cpu@0 {
  104. device_type = "cpu";
  105. compatible = "arm,cortex-a8";
  106. reg = <0x0>;
  107. clocks = <&ccu CLK_CPU>;
  108. clock-latency = <244144>; /* 8 32k periods */
  109. operating-points = <
  110. /* kHz uV */
  111. 1008000 1400000
  112. 912000 1350000
  113. 864000 1300000
  114. 624000 1250000
  115. >;
  116. #cooling-cells = <2>;
  117. cooling-min-level = <0>;
  118. cooling-max-level = <3>;
  119. };
  120. };
  121. thermal-zones {
  122. cpu-thermal {
  123. /* milliseconds */
  124. polling-delay-passive = <250>;
  125. polling-delay = <1000>;
  126. thermal-sensors = <&rtp>;
  127. cooling-maps {
  128. map0 {
  129. trip = <&cpu_alert0>;
  130. cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
  131. };
  132. };
  133. trips {
  134. cpu_alert0: cpu-alert0 {
  135. /* milliCelsius */
  136. temperature = <850000>;
  137. hysteresis = <2000>;
  138. type = "passive";
  139. };
  140. cpu_crit: cpu-crit {
  141. /* milliCelsius */
  142. temperature = <100000>;
  143. hysteresis = <2000>;
  144. type = "critical";
  145. };
  146. };
  147. };
  148. };
  149. clocks {
  150. #address-cells = <1>;
  151. #size-cells = <1>;
  152. ranges;
  153. osc24M: clk-24M {
  154. #clock-cells = <0>;
  155. compatible = "fixed-clock";
  156. clock-frequency = <24000000>;
  157. clock-output-names = "osc24M";
  158. };
  159. osc32k: clk-32k {
  160. #clock-cells = <0>;
  161. compatible = "fixed-clock";
  162. clock-frequency = <32768>;
  163. clock-output-names = "osc32k";
  164. };
  165. };
  166. de: display-engine {
  167. compatible = "allwinner,sun4i-a10-display-engine";
  168. allwinner,pipelines = <&fe0>, <&fe1>;
  169. status = "disabled";
  170. };
  171. soc {
  172. compatible = "simple-bus";
  173. #address-cells = <1>;
  174. #size-cells = <1>;
  175. ranges;
  176. sram-controller@1c00000 {
  177. compatible = "allwinner,sun4i-a10-sram-controller";
  178. reg = <0x01c00000 0x30>;
  179. #address-cells = <1>;
  180. #size-cells = <1>;
  181. ranges;
  182. sram_a: sram@0 {
  183. compatible = "mmio-sram";
  184. reg = <0x00000000 0xc000>;
  185. #address-cells = <1>;
  186. #size-cells = <1>;
  187. ranges = <0 0x00000000 0xc000>;
  188. emac_sram: sram-section@8000 {
  189. compatible = "allwinner,sun4i-a10-sram-a3-a4";
  190. reg = <0x8000 0x4000>;
  191. status = "disabled";
  192. };
  193. };
  194. sram_d: sram@10000 {
  195. compatible = "mmio-sram";
  196. reg = <0x00010000 0x1000>;
  197. #address-cells = <1>;
  198. #size-cells = <1>;
  199. ranges = <0 0x00010000 0x1000>;
  200. otg_sram: sram-section@0 {
  201. compatible = "allwinner,sun4i-a10-sram-d";
  202. reg = <0x0000 0x1000>;
  203. status = "disabled";
  204. };
  205. };
  206. };
  207. dma: dma-controller@1c02000 {
  208. compatible = "allwinner,sun4i-a10-dma";
  209. reg = <0x01c02000 0x1000>;
  210. interrupts = <27>;
  211. clocks = <&ccu CLK_AHB_DMA>;
  212. #dma-cells = <2>;
  213. };
  214. nfc: nand@1c03000 {
  215. compatible = "allwinner,sun4i-a10-nand";
  216. reg = <0x01c03000 0x1000>;
  217. interrupts = <37>;
  218. clocks = <&ccu CLK_AHB_NAND>, <&ccu CLK_NAND>;
  219. clock-names = "ahb", "mod";
  220. dmas = <&dma SUN4I_DMA_DEDICATED 3>;
  221. dma-names = "rxtx";
  222. status = "disabled";
  223. #address-cells = <1>;
  224. #size-cells = <0>;
  225. };
  226. spi0: spi@1c05000 {
  227. compatible = "allwinner,sun4i-a10-spi";
  228. reg = <0x01c05000 0x1000>;
  229. interrupts = <10>;
  230. clocks = <&ccu CLK_AHB_SPI0>, <&ccu CLK_SPI0>;
  231. clock-names = "ahb", "mod";
  232. dmas = <&dma SUN4I_DMA_DEDICATED 27>,
  233. <&dma SUN4I_DMA_DEDICATED 26>;
  234. dma-names = "rx", "tx";
  235. status = "disabled";
  236. #address-cells = <1>;
  237. #size-cells = <0>;
  238. };
  239. spi1: spi@1c06000 {
  240. compatible = "allwinner,sun4i-a10-spi";
  241. reg = <0x01c06000 0x1000>;
  242. interrupts = <11>;
  243. clocks = <&ccu CLK_AHB_SPI1>, <&ccu CLK_SPI1>;
  244. clock-names = "ahb", "mod";
  245. dmas = <&dma SUN4I_DMA_DEDICATED 9>,
  246. <&dma SUN4I_DMA_DEDICATED 8>;
  247. dma-names = "rx", "tx";
  248. pinctrl-names = "default";
  249. pinctrl-0 = <&spi1_pins>, <&spi1_cs0_pin>;
  250. status = "disabled";
  251. #address-cells = <1>;
  252. #size-cells = <0>;
  253. };
  254. emac: ethernet@1c0b000 {
  255. compatible = "allwinner,sun4i-a10-emac";
  256. reg = <0x01c0b000 0x1000>;
  257. interrupts = <55>;
  258. clocks = <&ccu CLK_AHB_EMAC>;
  259. allwinner,sram = <&emac_sram 1>;
  260. pinctrl-names = "default";
  261. pinctrl-0 = <&emac_pins>;
  262. status = "disabled";
  263. };
  264. mdio: mdio@1c0b080 {
  265. compatible = "allwinner,sun4i-a10-mdio";
  266. reg = <0x01c0b080 0x14>;
  267. status = "disabled";
  268. #address-cells = <1>;
  269. #size-cells = <0>;
  270. };
  271. tcon0: lcd-controller@1c0c000 {
  272. compatible = "allwinner,sun4i-a10-tcon";
  273. reg = <0x01c0c000 0x1000>;
  274. interrupts = <44>;
  275. resets = <&ccu RST_TCON0>;
  276. reset-names = "lcd";
  277. clocks = <&ccu CLK_AHB_LCD0>,
  278. <&ccu CLK_TCON0_CH0>,
  279. <&ccu CLK_TCON0_CH1>;
  280. clock-names = "ahb",
  281. "tcon-ch0",
  282. "tcon-ch1";
  283. clock-output-names = "tcon0-pixel-clock";
  284. dmas = <&dma SUN4I_DMA_DEDICATED 14>;
  285. ports {
  286. #address-cells = <1>;
  287. #size-cells = <0>;
  288. tcon0_in: port@0 {
  289. #address-cells = <1>;
  290. #size-cells = <0>;
  291. reg = <0>;
  292. tcon0_in_be0: endpoint@0 {
  293. reg = <0>;
  294. remote-endpoint = <&be0_out_tcon0>;
  295. };
  296. tcon0_in_be1: endpoint@1 {
  297. reg = <1>;
  298. remote-endpoint = <&be1_out_tcon0>;
  299. };
  300. };
  301. tcon0_out: port@1 {
  302. #address-cells = <1>;
  303. #size-cells = <0>;
  304. reg = <1>;
  305. tcon0_out_hdmi: endpoint@1 {
  306. reg = <1>;
  307. remote-endpoint = <&hdmi_in_tcon0>;
  308. allwinner,tcon-channel = <1>;
  309. };
  310. };
  311. };
  312. };
  313. tcon1: lcd-controller@1c0d000 {
  314. compatible = "allwinner,sun4i-a10-tcon";
  315. reg = <0x01c0d000 0x1000>;
  316. interrupts = <45>;
  317. resets = <&ccu RST_TCON1>;
  318. reset-names = "lcd";
  319. clocks = <&ccu CLK_AHB_LCD1>,
  320. <&ccu CLK_TCON1_CH0>,
  321. <&ccu CLK_TCON1_CH1>;
  322. clock-names = "ahb",
  323. "tcon-ch0",
  324. "tcon-ch1";
  325. clock-output-names = "tcon1-pixel-clock";
  326. dmas = <&dma SUN4I_DMA_DEDICATED 15>;
  327. ports {
  328. #address-cells = <1>;
  329. #size-cells = <0>;
  330. tcon1_in: port@0 {
  331. #address-cells = <1>;
  332. #size-cells = <0>;
  333. reg = <0>;
  334. tcon1_in_be0: endpoint@0 {
  335. reg = <0>;
  336. remote-endpoint = <&be0_out_tcon1>;
  337. };
  338. tcon1_in_be1: endpoint@1 {
  339. reg = <1>;
  340. remote-endpoint = <&be1_out_tcon1>;
  341. };
  342. };
  343. tcon1_out: port@1 {
  344. #address-cells = <1>;
  345. #size-cells = <0>;
  346. reg = <1>;
  347. tcon1_out_hdmi: endpoint@1 {
  348. reg = <1>;
  349. remote-endpoint = <&hdmi_in_tcon1>;
  350. allwinner,tcon-channel = <1>;
  351. };
  352. };
  353. };
  354. };
  355. mmc0: mmc@1c0f000 {
  356. compatible = "allwinner,sun4i-a10-mmc";
  357. reg = <0x01c0f000 0x1000>;
  358. clocks = <&ccu CLK_AHB_MMC0>, <&ccu CLK_MMC0>;
  359. clock-names = "ahb", "mmc";
  360. interrupts = <32>;
  361. pinctrl-names = "default";
  362. pinctrl-0 = <&mmc0_pins>;
  363. status = "disabled";
  364. #address-cells = <1>;
  365. #size-cells = <0>;
  366. };
  367. mmc1: mmc@1c10000 {
  368. compatible = "allwinner,sun4i-a10-mmc";
  369. reg = <0x01c10000 0x1000>;
  370. clocks = <&ccu CLK_AHB_MMC1>, <&ccu CLK_MMC1>;
  371. clock-names = "ahb", "mmc";
  372. interrupts = <33>;
  373. status = "disabled";
  374. #address-cells = <1>;
  375. #size-cells = <0>;
  376. };
  377. mmc2: mmc@1c11000 {
  378. compatible = "allwinner,sun4i-a10-mmc";
  379. reg = <0x01c11000 0x1000>;
  380. clocks = <&ccu CLK_AHB_MMC2>, <&ccu CLK_MMC2>;
  381. clock-names = "ahb", "mmc";
  382. interrupts = <34>;
  383. status = "disabled";
  384. #address-cells = <1>;
  385. #size-cells = <0>;
  386. };
  387. mmc3: mmc@1c12000 {
  388. compatible = "allwinner,sun4i-a10-mmc";
  389. reg = <0x01c12000 0x1000>;
  390. clocks = <&ccu CLK_AHB_MMC3>, <&ccu CLK_MMC3>;
  391. clock-names = "ahb", "mmc";
  392. interrupts = <35>;
  393. status = "disabled";
  394. #address-cells = <1>;
  395. #size-cells = <0>;
  396. };
  397. usb_otg: usb@1c13000 {
  398. compatible = "allwinner,sun4i-a10-musb";
  399. reg = <0x01c13000 0x0400>;
  400. clocks = <&ccu CLK_AHB_OTG>;
  401. interrupts = <38>;
  402. interrupt-names = "mc";
  403. phys = <&usbphy 0>;
  404. phy-names = "usb";
  405. extcon = <&usbphy 0>;
  406. allwinner,sram = <&otg_sram 1>;
  407. status = "disabled";
  408. };
  409. usbphy: phy@1c13400 {
  410. #phy-cells = <1>;
  411. compatible = "allwinner,sun4i-a10-usb-phy";
  412. reg = <0x01c13400 0x10 0x01c14800 0x4 0x01c1c800 0x4>;
  413. reg-names = "phy_ctrl", "pmu1", "pmu2";
  414. clocks = <&ccu CLK_USB_PHY>;
  415. clock-names = "usb_phy";
  416. resets = <&ccu RST_USB_PHY0>,
  417. <&ccu RST_USB_PHY1>,
  418. <&ccu RST_USB_PHY2>;
  419. reset-names = "usb0_reset", "usb1_reset", "usb2_reset";
  420. status = "disabled";
  421. };
  422. ehci0: usb@1c14000 {
  423. compatible = "allwinner,sun4i-a10-ehci", "generic-ehci";
  424. reg = <0x01c14000 0x100>;
  425. interrupts = <39>;
  426. clocks = <&ccu CLK_AHB_EHCI0>;
  427. phys = <&usbphy 1>;
  428. phy-names = "usb";
  429. status = "disabled";
  430. };
  431. ohci0: usb@1c14400 {
  432. compatible = "allwinner,sun4i-a10-ohci", "generic-ohci";
  433. reg = <0x01c14400 0x100>;
  434. interrupts = <64>;
  435. clocks = <&ccu CLK_USB_OHCI0>, <&ccu CLK_AHB_OHCI0>;
  436. phys = <&usbphy 1>;
  437. phy-names = "usb";
  438. status = "disabled";
  439. };
  440. crypto: crypto-engine@1c15000 {
  441. compatible = "allwinner,sun4i-a10-crypto";
  442. reg = <0x01c15000 0x1000>;
  443. interrupts = <86>;
  444. clocks = <&ccu CLK_AHB_SS>, <&ccu CLK_SS>;
  445. clock-names = "ahb", "mod";
  446. };
  447. hdmi: hdmi@1c16000 {
  448. compatible = "allwinner,sun4i-a10-hdmi";
  449. reg = <0x01c16000 0x1000>;
  450. interrupts = <58>;
  451. clocks = <&ccu CLK_AHB_HDMI0>, <&ccu CLK_HDMI>,
  452. <&ccu CLK_PLL_VIDEO0_2X>,
  453. <&ccu CLK_PLL_VIDEO1_2X>;
  454. clock-names = "ahb", "mod", "pll-0", "pll-1";
  455. dmas = <&dma SUN4I_DMA_NORMAL 16>,
  456. <&dma SUN4I_DMA_NORMAL 16>,
  457. <&dma SUN4I_DMA_DEDICATED 24>;
  458. dma-names = "ddc-tx", "ddc-rx", "audio-tx";
  459. status = "disabled";
  460. ports {
  461. #address-cells = <1>;
  462. #size-cells = <0>;
  463. hdmi_in: port@0 {
  464. #address-cells = <1>;
  465. #size-cells = <0>;
  466. reg = <0>;
  467. hdmi_in_tcon0: endpoint@0 {
  468. reg = <0>;
  469. remote-endpoint = <&tcon0_out_hdmi>;
  470. };
  471. hdmi_in_tcon1: endpoint@1 {
  472. reg = <1>;
  473. remote-endpoint = <&tcon1_out_hdmi>;
  474. };
  475. };
  476. hdmi_out: port@1 {
  477. #address-cells = <1>;
  478. #size-cells = <0>;
  479. reg = <1>;
  480. };
  481. };
  482. };
  483. spi2: spi@1c17000 {
  484. compatible = "allwinner,sun4i-a10-spi";
  485. reg = <0x01c17000 0x1000>;
  486. interrupts = <12>;
  487. clocks = <&ccu CLK_AHB_SPI2>, <&ccu CLK_SPI2>;
  488. clock-names = "ahb", "mod";
  489. dmas = <&dma SUN4I_DMA_DEDICATED 29>,
  490. <&dma SUN4I_DMA_DEDICATED 28>;
  491. dma-names = "rx", "tx";
  492. status = "disabled";
  493. #address-cells = <1>;
  494. #size-cells = <0>;
  495. };
  496. ahci: sata@1c18000 {
  497. compatible = "allwinner,sun4i-a10-ahci";
  498. reg = <0x01c18000 0x1000>;
  499. interrupts = <56>;
  500. clocks = <&ccu CLK_AHB_SATA>, <&ccu CLK_SATA>;
  501. status = "disabled";
  502. };
  503. ehci1: usb@1c1c000 {
  504. compatible = "allwinner,sun4i-a10-ehci", "generic-ehci";
  505. reg = <0x01c1c000 0x100>;
  506. interrupts = <40>;
  507. clocks = <&ccu CLK_AHB_EHCI1>;
  508. phys = <&usbphy 2>;
  509. phy-names = "usb";
  510. status = "disabled";
  511. };
  512. ohci1: usb@1c1c400 {
  513. compatible = "allwinner,sun4i-a10-ohci", "generic-ohci";
  514. reg = <0x01c1c400 0x100>;
  515. interrupts = <65>;
  516. clocks = <&ccu CLK_USB_OHCI1>, <&ccu CLK_AHB_OHCI1>;
  517. phys = <&usbphy 2>;
  518. phy-names = "usb";
  519. status = "disabled";
  520. };
  521. spi3: spi@1c1f000 {
  522. compatible = "allwinner,sun4i-a10-spi";
  523. reg = <0x01c1f000 0x1000>;
  524. interrupts = <50>;
  525. clocks = <&ccu CLK_AHB_SPI3>, <&ccu CLK_SPI3>;
  526. clock-names = "ahb", "mod";
  527. dmas = <&dma SUN4I_DMA_DEDICATED 31>,
  528. <&dma SUN4I_DMA_DEDICATED 30>;
  529. dma-names = "rx", "tx";
  530. status = "disabled";
  531. #address-cells = <1>;
  532. #size-cells = <0>;
  533. };
  534. ccu: clock@1c20000 {
  535. compatible = "allwinner,sun4i-a10-ccu";
  536. reg = <0x01c20000 0x400>;
  537. clocks = <&osc24M>, <&osc32k>;
  538. clock-names = "hosc", "losc";
  539. #clock-cells = <1>;
  540. #reset-cells = <1>;
  541. };
  542. intc: interrupt-controller@1c20400 {
  543. compatible = "allwinner,sun4i-a10-ic";
  544. reg = <0x01c20400 0x400>;
  545. interrupt-controller;
  546. #interrupt-cells = <1>;
  547. };
  548. pio: pinctrl@1c20800 {
  549. compatible = "allwinner,sun4i-a10-pinctrl";
  550. reg = <0x01c20800 0x400>;
  551. interrupts = <28>;
  552. clocks = <&ccu CLK_APB0_PIO>, <&osc24M>, <&osc32k>;
  553. clock-names = "apb", "hosc", "losc";
  554. gpio-controller;
  555. interrupt-controller;
  556. #interrupt-cells = <3>;
  557. #gpio-cells = <3>;
  558. can0_ph_pins: can0-ph-pins {
  559. pins = "PH20", "PH21";
  560. function = "can";
  561. };
  562. emac_pins: emac0-pins {
  563. pins = "PA0", "PA1", "PA2",
  564. "PA3", "PA4", "PA5", "PA6",
  565. "PA7", "PA8", "PA9", "PA10",
  566. "PA11", "PA12", "PA13", "PA14",
  567. "PA15", "PA16";
  568. function = "emac";
  569. };
  570. i2c0_pins: i2c0-pins {
  571. pins = "PB0", "PB1";
  572. function = "i2c0";
  573. };
  574. i2c1_pins: i2c1-pins {
  575. pins = "PB18", "PB19";
  576. function = "i2c1";
  577. };
  578. i2c2_pins: i2c2-pins {
  579. pins = "PB20", "PB21";
  580. function = "i2c2";
  581. };
  582. ir0_rx_pins: ir0-rx-pin {
  583. pins = "PB4";
  584. function = "ir0";
  585. };
  586. ir0_tx_pins: ir0-tx-pin {
  587. pins = "PB3";
  588. function = "ir0";
  589. };
  590. ir1_rx_pins: ir1-rx-pin {
  591. pins = "PB23";
  592. function = "ir1";
  593. };
  594. ir1_tx_pins: ir1-tx-pin {
  595. pins = "PB22";
  596. function = "ir1";
  597. };
  598. mmc0_pins: mmc0-pins {
  599. pins = "PF0", "PF1", "PF2",
  600. "PF3", "PF4", "PF5";
  601. function = "mmc0";
  602. drive-strength = <30>;
  603. bias-pull-up;
  604. };
  605. ps2_ch0_pins: ps2-ch0-pins {
  606. pins = "PI20", "PI21";
  607. function = "ps2";
  608. };
  609. ps2_ch1_ph_pins: ps2-ch1-ph-pins {
  610. pins = "PH12", "PH13";
  611. function = "ps2";
  612. };
  613. pwm0_pin: pwm0-pin {
  614. pins = "PB2";
  615. function = "pwm";
  616. };
  617. pwm1_pin: pwm1-pin {
  618. pins = "PI3";
  619. function = "pwm";
  620. };
  621. spdif_tx_pin: spdif-tx-pin {
  622. pins = "PB13";
  623. function = "spdif";
  624. bias-pull-up;
  625. };
  626. spi0_pi_pins: spi0-pi-pins {
  627. pins = "PI11", "PI12", "PI13";
  628. function = "spi0";
  629. };
  630. spi0_cs0_pi_pin: spi0-cs0-pi-pin {
  631. pins = "PI10";
  632. function = "spi0";
  633. };
  634. spi1_pins: spi1-pins {
  635. pins = "PI17", "PI18", "PI19";
  636. function = "spi1";
  637. };
  638. spi1_cs0_pin: spi1-cs0-pin {
  639. pins = "PI16";
  640. function = "spi1";
  641. };
  642. spi2_pb_pins: spi2-pb-pins {
  643. pins = "PB15", "PB16", "PB17";
  644. function = "spi2";
  645. };
  646. spi2_pc_pins: spi2-pc-pins {
  647. pins = "PC20", "PC21", "PC22";
  648. function = "spi2";
  649. };
  650. spi2_cs0_pb_pin: spi2-cs0-pb-pin {
  651. pins = "PB14";
  652. function = "spi2";
  653. };
  654. spi2_cs0_pc_pins: spi2-cs0-pc-pin {
  655. pins = "PC19";
  656. function = "spi2";
  657. };
  658. uart0_pb_pins: uart0-pb-pins {
  659. pins = "PB22", "PB23";
  660. function = "uart0";
  661. };
  662. uart0_pf_pins: uart0-pf-pins {
  663. pins = "PF2", "PF4";
  664. function = "uart0";
  665. };
  666. uart1_pins: uart1-pins {
  667. pins = "PA10", "PA11";
  668. function = "uart1";
  669. };
  670. };
  671. timer@1c20c00 {
  672. compatible = "allwinner,sun4i-a10-timer";
  673. reg = <0x01c20c00 0x90>;
  674. interrupts = <22>;
  675. clocks = <&osc24M>;
  676. };
  677. wdt: watchdog@1c20c90 {
  678. compatible = "allwinner,sun4i-a10-wdt";
  679. reg = <0x01c20c90 0x10>;
  680. };
  681. rtc: rtc@1c20d00 {
  682. compatible = "allwinner,sun4i-a10-rtc";
  683. reg = <0x01c20d00 0x20>;
  684. interrupts = <24>;
  685. };
  686. pwm: pwm@1c20e00 {
  687. compatible = "allwinner,sun4i-a10-pwm";
  688. reg = <0x01c20e00 0xc>;
  689. clocks = <&osc24M>;
  690. #pwm-cells = <3>;
  691. status = "disabled";
  692. };
  693. spdif: spdif@1c21000 {
  694. #sound-dai-cells = <0>;
  695. compatible = "allwinner,sun4i-a10-spdif";
  696. reg = <0x01c21000 0x400>;
  697. interrupts = <13>;
  698. clocks = <&ccu CLK_APB0_SPDIF>, <&ccu CLK_SPDIF>;
  699. clock-names = "apb", "spdif";
  700. dmas = <&dma SUN4I_DMA_NORMAL 2>,
  701. <&dma SUN4I_DMA_NORMAL 2>;
  702. dma-names = "rx", "tx";
  703. status = "disabled";
  704. };
  705. ir0: ir@1c21800 {
  706. compatible = "allwinner,sun4i-a10-ir";
  707. clocks = <&ccu CLK_APB0_IR0>, <&ccu CLK_IR0>;
  708. clock-names = "apb", "ir";
  709. interrupts = <5>;
  710. reg = <0x01c21800 0x40>;
  711. status = "disabled";
  712. };
  713. ir1: ir@1c21c00 {
  714. compatible = "allwinner,sun4i-a10-ir";
  715. clocks = <&ccu CLK_APB0_IR1>, <&ccu CLK_IR1>;
  716. clock-names = "apb", "ir";
  717. interrupts = <6>;
  718. reg = <0x01c21c00 0x40>;
  719. status = "disabled";
  720. };
  721. i2s0: i2s@1c22400 {
  722. #sound-dai-cells = <0>;
  723. compatible = "allwinner,sun4i-a10-i2s";
  724. reg = <0x01c22400 0x400>;
  725. interrupts = <16>;
  726. clocks = <&ccu CLK_APB0_I2S0>, <&ccu CLK_I2S0>;
  727. clock-names = "apb", "mod";
  728. dmas = <&dma SUN4I_DMA_NORMAL 3>,
  729. <&dma SUN4I_DMA_NORMAL 3>;
  730. dma-names = "rx", "tx";
  731. status = "disabled";
  732. };
  733. lradc: lradc@1c22800 {
  734. compatible = "allwinner,sun4i-a10-lradc-keys";
  735. reg = <0x01c22800 0x100>;
  736. interrupts = <31>;
  737. status = "disabled";
  738. };
  739. codec: codec@1c22c00 {
  740. #sound-dai-cells = <0>;
  741. compatible = "allwinner,sun4i-a10-codec";
  742. reg = <0x01c22c00 0x40>;
  743. interrupts = <30>;
  744. clocks = <&ccu CLK_APB0_CODEC>, <&ccu CLK_CODEC>;
  745. clock-names = "apb", "codec";
  746. dmas = <&dma SUN4I_DMA_NORMAL 19>,
  747. <&dma SUN4I_DMA_NORMAL 19>;
  748. dma-names = "rx", "tx";
  749. status = "disabled";
  750. };
  751. sid: eeprom@1c23800 {
  752. compatible = "allwinner,sun4i-a10-sid";
  753. reg = <0x01c23800 0x10>;
  754. };
  755. rtp: rtp@1c25000 {
  756. compatible = "allwinner,sun4i-a10-ts";
  757. reg = <0x01c25000 0x100>;
  758. interrupts = <29>;
  759. #thermal-sensor-cells = <0>;
  760. };
  761. uart0: serial@1c28000 {
  762. compatible = "snps,dw-apb-uart";
  763. reg = <0x01c28000 0x400>;
  764. interrupts = <1>;
  765. reg-shift = <2>;
  766. reg-io-width = <4>;
  767. clocks = <&ccu CLK_APB1_UART0>;
  768. status = "disabled";
  769. };
  770. uart1: serial@1c28400 {
  771. compatible = "snps,dw-apb-uart";
  772. reg = <0x01c28400 0x400>;
  773. interrupts = <2>;
  774. reg-shift = <2>;
  775. reg-io-width = <4>;
  776. clocks = <&ccu CLK_APB1_UART1>;
  777. status = "disabled";
  778. };
  779. uart2: serial@1c28800 {
  780. compatible = "snps,dw-apb-uart";
  781. reg = <0x01c28800 0x400>;
  782. interrupts = <3>;
  783. reg-shift = <2>;
  784. reg-io-width = <4>;
  785. clocks = <&ccu CLK_APB1_UART2>;
  786. status = "disabled";
  787. };
  788. uart3: serial@1c28c00 {
  789. compatible = "snps,dw-apb-uart";
  790. reg = <0x01c28c00 0x400>;
  791. interrupts = <4>;
  792. reg-shift = <2>;
  793. reg-io-width = <4>;
  794. clocks = <&ccu CLK_APB1_UART3>;
  795. status = "disabled";
  796. };
  797. uart4: serial@1c29000 {
  798. compatible = "snps,dw-apb-uart";
  799. reg = <0x01c29000 0x400>;
  800. interrupts = <17>;
  801. reg-shift = <2>;
  802. reg-io-width = <4>;
  803. clocks = <&ccu CLK_APB1_UART4>;
  804. status = "disabled";
  805. };
  806. uart5: serial@1c29400 {
  807. compatible = "snps,dw-apb-uart";
  808. reg = <0x01c29400 0x400>;
  809. interrupts = <18>;
  810. reg-shift = <2>;
  811. reg-io-width = <4>;
  812. clocks = <&ccu CLK_APB1_UART5>;
  813. status = "disabled";
  814. };
  815. uart6: serial@1c29800 {
  816. compatible = "snps,dw-apb-uart";
  817. reg = <0x01c29800 0x400>;
  818. interrupts = <19>;
  819. reg-shift = <2>;
  820. reg-io-width = <4>;
  821. clocks = <&ccu CLK_APB1_UART6>;
  822. status = "disabled";
  823. };
  824. uart7: serial@1c29c00 {
  825. compatible = "snps,dw-apb-uart";
  826. reg = <0x01c29c00 0x400>;
  827. interrupts = <20>;
  828. reg-shift = <2>;
  829. reg-io-width = <4>;
  830. clocks = <&ccu CLK_APB1_UART7>;
  831. status = "disabled";
  832. };
  833. ps20: ps2@1c2a000 {
  834. compatible = "allwinner,sun4i-a10-ps2";
  835. reg = <0x01c2a000 0x400>;
  836. interrupts = <62>;
  837. clocks = <&ccu CLK_APB1_PS20>;
  838. status = "disabled";
  839. };
  840. ps21: ps2@1c2a400 {
  841. compatible = "allwinner,sun4i-a10-ps2";
  842. reg = <0x01c2a400 0x400>;
  843. interrupts = <63>;
  844. clocks = <&ccu CLK_APB1_PS21>;
  845. status = "disabled";
  846. };
  847. i2c0: i2c@1c2ac00 {
  848. compatible = "allwinner,sun4i-a10-i2c";
  849. reg = <0x01c2ac00 0x400>;
  850. interrupts = <7>;
  851. clocks = <&ccu CLK_APB1_I2C0>;
  852. pinctrl-names = "default";
  853. pinctrl-0 = <&i2c0_pins>;
  854. status = "disabled";
  855. #address-cells = <1>;
  856. #size-cells = <0>;
  857. };
  858. i2c1: i2c@1c2b000 {
  859. compatible = "allwinner,sun4i-a10-i2c";
  860. reg = <0x01c2b000 0x400>;
  861. interrupts = <8>;
  862. clocks = <&ccu CLK_APB1_I2C1>;
  863. pinctrl-names = "default";
  864. pinctrl-0 = <&i2c1_pins>;
  865. status = "disabled";
  866. #address-cells = <1>;
  867. #size-cells = <0>;
  868. };
  869. i2c2: i2c@1c2b400 {
  870. compatible = "allwinner,sun4i-a10-i2c";
  871. reg = <0x01c2b400 0x400>;
  872. interrupts = <9>;
  873. clocks = <&ccu CLK_APB1_I2C2>;
  874. pinctrl-names = "default";
  875. pinctrl-0 = <&i2c2_pins>;
  876. status = "disabled";
  877. #address-cells = <1>;
  878. #size-cells = <0>;
  879. };
  880. can0: can@1c2bc00 {
  881. compatible = "allwinner,sun4i-a10-can";
  882. reg = <0x01c2bc00 0x400>;
  883. interrupts = <26>;
  884. clocks = <&ccu CLK_APB1_CAN>;
  885. status = "disabled";
  886. };
  887. fe0: display-frontend@1e00000 {
  888. compatible = "allwinner,sun4i-a10-display-frontend";
  889. reg = <0x01e00000 0x20000>;
  890. interrupts = <47>;
  891. clocks = <&ccu CLK_AHB_DE_FE0>, <&ccu CLK_DE_FE0>,
  892. <&ccu CLK_DRAM_DE_FE0>;
  893. clock-names = "ahb", "mod",
  894. "ram";
  895. resets = <&ccu RST_DE_FE0>;
  896. ports {
  897. #address-cells = <1>;
  898. #size-cells = <0>;
  899. fe0_out: port@1 {
  900. #address-cells = <1>;
  901. #size-cells = <0>;
  902. reg = <1>;
  903. fe0_out_be0: endpoint@0 {
  904. reg = <0>;
  905. remote-endpoint = <&be0_in_fe0>;
  906. };
  907. fe0_out_be1: endpoint@1 {
  908. reg = <1>;
  909. remote-endpoint = <&be1_in_fe0>;
  910. };
  911. };
  912. };
  913. };
  914. fe1: display-frontend@1e20000 {
  915. compatible = "allwinner,sun4i-a10-display-frontend";
  916. reg = <0x01e20000 0x20000>;
  917. interrupts = <48>;
  918. clocks = <&ccu CLK_AHB_DE_FE1>, <&ccu CLK_DE_FE1>,
  919. <&ccu CLK_DRAM_DE_FE1>;
  920. clock-names = "ahb", "mod",
  921. "ram";
  922. resets = <&ccu RST_DE_FE1>;
  923. ports {
  924. #address-cells = <1>;
  925. #size-cells = <0>;
  926. fe1_out: port@1 {
  927. #address-cells = <1>;
  928. #size-cells = <0>;
  929. reg = <1>;
  930. fe1_out_be0: endpoint@0 {
  931. reg = <0>;
  932. remote-endpoint = <&be0_in_fe1>;
  933. };
  934. fe1_out_be1: endpoint@1 {
  935. reg = <1>;
  936. remote-endpoint = <&be1_in_fe1>;
  937. };
  938. };
  939. };
  940. };
  941. be1: display-backend@1e40000 {
  942. compatible = "allwinner,sun4i-a10-display-backend";
  943. reg = <0x01e40000 0x10000>;
  944. interrupts = <48>;
  945. clocks = <&ccu CLK_AHB_DE_BE1>, <&ccu CLK_DE_BE1>,
  946. <&ccu CLK_DRAM_DE_BE1>;
  947. clock-names = "ahb", "mod",
  948. "ram";
  949. resets = <&ccu RST_DE_BE1>;
  950. ports {
  951. #address-cells = <1>;
  952. #size-cells = <0>;
  953. be1_in: port@0 {
  954. #address-cells = <1>;
  955. #size-cells = <0>;
  956. reg = <0>;
  957. be1_in_fe0: endpoint@0 {
  958. reg = <0>;
  959. remote-endpoint = <&fe0_out_be1>;
  960. };
  961. be1_in_fe1: endpoint@1 {
  962. reg = <1>;
  963. remote-endpoint = <&fe1_out_be1>;
  964. };
  965. };
  966. be1_out: port@1 {
  967. #address-cells = <1>;
  968. #size-cells = <0>;
  969. reg = <1>;
  970. be1_out_tcon0: endpoint@0 {
  971. reg = <0>;
  972. remote-endpoint = <&tcon0_in_be1>;
  973. };
  974. be1_out_tcon1: endpoint@1 {
  975. reg = <1>;
  976. remote-endpoint = <&tcon1_in_be1>;
  977. };
  978. };
  979. };
  980. };
  981. be0: display-backend@1e60000 {
  982. compatible = "allwinner,sun4i-a10-display-backend";
  983. reg = <0x01e60000 0x10000>;
  984. interrupts = <47>;
  985. clocks = <&ccu CLK_AHB_DE_BE0>, <&ccu CLK_DE_BE0>,
  986. <&ccu CLK_DRAM_DE_BE0>;
  987. clock-names = "ahb", "mod",
  988. "ram";
  989. resets = <&ccu RST_DE_BE0>;
  990. ports {
  991. #address-cells = <1>;
  992. #size-cells = <0>;
  993. be0_in: port@0 {
  994. #address-cells = <1>;
  995. #size-cells = <0>;
  996. reg = <0>;
  997. be0_in_fe0: endpoint@0 {
  998. reg = <0>;
  999. remote-endpoint = <&fe0_out_be0>;
  1000. };
  1001. be0_in_fe1: endpoint@1 {
  1002. reg = <1>;
  1003. remote-endpoint = <&fe1_out_be0>;
  1004. };
  1005. };
  1006. be0_out: port@1 {
  1007. #address-cells = <1>;
  1008. #size-cells = <0>;
  1009. reg = <1>;
  1010. be0_out_tcon0: endpoint@0 {
  1011. reg = <0>;
  1012. remote-endpoint = <&tcon0_in_be0>;
  1013. };
  1014. be0_out_tcon1: endpoint@1 {
  1015. reg = <1>;
  1016. remote-endpoint = <&tcon1_in_be0>;
  1017. };
  1018. };
  1019. };
  1020. };
  1021. };
  1022. };