at91sam9m10g45ek.dts 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393
  1. // SPDX-License-Identifier: GPL-2.0-or-later
  2. /*
  3. * at91sam9m10g45ek.dts - Device Tree file for AT91SAM9M10G45-EK board
  4. *
  5. * Copyright (C) 2011 Atmel,
  6. * 2011 Nicolas Ferre <[email protected]>
  7. */
  8. /dts-v1/;
  9. #include "at91sam9g45.dtsi"
  10. #include <dt-bindings/pwm/pwm.h>
  11. / {
  12. model = "Atmel AT91SAM9M10G45-EK";
  13. compatible = "atmel,at91sam9m10g45ek", "atmel,at91sam9g45", "atmel,at91sam9";
  14. chosen {
  15. bootargs = "mem=64M root=/dev/mtdblock1 rw rootfstype=jffs2";
  16. stdout-path = "serial0:115200n8";
  17. };
  18. memory@70000000 {
  19. reg = <0x70000000 0x4000000>;
  20. };
  21. clocks {
  22. slow_xtal {
  23. clock-frequency = <32768>;
  24. };
  25. main_xtal {
  26. clock-frequency = <12000000>;
  27. };
  28. };
  29. ahb {
  30. apb {
  31. dbgu: serial@ffffee00 {
  32. status = "okay";
  33. };
  34. tcb0: timer@fff7c000 {
  35. timer@0 {
  36. compatible = "atmel,tcb-timer";
  37. reg = <0>, <1>;
  38. };
  39. timer@2 {
  40. compatible = "atmel,tcb-timer";
  41. reg = <2>;
  42. };
  43. };
  44. usart1: serial@fff90000 {
  45. pinctrl-0 =
  46. <&pinctrl_usart1
  47. &pinctrl_usart1_rts
  48. &pinctrl_usart1_cts>;
  49. status = "okay";
  50. };
  51. macb0: ethernet@fffbc000 {
  52. phy-mode = "rmii";
  53. status = "okay";
  54. };
  55. i2c0: i2c@fff84000 {
  56. status = "okay";
  57. ov2640: camera@30 {
  58. compatible = "ovti,ov2640";
  59. reg = <0x30>;
  60. pinctrl-names = "default";
  61. pinctrl-0 = <&pinctrl_pck1_as_isi_mck &pinctrl_sensor_power &pinctrl_sensor_reset>;
  62. resetb-gpios = <&pioD 12 GPIO_ACTIVE_LOW>;
  63. pwdn-gpios = <&pioD 13 GPIO_ACTIVE_HIGH>;
  64. clocks = <&pmc PMC_TYPE_SYSTEM 9>;
  65. clock-names = "xvclk";
  66. assigned-clocks = <&pmc PMC_TYPE_SYSTEM 9>;
  67. assigned-clock-rates = <25000000>;
  68. port {
  69. ov2640_0: endpoint {
  70. remote-endpoint = <&isi_0>;
  71. bus-width = <8>;
  72. };
  73. };
  74. };
  75. };
  76. i2c1: i2c@fff88000 {
  77. status = "okay";
  78. };
  79. watchdog@fffffd40 {
  80. status = "okay";
  81. };
  82. mmc0: mmc@fff80000 {
  83. pinctrl-0 = <
  84. &pinctrl_board_mmc0
  85. &pinctrl_mmc0_slot0_clk_cmd_dat0
  86. &pinctrl_mmc0_slot0_dat1_3>;
  87. pinctrl-names = "default";
  88. status = "okay";
  89. slot@0 {
  90. reg = <0>;
  91. bus-width = <4>;
  92. cd-gpios = <&pioD 10 GPIO_ACTIVE_HIGH>;
  93. };
  94. };
  95. mmc1: mmc@fffd0000 {
  96. pinctrl-0 = <
  97. &pinctrl_board_mmc1
  98. &pinctrl_mmc1_slot0_clk_cmd_dat0
  99. &pinctrl_mmc1_slot0_dat1_3>;
  100. pinctrl-names = "default";
  101. status = "okay";
  102. slot@0 {
  103. reg = <0>;
  104. bus-width = <4>;
  105. cd-gpios = <&pioD 11 GPIO_ACTIVE_HIGH>;
  106. wp-gpios = <&pioD 29 GPIO_ACTIVE_HIGH>;
  107. };
  108. };
  109. pinctrl@fffff200 {
  110. camera_sensor {
  111. pinctrl_pck1_as_isi_mck: pck1_as_isi_mck-0 {
  112. atmel,pins =
  113. <AT91_PIOB 31 AT91_PERIPH_B AT91_PINCTRL_NONE>;
  114. };
  115. pinctrl_sensor_reset: sensor_reset-0 {
  116. atmel,pins =
  117. <AT91_PIOD 12 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
  118. };
  119. pinctrl_sensor_power: sensor_power-0 {
  120. atmel,pins =
  121. <AT91_PIOD 13 AT91_PERIPH_GPIO AT91_PINCTRL_NONE>;
  122. };
  123. };
  124. mmc0 {
  125. pinctrl_board_mmc0: mmc0-board {
  126. atmel,pins =
  127. <AT91_PIOD 10 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH>; /* PD10 gpio CD pin pull up and deglitch */
  128. };
  129. };
  130. mmc1 {
  131. pinctrl_board_mmc1: mmc1-board {
  132. atmel,pins =
  133. <AT91_PIOD 11 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP_DEGLITCH /* PD11 gpio CD pin pull up and deglitch */
  134. AT91_PIOD 29 AT91_PERIPH_GPIO AT91_PINCTRL_PULL_UP>; /* PD29 gpio WP pin pull up */
  135. };
  136. };
  137. pwm0 {
  138. pinctrl_pwm_leds: pwm-led {
  139. atmel,pins =
  140. <AT91_PIOD 0 AT91_PERIPH_B AT91_PINCTRL_PULL_UP /* PD0 periph B */
  141. AT91_PIOD 31 AT91_PERIPH_B AT91_PINCTRL_PULL_UP>; /* PD31 periph B */
  142. };
  143. };
  144. };
  145. spi0: spi@fffa4000{
  146. status = "okay";
  147. cs-gpios = <&pioB 3 0>, <0>, <0>, <0>;
  148. flash@0 {
  149. compatible = "atmel,at45", "atmel,dataflash";
  150. spi-max-frequency = <13000000>;
  151. reg = <0>;
  152. };
  153. };
  154. usb2: gadget@fff78000 {
  155. atmel,vbus-gpio = <&pioB 19 GPIO_ACTIVE_HIGH>;
  156. status = "okay";
  157. };
  158. ac97: sound@fffac000 {
  159. status = "okay";
  160. };
  161. adc0: adc@fffb0000 {
  162. pinctrl-names = "default";
  163. pinctrl-0 = <
  164. &pinctrl_adc0_ad0
  165. &pinctrl_adc0_ad1
  166. &pinctrl_adc0_ad2
  167. &pinctrl_adc0_ad3
  168. &pinctrl_adc0_ad4
  169. &pinctrl_adc0_ad5
  170. &pinctrl_adc0_ad6
  171. &pinctrl_adc0_ad7>;
  172. atmel,adc-ts-wires = <4>;
  173. status = "okay";
  174. };
  175. isi@fffb4000 {
  176. pinctrl-names = "default";
  177. pinctrl-0 = <&pinctrl_isi_data_0_7>;
  178. status = "okay";
  179. port {
  180. isi_0: endpoint {
  181. remote-endpoint = <&ov2640_0>;
  182. bus-width = <8>;
  183. vsync-active = <1>;
  184. hsync-active = <1>;
  185. };
  186. };
  187. };
  188. pwm0: pwm@fffb8000 {
  189. status = "okay";
  190. pinctrl-names = "default";
  191. pinctrl-0 = <&pinctrl_pwm_leds>;
  192. };
  193. rtc@fffffd20 {
  194. atmel,rtt-rtc-time-reg = <&gpbr 0x0>;
  195. status = "okay";
  196. };
  197. gpbr: syscon@fffffd60 {
  198. status = "okay";
  199. };
  200. rtc@fffffdb0 {
  201. status = "okay";
  202. };
  203. };
  204. fb0: fb@500000 {
  205. display = <&display0>;
  206. status = "okay";
  207. display0: panel {
  208. bits-per-pixel = <32>;
  209. atmel,lcdcon-backlight;
  210. atmel,dmacon = <0x1>;
  211. atmel,lcdcon2 = <0x80008002>;
  212. atmel,guard-time = <9>;
  213. atmel,lcd-wiring-mode = "RGB";
  214. display-timings {
  215. native-mode = <&timing0>;
  216. timing0: timing0 {
  217. clock-frequency = <9000000>;
  218. hactive = <480>;
  219. vactive = <272>;
  220. hback-porch = <1>;
  221. hfront-porch = <1>;
  222. vback-porch = <40>;
  223. vfront-porch = <1>;
  224. hsync-len = <45>;
  225. vsync-len = <1>;
  226. };
  227. };
  228. };
  229. };
  230. ebi: ebi@10000000 {
  231. status = "okay";
  232. nand_controller: nand-controller {
  233. status = "okay";
  234. pinctrl-0 = <&pinctrl_nand_cs &pinctrl_nand_rb>;
  235. pinctrl-names = "default";
  236. nand@3 {
  237. reg = <0x3 0x0 0x800000>;
  238. rb-gpios = <&pioC 8 GPIO_ACTIVE_HIGH>;
  239. cs-gpios = <&pioC 14 GPIO_ACTIVE_HIGH>;
  240. nand-bus-width = <8>;
  241. nand-ecc-mode = "soft";
  242. nand-on-flash-bbt;
  243. label = "atmel_nand";
  244. partitions {
  245. compatible = "fixed-partitions";
  246. #address-cells = <1>;
  247. #size-cells = <1>;
  248. boot@0 {
  249. label = "bootstrap/uboot/kernel";
  250. reg = <0x0 0x400000>;
  251. };
  252. rootfs@400000 {
  253. label = "rootfs";
  254. reg = <0x400000 0x3C00000>;
  255. };
  256. data@4000000 {
  257. label = "data";
  258. reg = <0x4000000 0xC000000>;
  259. };
  260. };
  261. };
  262. };
  263. };
  264. usb0: ohci@700000 {
  265. status = "okay";
  266. num-ports = <2>;
  267. atmel,vbus-gpio = <&pioD 1 GPIO_ACTIVE_LOW
  268. &pioD 3 GPIO_ACTIVE_LOW>;
  269. };
  270. usb1: ehci@800000 {
  271. status = "okay";
  272. };
  273. };
  274. led-controller-1 {
  275. compatible = "gpio-leds";
  276. led-1 {
  277. label = "d8";
  278. gpios = <&pioD 30 GPIO_ACTIVE_HIGH>;
  279. linux,default-trigger = "heartbeat";
  280. };
  281. };
  282. led-controller-2 {
  283. compatible = "pwm-leds";
  284. led-2 {
  285. label = "d6";
  286. pwms = <&pwm0 3 5000 PWM_POLARITY_INVERTED>;
  287. max-brightness = <255>;
  288. linux,default-trigger = "nand-disk";
  289. };
  290. led-3 {
  291. label = "d7";
  292. pwms = <&pwm0 1 5000 PWM_POLARITY_INVERTED>;
  293. max-brightness = <255>;
  294. linux,default-trigger = "mmc0";
  295. };
  296. };
  297. gpio-keys {
  298. compatible = "gpio-keys";
  299. button-left-click {
  300. label = "left_click";
  301. gpios = <&pioB 6 GPIO_ACTIVE_LOW>;
  302. linux,code = <272>;
  303. wakeup-source;
  304. };
  305. button-right-click {
  306. label = "right_click";
  307. gpios = <&pioB 7 GPIO_ACTIVE_LOW>;
  308. linux,code = <273>;
  309. wakeup-source;
  310. };
  311. button-left {
  312. label = "Joystick Left";
  313. gpios = <&pioB 14 GPIO_ACTIVE_LOW>;
  314. linux,code = <105>;
  315. };
  316. button-right {
  317. label = "Joystick Right";
  318. gpios = <&pioB 15 GPIO_ACTIVE_LOW>;
  319. linux,code = <106>;
  320. };
  321. button-up {
  322. label = "Joystick Up";
  323. gpios = <&pioB 16 GPIO_ACTIVE_LOW>;
  324. linux,code = <103>;
  325. };
  326. button-down {
  327. label = "Joystick Down";
  328. gpios = <&pioB 17 GPIO_ACTIVE_LOW>;
  329. linux,code = <108>;
  330. };
  331. button-enter {
  332. label = "Joystick Press";
  333. gpios = <&pioB 18 GPIO_ACTIVE_LOW>;
  334. linux,code = <28>;
  335. };
  336. };
  337. };