imx28-cfa10049.dts 9.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428
  1. // SPDX-License-Identifier: GPL-2.0-or-later
  2. /*
  3. * Copyright 2012 Free Electrons
  4. */
  5. /*
  6. * The CFA-10049 is an expansion board for the CFA-10036 module, thus we
  7. * need to include the CFA-10036 DTS.
  8. */
  9. #include "imx28-cfa10036.dts"
  10. / {
  11. model = "Crystalfontz CFA-10049 Board";
  12. compatible = "crystalfontz,cfa10049", "crystalfontz,cfa10036", "fsl,imx28";
  13. i2cmux {
  14. compatible = "i2c-mux-gpio";
  15. #address-cells = <1>;
  16. #size-cells = <0>;
  17. pinctrl-names = "default";
  18. pinctrl-0 = <&i2cmux_pins_cfa10049>;
  19. mux-gpios = <&gpio1 22 0 &gpio1 23 0>;
  20. i2c-parent = <&i2c1>;
  21. i2c@0 {
  22. #address-cells = <1>;
  23. #size-cells = <0>;
  24. reg = <0>;
  25. adc0: nau7802@2a {
  26. compatible = "nuvoton,nau7802";
  27. reg = <0x2a>;
  28. nuvoton,vldo = <3000>;
  29. };
  30. };
  31. i2c@1 {
  32. #address-cells = <1>;
  33. #size-cells = <0>;
  34. reg = <1>;
  35. adc1: nau7802@2a {
  36. compatible = "nuvoton,nau7802";
  37. reg = <0x2a>;
  38. nuvoton,vldo = <3000>;
  39. };
  40. };
  41. i2c@2 {
  42. #address-cells = <1>;
  43. #size-cells = <0>;
  44. reg = <2>;
  45. adc2: nau7802@2a {
  46. compatible = "nuvoton,nau7802";
  47. reg = <0x2a>;
  48. nuvoton,vldo = <3000>;
  49. };
  50. };
  51. i2c@3 {
  52. reg = <3>;
  53. #address-cells = <1>;
  54. #size-cells = <0>;
  55. pca9555: pca9555@20 {
  56. compatible = "nxp,pca9555";
  57. pinctrl-names = "default";
  58. pinctrl-0 = <&pca_pins_cfa10049>;
  59. interrupt-parent = <&gpio2>;
  60. interrupts = <19 0x2>;
  61. gpio-controller;
  62. #gpio-cells = <2>;
  63. interrupt-controller;
  64. #interrupt-cells = <2>;
  65. reg = <0x20>;
  66. };
  67. };
  68. };
  69. apb@80000000 {
  70. apbh@80000000 {
  71. pinctrl@80018000 {
  72. usb_pins_cfa10049: usb-10049@0 {
  73. reg = <0>;
  74. fsl,pinmux-ids = <
  75. MX28_PAD_GPMI_D07__GPIO_0_7
  76. >;
  77. fsl,drive-strength = <MXS_DRIVE_4mA>;
  78. fsl,voltage = <MXS_VOLTAGE_HIGH>;
  79. fsl,pull-up = <MXS_PULL_DISABLE>;
  80. };
  81. i2cmux_pins_cfa10049: i2cmux-10049@0 {
  82. reg = <0>;
  83. fsl,pinmux-ids = <
  84. MX28_PAD_LCD_D22__GPIO_1_22
  85. MX28_PAD_LCD_D23__GPIO_1_23
  86. >;
  87. fsl,drive-strength = <MXS_DRIVE_4mA>;
  88. fsl,voltage = <MXS_VOLTAGE_HIGH>;
  89. fsl,pull-up = <MXS_PULL_DISABLE>;
  90. };
  91. mac0_pins_cfa10049: mac0-10049@0 {
  92. reg = <0>;
  93. fsl,pinmux-ids = <
  94. MX28_PAD_SSP2_SS2__GPIO_2_21
  95. >;
  96. fsl,drive-strength = <MXS_DRIVE_4mA>;
  97. fsl,voltage = <MXS_VOLTAGE_HIGH>;
  98. fsl,pull-up = <MXS_PULL_DISABLE>;
  99. };
  100. pca_pins_cfa10049: pca-10049@0 {
  101. reg = <0>;
  102. fsl,pinmux-ids = <
  103. MX28_PAD_SSP2_SS0__GPIO_2_19
  104. >;
  105. fsl,drive-strength = <MXS_DRIVE_4mA>;
  106. fsl,voltage = <MXS_VOLTAGE_HIGH>;
  107. fsl,pull-up = <MXS_PULL_ENABLE>;
  108. };
  109. rotary_pins_cfa10049: rotary-10049@0 {
  110. reg = <0>;
  111. fsl,pinmux-ids = <
  112. MX28_PAD_I2C0_SCL__GPIO_3_24
  113. MX28_PAD_I2C0_SDA__GPIO_3_25
  114. >;
  115. fsl,drive-strength = <MXS_DRIVE_4mA>;
  116. fsl,voltage = <MXS_VOLTAGE_HIGH>;
  117. fsl,pull-up = <MXS_PULL_ENABLE>;
  118. };
  119. rotary_btn_pins_cfa10049: rotary-btn-10049@0 {
  120. reg = <0>;
  121. fsl,pinmux-ids = <
  122. MX28_PAD_SAIF1_SDATA0__GPIO_3_26
  123. >;
  124. fsl,drive-strength = <MXS_DRIVE_4mA>;
  125. fsl,voltage = <MXS_VOLTAGE_HIGH>;
  126. fsl,pull-up = <MXS_PULL_ENABLE>;
  127. };
  128. spi2_pins_cfa10049: spi2-cfa10049@0 {
  129. reg = <0>;
  130. fsl,pinmux-ids = <
  131. MX28_PAD_SSP2_SCK__GPIO_2_16
  132. MX28_PAD_SSP2_MOSI__GPIO_2_17
  133. MX28_PAD_SSP2_MISO__GPIO_2_18
  134. MX28_PAD_AUART1_TX__GPIO_3_5
  135. >;
  136. fsl,drive-strength = <MXS_DRIVE_8mA>;
  137. fsl,voltage = <MXS_VOLTAGE_HIGH>;
  138. fsl,pull-up = <MXS_PULL_ENABLE>;
  139. };
  140. spi3_pins_cfa10049: spi3-cfa10049@0 {
  141. reg = <0>;
  142. fsl,pinmux-ids = <
  143. MX28_PAD_GPMI_RDN__GPIO_0_24
  144. MX28_PAD_GPMI_RESETN__GPIO_0_28
  145. MX28_PAD_GPMI_CE1N__GPIO_0_17
  146. MX28_PAD_GPMI_ALE__GPIO_0_26
  147. MX28_PAD_GPMI_CLE__GPIO_0_27
  148. >;
  149. fsl,drive-strength = <MXS_DRIVE_8mA>;
  150. fsl,voltage = <MXS_VOLTAGE_HIGH>;
  151. fsl,pull-up = <MXS_PULL_ENABLE>;
  152. };
  153. lcdif_18bit_pins_cfa10049: lcdif-18bit@0 {
  154. reg = <0>;
  155. fsl,pinmux-ids = <
  156. MX28_PAD_LCD_D00__LCD_D0
  157. MX28_PAD_LCD_D01__LCD_D1
  158. MX28_PAD_LCD_D02__LCD_D2
  159. MX28_PAD_LCD_D03__LCD_D3
  160. MX28_PAD_LCD_D04__LCD_D4
  161. MX28_PAD_LCD_D05__LCD_D5
  162. MX28_PAD_LCD_D06__LCD_D6
  163. MX28_PAD_LCD_D07__LCD_D7
  164. MX28_PAD_LCD_D08__LCD_D8
  165. MX28_PAD_LCD_D09__LCD_D9
  166. MX28_PAD_LCD_D10__LCD_D10
  167. MX28_PAD_LCD_D11__LCD_D11
  168. MX28_PAD_LCD_D12__LCD_D12
  169. MX28_PAD_LCD_D13__LCD_D13
  170. MX28_PAD_LCD_D14__LCD_D14
  171. MX28_PAD_LCD_D15__LCD_D15
  172. MX28_PAD_LCD_D16__LCD_D16
  173. MX28_PAD_LCD_D17__LCD_D17
  174. >;
  175. fsl,drive-strength = <MXS_DRIVE_4mA>;
  176. fsl,voltage = <MXS_VOLTAGE_HIGH>;
  177. fsl,pull-up = <MXS_PULL_DISABLE>;
  178. };
  179. lcdif_pins_cfa10049: lcdif-evk@0 {
  180. reg = <0>;
  181. fsl,pinmux-ids = <
  182. MX28_PAD_LCD_RD_E__LCD_VSYNC
  183. MX28_PAD_LCD_WR_RWN__LCD_HSYNC
  184. MX28_PAD_LCD_RS__LCD_DOTCLK
  185. MX28_PAD_LCD_CS__LCD_ENABLE
  186. >;
  187. fsl,drive-strength = <MXS_DRIVE_4mA>;
  188. fsl,voltage = <MXS_VOLTAGE_HIGH>;
  189. fsl,pull-up = <MXS_PULL_DISABLE>;
  190. };
  191. lcdif_pins_cfa10049_pullup: lcdif-10049-pullup@0 {
  192. reg = <0>;
  193. fsl,pinmux-ids = <
  194. MX28_PAD_LCD_RESET__GPIO_3_30
  195. >;
  196. fsl,drive-strength = <MXS_DRIVE_4mA>;
  197. fsl,voltage = <MXS_VOLTAGE_HIGH>;
  198. fsl,pull-up = <MXS_PULL_ENABLE>;
  199. };
  200. w1_gpio_pins: w1-gpio@0 {
  201. reg = <0>;
  202. fsl,pinmux-ids = <
  203. MX28_PAD_LCD_D21__GPIO_1_21
  204. >;
  205. fsl,drive-strength = <MXS_DRIVE_8mA>;
  206. fsl,voltage = <MXS_VOLTAGE_HIGH>;
  207. fsl,pull-up = <MXS_PULL_DISABLE>; /* 0 will enable the keeper */
  208. };
  209. };
  210. lcdif@80030000 {
  211. pinctrl-names = "default";
  212. pinctrl-0 = <&lcdif_18bit_pins_cfa10049
  213. &lcdif_pins_cfa10049
  214. &lcdif_pins_cfa10049_pullup>;
  215. display = <&display0>;
  216. status = "okay";
  217. display0: display0 {
  218. bits-per-pixel = <32>;
  219. bus-width = <18>;
  220. display-timings {
  221. native-mode = <&timing0>;
  222. timing0: timing0 {
  223. clock-frequency = <9216000>;
  224. hactive = <320>;
  225. vactive = <480>;
  226. hback-porch = <2>;
  227. hfront-porch = <2>;
  228. vback-porch = <2>;
  229. vfront-porch = <2>;
  230. hsync-len = <15>;
  231. vsync-len = <15>;
  232. hsync-active = <0>;
  233. vsync-active = <0>;
  234. de-active = <1>;
  235. pixelclk-active = <1>;
  236. };
  237. };
  238. };
  239. };
  240. };
  241. apbx@80040000 {
  242. pwm: pwm@80064000 {
  243. pinctrl-names = "default";
  244. pinctrl-0 = <&pwm3_pins_b>;
  245. status = "okay";
  246. };
  247. i2c1: i2c@8005a000 {
  248. pinctrl-names = "default";
  249. pinctrl-0 = <&i2c1_pins_a>;
  250. status = "okay";
  251. };
  252. usbphy1: usbphy@8007e000 {
  253. status = "okay";
  254. };
  255. lradc@80050000 {
  256. status = "okay";
  257. fsl,lradc-touchscreen-wires = <4>;
  258. };
  259. };
  260. };
  261. ahb@80080000 {
  262. usb1: usb@80090000 {
  263. vbus-supply = <&reg_usb1_vbus>;
  264. pinctrl-0 = <&usb1_pins_a>;
  265. pinctrl-names = "default";
  266. status = "okay";
  267. };
  268. };
  269. regulators {
  270. compatible = "simple-bus";
  271. #address-cells = <1>;
  272. #size-cells = <0>;
  273. reg_usb1_vbus: regulator@0 {
  274. compatible = "regulator-fixed";
  275. reg = <0>;
  276. pinctrl-names = "default";
  277. pinctrl-0 = <&usb_pins_cfa10049>;
  278. regulator-name = "usb1_vbus";
  279. regulator-min-microvolt = <5000000>;
  280. regulator-max-microvolt = <5000000>;
  281. gpio = <&gpio0 7 1>;
  282. };
  283. };
  284. ahb@80080000 {
  285. mac0: ethernet@800f0000 {
  286. phy-mode = "rmii";
  287. pinctrl-names = "default";
  288. pinctrl-0 = <&mac0_pins_a
  289. &mac0_pins_cfa10049>;
  290. phy-reset-gpios = <&gpio2 21 GPIO_ACTIVE_LOW>;
  291. phy-reset-duration = <100>;
  292. status = "okay";
  293. };
  294. };
  295. spi-2 {
  296. compatible = "spi-gpio";
  297. pinctrl-names = "default";
  298. pinctrl-0 = <&spi2_pins_cfa10049>;
  299. status = "okay";
  300. gpio-sck = <&gpio2 16 0>;
  301. gpio-mosi = <&gpio2 17 0>;
  302. gpio-miso = <&gpio2 18 0>;
  303. cs-gpios = <&gpio3 5 0>;
  304. num-chipselects = <1>;
  305. #address-cells = <1>;
  306. #size-cells = <0>;
  307. hx8357: hx8357@0 {
  308. compatible = "himax,hx8357b", "himax,hx8357";
  309. reg = <0>;
  310. spi-max-frequency = <100000>;
  311. spi-cpol;
  312. spi-cpha;
  313. gpios-reset = <&gpio3 30 0>;
  314. im-gpios = <&gpio5 4 0 &gpio5 5 0 &gpio5 6 0>;
  315. };
  316. };
  317. spi-3 {
  318. compatible = "spi-gpio";
  319. pinctrl-names = "default";
  320. pinctrl-0 = <&spi3_pins_cfa10049>;
  321. status = "okay";
  322. gpio-sck = <&gpio0 24 0>;
  323. gpio-mosi = <&gpio0 28 0>;
  324. cs-gpios = <&gpio0 17 0 &gpio0 26 0 &gpio0 27 0>;
  325. num-chipselects = <3>;
  326. #address-cells = <1>;
  327. #size-cells = <0>;
  328. gpio5: gpio5@0 {
  329. compatible = "fairchild,74hc595";
  330. gpio-controller;
  331. #gpio-cells = <2>;
  332. reg = <0>;
  333. registers-number = <2>;
  334. spi-max-frequency = <100000>;
  335. };
  336. gpio6: gpio6@1 {
  337. compatible = "fairchild,74hc595";
  338. gpio-controller;
  339. #gpio-cells = <2>;
  340. reg = <1>;
  341. registers-number = <4>;
  342. spi-max-frequency = <100000>;
  343. };
  344. dac0: dh2228@2 {
  345. compatible = "rohm,dh2228fv";
  346. reg = <2>;
  347. spi-max-frequency = <100000>;
  348. };
  349. };
  350. gpio-keys {
  351. compatible = "gpio-keys";
  352. pinctrl-names = "default";
  353. pinctrl-0 = <&rotary_btn_pins_cfa10049>;
  354. rotary-button {
  355. label = "rotary_button";
  356. gpios = <&gpio3 26 1>;
  357. debounce-interval = <10>;
  358. linux,code = <28>;
  359. };
  360. };
  361. rotary {
  362. compatible = "rotary-encoder";
  363. pinctrl-names = "default";
  364. pinctrl-0 = <&rotary_pins_cfa10049>;
  365. gpios = <&gpio3 24 1>, <&gpio3 25 1>;
  366. linux,axis = <1>; /* REL_Y */
  367. rotary-encoder,relative-axis;
  368. };
  369. backlight {
  370. compatible = "pwm-backlight";
  371. pwms = <&pwm 3 5000000>;
  372. brightness-levels = <0 4 8 16 32 64 128 255>;
  373. default-brightness-level = <6>;
  374. };
  375. onewire {
  376. compatible = "w1-gpio";
  377. pinctrl-names = "default";
  378. pinctrl-0 = <&w1_gpio_pins>;
  379. status = "okay";
  380. gpios = <&gpio1 21 0>;
  381. };
  382. };