// SPDX-License-Identifier: GPL-2.0 /dts-v1/; /include/ "skeleton.dtsi" #include "ark1668ed.dtsi" #include "ark1668ed-pinctrl.dtsi" / { i2c-gpio-0 { #address-cells = <1>; #size-cells = <0>; compatible = "i2c-gpio"; gpios = <&gportc 13 0 /* SDA */ &gportc 12 0 /* SCL */ >; i2c-gpio,delay-us = <2>; /* clk freq = 500/delay KHz */ i2c-gpio,scl-output-only; //i2c-gpio,sda-open-drain; //i2c-gpio,scl-open-drain; //status = "disabled"; }; i2c-gpio-1 { #address-cells = <1>; #size-cells = <0>; compatible = "i2c-gpio"; gpios = <&gportd 20 0 /* SDA */ &gportd 19 0 /* SCL */ >; i2c-gpio,delay-us = <2>; /* clk freq = 500/delay KHz */ i2c-gpio,scl-output-only; //i2c-gpio,sda-open-drain; //i2c-gpio,scl-open-drain; //status = "disabled"; }; i2c-gpio-2 { #address-cells = <1>; #size-cells = <0>; compatible = "i2c-gpio"; gpios = <&gportf 31 0 /* SDA */ &gportf 30 0 /* SCL */ >; i2c-gpio,delay-us = <5>; /* clk freq = 100/delay KHz */ i2c-gpio,scl-output-only; i2c-gpio,sda-open-drain; i2c-gpio,scl-open-drain; //pinctrl-names = "default"; //pinctrl-0 = <&i2c_gpio_pins>; ark_codec: ark-codec@74 { compatible = "arkmicro,ark-audio-codec"; reg = <0x74>;/* i2c address(7 bits) */ #sound-dai-cells = <0>; }; }; i2c-gpio-3 { #address-cells = <1>; #size-cells = <0>; compatible = "i2c-gpio"; gpios = <&gportd 27 0 /* SDA */ &gportd 28 0 /* SCL */ >; i2c-gpio,delay-us = <5>; /* clk freq = 500/delay KHz */ i2c-gpio,scl-output-only; //i2c-gpio,sda-open-drain; //i2c-gpio,scl-open-drain; codec_ak7604: codec_ak7604@1c { status = "okay"; compatible = "akm,ak7604"; reg = <0x1c>;/* i2c address(7 bits) */ pinctrl-names = "default"; ak7604,pdn-gpio = <&gportd 29 GPIO_ACTIVE_HIGH>; #sound-dai-cells = <1>; }; ak4436_codec: ak4436@13 { compatible = "asahi-kasei,ak4436"; reg = <0x13>;/* i2c address(7 bits) */ pinctrl-names = "default"; #sound-dai-cells = <0>; //AVDD-supply = <&vdd_3v3_audio>; //DVDD-supply = <&vdd_1v8>; }; es7210_codec: es7210@40 { compatible = "arkmicro,es7210"; reg = <0x40>;/* i2c address(7 bits) */ pinctrl-names = "default"; #sound-dai-cells = <0>; }; }; //ark-audio sound0 { compatible = "simple-audio-card"; simple-audio-card,name = "ark1668ed devb audio"; simple-audio-card,format = "i2s"; simple-audio-card,dai-link@0 { /* ARK - audio - codec */ format = "i2s"; bitclock-master = <&cpu_master>; frame-master = <&cpu_master>; cpu_master: cpu { sound-dai = <&i2s_audio>;//i2s_audio }; codec_master: codec { sound-dai = <&ark_codec>;//External(ADC): ; Internal:ark_codec }; }; }; //i2s0 sound1 { compatible = "simple-audio-card"; simple-audio-card,name = "SoundCard1"; simple-audio-card,format = "i2s"; // simple-audio-card,dai-link@0 { /* ARK - audio - codec */ // format = "i2s"; // bitclock-master = <&playback_cpu>; // frame-master = <&playback_cpu>; // playback_cpu: cpu { // sound-dai = <&i2s0_adac>; // }; // playback_codec: codec { // sound-dai = <&ak4436_codec>;//External(ADC): ; Internal:ark_codec // }; // }; simple-audio-card,dai-link@0 { /* ARK - audio - codec */ format = "i2s"; bitclock-master = <&codec_master2>; frame-master = <&codec_master2>; cpu_master2: cpu { sound-dai = <&i2s0_adac>; }; codec_master2: codec { sound-dai = <&codec_ak7604 0>;//External(ADC): ; Internal:ark_codec }; }; }; //i2s1 sound2 { compatible = "simple-audio-card"; simple-audio-card,name = "SoundCard2"; simple-audio-card,format = "i2s"; simple-audio-card,dai-link@0 { /* ARK - audio - codec */ format = "i2s"; bitclock-master = <&capture_cpu>; frame-master = <&capture_cpu>; capture_cpu: cpu { sound-dai = <&i2s1_adac>; }; capture_codec: codec { sound-dai = <&es7210_codec>;//External(ADC): ; Internal:ark_codec }; }; // simple-audio-card,dai-link@0 { /* ARK - audio - codec */ // format = "i2s"; // bitclock-master = <&codec_master2>; // frame-master = <&codec_master2>; // cpu_master2: cpu { // sound-dai = <&i2s1_adac>; // }; // codec_master2: codec { // sound-dai = <&codec_ak7604 0>;//External(ADC): ; Internal:ark_codec // }; // }; }; carback: carback@0 { compatible = "arkmicro,ark1668ed-carback"; interrupt-parent = <&gportb>; interrupts = <6 IRQ_TYPE_EDGE_BOTH>; detect-gpios = <&gportb 6 GPIO_ACTIVE_HIGH>; debounce-detect = <0>; reg = <0x7ea00000 0x400000>; }; vind0:vind@0 { compatible = "arkmicro,ark-vin-media", "simple-bus"; #address-cells = <1>; #size-cells = <1>; ranges; reg = <0x50000000 0x1000>; multi_channel_input = <1>; select_channel = <0>; device_id = <0>; status = "okay"; sensor0:sensor@0 { device_type = "sensor0"; compatible = "arkmicro,ark-sensor"; sensor0_mname = "rn6854m_mipi"; sensor0_twi_cci_id = <1>; /*i2c slect*/ sensor0_twi_addr = <0x58>; /*i2c addr*/ sensor0_twi_cci_spi = <0>; /*init mode*/ sensor0_reset = <&gportb 17 0>; /*reset gpio set*/ device_id = <0>; status = "okay"; }; sensor1:sensor@1 { device_type = "sensor1"; compatible = "arkmicro,ark-sensor"; sensor1_mname = "ark7116_bt656"; sensor1_twi_cci_id = <2>; /*i2c slect*/ sensor1_twi_addr = <0xb2>; /*i2c addr*/ sensor1_twi_cci_spi = <0>; /*init mode*/ sensor1_reset = <&gportd 18 0>; /*reset gpio set*/ device_id = <1>; status = "okay"; }; sensor2:sensor@2 { device_type = "sensor2"; compatible = "arkmicro,ark-sensor"; sensor2_mname = "tp2815_mipi"; sensor2_twi_cci_id = <1>; /*i2c slect*/ sensor2_twi_addr = <0x88>; /*i2c addr*/ sensor2_twi_cci_spi = <0>; /*init mode*/ sensor2_reset = <&gportd 18 0>; /*reset gpio set*/ device_id = <2>; status = "okay"; }; csi0:csi@0 { device_type = "csi0"; compatible = "arkmicro,ark-csi"; interrupts = ; reg = <0x51a00000 0x200>; device_id = <0>; csi0_use = <1>; status = "okay"; }; csi1:csi@1 { device_type = "csi1"; compatible = "arkmicro,ark-csi"; reg = <0x51a01000 0x200>; device_id = <1>; csi1_use = <0>; status = "okay"; }; csi2:csi@2 { device_type = "csi2"; compatible = "arkmicro,ark-csi"; reg = <0x51a02000 0x200>; device_id = <2>; csi2_use = <0>; status = "okay"; }; csi3:csi@3 { device_type = "csi3"; compatible = "arkmicro,ark-csi"; reg = <0x51a03000 0x200>; device_id = <3>; csi3_use = <0>; status = "okay"; }; vinc0:vinc@0 { device_type = "vinc0"; compatible = "arkmicro,ark-vin-core"; interrupts = , ; reg = <0x40800000 0x100 0x41100000 0x1000>; vinc0_csi_sel = <0>; #if 1 vinc0_sensor_sel = <0>; vinc0_pad_sel = <0>; #else vinc0_sensor_sel = <1>; vinc0_pad_sel = <1>; /**use sensor1 ark7116 deinterlace**/ #endif vinc0_use_deinterlace = <1>; vinc0_use_carback = <1>; device_id = <0>; status = "okay"; }; vinc1:vinc@1 { device_type = "vinc1"; compatible = "arkmicro,ark-vin-core"; interrupts = , ; reg = <0x40800400 0x100 0x41100000 0x1000>; vinc1_csi_sel = <1>; vinc1_sensor_sel = <0>; vinc1_pad_sel = <0>; vinc1_use_deinterlace = <0>; vinc1_use_carback = <1>; device_id = <1>; status = "okay"; }; vinc2:vinc@2 { device_type = "vinc2"; compatible = "arkmicro,ark-vin-core"; interrupts = , ; reg = <0x40800800 0x100 0x41100000 0x1000>; vinc2_csi_sel = <2>; vinc2_sensor_sel = <0>; vinc2_pad_sel = <0>; vinc2_use_deinterlace = <0>; vinc2_use_carback = <1>; device_id = <2>; status = "okay"; }; vinc3:vinc@3 { device_type = "vinc3"; compatible = "arkmicro,ark-vin-core"; interrupts = , ; reg = <0x40800c00 0x100 0x41100000 0x1000>; vinc3_csi_sel = <3>; vinc3_sensor_sel = <0>; vinc3_pad_sel = <0>; vinc3_use_deinterlace = <0>; vinc3_use_carback = <1>; device_id = <3>; status = "okay"; }; }; }; &lcdc { //display = <&display0>; //ttl display = <&display1>; //lvds //display = <&display2>; //mipi pinctrl-names = "default"; pinctrl-0 = <&pinctrl_lcd_rgb888>; power-control-gpio = <&gporte 16 GPIO_ACTIVE_HIGH>; lcdcon-backlight; pwms = <&pwm0 4 50000 0>; pwm-names = "backlight"; backlight-value = <20>; backlight-delay = <200>; display0: display@0 { interface-type = "TTL"; bits-per-pixel = <32>; lcd-wiring-mode = "BGR"; display-timings { native-mode = <&timing0>; timing0: timing0 { clock-frequency = <36000000>; hactive = <1024>; vactive = <600>; hback-porch = <64>; hfront-porch = <21>; vback-porch = <16>; vfront-porch = <24>; //hsync-len = <21>; hsync-len = <96>; //vsync-len = <80>; vsync-len = <9>; hsync-active = <1>; vsync-active = <1>; de-active = <0>; pixelclk-active = <0>; }; }; }; display1: display@1 { interface-type = "DLVDS"; lvds-con = <0xc7470008>; lvds-con2 = <0x00397ca4>; bits-per-pixel = <32>; fb-buffer-nums = <3>; lcd-wiring-mode = "RGB"; display-timings { native-mode = <&timing0>; timing1: timing1 { clock-frequency = <120000000>; hactive = <1920>; vactive = <720>; hback-porch = <300>; hfront-porch = <240>; vback-porch = <80>; vfront-porch = <80>; hsync-len = <36>; vsync-len = <18>; hsync-active = <1>; vsync-active = <1>; de-active = <0>; pixelclk-active = <0>; }; }; }; display2: display@2 { interface-type = "MIPI"; bits-per-pixel = <32>; fb-buffer-nums = <3>; lcd-wiring-mode = "RGB"; display-timings { native-mode = <&timing2>; timing2: timing2 { clock-frequency = <50000000>; hactive = <480>; vactive = <1280>; hback-porch = <16>; hfront-porch = <36>; vback-porch = <6>; vfront-porch = <6>; hsync-len = <26>; vsync-len = <16>; hsync-active = <1>; vsync-active = <1>; de-active = <0>; pixelclk-active = <0>; }; }; }; }; &i2c0 { gt911: touchscreen@5d { compatible = "goodix,gt911"; reg = <0x5d>; interrupt-parent = <&gportb>; interrupts = <18 IRQ_TYPE_EDGE_FALLING>; irq-gpios = <&gportb 18 GPIO_ACTIVE_HIGH>; reset-gpios = <&gportd 14 GPIO_ACTIVE_HIGH>; //touchscreen-inverted-x; }; }; &usb0 { status = "okay"; reset-gpio = <&gporte 12 GPIO_ACTIVE_LOW>; }; &usb1 { status = "okay"; reset-gpio = <&gporte 13 GPIO_ACTIVE_LOW>; };