at91rm9200.dtsi 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349
  1. /*
  2. * at91rm9200.dtsi - Device Tree Include file for AT91RM9200 family SoC
  3. *
  4. * Copyright (C) 2011 Atmel,
  5. * 2011 Nicolas Ferre <nicolas.ferre@atmel.com>,
  6. * 2012 Joachim Eastwood <manabian@gmail.com>
  7. *
  8. * Based on at91sam9260.dtsi
  9. *
  10. * Licensed under GPLv2 or later.
  11. */
  12. /include/ "skeleton.dtsi"
  13. / {
  14. model = "Atmel AT91RM9200 family SoC";
  15. compatible = "atmel,at91rm9200";
  16. interrupt-parent = <&aic>;
  17. aliases {
  18. serial0 = &dbgu;
  19. serial1 = &usart0;
  20. serial2 = &usart1;
  21. serial3 = &usart2;
  22. serial4 = &usart3;
  23. gpio0 = &pioA;
  24. gpio1 = &pioB;
  25. gpio2 = &pioC;
  26. gpio3 = &pioD;
  27. tcb0 = &tcb0;
  28. tcb1 = &tcb1;
  29. };
  30. cpus {
  31. cpu@0 {
  32. compatible = "arm,arm920t";
  33. };
  34. };
  35. memory {
  36. reg = <0x20000000 0x04000000>;
  37. };
  38. ahb {
  39. compatible = "simple-bus";
  40. #address-cells = <1>;
  41. #size-cells = <1>;
  42. ranges;
  43. apb {
  44. compatible = "simple-bus";
  45. #address-cells = <1>;
  46. #size-cells = <1>;
  47. ranges;
  48. aic: interrupt-controller@fffff000 {
  49. #interrupt-cells = <3>;
  50. compatible = "atmel,at91rm9200-aic";
  51. interrupt-controller;
  52. reg = <0xfffff000 0x200>;
  53. atmel,external-irqs = <25 26 27 28 29 30 31>;
  54. };
  55. ramc0: ramc@ffffff00 {
  56. compatible = "atmel,at91rm9200-sdramc";
  57. reg = <0xffffff00 0x100>;
  58. };
  59. pmc: pmc@fffffc00 {
  60. compatible = "atmel,at91rm9200-pmc";
  61. reg = <0xfffffc00 0x100>;
  62. };
  63. st: timer@fffffd00 {
  64. compatible = "atmel,at91rm9200-st";
  65. reg = <0xfffffd00 0x100>;
  66. interrupts = <1 4 7>;
  67. };
  68. tcb0: timer@fffa0000 {
  69. compatible = "atmel,at91rm9200-tcb";
  70. reg = <0xfffa0000 0x100>;
  71. interrupts = <17 4 0 18 4 0 19 4 0>;
  72. };
  73. tcb1: timer@fffa4000 {
  74. compatible = "atmel,at91rm9200-tcb";
  75. reg = <0xfffa4000 0x100>;
  76. interrupts = <20 4 0 21 4 0 22 4 0>;
  77. };
  78. pinctrl@fffff400 {
  79. #address-cells = <1>;
  80. #size-cells = <1>;
  81. compatible = "atmel,at91rm9200-pinctrl", "simple-bus";
  82. ranges = <0xfffff400 0xfffff400 0x800>;
  83. atmel,mux-mask = <
  84. /* A B */
  85. 0xffffffff 0xffffffff /* pioA */
  86. 0xffffffff 0x083fffff /* pioB */
  87. 0xffff3fff 0x00000000 /* pioC */
  88. 0x03ff87ff 0x0fffff80 /* pioD */
  89. >;
  90. /* shared pinctrl settings */
  91. dbgu {
  92. pinctrl_dbgu: dbgu-0 {
  93. atmel,pins =
  94. <0 30 0x1 0x0 /* PA30 periph A */
  95. 0 31 0x1 0x1>; /* PA31 periph with pullup */
  96. };
  97. };
  98. uart0 {
  99. pinctrl_uart0: uart0-0 {
  100. atmel,pins =
  101. <0 17 0x1 0x0 /* PA17 periph A */
  102. 0 18 0x1 0x0>; /* PA18 periph A */
  103. };
  104. pinctrl_uart0_rts: uart0_rts-0 {
  105. atmel,pins =
  106. <0 20 0x1 0x0>; /* PA20 periph A */
  107. };
  108. pinctrl_uart0_cts: uart0_cts-0 {
  109. atmel,pins =
  110. <0 21 0x1 0x0>; /* PA21 periph A */
  111. };
  112. };
  113. uart1 {
  114. pinctrl_uart1: uart1-0 {
  115. atmel,pins =
  116. <1 20 0x1 0x1 /* PB20 periph A with pullup */
  117. 1 21 0x1 0x0>; /* PB21 periph A */
  118. };
  119. pinctrl_uart1_rts: uart1_rts-0 {
  120. atmel,pins =
  121. <1 24 0x1 0x0>; /* PB24 periph A */
  122. };
  123. pinctrl_uart1_cts: uart1_cts-0 {
  124. atmel,pins =
  125. <1 26 0x1 0x0>; /* PB26 periph A */
  126. };
  127. pinctrl_uart1_dtr_dsr: uart1_dtr_dsr-0 {
  128. atmel,pins =
  129. <1 19 0x1 0x0 /* PB19 periph A */
  130. 1 25 0x1 0x0>; /* PB25 periph A */
  131. };
  132. pinctrl_uart1_dcd: uart1_dcd-0 {
  133. atmel,pins =
  134. <1 23 0x1 0x0>; /* PB23 periph A */
  135. };
  136. pinctrl_uart1_ri: uart1_ri-0 {
  137. atmel,pins =
  138. <1 18 0x1 0x0>; /* PB18 periph A */
  139. };
  140. };
  141. uart2 {
  142. pinctrl_uart2: uart2-0 {
  143. atmel,pins =
  144. <0 22 0x1 0x0 /* PA22 periph A */
  145. 0 23 0x1 0x1>; /* PA23 periph A with pullup */
  146. };
  147. pinctrl_uart2_rts: uart2_rts-0 {
  148. atmel,pins =
  149. <0 30 0x2 0x0>; /* PA30 periph B */
  150. };
  151. pinctrl_uart2_cts: uart2_cts-0 {
  152. atmel,pins =
  153. <0 31 0x2 0x0>; /* PA31 periph B */
  154. };
  155. };
  156. uart3 {
  157. pinctrl_uart3: uart3-0 {
  158. atmel,pins =
  159. <0 5 0x2 0x1 /* PA5 periph B with pullup */
  160. 0 6 0x2 0x0>; /* PA6 periph B */
  161. };
  162. pinctrl_uart3_rts: uart3_rts-0 {
  163. atmel,pins =
  164. <1 0 0x2 0x0>; /* PB0 periph B */
  165. };
  166. pinctrl_uart3_cts: uart3_cts-0 {
  167. atmel,pins =
  168. <1 1 0x2 0x0>; /* PB1 periph B */
  169. };
  170. };
  171. nand {
  172. pinctrl_nand: nand-0 {
  173. atmel,pins =
  174. <2 2 0x0 0x1 /* PC2 gpio RDY pin pull_up */
  175. 1 1 0x0 0x1>; /* PB1 gpio CD pin pull_up */
  176. };
  177. };
  178. pioA: gpio@fffff400 {
  179. compatible = "atmel,at91rm9200-gpio";
  180. reg = <0xfffff400 0x200>;
  181. interrupts = <2 4 1>;
  182. #gpio-cells = <2>;
  183. gpio-controller;
  184. interrupt-controller;
  185. #interrupt-cells = <2>;
  186. };
  187. pioB: gpio@fffff600 {
  188. compatible = "atmel,at91rm9200-gpio";
  189. reg = <0xfffff600 0x200>;
  190. interrupts = <3 4 1>;
  191. #gpio-cells = <2>;
  192. gpio-controller;
  193. interrupt-controller;
  194. #interrupt-cells = <2>;
  195. };
  196. pioC: gpio@fffff800 {
  197. compatible = "atmel,at91rm9200-gpio";
  198. reg = <0xfffff800 0x200>;
  199. interrupts = <4 4 1>;
  200. #gpio-cells = <2>;
  201. gpio-controller;
  202. interrupt-controller;
  203. #interrupt-cells = <2>;
  204. };
  205. pioD: gpio@fffffa00 {
  206. compatible = "atmel,at91rm9200-gpio";
  207. reg = <0xfffffa00 0x200>;
  208. interrupts = <5 4 1>;
  209. #gpio-cells = <2>;
  210. gpio-controller;
  211. interrupt-controller;
  212. #interrupt-cells = <2>;
  213. };
  214. };
  215. dbgu: serial@fffff200 {
  216. compatible = "atmel,at91rm9200-usart";
  217. reg = <0xfffff200 0x200>;
  218. interrupts = <1 4 7>;
  219. pinctrl-names = "default";
  220. pinctrl-0 = <&pinctrl_dbgu>;
  221. status = "disabled";
  222. };
  223. usart0: serial@fffc0000 {
  224. compatible = "atmel,at91rm9200-usart";
  225. reg = <0xfffc0000 0x200>;
  226. interrupts = <6 4 5>;
  227. atmel,use-dma-rx;
  228. atmel,use-dma-tx;
  229. pinctrl-names = "default";
  230. pinctrl-0 = <&pinctrl_uart0>;
  231. status = "disabled";
  232. };
  233. usart1: serial@fffc4000 {
  234. compatible = "atmel,at91rm9200-usart";
  235. reg = <0xfffc4000 0x200>;
  236. interrupts = <7 4 5>;
  237. atmel,use-dma-rx;
  238. atmel,use-dma-tx;
  239. pinctrl-names = "default";
  240. pinctrl-0 = <&pinctrl_uart1>;
  241. status = "disabled";
  242. };
  243. usart2: serial@fffc8000 {
  244. compatible = "atmel,at91rm9200-usart";
  245. reg = <0xfffc8000 0x200>;
  246. interrupts = <8 4 5>;
  247. atmel,use-dma-rx;
  248. atmel,use-dma-tx;
  249. pinctrl-names = "default";
  250. pinctrl-0 = <&pinctrl_uart2>;
  251. status = "disabled";
  252. };
  253. usart3: serial@fffcc000 {
  254. compatible = "atmel,at91rm9200-usart";
  255. reg = <0xfffcc000 0x200>;
  256. interrupts = <23 4 5>;
  257. atmel,use-dma-rx;
  258. atmel,use-dma-tx;
  259. pinctrl-names = "default";
  260. pinctrl-0 = <&pinctrl_uart3>;
  261. status = "disabled";
  262. };
  263. usb1: gadget@fffb0000 {
  264. compatible = "atmel,at91rm9200-udc";
  265. reg = <0xfffb0000 0x4000>;
  266. interrupts = <11 4 2>;
  267. status = "disabled";
  268. };
  269. };
  270. nand0: nand@40000000 {
  271. compatible = "atmel,at91rm9200-nand";
  272. #address-cells = <1>;
  273. #size-cells = <1>;
  274. reg = <0x40000000 0x10000000>;
  275. atmel,nand-addr-offset = <21>;
  276. atmel,nand-cmd-offset = <22>;
  277. pinctrl-names = "default";
  278. pinctrl-0 = <&pinctrl_nand>;
  279. nand-ecc-mode = "soft";
  280. gpios = <&pioC 2 0
  281. 0
  282. &pioB 1 0
  283. >;
  284. status = "disabled";
  285. };
  286. usb0: ohci@00300000 {
  287. compatible = "atmel,at91rm9200-ohci", "usb-ohci";
  288. reg = <0x00300000 0x100000>;
  289. interrupts = <23 4 2>;
  290. status = "disabled";
  291. };
  292. };
  293. i2c@0 {
  294. compatible = "i2c-gpio";
  295. gpios = <&pioA 23 0 /* sda */
  296. &pioA 24 0 /* scl */
  297. >;
  298. i2c-gpio,sda-open-drain;
  299. i2c-gpio,scl-open-drain;
  300. i2c-gpio,delay-us = <2>; /* ~100 kHz */
  301. #address-cells = <1>;
  302. #size-cells = <0>;
  303. status = "disabled";
  304. };
  305. };