ark1668ed_devb_spinand.dts 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471
  1. // SPDX-License-Identifier: GPL-2.0
  2. /dts-v1/;
  3. /include/ "skeleton.dtsi"
  4. #include "ark1668ed.dtsi"
  5. #include "ark1668ed-pinctrl.dtsi"
  6. / {
  7. i2c-gpio-0 {
  8. #address-cells = <1>;
  9. #size-cells = <0>;
  10. compatible = "i2c-gpio";
  11. gpios = <&gportc 13 0 /* SDA */
  12. &gportc 12 0>; /* SCL */
  13. i2c-gpio,delay-us = <2>; /* clk freq = 500/delay KHz */
  14. i2c-gpio,scl-output-only;
  15. //i2c-gpio,sda-open-drain;
  16. //i2c-gpio,scl-open-drain;
  17. //status = "disabled";
  18. };
  19. i2c-gpio-1 {
  20. #address-cells = <1>;
  21. #size-cells = <0>;
  22. compatible = "i2c-gpio";
  23. gpios = <&gportd 20 0 /* SDA */
  24. &gportd 19 0>; /* SCL */
  25. i2c-gpio,delay-us = <2>; /* clk freq = 500/delay KHz */
  26. i2c-gpio,scl-output-only;
  27. //i2c-gpio,sda-open-drain;
  28. //i2c-gpio,scl-open-drain;
  29. //status = "disabled";
  30. };
  31. i2c-gpio-2 {
  32. #address-cells = <1>;
  33. #size-cells = <0>;
  34. compatible = "i2c-gpio";
  35. gpios = <&gportf 31 0 /* SDA */
  36. &gportf 30 0>; /* SCL */
  37. i2c-gpio,delay-us = <5>; /* clk freq = 100/delay KHz */
  38. i2c-gpio,scl-output-only;
  39. i2c-gpio,sda-open-drain;
  40. i2c-gpio,scl-open-drain;
  41. //pinctrl-names = "default";
  42. //pinctrl-0 = <&i2c_gpio_pins>;
  43. ark_codec: ark-codec@74 {
  44. compatible = "arkmicro,ark-audio-codec";
  45. reg = <0x74>;/* i2c address(7 bits) */
  46. #sound-dai-cells = <0>;
  47. };
  48. };
  49. i2c-gpio-3 {
  50. #address-cells = <1>;
  51. #size-cells = <0>;
  52. compatible = "i2c-gpio";
  53. gpios = <&gportd 27 0 /* SDA */
  54. &gportd 28 0>; /* SCL */
  55. i2c-gpio,delay-us = <5>; /* clk freq = 500/delay KHz */
  56. i2c-gpio,scl-output-only;
  57. //i2c-gpio,sda-open-drain;
  58. //i2c-gpio,scl-open-drain;
  59. codec_ak7604: codec_ak7604@1c {
  60. status = "okay";
  61. compatible = "akm,ak7604";
  62. reg = <0x1c>;/* i2c address(7 bits) */
  63. pinctrl-names = "default";
  64. ak7604,pdn-gpio = <&gportd 29 GPIO_ACTIVE_HIGH>;
  65. #sound-dai-cells = <1>;
  66. };
  67. ak4436_codec: ak4436@13 {
  68. compatible = "asahi-kasei,ak4436";
  69. reg = <0x13>;/* i2c address(7 bits) */
  70. pinctrl-names = "default";
  71. #sound-dai-cells = <0>;
  72. //AVDD-supply = <&vdd_3v3_audio>;
  73. //DVDD-supply = <&vdd_1v8>;
  74. };
  75. es7210_codec: es7210@40 {
  76. compatible = "arkmicro,es7210";
  77. reg = <0x40>;/* i2c address(7 bits) */
  78. pinctrl-names = "default";
  79. #sound-dai-cells = <0>;
  80. };
  81. };
  82. //ark-audio
  83. sound0 {
  84. compatible = "simple-audio-card";
  85. simple-audio-card,name = "ark1668ed devb audio";
  86. simple-audio-card,format = "i2s";
  87. simple-audio-card,dai-link@0 { /* ARK - audio - codec */
  88. format = "i2s";
  89. bitclock-master = <&cpu_master>;
  90. frame-master = <&cpu_master>;
  91. cpu_master: cpu {
  92. sound-dai = <&i2s_audio>;//i2s_audio
  93. };
  94. codec_master: codec {
  95. sound-dai = <&ark_codec>;//External(ADC): ; Internal:ark_codec
  96. };
  97. };
  98. };
  99. //i2s0
  100. sound1 {
  101. compatible = "simple-audio-card";
  102. simple-audio-card,name = "SoundCard1";
  103. simple-audio-card,format = "i2s";
  104. // simple-audio-card,dai-link@0 { /* ARK - audio - codec */
  105. // format = "i2s";
  106. // bitclock-master = <&playback_cpu>;
  107. // frame-master = <&playback_cpu>;
  108. // playback_cpu: cpu {
  109. // sound-dai = <&i2s0_adac>;
  110. // };
  111. // playback_codec: codec {
  112. // sound-dai = <&ak4436_codec>;//External(ADC): ; Internal:ark_codec
  113. // };
  114. // };
  115. simple-audio-card,dai-link@0 { /* ARK - audio - codec */
  116. format = "i2s";
  117. bitclock-master = <&codec_master2>;
  118. frame-master = <&codec_master2>;
  119. cpu_master2: cpu {
  120. sound-dai = <&i2s0_adac>;
  121. };
  122. codec_master2: codec {
  123. sound-dai = <&codec_ak7604 0>;//External(ADC): ; Internal:ark_codec
  124. };
  125. };
  126. };
  127. //i2s1
  128. sound2 {
  129. compatible = "simple-audio-card";
  130. simple-audio-card,name = "SoundCard2";
  131. simple-audio-card,format = "i2s";
  132. simple-audio-card,dai-link@0 { /* ARK - audio - codec */
  133. format = "i2s";
  134. bitclock-master = <&capture_cpu>;
  135. frame-master = <&capture_cpu>;
  136. capture_cpu: cpu {
  137. sound-dai = <&i2s1_adac>;
  138. };
  139. capture_codec: codec {
  140. sound-dai = <&es7210_codec>;//External(ADC): ; Internal:ark_codec
  141. };
  142. };
  143. // simple-audio-card,dai-link@0 { /* ARK - audio - codec */
  144. // format = "i2s";
  145. // bitclock-master = <&codec_master2>;
  146. // frame-master = <&codec_master2>;
  147. // cpu_master2: cpu {
  148. // sound-dai = <&i2s1_adac>;
  149. // };
  150. // codec_master2: codec {
  151. // sound-dai = <&codec_ak7604 0>;//External(ADC): ; Internal:ark_codec
  152. // };
  153. // };
  154. };
  155. carback: carback@0 {
  156. compatible = "arkmicro,ark1668ed-carback";
  157. interrupt-parent = <&gportb>;
  158. interrupts = <6 IRQ_TYPE_EDGE_BOTH>;
  159. detect-gpios = <&gportb 6 GPIO_ACTIVE_HIGH>;
  160. debounce-detect = <0>;
  161. reg = <0x7C800000 0x500000>;
  162. };
  163. vind0:vind@0 {
  164. compatible = "arkmicro,ark-vin-media", "simple-bus";
  165. #address-cells = <1>;
  166. #size-cells = <1>;
  167. ranges;
  168. reg = <0x50000000 0x1000>;
  169. multi_channel_input = <1>;
  170. select_channel = <0>;
  171. device_id = <0>;
  172. status = "okay";
  173. sensor0:sensor@0 {
  174. device_type = "sensor0";
  175. compatible = "arkmicro,ark-sensor";
  176. sensor0_mname = "rn6854m_mipi";
  177. sensor0_twi_cci_id = <1>; /*i2c slect*/
  178. sensor0_twi_addr = <0x58>; /*i2c addr*/
  179. sensor0_twi_cci_spi = <0>; /*init mode*/
  180. sensor0_reset = <&gportb 17 0>; /*reset gpio set*/
  181. device_id = <0>;
  182. status = "okay";
  183. };
  184. sensor1:sensor@1 {
  185. device_type = "sensor1";
  186. compatible = "arkmicro,ark-sensor";
  187. sensor1_mname = "ark7116_bt656";
  188. sensor1_twi_cci_id = <2>; /*i2c slect*/
  189. sensor1_twi_addr = <0xb2>; /*i2c addr*/
  190. sensor1_twi_cci_spi = <0>; /*init mode*/
  191. sensor1_reset = <&gportd 18 0>; /*reset gpio set*/
  192. device_id = <1>;
  193. status = "okay";
  194. };
  195. sensor2:sensor@2 {
  196. device_type = "sensor2";
  197. compatible = "arkmicro,ark-sensor";
  198. sensor2_mname = "tp2815_mipi";
  199. sensor2_twi_cci_id = <1>; /*i2c slect*/
  200. sensor2_twi_addr = <0x88>; /*i2c addr*/
  201. sensor2_twi_cci_spi = <0>; /*init mode*/
  202. sensor2_reset = <&gportd 18 0>; /*reset gpio set*/
  203. device_id = <2>;
  204. status = "okay";
  205. };
  206. csi0:csi@0 {
  207. device_type = "csi0";
  208. compatible = "arkmicro,ark-csi";
  209. interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
  210. reg = <0x51a00000 0x200>;
  211. clocks = <&csi0_pixclk>;
  212. clock-names = "vin_csi_clk";
  213. device_id = <0>;
  214. csi0_use = <1>;
  215. status = "okay";
  216. };
  217. csi1:csi@1 {
  218. device_type = "csi1";
  219. compatible = "arkmicro,ark-csi";
  220. reg = <0x51a01000 0x200>;
  221. clocks = <&csi1_pixclk>;
  222. clock-names = "vin_csi_clk";
  223. device_id = <1>;
  224. csi1_use = <0>;
  225. status = "okay";
  226. };
  227. csi2:csi@2 {
  228. device_type = "csi2";
  229. compatible = "arkmicro,ark-csi";
  230. reg = <0x51a02000 0x200>;
  231. clocks = <&csi2_pixclk>;
  232. clock-names = "vin_csi_clk";
  233. device_id = <2>;
  234. csi2_use = <0>;
  235. status = "okay";
  236. };
  237. csi3:csi@3 {
  238. device_type = "csi3";
  239. compatible = "arkmicro,ark-csi";
  240. reg = <0x51a03000 0x200>;
  241. clocks = <&csi3_pixclk>;
  242. clock-names = "vin_csi_clk";
  243. device_id = <3>;
  244. csi3_use = <0>;
  245. status = "okay";
  246. };
  247. vinc0:vinc@0 {
  248. device_type = "vinc0";
  249. compatible = "arkmicro,ark-vin-core";
  250. interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
  251. reg = <0x40800000 0x100
  252. 0x41100000 0x1000>;
  253. clocks = <&itu_scale_clk>;
  254. clock-names = "vinc_scale_clk";
  255. clock-frequency = <250000000>;
  256. vinc0_csi_sel = <0>;
  257. #if 1
  258. vinc0_sensor_sel = <0>;
  259. vinc0_pad_sel = <0>;
  260. #else
  261. vinc0_sensor_sel = <1>;
  262. vinc0_pad_sel = <1>; /**use sensor1 ark7116 deinterlace**/
  263. #endif
  264. vinc0_use_deinterlace = <1>;
  265. vinc0_use_carback = <1>;
  266. device_id = <0>;
  267. status = "okay";
  268. };
  269. vinc1:vinc@1 {
  270. device_type = "vinc1";
  271. compatible = "arkmicro,ark-vin-core";
  272. interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
  273. reg = <0x40800400 0x100
  274. 0x41100000 0x1000>;
  275. clocks = <&itu_scale_clk>;
  276. clock-names = "vinc_scale_clk";
  277. clock-frequency = <250000000>;
  278. vinc1_csi_sel = <1>;
  279. vinc1_sensor_sel = <0>;
  280. vinc1_pad_sel = <0>;
  281. vinc1_use_deinterlace = <0>;
  282. vinc1_use_carback = <1>;
  283. device_id = <1>;
  284. status = "okay";
  285. };
  286. vinc2:vinc@2 {
  287. device_type = "vinc2";
  288. compatible = "arkmicro,ark-vin-core";
  289. interrupts = <GIC_SPI 49 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
  290. reg = <0x40800800 0x100
  291. 0x41100000 0x1000>;
  292. clocks = <&itu_scale_clk>;
  293. clock-names = "vinc_scale_clk";
  294. clock-frequency = <250000000>;
  295. vinc2_csi_sel = <2>;
  296. vinc2_sensor_sel = <0>;
  297. vinc2_pad_sel = <0>;
  298. vinc2_use_deinterlace = <0>;
  299. vinc2_use_carback = <1>;
  300. device_id = <2>;
  301. status = "okay";
  302. };
  303. vinc3:vinc@3 {
  304. device_type = "vinc3";
  305. compatible = "arkmicro,ark-vin-core";
  306. interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 47 IRQ_TYPE_LEVEL_HIGH>;
  307. reg = <0x40800c00 0x100
  308. 0x41100000 0x1000>;
  309. clocks = <&itu_scale_clk>;
  310. clock-names = "vinc_scale_clk";
  311. clock-frequency = <250000000>;
  312. vinc3_csi_sel = <3>;
  313. vinc3_sensor_sel = <0>;
  314. vinc3_pad_sel = <0>;
  315. vinc3_use_deinterlace = <0>;
  316. vinc3_use_carback = <1>;
  317. device_id = <3>;
  318. status = "okay";
  319. };
  320. };
  321. };
  322. &lcdc {
  323. //display = <&display0>; //ttl
  324. display = <&display1>; //lvds
  325. //display = <&display2>; //mipi
  326. pinctrl-names = "default";
  327. pinctrl-0 = <&pinctrl_lcd_rgb888>;
  328. power-control-gpio = <&gporte 16 GPIO_ACTIVE_HIGH>;
  329. lcdcon-backlight;
  330. pwms = <&pwm0 4 50000 0>;
  331. pwm-names = "backlight";
  332. backlight-value = <20>;
  333. backlight-delay = <200>;
  334. display0: display@0 {
  335. interface-type = "TTL";
  336. bits-per-pixel = <32>;
  337. lcd-wiring-mode = "BGR";
  338. display-timings {
  339. native-mode = <&timing0>;
  340. timing0: timing0 {
  341. clock-frequency = <36000000>;
  342. hactive = <1024>;
  343. vactive = <600>;
  344. hback-porch = <64>;
  345. hfront-porch = <21>;
  346. vback-porch = <16>;
  347. vfront-porch = <24>;
  348. //hsync-len = <21>;
  349. hsync-len = <96>;
  350. //vsync-len = <80>;
  351. vsync-len = <9>;
  352. hsync-active = <1>;
  353. vsync-active = <1>;
  354. de-active = <0>;
  355. pixelclk-active = <0>;
  356. };
  357. };
  358. };
  359. display1: display@1 {
  360. interface-type = "DLVDS";
  361. lvds-con = <0xc7470008>;
  362. lvds-con2 = <0x00397ca4>;
  363. bits-per-pixel = <32>;
  364. fb-buffer-nums = <3>;
  365. lcd-wiring-mode = "RGB";
  366. display-timings {
  367. native-mode = <&timing1>;
  368. timing1: timing1 {
  369. clock-frequency = <120000000>;
  370. hactive = <1920>;
  371. vactive = <720>;
  372. hback-porch = <300>;
  373. hfront-porch = <240>;
  374. vback-porch = <80>;
  375. vfront-porch = <80>;
  376. hsync-len = <36>;
  377. vsync-len = <18>;
  378. hsync-active = <1>;
  379. vsync-active = <1>;
  380. de-active = <0>;
  381. pixelclk-active = <0>;
  382. };
  383. };
  384. };
  385. display2: display@2 {
  386. interface-type = "MIPI";
  387. bits-per-pixel = <32>;
  388. fb-buffer-nums = <3>;
  389. lcd-wiring-mode = "RGB";
  390. display-timings {
  391. native-mode = <&timing2>;
  392. timing2: timing2 {
  393. clock-frequency = <50000000>;
  394. hactive = <480>;
  395. vactive = <1280>;
  396. hback-porch = <16>;
  397. hfront-porch = <36>;
  398. vback-porch = <6>;
  399. vfront-porch = <6>;
  400. hsync-len = <26>;
  401. vsync-len = <16>;
  402. hsync-active = <1>;
  403. vsync-active = <1>;
  404. de-active = <0>;
  405. pixelclk-active = <0>;
  406. };
  407. };
  408. };
  409. };
  410. &i2c0 {
  411. gt911: touchscreen@5d {
  412. compatible = "goodix,gt911";
  413. reg = <0x5d>;
  414. interrupt-parent = <&gportb>;
  415. interrupts = <18 IRQ_TYPE_EDGE_FALLING>;
  416. irq-gpios = <&gportb 18 GPIO_ACTIVE_HIGH>;
  417. reset-gpios = <&gportd 14 GPIO_ACTIVE_HIGH>;
  418. //touchscreen-inverted-x;
  419. };
  420. };
  421. &usb0 {
  422. status = "okay";
  423. reset-gpio = <&gporte 12 GPIO_ACTIVE_LOW>;
  424. };
  425. &usb1 {
  426. status = "okay";
  427. reset-gpio = <&gporte 13 GPIO_ACTIVE_LOW>;
  428. };
  429. &mmc0 {
  430. status = "disabled";
  431. };
  432. &nfc {
  433. status = "disabled";
  434. };