用小智SW106开发板驱动哪吒自带的MIPI显示屏
-
-
board.dts
/* * Allwinner Technology CO., Ltd. sun50iw10p1 soc board. * * soc board support. */ /dts-v1/; #include <dt-bindings/input/input.h> #include "sun50iw10p1.dtsi" /{ model = "sun50iw10"; compatible = "allwinner,a3", "arm,sun50iw10p1"; reg_usb1_vbus: usb1-vbus { compatible = "regulator-fixed"; gpio = <&pio PI 12 1 2 0 1>; regulator-name = "usb1-vbus"; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; enable-active-high; }; reg_3v3: vdd_3v3 { compatible = "regulator-fixed"; regulator-name = "vdd_3v3"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-enable-ramp-delay = <1000>; enable-active-high; }; soc@03000000 { r_pio: pinctrl@07022000 { s_twi0_pins_a: s_twi0@0 { allwinner,pins = "PL0", "PL1"; allwinner,pname = "s_twi0_scl", "s_twi0_sda"; allwinner,function = "s_twi0"; allwinner,muxsel = <2>; allwinner,drive = <1>; allwinner,pull = <1>; }; s_twi0_pins_b: s_twi0@1 { allwinner,pins = "PL0", "PL1"; allwinner,function = "io_disabled"; allwinner,muxsel = <7>; allwinner,drive = <1>; allwinner,pull = <0>; }; s_twi1_pins_a: s_twi1@0 { allwinner,pins = "PL8", "PL9"; allwinner,pname = "s_twi1_scl", "s_twi1_sda"; allwinner,function = "s_twi1"; allwinner,muxsel = <2>; allwinner,drive = <1>; allwinner,pull = <1>; }; s_twi1_pins_b: s_twi1@1 { allwinner,pins = "PL8", "PL9"; allwinner,function = "io_disabled"; allwinner,muxsel = <7>; allwinner,drive = <1>; allwinner,pull = <0>; }; }; pio: pinctrl@0300b000 { twi0_pins_a: twi0@0 { allwinner,pins = "PD22", "PD23"; allwinner,pname = "twi0_scl", "twi0_sda"; allwinner,function = "twi0"; allwinner,muxsel = <4>; allwinner,drive = <1>; allwinner,pull = <0>; }; twi0_pins_b: twi0@1 { allwinner,pins = "PD22", "PD23"; allwinner,function = "io_disabled"; allwinner,muxsel = <7>; allwinner,drive = <1>; allwinner,pull = <0>; }; twi1_pins_a: twi1@0 { allwinner,pins = "PB4", "PB5"; allwinner,pname = "twi1_scl", "twi1_sda"; allwinner,function = "twi1"; allwinner,muxsel = <2>; allwinner,drive = <1>; allwinner,pull = <0>; }; twi1_pins_b: twi1@1 { allwinner,pins = "PB4", "PB5"; allwinner,function = "io_disabled"; allwinner,muxsel = <7>; allwinner,drive = <1>; allwinner,pull = <0>; }; twi2_pins_a: twi2@0 { allwinner,pins = "PE1", "PE2"; allwinner,pname = "twi2_scl", "twi2_sda"; allwinner,function = "twi2"; allwinner,muxsel = <2>; allwinner,drive = <1>; allwinner,pull = <0>; }; twi2_pins_b: twi2@1 { allwinner,pins = "PE1", "PE2"; allwinner,function = "io_disabled"; allwinner,muxsel = <7>; allwinner,drive = <1>; allwinner,pull = <0>; }; twi3_pins_a: twi3@0 { allwinner,pins = "PE3", "PE4"; allwinner,pname = "twi3_scl", "twi3_sda"; allwinner,function = "twi3"; allwinner,muxsel = <2>; allwinner,drive = <1>; allwinner,pull = <1>; }; twi3_pins_b: twi3@1 { allwinner,pins = "PE3", "PE4"; allwinner,function = "io_disabled"; allwinner,muxsel = <7>; allwinner,drive = <1>; allwinner,pull = <0>; }; twi5_pins_a: twi5@0 { allwinner,pins = "PI8", "PI9"; allwinner,pname = "twi5_scl", "twi5_sda"; allwinner,function = "twi5"; allwinner,muxsel = <2>; allwinner,drive = <1>; allwinner,pull = <0>; }; twi5_pins_b: twi5@1 { allwinner,pins = "PI8", "PI9"; allwinner,function = "io_disabled"; allwinner,muxsel = <7>; allwinner,drive = <1>; allwinner,pull = <0>; }; pwm0_pin_a: pwm0@0 { allwinner,pins = "PD23"; allwinner,function = "pwm0"; allwinner,muxsel = <0x02>; allwinner,drive = <0x2>; allwinner,pull = <0>; allwinner,data = <0xffffffff>; }; pwm0_pin_b: pwm0@1 { allwinner,pins = "PD23"; allwinner,function = "io_disabled"; allwinner,muxsel = <0x07>; allwinner,drive = <0x2>; allwinner,pull = <0>; allwinner,data = <0xffffffff>; }; pwm1_pin_a: pwm1@0 { allwinner,pins = "PI0"; allwinner,function = "pwm1"; allwinner,muxsel = <0x04>; allwinner,drive = <0x2>; allwinner,pull = <0>; allwinner,data = <0xffffffff>; }; pwm1_pin_b: pwm1@1 { allwinner,pins = "PI0"; allwinner,function = "io_disabled"; allwinner,muxsel = <0x07>; allwinner,drive = <0x2>; allwinner,pull = <0>; allwinner,data = <0xffffffff>; }; pwm2_pin_a: pwm2@0 { allwinner,pins = "PI1"; allwinner,function = "pwm2"; allwinner,muxsel = <0x04>; allwinner,drive = <0x2>; allwinner,pull = <0>; allwinner,data = <0xffffffff>; }; pwm2_pin_b: pwm2@1 { allwinner,pins = "PI1"; allwinner,function = "io_disabled"; allwinner,muxsel = <0x07>; allwinner,drive = <0x2>; allwinner,pull = <0>; allwinner,data = <0xffffffff>; }; pwm3_pin_a: pwm3@0 { allwinner,pins = "PD21"; allwinner,function = "pwm3"; allwinner,muxsel = <0x02>; allwinner,drive = <0x2>; allwinner,pull = <0>; allwinner,data = <0xffffffff>; }; pwm3_pin_b: pwm3@1 { allwinner,pins = "PD21"; allwinner,function = "io_disabled"; allwinner,muxsel = <0x07>; allwinner,drive = <0x2>; allwinner,pull = <0>; allwinner,data = <0xffffffff>; }; pwm7_pin_a: pwm7@0 { allwinner,pins = "PI6"; allwinner,function = "pwm7"; allwinner,muxsel = <0x04>; allwinner,drive = <0x2>; allwinner,pull = <0>; allwinner,data = <0xffffffff>; }; pwm7_pin_b: pwm7@1 { allwinner,pins = "PI6"; allwinner,function = "io_disabled"; allwinner,muxsel = <0x07>; allwinner,drive = <0x2>; allwinner,pull = <0>; allwinner,data = <0xffffffff>; }; pwm8_pin_a: pwm8@0 { allwinner,pins = "PI7"; allwinner,function = "pwm8"; allwinner,muxsel = <0x04>; allwinner,drive = <0x2>; allwinner,pull = <0>; allwinner,data = <0xffffffff>; }; pwm8_pin_b: pwm8@1 { allwinner,pins = "PI7"; allwinner,function = "io_disabled"; allwinner,muxsel = <0x07>; allwinner,drive = <0x2>; allwinner,pull = <0>; allwinner,data = <0xffffffff>; }; ledc_pins_a: ledc@0 { allwinner,pins = "PH19"; allwinner,function = "ledc"; allwinner,muxsel = <5>; }; ledc_pins_b: ledc@1 { allwinner,pins = "PH19"; allwinner,function = "io_disabled"; allwinner,muxsel = <7>; }; key_pj1: key_pj1@0 { allwinner,pins = "PJ1"; allwinner,function = "gpio_in"; allwinner,muxsel = <0x00>; allwinner,drive = <0x2>; allwinner,pull = <1>; allwinner,data = <0x1>; }; usb1_vbus_pin_a: usb1_vbus_pin@0 { allwinner,pins = "PH10"; allwinner,function = "gpio_out"; allwinner,muxsel = <0x01>; allwinner,drive = <0x2>; allwinner,pull = <0>; allwinner,data = <0x0>; }; spi0_pins_a: spi0@0 { allwinner,pins = "PC2", "PC4", "PC12", "PC15", "PC16"; allwinner,pname = "spi0_mosi", "spi0_miso", "spi0_sclk", "spi0_wp", "spi0_hold"; allwinner,function = "spi0"; allwinner,muxsel = <4>; allwinner,drive = <1>; allwinner,pull = <0>; }; spi0_pins_b: spi0@1 { allwinner,pins = "PC3", "PC7"; allwinner,pname = "spi0_cs0", "spi0_cs1"; allwinner,function = "spi0"; allwinner,muxsel = <4>; allwinner,drive = <1>; allwinner,pull = <1>; /* only CS should be pulled up */ }; spi0_pins_c: spi0@2 { allwinner,pins = "PC2", "PC3", "PC4", "PC7", "PC12", "PC15", "PC16"; allwinner,function = "io_disabled"; allwinner,muxsel = <7>; allwinner,drive = <1>; allwinner,pull = <0>; }; spi1_pins_a: spi1@0 { allwinner,pins = "PD11", "PD12", "PD13"; allwinner,pname = "spi1_sclk", "spi1_mosi", "spi1_miso"; allwinner,function = "spi1"; allwinner,muxsel = <4>; allwinner,drive = <1>; allwinner,pull = <0>; }; spi1_pins_b: spi1@1 { allwinner,pins = "PD10"; allwinner,pname = "spi1_cs0"; allwinner,function = "spi1"; allwinner,muxsel = <4>; allwinner,drive = <1>; allwinner,pull = <1>; /* only CS should be pulled up */ }; spi1_pins_c: spi1@2 { allwinner,pins = "PD10", "PD11", "PD12", "PD13"; allwinner,function = "io_disabled"; allwinner,muxsel = <7>; allwinner,drive = <1>; allwinner,pull = <0>; }; spi2_pins_a: spi2@0 { allwinner,pins = "PB1", "PB2", "PB3"; allwinner,pname = "spi2_sclk", "spi2_mosi", "spi2_miso"; allwinner,function = "spi2"; allwinner,muxsel = <3>; allwinner,drive = <1>; allwinner,pull = <0>; }; spi2_pins_b: spi2@1 { allwinner,pins = "PB0"; allwinner,pname = "spi2_cs0"; allwinner,function = "spi2"; allwinner,muxsel = <3>; allwinner,drive = <1>; allwinner,pull = <1>; /* only CS should be pulled up */ }; spi2_pins_c: spi2@2 { allwinner,pins = "PB0", "PB1", "PB2", "PB3"; allwinner,function = "io_disabled"; allwinner,muxsel = <7>; allwinner,drive = <1>; allwinner,pull = <0>; }; }; rotary { compatible = "rotary-encoder"; pinctrl-names = "default"; /*pinctrl-0 = <&rotary_pins>;*/ gpios = <&pio PJ 0 6 1 3 0xffffffff>, <&pio PJ 1 6 1 3 0xffffffff>; /* PJ0, PJ1 */ linux,axis = <0>; /* REL_X */ rotary-encoder,encoding = "gray"; rotary-encoder,relative-axis; }; gpio_keys_polled { compatible = "gpio-keys-polled"; pinctrl-names = "default"; pinctrl-0 = <&key_pj1>; #address-cells = <1>; #size-cells = <0>; poll-interval = <100>; button@0 { label = "mute"; linux,code = <KEY_MUTE>; gpios = <&pio PJ 0 6 1 1 1>; //PJ0 }; button@1 { label = "power"; linux,code = <KEY_POWER>; gpios = <&pio PJ 1 0 1 1 1>; }; }; gpio_keys { device_type = "gpiokey"; compatible = "gpio-keys"; // pinctrl-names = "default"; // pinctrl-0 = <&key_pj1>; // #address-cells = <1>; // #size-cells = <0>; // autorepeat; status = "disabled"; power_key { label = "volume down"; linux,code = <KEY_VOLUMEDOWN>; // gpios = <&pio PJ 0 6 1 1 1>; // gpios = <&pio PJ 0 6 GPIO_ACTIVE_LOW>; gpios = <&pio PJ 1 0 1 0 1>; // debounce-interval = <100>; // wakeup-source; wakeup-source = <0x1>; }; volume_down_key { label = "volume up"; linux,code = <KEY_VOLUMEUP>; // gpios = <&pio PJ 1 6 1 1 1>; // gpios = <&pio PJ 1 GPIO_ACTIVE_LOW>; gpios = <&pio PJ 0 0 1 0 1>; //debounce-interval = <100>; wakeup-source = <0x1>; }; }; gmac0: eth@05020000 { phy-mode = "rgmii"; use_ephy25m = <1>; tx-delay = <7>; rx-delay = <4>; phy-rst = <&pio PH 19 1 1 1 0>; status = "okay"; }; gmac1: eth@05030000 { phy-mode = "rgmii"; use_ephy25m = <1>; tx-delay = <7>; rx-delay = <4>; gmac-mtu = <900>; phy-rst = <&pio PI 14 1 1 1 0>; /* gmac-power0-supply = <>; gmac-power0-vol = <3300000>; */ status = "disabled"; }; twi0: twi@0x05002000{ clock-frequency = <400000>; pinctrl-0 = <&twi0_pins_a>; pinctrl-1 = <&twi0_pins_b>; status = "disabled"; /* audio: add ac108 capture */ /* ac108@3B { compatible = "Allwinner,MicArray_0"; device_type = "MicArray_0"; reg = <0x3B>; regulator_used = <0x0>; power_gpio_used = <0x0>; reset_gpio_used = <0x0>; twi_bus = <0x1>; pga_gain = <0x1F>; slot_width = <0x20>; lrck_period = <0x80>; ref_pga_used = <0x1>; ref_pga_gain = <0x10>; ref_channel = <0x3>; debug_mode = <0x0>; }; */ /*ctp { compatible = "allwinner,goodix"; reg = <0x5d>; device_type = "ctp"; status = "disabled"; ctp_twi_id = <0x0>; ctp_twi_addr = <0x5d>; ctp_screen_max_x = <0x500>; ctp_screen_max_y = <0x320>; ctp_revert_x_flag = <0x0>; ctp_revert_y_flag = <0x0>; ctp_exchange_x_y_flag = <0x0>; ctp_int_port = <&pio PB 7 6 0xffffffff 0xffffffff 0>; ctp_wakeup = <&pio PB 8 1 0xffffffff 0xffffffff 1>; ctp-supply = <>; ctp_power_ldo_vol = <3300>; };*/ }; twi1: twi@0x05002400{ clock-frequency = <200000>; pinctrl-0 = <&twi1_pins_a>; pinctrl-1 = <&twi1_pins_b>; status = "disabled"; /* ctp { compatible = "allwinner,goodix"; ctp_name = "gt9xxnew_ts"; reg = <0x5d>; device_type = "ctp"; status = "okay"; ctp_twi_id = <0x1>; ctp_twi_addr = <0x5d>; ctp_screen_max_x = <0x500>; ctp_screen_max_y = <0x320>; ctp_revert_x_flag = <0x0>; ctp_revert_y_flag = <0x0>; ctp_exchange_x_y_flag = <0x0>; ctp_int_port = <&pio PI 0 6 0xffffffff 0xffffffff 0>; ctp_wakeup = <&pio PI 1 1 0xffffffff 0xffffffff 1>; ctp-supply = <>; ctp_power_ldo_vol = <3300>; }; */ }; twi2: twi@0x05002800{ clock-frequency = <200000>; pinctrl-0 = <&twi2_pins_a>; pinctrl-1 = <&twi2_pins_b>; status = "disabled"; }; twi3: twi@0x05002c00{ clock-frequency = <200000>; pinctrl-0 = <&twi3_pins_a>; pinctrl-1 = <&twi3_pins_b>; status = "disabled"; }; twi5: twi@0x05003400{ clock-frequency = <400000>; pinctrl-0 = <&twi5_pins_a>; pinctrl-1 = <&twi5_pins_b>; pinctrl-names = "default", "sleep"; status = "okay"; /* ft6x06@48 { compatible = "focaltech,ft6236"; reg = <0x48>; interrupt-parent = <&pio>; interrupts = <PJ 8 IRQ_TYPE_LEVEL_LOW>; reset-gpios = <&pio PJ 9 1 0xffffffff 0xffffffff 1>; touchscreen-size-x = <720>; touchscreen-size-y = <720>; // touchscreen-inverted-x; // touchscreen-swapped-x-y; status = "disabled"; }; */ ctp { compatible = "allwinner,goodix"; ctp_name = "gt9xxnew_ts"; reg = <0x14>; device_type = "ctp"; status = "okay"; ctp_twi_id = <0x1>; ctp_twi_addr = <0x14>; ctp_screen_max_x = <480>; ctp_screen_max_y = <480>; ctp_revert_x_flag = <0x0>; ctp_revert_y_flag = <0x0>; ctp_exchange_x_y_flag = <0x0>; ctp_int_port = <&pio PJ 8 6 0xffffffff 0xffffffff 0>; ctp_wakeup = <&pio PJ 9 1 0xffffffff 0xffffffff 1>; ctp-supply = <>; ctp_power_ldo_vol = <3300>; }; }; twi6: s_twi@0x07081400{ clock-frequency = <200000>; pinctrl-0 = <&s_twi0_pins_a>; pinctrl-1 = <&s_twi0_pins_b>; twi_drv_used = <1>; status = "disabled"; no_suspend = <1>; }; standby_param: standby_param { vdd-cpu = <0x00000006>; vdd-sys = <0x00000008>; vcc-pll = <0x00000100>; osc24m-on = <0x0>; }; twi7: s_twi@0x07081800{ clock-frequency = <200000>; pinctrl-0 = <&s_twi1_pins_a>; pinctrl-1 = <&s_twi1_pins_b>; status = "disabled"; }; spi0: spi@05010000 { pinctrl-0 = <&spi0_pins_a &spi0_pins_b>; pinctrl-1 = <&spi0_pins_c>; spi_slave_mode = <0>; status = "disabled"; spi_board0 { device_type = "spi_board0"; compatible = "rohm,dh2228fv"; spi-max-frequency = <0x5f5e100>; reg = <0x0>; spi-rx-bus-width = <0x1>; spi-tx-bus-width = <0x1>; status = "disabled"; }; }; spi1: spi@05011000 { pinctrl-0 = <&spi1_pins_a &spi1_pins_b>; pinctrl-1 = <&spi1_pins_c>; spi_slave_mode = <0>; status = "disabled"; spi_board1 { device_type = "spi_board1"; compatible = "rohm,dh2228fv"; spi-max-frequency = <0x5f5e100>; reg = <0x0>; spi-rx-bus-width = <0x1>; spi-tx-bus-width = <0x1>; status = "disabled"; }; }; spi2: spi@05012000 { pinctrl-0 = <&spi2_pins_a &spi2_pins_b>; pinctrl-1 = <&spi2_pins_c>; spi_slave_mode = <0>; status = "disabled"; spi_board1 { device_type = "spi_board2"; compatible = "rohm,dh2228fv"; spi-max-frequency = <0x5f5e100>; reg = <0x0>; spi-rx-bus-width = <0x1>; spi-tx-bus-width = <0x1>; status = "disabled"; }; }; pwm0: pwm0@0300a000 { pinctrl-names = "active", "sleep"; pinctrl-0 = <&pwm0_pin_a>; pinctrl-1 = <&pwm0_pin_b>; }; pwm1: pwm1@0300a000 { pinctrl-names = "active", "sleep"; pinctrl-0 = <&pwm1_pin_a>; pinctrl-1 = <&pwm1_pin_b>; }; pwm2: pwm2@0300a000 { pinctrl-names = "active", "sleep"; pinctrl-0 = <&pwm2_pin_a>; pinctrl-1 = <&pwm2_pin_b>; }; pwm7: pwm7@0300a000 { pinctrl-names = "active", "sleep"; pinctrl-0 = <&pwm7_pin_a>; pinctrl-1 = <&pwm7_pin_b>; }; pwm8: pwm8@0300a000 { pinctrl-names = "active", "sleep"; pinctrl-0 = <&pwm8_pin_a>; pinctrl-1 = <&pwm8_pin_b>; }; ledc: ledc@0x05018000 { pinctrl-0 = <&ledc_pins_a>; pinctrl-1 = <&ledc_pins_b>; status = "disabled"; }; gpadc:gpadc{ channel_num = <1>; channel_select = <0x01>; channel_data_select = <0>; channel_compare_select = <0x01>; channel_cld_select = <0x01>; channel_chd_select = <0>; channel0_compare_lowdata = <1700000>; channel0_compare_higdata = <1200000>; key_cnt = <5>; key0_vol = <115>; key0_val = <115>; key1_vol = <240>; key1_val = <114>; key2_vol = <360>; key2_val = <139>; key3_vol = <480>; key3_val = <28>; key4_vol = <600>; key4_val = <102>; status = "okay"; }; sdc2: sdmmc@04022000 { non-removable; bus-width = <8>; mmc-ddr-1_8v; mmc-hs200-1_8v; mmc-hs400-1_8v; no-sdio; no-sd; cap-mmc-highspeed; sunxi-power-save-mode; sunxi-dis-signal-vol-sw; max-frequency = <100000000>; vmmc-supply = <>; vqmmc-supply = <>; status = "okay"; }; sdc0: sdmmc@04020000 { bus-width = <4>; cd-gpios = <&pio PF 6 6 1 3 0xffffffff>; /*non-removable;*/ /*broken-cd;*/ /*cd-inverted*/ /*data3-detect;*/ /*card-pwr-gpios = <&pio PH 14 1 1 2 0xffffffff>;*/ cd-used-24M; cap-sd-highspeed; sd-uhs-sdr50; sd-uhs-ddr50; sd-uhs-sdr104; no-sdio; no-mmc; sunxi-power-save-mode; /*sunxi-dis-signal-vol-sw;*/ max-frequency = <150000000>; ctl-spec-caps = <0x8>; vmmc-supply = <>; vqmmc33sw-supply = <>; vdmmc33sw-supply = <>; vqmmc18sw-supply = <>; vdmmc18sw-supply = <>; status = "okay"; }; sdc1: sdmmc@04021000 { bus-width = <4>; no-mmc; no-sd; cap-sd-highspeed; /*sd-uhs-sdr12*/ /*sd-uhs-sdr25*/ /*sd-uhs-sdr50;*/ /*sd-uhs-ddr50;*/ /*sd-uhs-sdr104*/ /*sunxi-power-save-mode;*/ /*sunxi-dis-signal-vol-sw;*/ cap-sdio-irq; keep-power-in-suspend; ignore-pm-notify; max-frequency = <50000000>; ctl-spec-caps = <0x8>; status = "okay"; }; /* *usb_used: usb controller enable. 0-disable, 1-enable. *usb_port_type: usb mode. 0-device, 1-host, 2-otg. *usb_detect_type: usb hotplug detect mode. 0-none, 1-vbus/id detect, 2-id/dpdm detect. *usb_drv_vbus_gpio:USB DRY_VBUS pin config or "axp_ctrl" */ usbc0:usbc0@0 { device_type = "usbc0"; usb_port_type = <0x2>; usb_detect_type = <0x1>; usb_id_gpio = <&pio PH 11 0 0 0xffffffff 0xffffffff>; usb_det_vbus_gpio = <&pio PH 12 0 0 0xffffffff 0xffffffff>; usb_regulator_io = "nocare"; usb_wakeup_suspend = <0>; usb_luns = <3>; usb_serial_unique = <0>; usb_serial_number = "20080411"; rndis_wceis = <1>; status = "okay"; }; ehci0:ehci0-controller@0x05101000 { drvvbus-supply = <®_usb1_vbus>; }; ohci0:ohci0-controller@0x05101400 { drvvbus-supply = <®_usb1_vbus>; }; usbc1:usbc1@0 { device_type = "usbc1"; usb_regulator_io = "nocare"; usb_wakeup_suspend = <1>; wakeup-source; status = "okay"; }; /* Audio Driver Modules */ codec:codec@0x05096000 { /* MIC and headphone gain setting */ mic1gain = <0x1F>; mic2gain = <0x1F>; /* ADC/DAC DRC/HPF func enabled */ /* 0x1:DAP_HP_EN; 0x2:DAP_SPK_EN; 0x3:DAP_HPSPK_EN */ adcdrc_cfg = <0x0>; adchpf_cfg = <0x0>; dacdrc_cfg = <0x0>; dachpf_cfg = <0x0>; /* Volume about */ digital_vol = <0x00>; lineout_vol = <0x1a>; headphonegain = <0x00>; /* Pa enabled about */ pa_level = <0x01>; pa_msleep_time = <0x78>; /* gpio-spk = <&pio PH 19 1 1 1 1>;*/ /* regulator about */ avcc-supply = <>; status = "okay"; }; sndcodec:sound@0 { noheadphonemic = <0x01>; status = "okay"; }; spdif:spdif-controller@0x05094000{ status = "disabled"; }; sndspdif:sound@1{ status = "disabled"; }; dmic:dmic-controller@0x05095000{ status = "disabled"; }; snddmic:sound@2{ status = "disabled"; }; daudio0:daudio@0x05090000 { mclk_div = <0x01>; frametype = <0x00>; tdm_config = <0x01>; sign_extend = <0x00>; tx_data_mode = <0x00>; rx_data_mode = <0x00>; msb_lsb_first = <0x00>; pcm_lrck_period = <0x80>; audio_format = <0x01>; daudio_master = <0x04>; signal_inversion = <0x01>; slot_width_select = <0x20>; status = "disabled"; }; snddaudio0:sound@3 { /* sunxi,snddaudio-codec = "ac108.0-003b"; sunxi,snddaudio-codec-dai = "ac108-pcm0"; */ status = "disabled"; }; daudio1:daudio@0x05091000 { mclk_div = <0x01>; frametype = <0x00>; tdm_config = <0x01>; sign_extend = <0x00>; tx_data_mode = <0x00>; rx_data_mode = <0x00>; msb_lsb_first = <0x00>; pcm_lrck_period = <0x20>; audio_format = <0x01>; daudio_master = <0x04>; signal_inversion = <0x01>; slot_width_select = <0x20>; status = "disabled"; }; snddaudio1:sound@4 { status = "disabled"; }; daudio2:daudio@0x05092000 { mclk_div = <0x01>; frametype = <0x00>; tdm_config = <0x01>; sign_extend = <0x00>; tx_data_mode = <0x00>; rx_data_mode = <0x00>; msb_lsb_first = <0x00>; pcm_lrck_period = <0x20>; audio_format = <0x01>; daudio_master = <0x04>; signal_inversion = <0x01>; slot_width_select = <0x20>; status = "disabled"; }; snddaudio2:sound@5 { status = "disabled"; }; daudio3:daudio@0x05093000 { mclk_div = <0x01>; frametype = <0x00>; tdm_config = <0x01>; sign_extend = <0x00>; tx_data_mode = <0x00>; rx_data_mode = <0x00>; msb_lsb_first = <0x00>; pcm_lrck_period = <0x20>; audio_format = <0x01>; daudio_master = <0x04>; signal_inversion = <0x01>; slot_width_select = <0x20>; status = "disabled"; }; snddaudio3:sound@6 { status = "disabled"; }; vind0:vind@0 { vind0_clk = <336000000>; vind0_isp = <300000000>; status = "okay"; actuator0:actuator@0 { device_type = "actuator0"; actuator0_name = "ad5820_act"; actuator0_slave = <0x18>; actuator0_af_pwdn = <>; actuator0_afvdd = "afvcc-csi"; actuator0_afvdd_vol = <2800000>; status = "disabled"; }; flash0:flash@0 { device_type = "flash0"; flash0_type = <2>; flash0_en = <>; flash0_mode = <>; flash0_flvdd = ""; flash0_flvdd_vol = <>; device_id = <0>; status = "disabled"; }; sensor0:sensor@0 { device_type = "sensor0"; sensor0_mname = "imx278_mipi"; sensor0_twi_cci_id = <2>; sensor0_twi_addr = <0x20>; sensor0_mclk_id = <0>; sensor0_pos = "rear"; sensor0_isp_used = <1>; sensor0_fmt = <1>; sensor0_stby_mode = <0>; sensor0_vflip = <0>; sensor0_hflip = <0>; sensor0_iovdd-supply = <>; sensor0_iovdd_vol = <1800000>; sensor0_avdd-supply = <>; sensor0_avdd_vol = <2800000>; sensor0_dvdd-supply = <>; sensor0_dvdd_vol = <1200000>; sensor0_power_en = <>; sensor0_reset = <&pio PE 7 1 0 1 0>; sensor0_pwdn = <&pio PE 6 1 0 1 0>; status = "disabled"; }; sensor1:sensor@1 { device_type = "sensor1"; sensor1_mname = "imx386_mipi"; sensor1_twi_cci_id = <3>; sensor1_twi_addr = <0x20>; sensor1_mclk_id = <1>; sensor1_pos = "front"; sensor1_isp_used = <1>; sensor1_fmt = <1>; sensor1_stby_mode = <0>; sensor1_vflip = <0>; sensor1_hflip = <0>; sensor1_iovdd-supply = <>; sensor1_iovdd_vol = <1800000>; sensor1_avdd-supply = <>; sensor1_avdd_vol = <2800000>; sensor1_dvdd-supply = <>; sensor1_dvdd_vol = <>; sensor1_power_en = <>; sensor1_reset = <&pio PE 9 1 0 1 0>; sensor1_pwdn = <&pio PE 8 1 0 1 0>; status = "disabled"; }; vinc0:vinc@0 { vinc0_csi_sel = <0>; vinc0_mipi_sel = <0>; vinc0_isp_sel = <0>; vinc0_isp_tx_ch = <0>; vinc0_tdm_rx_sel = <0>; vinc0_rear_sensor_sel = <0>; vinc0_front_sensor_sel = <1>; vinc0_sensor_list = <0>; status = "disabled"; }; vinc1:vinc@1 { vinc1_csi_sel = <0>; vinc1_mipi_sel = <0>; vinc1_isp_sel = <0>; vinc1_isp_tx_ch = <0>; vinc1_tdm_rx_sel = <0>; vinc1_rear_sensor_sel = <0>; vinc1_front_sensor_sel = <1>; vinc1_sensor_list = <0>; status = "disabled"; }; vinc2:vinc@2 { vinc2_csi_sel = <1>; vinc2_mipi_sel = <1>; vinc2_isp_sel = <1>; vinc2_isp_tx_ch = <0>; vinc2_tdm_rx_sel = <1>; vinc2_rear_sensor_sel = <0>; vinc2_front_sensor_sel = <1>; vinc2_sensor_list = <0>; status = "disabled"; }; vinc3:vinc@3 { vinc3_csi_sel = <1>; vinc3_mipi_sel = <1>; vinc3_isp_sel = <1>; vinc3_isp_tx_ch = <0>; vinc3_tdm_rx_sel = <0xff>; vinc3_rear_sensor_sel = <0>; vinc3_front_sensor_sel = <1>; vinc3_sensor_list = <0>; status = "disabled"; }; }; /*---------------------------------------------------------------------------------- disp init configuration disp_mode (0:screen0<screen0,fb0>) screenx_output_type (0:none; 1:lcd; 2:tv; 3:hdmi;5:vdpo) screenx_output_mode (used for hdmi output, 0:480i 1:576i 2:480p 3:576p 4:720p50) (5:720p60 6:1080i50 7:1080i60 8:1080p24 9:1080p50 10:1080p60) screenx_output_format (for hdmi, 0:RGB 1:yuv444 2:yuv422 3:yuv420) screenx_output_bits (for hdmi, 0:8bit 1:10bit 2:12bit 2:16bit) screenx_output_eotf (for hdmi, 0:reserve 4:SDR 16:HDR10 18:HLG) screenx_output_cs (for hdmi, 0:undefined 257:BT709 260:BT601 263:BT2020) screenx_output_dvi_hdmi (for hdmi, 0:undefined 1:dvi mode 2:hdmi mode) screen0_output_range (for hdmi, 0:default 1:full 2:limited) screen0_output_scan (for hdmi, 0:no data 1:overscan 2:underscan) screen0_output_aspect_ratio (for hdmi, 8-same as original picture 9-4:3 10-16:9 11-14:9) fbx format (4:RGB655 5:RGB565 6:RGB556 7:ARGB1555 8:RGBA5551 9:RGB888 10:ARGB8888 12:ARGB4444) fbx pixel sequence (0:ARGB 1:BGRA 2:ABGR 3:RGBA) fb0_scaler_mode_enable(scaler mode enable, used FE) fbx_width,fbx_height (framebuffer horizontal/vertical pixels, fix to output resolution while equal 0) lcdx_backlight (lcd init backlight,the range:[0,256],default:197 lcdx_yy (lcd init screen bright/contrast/saturation/hue, value:0~100, default:50/50/57/50) lcd0_contrast (LCD contrast, 0~100) lcd0_saturation (LCD saturation, 0~100) lcd0_hue (LCD hue, 0~100) framebuffer software rotation setting: disp_rotation_used: (0:disable; 1:enable,you must set fbX_width to lcd_y, set fbX_height to lcd_x) degreeX: (X:screen index; 0:0 degree; 1:90 degree; 3:270 degree) degreeX_Y: (X:screen index; Y:layer index 0~15; 0:0 degree; 1:90 degree; 3:270 degree) devX_output_type : config output type in bootGUI framework in UBOOT-2018. (0:none; 1:lcd; 2:tv; 4:hdmi;) devX_output_mode : config output resolution(see include/video/sunxi_display2.h) of bootGUI framework in UBOOT-2018 devX_screen_id : config display index of bootGUI framework in UBOOT-2018 devX_do_hpd : whether do hpd detectation or not in UBOOT-2018 chn_cfg_mode : Hardware DE channel allocation config. 0:single display with 6 channel, 1:dual display with 4 channel in main display and 2 channel in second display, 2:dual display with 3 channel in main display and 3 channel in second in display. ----------------------------------------------------------------------------------*/ disp: disp@06000000 { disp_init_enable = <1>; disp_mode = <1>; screen0_output_type = <1>; screen0_output_mode = <4>; screen0_output_format = <0>; screen0_output_bits = <0>; screen0_output_eotf = <4>; screen0_output_cs = <257>; screen0_output_dvi_hdmi = <2>; screen0_output_range = <2>; screen0_output_scan = <0>; screen0_output_aspect_ratio = <8>; screen1_output_type = <1>; screen1_output_mode = <4>; screen1_output_format = <0>; screen1_output_bits = <0>; screen1_output_eotf = <4>; screen1_output_cs = <257>; screen1_output_dvi_hdmi = <2>; screen1_output_range = <2>; screen1_output_scan = <0>; screen1_output_aspect_ratio = <8>; dev0_output_type = <1>; dev0_output_mode = <4>; dev0_screen_id = <0>; dev0_do_hpd = <0>; dev1_output_type = <1>; dev1_output_mode = <4>; dev1_screen_id = <1>; dev1_do_hpd = <0>; def_output_dev = <0>; hdmi_mode_check = <1>; fb0_format = <0>; fb0_width = <0>; fb0_height = <0>; fb1_format = <0>; fb1_width = <0>; fb1_height = <0>; chn_cfg_mode = <1>; disp_para_zone = <1>; /*VCC-LCD*/ dc1sw-supply = <>; /*VCC-DSI*/ eldo3-supply = <>; /*VCC-PD*/ dcdc1-supply = <>; status = "okay"; }; /*---------------------------------------------------------------------------------- ;lcd0 configuration ;lcd_if: 0:hv(sync+de); 1:8080; 2:ttl; 3:lvds; 4:dsi; 5:edp; 6:extend dsi ;lcd_hv_if 0:Parallel RGB; 8:Serial RGB; 10:Dummy RGB; 11: RGB Dummy;12:CCIR656 ;lcd_hv_clk_phase 0:0 degree;1:90 degree;2:180 degree;3:270 degree ;lcd_hv_sync_polarity 0:vs low,hs low; 1:vs high,hslow; 2:vs low,hs high; 3:vs high,hs high ;lcd_hv_syuv_seq 0:YUYV; 1:YVYU; 2:UYVY; 3:VYUY ;lcd_cpu_if 0:18bit/1 cycle parallel(RGB666); 4:16bit/1cycle parallel (RGB565) ; 6:18bit/3 cycle parallel(RGB666); 7:16bit/2cycle parallel (RGB565) ;lcd_cpu_te 0:frame auto trigger; 1:frame triggered by te rising edge; 2:frame triggered by te falling edge; ;lcd_dsi_if 0:video mode; 1: Command mode; 2:video burst mode ;lcd_dsi_te 0:frame auto trigger; 1:frame triggered by te rising edge; 2:frame triggered by te falling edge; ;lcd_x: lcd horizontal resolution ;lcd_y: lcd vertical resolution ;lcd_width: width of lcd in mm ;lcd_height: height of lcd in mm ;lcd_dclk_freq: in MHZ unit ;lcd_pwm_freq: in HZ unit ;lcd_pwm_pol: lcd backlight PWM polarity ;lcd_pwm_max_limit lcd backlight PWM max limit(<=255) ;lcd_hbp: hsync back porch(pixel) + hsync plus width(pixel); ;lcd_ht: hsync total cycle(pixel) ;lcd_vbp: vsync back porch(line) + vysnc plus width(line) ;lcd_vt: vysnc total cycle(line) ;lcd_hspw: hsync plus width(pixel) ;lcd_vspw: vysnc plus width(pixel) ;lcd_lvds_if: 0:single link; 1:dual link(odd and even); 2:dual link(same pixel) ;lcd_lvds_colordepth: 0:8bit; 1:6bit ;lcd_lvds_mode: 0:NS mode; 1:JEIDA mode ;lcd_frm: 0:disable; 1:enable rgb666 dither; 2:enable rgb656 dither ;lcd_io_phase: 0:noraml; 1:intert phase(0~3bit: vsync phase; 4~7bit:hsync phase; ; 8~11bit:dclk phase; 12~15bit:de phase) ;lcd_gamma_en lcd gamma correction enable ;lcd_bright_curve_en lcd bright curve correction enable ;lcd_cmap_en lcd color map function enable ;deu_mode 0:smoll lcd screen; 1:large lcd screen(larger than 10inch) ;lcdgamma4iep: Smart Backlight parameter, lcd gamma vale * 10; ; decrease it while lcd is not bright enough; increase while lcd is too bright ;smart_color 90:normal lcd screen 65:retina lcd screen(9.7inch) ;Pin setting for special function ie.LVDS, RGB data or vsync ; name(donot care) = port:PD12<pin function><pull up or pull down><drive ability><output level> ;Pin setting for gpio: ; lcd_gpio_X = port:PD12<pin function><pull up or pull down><drive ability><output level> ;Pin setting for backlight enable pin ; lcd_bl_en = port:PD12<pin function><pull up or pull down><drive ability><output level> ;fsync setting, pulse to csi ;lcd_fsync_en (0:disable fsync,1:enable) ;lcd_fsync_act_time (active time of fsync, unit:pixel) ;lcd_fsync_dis_time (disactive time of fsync, unit:pixel) ;lcd_fsync_pol (0:positive;1:negative) ;gpio config: <&pio for cpu or &r_pio for cpus, port, port num, pio function, pull up or pull down(default 0), driver level(default 1), data> ;For dual link lvds: use lvds2link_pins_a and lvds2link_pins_b instead ;For rgb24: use rgb24_pins_a and rgb24_pins_b instead ;For lvds1: use lvds1_pins_a and lvds1_pins_b instead ;For lvds0: use lvds0_pins_a and lvds0_pins_b instead ;----------------------------------------------------------------------------------*/ lcd0: lcd0@01c0c000 { lcd_used = <1>; lcd_driver_name = "tft08006"; lcd_backlight = <100>; lcd_if = <4>; lcd_x = <800>; lcd_y = <1280>; lcd_width = <52>; lcd_height = <52>; lcd_dclk_freq = <70>; lcd_pwm_used = <0>; lcd_pwm_ch = <0>; lcd_pwm_freq = <1000>; lcd_pwm_pol = <0>; lcd_pwm_max_limit = <255>; lcd_hbp = <32>; lcd_ht = <868>; lcd_hspw = <4>; lcd_vbp = <12>; lcd_vt = <1311>; lcd_vspw = <4>; lcd_dsi_if = <0>; lcd_dsi_lane = <4>; lcd_lvds_if = <0>; lcd_lvds_colordepth = <0>; lcd_lvds_mode = <0>; lcd_frm = <0>; lcd_hv_clk_phase = <0>; lcd_hv_sync_polarity= <0>; lcd_io_phase = <0x0000>; lcd_gamma_en = <0>; lcd_bright_curve_en = <0>; lcd_cmap_en = <0>; lcd_fsync_en = <0>; lcd_fsync_act_time = <1000>; lcd_fsync_dis_time = <1000>; lcd_fsync_pol = <0>; deu_mode = <0>; lcdgamma4iep = <22>; smart_color = <90>; lcd_pin_power; lcd_power; /*lcd_bl_en = <&pio PB 8 1 0 3 1>;*/ /*lcd_gpio_1 = <&pio PD 23 1 0 3 1>;*/ lcd_gpio_0 = <&pio PC 12 1 0 3 1>; pinctrl-0 = <&dsi4lane_pins_a>; pinctrl-1 = <&dsi4lane_pins_b>; status = "okay"; }; lcd1: lcd1@01c0c001 { lcd_used = <1>; lcd_driver_name = "st7701s_rgb"; lcd_if = <0>; lcd_hv_if = <0>; lcd_width = <70>; lcd_height = <72>; lcd_x = <480>; lcd_y = <480>; lcd_dclk_freq = <11>; lcd_hbp = <60>; lcd_ht = <612>; lcd_hspw = <12>; lcd_vbp = <18>; lcd_vt = <520>; lcd_vspw = <4>; lcd_backlight = <250>;// 0 ~ 255 lcd_pwm_used = <1>; lcd_pwm_ch = <8>; lcd_pwm_freq = <20000>; lcd_pwm_pol = <1>; lcd_pwm_max_limit = <255>; lcd_bright_curve_en = <0>; lcd_frm = <1>; lcd_io_phase = <0x0000>; lcd_gamma_en = <0>; lcd_cmap_en = <0>; lcd_hv_clk_phase = <1>; lcd_hv_sync_polarity= <0>; lcd_rb_swap = <0>; //lcd_bl_en = <&pio PI 7 1 1 3 1>; lcd_gpio_0 = <&pio PJ 16 1 1 3 1>;//reset lcd_gpio_1 = <&pio PJ 17 1 1 3 1>;//cs lcd_gpio_2 = <&pio PC 2 1 1 3 1>;//sdi lcd_gpio_3 = <&pio PC 12 1 1 3 1>;//scl /* lcd_gpio_2 = <&r_pio PL 2 1 1 3 1>;//sdi lcd_gpio_3 = <&r_pio PL 3 1 1 3 1>;//scl */ lcd_pin_power; lcd_power; pinctrl-0 = <&rgb18_pins_c>; pinctrl-1 = <&rgb18_pins_d>; status = "okay"; }; wlan: wlan@0 { compatible = "allwinner,sunxi-wlan"; pinctrl-0; pinctrl-names; wlan_busnum = <0x1>; wlan_power; wlan_io_regulator; wlan_regon = <&r_pio PL 10 1 0xffffffff 0xffffffff 0>; wlan_hostwake = <&r_pio PL 7 1 0xffffffff 0xffffffff 0>; chip_en; power_en; status = "okay"; }; bt: bt@0 { compatible = "allwinner,sunxi-bt"; clocks = <&clk_losc_out>, <&clk_dcxo_out>; bt_power; bt_io_regulator; bt_rst_n = <&r_pio PL 5 1 0xffffffff 0xffffffff 0>; bt_wake = <&r_pio PL 4 1 0xffffffff 0xffffffff 0>; bt_hostwake = <&r_pio PL 6 1 0xffffffff 0xffffffff 0>; status = "okay"; }; modem: modem@0 { compatible = "allwinner,sunxi-modem"; modem_power; modem_rst = <&pio PB 3 1 0xffffffff 0xffffffff 1>; status = "disabled"; }; btlpm: btlpm@0 { compatible = "allwinner,sunxi-btlpm"; uart_index = <0x1>; bt_wake = <&r_pio PL 4 1 0xffffffff 0xffffffff 1>;//AP-WAKE-BT bt_hostwake = <&r_pio PL 6 1 0xffffffff 0xffffffff 1>;//BT-WAKE-AP status = "okay"; }; /* btlpm: btlpm@0 { compatible = "allwinner,sunxi-btlpm"; uart_index = <0x1>; bt_wake = <&r_pio PL 3 1 0xffffffff 0xffffffff 1>; bt_hostwake = <&r_pio PL 4 6 0xffffffff 0xffffffff 1>; status = "disabled"; }; */ addr_mgt: addr_mgt@0 { compatible = "allwinner,sunxi-addr_mgt"; type_addr_wifi = <0x0>; type_addr_bt = <0x0>; type_addr_eth = <0x0>; status = "okay"; }; uart0: uart@05000000 { uart-supply = <>; }; uart1: uart@05000400 { status = "okay"; }; uart5: uart@05001400 { status = "disabled"; }; uart6: uart@05001800 { status = "disabled"; rs485-en = <&pio PI 11 1 1 0xffffffff 1>; }; ncs8801s { status = "disabled"; ncs8801s_reset = <&pio PI 14 1 0xffffffff 0xffffffff 0>; }; }; gpu: gpu@0x01800000 { gpu_idle = <0>; dvfs_status = <1>; pll_rate = <504000>; independent_power = <0>; operating-points = < /* KHz uV */ 504000 950000 472500 950000 441000 950000 252000 950000 >; gpu-supply = <>; }; opp_dvfs_table:opp_dvfs_table { cluster_num = <1>; opp_table_count = <1>; }; }; &cpu0 { cpu-supply = <>; };
tft08006.c / tft08006.h 是从 D1 SDK 里面复制的。
-
搞定一个MIPI显示屏.
board.dts
/* * Allwinner Technology CO., Ltd. sun50iw10p1 soc board. * * soc board support. */ /dts-v1/; #include <dt-bindings/input/input.h> #include "sun50iw10p1.dtsi" /{ model = "sun50iw10"; compatible = "allwinner,a3", "arm,sun50iw10p1"; reg_usb1_vbus: usb1-vbus { compatible = "regulator-fixed"; gpio = <&pio PI 12 1 2 0 1>; regulator-name = "usb1-vbus"; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; enable-active-high; }; reg_3v3: vdd_3v3 { compatible = "regulator-fixed"; regulator-name = "vdd_3v3"; regulator-min-microvolt = <3300000>; regulator-max-microvolt = <3300000>; regulator-enable-ramp-delay = <1000>; enable-active-high; }; soc@03000000 { r_pio: pinctrl@07022000 { s_twi0_pins_a: s_twi0@0 { allwinner,pins = "PL0", "PL1"; allwinner,pname = "s_twi0_scl", "s_twi0_sda"; allwinner,function = "s_twi0"; allwinner,muxsel = <2>; allwinner,drive = <1>; allwinner,pull = <1>; }; s_twi0_pins_b: s_twi0@1 { allwinner,pins = "PL0", "PL1"; allwinner,function = "io_disabled"; allwinner,muxsel = <7>; allwinner,drive = <1>; allwinner,pull = <0>; }; s_twi1_pins_a: s_twi1@0 { allwinner,pins = "PL8", "PL9"; allwinner,pname = "s_twi1_scl", "s_twi1_sda"; allwinner,function = "s_twi1"; allwinner,muxsel = <2>; allwinner,drive = <1>; allwinner,pull = <1>; }; s_twi1_pins_b: s_twi1@1 { allwinner,pins = "PL8", "PL9"; allwinner,function = "io_disabled"; allwinner,muxsel = <7>; allwinner,drive = <1>; allwinner,pull = <0>; }; }; pio: pinctrl@0300b000 { twi0_pins_a: twi0@0 { allwinner,pins = "PD22", "PD23"; allwinner,pname = "twi0_scl", "twi0_sda"; allwinner,function = "twi0"; allwinner,muxsel = <4>; allwinner,drive = <1>; allwinner,pull = <0>; }; twi0_pins_b: twi0@1 { allwinner,pins = "PD22", "PD23"; allwinner,function = "io_disabled"; allwinner,muxsel = <7>; allwinner,drive = <1>; allwinner,pull = <0>; }; twi1_pins_a: twi1@0 { allwinner,pins = "PB4", "PB5"; allwinner,pname = "twi1_scl", "twi1_sda"; allwinner,function = "twi1"; allwinner,muxsel = <2>; allwinner,drive = <1>; allwinner,pull = <0>; }; twi1_pins_b: twi1@1 { allwinner,pins = "PB4", "PB5"; allwinner,function = "io_disabled"; allwinner,muxsel = <7>; allwinner,drive = <1>; allwinner,pull = <0>; }; twi2_pins_a: twi2@0 { allwinner,pins = "PE1", "PE2"; allwinner,pname = "twi2_scl", "twi2_sda"; allwinner,function = "twi2"; allwinner,muxsel = <2>; allwinner,drive = <1>; allwinner,pull = <0>; }; twi2_pins_b: twi2@1 { allwinner,pins = "PE1", "PE2"; allwinner,function = "io_disabled"; allwinner,muxsel = <7>; allwinner,drive = <1>; allwinner,pull = <0>; }; twi3_pins_a: twi3@0 { allwinner,pins = "PE3", "PE4"; allwinner,pname = "twi3_scl", "twi3_sda"; allwinner,function = "twi3"; allwinner,muxsel = <2>; allwinner,drive = <1>; allwinner,pull = <1>; }; twi3_pins_b: twi3@1 { allwinner,pins = "PE3", "PE4"; allwinner,function = "io_disabled"; allwinner,muxsel = <7>; allwinner,drive = <1>; allwinner,pull = <0>; }; twi5_pins_a: twi5@0 { allwinner,pins = "PI8", "PI9"; allwinner,pname = "twi5_scl", "twi5_sda"; allwinner,function = "twi5"; allwinner,muxsel = <2>; allwinner,drive = <1>; allwinner,pull = <0>; }; twi5_pins_b: twi5@1 { allwinner,pins = "PI8", "PI9"; allwinner,function = "io_disabled"; allwinner,muxsel = <7>; allwinner,drive = <1>; allwinner,pull = <0>; }; pwm0_pin_a: pwm0@0 { allwinner,pins = "PD23"; allwinner,function = "pwm0"; allwinner,muxsel = <0x02>; allwinner,drive = <0x2>; allwinner,pull = <0>; allwinner,data = <0xffffffff>; }; pwm0_pin_b: pwm0@1 { allwinner,pins = "PD23"; allwinner,function = "io_disabled"; allwinner,muxsel = <0x07>; allwinner,drive = <0x2>; allwinner,pull = <0>; allwinner,data = <0xffffffff>; }; pwm1_pin_a: pwm1@0 { allwinner,pins = "PI0"; allwinner,function = "pwm1"; allwinner,muxsel = <0x04>; allwinner,drive = <0x2>; allwinner,pull = <0>; allwinner,data = <0xffffffff>; }; pwm1_pin_b: pwm1@1 { allwinner,pins = "PI0"; allwinner,function = "io_disabled"; allwinner,muxsel = <0x07>; allwinner,drive = <0x2>; allwinner,pull = <0>; allwinner,data = <0xffffffff>; }; pwm2_pin_a: pwm2@0 { allwinner,pins = "PI1"; allwinner,function = "pwm2"; allwinner,muxsel = <0x04>; allwinner,drive = <0x2>; allwinner,pull = <0>; allwinner,data = <0xffffffff>; }; pwm2_pin_b: pwm2@1 { allwinner,pins = "PI1"; allwinner,function = "io_disabled"; allwinner,muxsel = <0x07>; allwinner,drive = <0x2>; allwinner,pull = <0>; allwinner,data = <0xffffffff>; }; pwm3_pin_a: pwm3@0 { allwinner,pins = "PD21"; allwinner,function = "pwm3"; allwinner,muxsel = <0x02>; allwinner,drive = <0x2>; allwinner,pull = <0>; allwinner,data = <0xffffffff>; }; pwm3_pin_b: pwm3@1 { allwinner,pins = "PD21"; allwinner,function = "io_disabled"; allwinner,muxsel = <0x07>; allwinner,drive = <0x2>; allwinner,pull = <0>; allwinner,data = <0xffffffff>; }; pwm7_pin_a: pwm7@0 { allwinner,pins = "PI6"; allwinner,function = "pwm7"; allwinner,muxsel = <0x04>; allwinner,drive = <0x2>; allwinner,pull = <0>; allwinner,data = <0xffffffff>; }; pwm7_pin_b: pwm7@1 { allwinner,pins = "PI6"; allwinner,function = "io_disabled"; allwinner,muxsel = <0x07>; allwinner,drive = <0x2>; allwinner,pull = <0>; allwinner,data = <0xffffffff>; }; pwm8_pin_a: pwm8@0 { allwinner,pins = "PI7"; allwinner,function = "pwm8"; allwinner,muxsel = <0x04>; allwinner,drive = <0x2>; allwinner,pull = <0>; allwinner,data = <0xffffffff>; }; pwm8_pin_b: pwm8@1 { allwinner,pins = "PI7"; allwinner,function = "io_disabled"; allwinner,muxsel = <0x07>; allwinner,drive = <0x2>; allwinner,pull = <0>; allwinner,data = <0xffffffff>; }; ledc_pins_a: ledc@0 { allwinner,pins = "PH19"; allwinner,function = "ledc"; allwinner,muxsel = <5>; }; ledc_pins_b: ledc@1 { allwinner,pins = "PH19"; allwinner,function = "io_disabled"; allwinner,muxsel = <7>; }; key_pj1: key_pj1@0 { allwinner,pins = "PJ1"; allwinner,function = "gpio_in"; allwinner,muxsel = <0x00>; allwinner,drive = <0x2>; allwinner,pull = <1>; allwinner,data = <0x1>; }; usb1_vbus_pin_a: usb1_vbus_pin@0 { allwinner,pins = "PH10"; allwinner,function = "gpio_out"; allwinner,muxsel = <0x01>; allwinner,drive = <0x2>; allwinner,pull = <0>; allwinner,data = <0x0>; }; spi0_pins_a: spi0@0 { allwinner,pins = "PC2", "PC4", "PC12", "PC15", "PC16"; allwinner,pname = "spi0_mosi", "spi0_miso", "spi0_sclk", "spi0_wp", "spi0_hold"; allwinner,function = "spi0"; allwinner,muxsel = <4>; allwinner,drive = <1>; allwinner,pull = <0>; }; spi0_pins_b: spi0@1 { allwinner,pins = "PC3", "PC7"; allwinner,pname = "spi0_cs0", "spi0_cs1"; allwinner,function = "spi0"; allwinner,muxsel = <4>; allwinner,drive = <1>; allwinner,pull = <1>; /* only CS should be pulled up */ }; spi0_pins_c: spi0@2 { allwinner,pins = "PC2", "PC3", "PC4", "PC7", "PC12", "PC15", "PC16"; allwinner,function = "io_disabled"; allwinner,muxsel = <7>; allwinner,drive = <1>; allwinner,pull = <0>; }; spi1_pins_a: spi1@0 { allwinner,pins = "PD11", "PD12", "PD13"; allwinner,pname = "spi1_sclk", "spi1_mosi", "spi1_miso"; allwinner,function = "spi1"; allwinner,muxsel = <4>; allwinner,drive = <1>; allwinner,pull = <0>; }; spi1_pins_b: spi1@1 { allwinner,pins = "PD10"; allwinner,pname = "spi1_cs0"; allwinner,function = "spi1"; allwinner,muxsel = <4>; allwinner,drive = <1>; allwinner,pull = <1>; /* only CS should be pulled up */ }; spi1_pins_c: spi1@2 { allwinner,pins = "PD10", "PD11", "PD12", "PD13"; allwinner,function = "io_disabled"; allwinner,muxsel = <7>; allwinner,drive = <1>; allwinner,pull = <0>; }; spi2_pins_a: spi2@0 { allwinner,pins = "PB1", "PB2", "PB3"; allwinner,pname = "spi2_sclk", "spi2_mosi", "spi2_miso"; allwinner,function = "spi2"; allwinner,muxsel = <3>; allwinner,drive = <1>; allwinner,pull = <0>; }; spi2_pins_b: spi2@1 { allwinner,pins = "PB0"; allwinner,pname = "spi2_cs0"; allwinner,function = "spi2"; allwinner,muxsel = <3>; allwinner,drive = <1>; allwinner,pull = <1>; /* only CS should be pulled up */ }; spi2_pins_c: spi2@2 { allwinner,pins = "PB0", "PB1", "PB2", "PB3"; allwinner,function = "io_disabled"; allwinner,muxsel = <7>; allwinner,drive = <1>; allwinner,pull = <0>; }; }; rotary { compatible = "rotary-encoder"; pinctrl-names = "default"; /*pinctrl-0 = <&rotary_pins>;*/ gpios = <&pio PJ 0 6 1 3 0xffffffff>, <&pio PJ 1 6 1 3 0xffffffff>; /* PJ0, PJ1 */ linux,axis = <0>; /* REL_X */ rotary-encoder,encoding = "gray"; rotary-encoder,relative-axis; }; gpio_keys_polled { compatible = "gpio-keys-polled"; pinctrl-names = "default"; pinctrl-0 = <&key_pj1>; #address-cells = <1>; #size-cells = <0>; poll-interval = <100>; button@0 { label = "mute"; linux,code = <KEY_MUTE>; gpios = <&pio PJ 0 6 1 1 1>; //PJ0 }; button@1 { label = "power"; linux,code = <KEY_POWER>; gpios = <&pio PJ 1 0 1 1 1>; }; }; gpio_keys { device_type = "gpiokey"; compatible = "gpio-keys"; // pinctrl-names = "default"; // pinctrl-0 = <&key_pj1>; // #address-cells = <1>; // #size-cells = <0>; // autorepeat; status = "disabled"; power_key { label = "volume down"; linux,code = <KEY_VOLUMEDOWN>; // gpios = <&pio PJ 0 6 1 1 1>; // gpios = <&pio PJ 0 6 GPIO_ACTIVE_LOW>; gpios = <&pio PJ 1 0 1 0 1>; // debounce-interval = <100>; // wakeup-source; wakeup-source = <0x1>; }; volume_down_key { label = "volume up"; linux,code = <KEY_VOLUMEUP>; // gpios = <&pio PJ 1 6 1 1 1>; // gpios = <&pio PJ 1 GPIO_ACTIVE_LOW>; gpios = <&pio PJ 0 0 1 0 1>; //debounce-interval = <100>; wakeup-source = <0x1>; }; }; gmac0: eth@05020000 { phy-mode = "rgmii"; use_ephy25m = <1>; tx-delay = <7>; rx-delay = <4>; phy-rst = <&pio PH 19 1 1 1 0>; status = "okay"; }; gmac1: eth@05030000 { phy-mode = "rgmii"; use_ephy25m = <1>; tx-delay = <7>; rx-delay = <4>; gmac-mtu = <900>; phy-rst = <&pio PI 14 1 1 1 0>; /* gmac-power0-supply = <>; gmac-power0-vol = <3300000>; */ status = "disabled"; }; twi0: twi@0x05002000{ clock-frequency = <400000>; pinctrl-0 = <&twi0_pins_a>; pinctrl-1 = <&twi0_pins_b>; status = "disabled"; /* audio: add ac108 capture */ /* ac108@3B { compatible = "Allwinner,MicArray_0"; device_type = "MicArray_0"; reg = <0x3B>; regulator_used = <0x0>; power_gpio_used = <0x0>; reset_gpio_used = <0x0>; twi_bus = <0x1>; pga_gain = <0x1F>; slot_width = <0x20>; lrck_period = <0x80>; ref_pga_used = <0x1>; ref_pga_gain = <0x10>; ref_channel = <0x3>; debug_mode = <0x0>; }; */ /*ctp { compatible = "allwinner,goodix"; reg = <0x5d>; device_type = "ctp"; status = "disabled"; ctp_twi_id = <0x0>; ctp_twi_addr = <0x5d>; ctp_screen_max_x = <0x500>; ctp_screen_max_y = <0x320>; ctp_revert_x_flag = <0x0>; ctp_revert_y_flag = <0x0>; ctp_exchange_x_y_flag = <0x0>; ctp_int_port = <&pio PB 7 6 0xffffffff 0xffffffff 0>; ctp_wakeup = <&pio PB 8 1 0xffffffff 0xffffffff 1>; ctp-supply = <>; ctp_power_ldo_vol = <3300>; };*/ }; twi1: twi@0x05002400{ clock-frequency = <200000>; pinctrl-0 = <&twi1_pins_a>; pinctrl-1 = <&twi1_pins_b>; status = "disabled"; /* ctp { compatible = "allwinner,goodix"; ctp_name = "gt9xxnew_ts"; reg = <0x5d>; device_type = "ctp"; status = "okay"; ctp_twi_id = <0x1>; ctp_twi_addr = <0x5d>; ctp_screen_max_x = <0x500>; ctp_screen_max_y = <0x320>; ctp_revert_x_flag = <0x0>; ctp_revert_y_flag = <0x0>; ctp_exchange_x_y_flag = <0x0>; ctp_int_port = <&pio PI 0 6 0xffffffff 0xffffffff 0>; ctp_wakeup = <&pio PI 1 1 0xffffffff 0xffffffff 1>; ctp-supply = <>; ctp_power_ldo_vol = <3300>; }; */ }; twi2: twi@0x05002800{ clock-frequency = <200000>; pinctrl-0 = <&twi2_pins_a>; pinctrl-1 = <&twi2_pins_b>; status = "disabled"; }; twi3: twi@0x05002c00{ clock-frequency = <200000>; pinctrl-0 = <&twi3_pins_a>; pinctrl-1 = <&twi3_pins_b>; status = "disabled"; }; twi5: twi@0x05003400{ clock-frequency = <400000>; pinctrl-0 = <&twi5_pins_a>; pinctrl-1 = <&twi5_pins_b>; pinctrl-names = "default", "sleep"; status = "okay"; /* ft6x06@48 { compatible = "focaltech,ft6236"; reg = <0x48>; interrupt-parent = <&pio>; interrupts = <PJ 8 IRQ_TYPE_LEVEL_LOW>; reset-gpios = <&pio PJ 9 1 0xffffffff 0xffffffff 1>; touchscreen-size-x = <720>; touchscreen-size-y = <720>; // touchscreen-inverted-x; // touchscreen-swapped-x-y; status = "disabled"; }; */ ctp { compatible = "allwinner,goodix"; ctp_name = "gt9xxnew_ts"; reg = <0x14>; device_type = "ctp"; status = "okay"; ctp_twi_id = <0x1>; ctp_twi_addr = <0x14>; ctp_screen_max_x = <480>; ctp_screen_max_y = <480>; ctp_revert_x_flag = <0x0>; ctp_revert_y_flag = <0x0>; ctp_exchange_x_y_flag = <0x0>; ctp_int_port = <&pio PJ 8 6 0xffffffff 0xffffffff 0>; ctp_wakeup = <&pio PJ 9 1 0xffffffff 0xffffffff 1>; ctp-supply = <>; ctp_power_ldo_vol = <3300>; }; }; twi6: s_twi@0x07081400{ clock-frequency = <200000>; pinctrl-0 = <&s_twi0_pins_a>; pinctrl-1 = <&s_twi0_pins_b>; twi_drv_used = <1>; status = "disabled"; no_suspend = <1>; }; standby_param: standby_param { vdd-cpu = <0x00000006>; vdd-sys = <0x00000008>; vcc-pll = <0x00000100>; osc24m-on = <0x0>; }; twi7: s_twi@0x07081800{ clock-frequency = <200000>; pinctrl-0 = <&s_twi1_pins_a>; pinctrl-1 = <&s_twi1_pins_b>; status = "disabled"; }; spi0: spi@05010000 { pinctrl-0 = <&spi0_pins_a &spi0_pins_b>; pinctrl-1 = <&spi0_pins_c>; spi_slave_mode = <0>; status = "disabled"; spi_board0 { device_type = "spi_board0"; compatible = "rohm,dh2228fv"; spi-max-frequency = <0x5f5e100>; reg = <0x0>; spi-rx-bus-width = <0x1>; spi-tx-bus-width = <0x1>; status = "disabled"; }; }; spi1: spi@05011000 { pinctrl-0 = <&spi1_pins_a &spi1_pins_b>; pinctrl-1 = <&spi1_pins_c>; spi_slave_mode = <0>; status = "disabled"; spi_board1 { device_type = "spi_board1"; compatible = "rohm,dh2228fv"; spi-max-frequency = <0x5f5e100>; reg = <0x0>; spi-rx-bus-width = <0x1>; spi-tx-bus-width = <0x1>; status = "disabled"; }; }; spi2: spi@05012000 { pinctrl-0 = <&spi2_pins_a &spi2_pins_b>; pinctrl-1 = <&spi2_pins_c>; spi_slave_mode = <0>; status = "disabled"; spi_board1 { device_type = "spi_board2"; compatible = "rohm,dh2228fv"; spi-max-frequency = <0x5f5e100>; reg = <0x0>; spi-rx-bus-width = <0x1>; spi-tx-bus-width = <0x1>; status = "disabled"; }; }; pwm0: pwm0@0300a000 { pinctrl-names = "active", "sleep"; pinctrl-0 = <&pwm0_pin_a>; pinctrl-1 = <&pwm0_pin_b>; }; pwm1: pwm1@0300a000 { pinctrl-names = "active", "sleep"; pinctrl-0 = <&pwm1_pin_a>; pinctrl-1 = <&pwm1_pin_b>; }; pwm2: pwm2@0300a000 { pinctrl-names = "active", "sleep"; pinctrl-0 = <&pwm2_pin_a>; pinctrl-1 = <&pwm2_pin_b>; }; pwm7: pwm7@0300a000 { pinctrl-names = "active", "sleep"; pinctrl-0 = <&pwm7_pin_a>; pinctrl-1 = <&pwm7_pin_b>; }; pwm8: pwm8@0300a000 { pinctrl-names = "active", "sleep"; pinctrl-0 = <&pwm8_pin_a>; pinctrl-1 = <&pwm8_pin_b>; }; ledc: ledc@0x05018000 { pinctrl-0 = <&ledc_pins_a>; pinctrl-1 = <&ledc_pins_b>; status = "disabled"; }; gpadc:gpadc{ channel_num = <1>; channel_select = <0x01>; channel_data_select = <0>; channel_compare_select = <0x01>; channel_cld_select = <0x01>; channel_chd_select = <0>; channel0_compare_lowdata = <1700000>; channel0_compare_higdata = <1200000>; key_cnt = <5>; key0_vol = <115>; key0_val = <115>; key1_vol = <240>; key1_val = <114>; key2_vol = <360>; key2_val = <139>; key3_vol = <480>; key3_val = <28>; key4_vol = <600>; key4_val = <102>; status = "okay"; }; sdc2: sdmmc@04022000 { non-removable; bus-width = <8>; mmc-ddr-1_8v; mmc-hs200-1_8v; mmc-hs400-1_8v; no-sdio; no-sd; cap-mmc-highspeed; sunxi-power-save-mode; sunxi-dis-signal-vol-sw; max-frequency = <100000000>; vmmc-supply = <>; vqmmc-supply = <>; status = "okay"; }; sdc0: sdmmc@04020000 { bus-width = <4>; cd-gpios = <&pio PF 6 6 1 3 0xffffffff>; /*non-removable;*/ /*broken-cd;*/ /*cd-inverted*/ /*data3-detect;*/ /*card-pwr-gpios = <&pio PH 14 1 1 2 0xffffffff>;*/ cd-used-24M; cap-sd-highspeed; sd-uhs-sdr50; sd-uhs-ddr50; sd-uhs-sdr104; no-sdio; no-mmc; sunxi-power-save-mode; /*sunxi-dis-signal-vol-sw;*/ max-frequency = <150000000>; ctl-spec-caps = <0x8>; vmmc-supply = <>; vqmmc33sw-supply = <>; vdmmc33sw-supply = <>; vqmmc18sw-supply = <>; vdmmc18sw-supply = <>; status = "okay"; }; sdc1: sdmmc@04021000 { bus-width = <4>; no-mmc; no-sd; cap-sd-highspeed; /*sd-uhs-sdr12*/ /*sd-uhs-sdr25*/ /*sd-uhs-sdr50;*/ /*sd-uhs-ddr50;*/ /*sd-uhs-sdr104*/ /*sunxi-power-save-mode;*/ /*sunxi-dis-signal-vol-sw;*/ cap-sdio-irq; keep-power-in-suspend; ignore-pm-notify; max-frequency = <50000000>; ctl-spec-caps = <0x8>; status = "okay"; }; /* *usb_used: usb controller enable. 0-disable, 1-enable. *usb_port_type: usb mode. 0-device, 1-host, 2-otg. *usb_detect_type: usb hotplug detect mode. 0-none, 1-vbus/id detect, 2-id/dpdm detect. *usb_drv_vbus_gpio:USB DRY_VBUS pin config or "axp_ctrl" */ usbc0:usbc0@0 { device_type = "usbc0"; usb_port_type = <0x2>; usb_detect_type = <0x1>; usb_id_gpio = <&pio PH 11 0 0 0xffffffff 0xffffffff>; usb_det_vbus_gpio = <&pio PH 12 0 0 0xffffffff 0xffffffff>; usb_regulator_io = "nocare"; usb_wakeup_suspend = <0>; usb_luns = <3>; usb_serial_unique = <0>; usb_serial_number = "20080411"; rndis_wceis = <1>; status = "okay"; }; ehci0:ehci0-controller@0x05101000 { drvvbus-supply = <®_usb1_vbus>; }; ohci0:ohci0-controller@0x05101400 { drvvbus-supply = <®_usb1_vbus>; }; usbc1:usbc1@0 { device_type = "usbc1"; usb_regulator_io = "nocare"; usb_wakeup_suspend = <1>; wakeup-source; status = "okay"; }; /* Audio Driver Modules */ codec:codec@0x05096000 { /* MIC and headphone gain setting */ mic1gain = <0x1F>; mic2gain = <0x1F>; /* ADC/DAC DRC/HPF func enabled */ /* 0x1:DAP_HP_EN; 0x2:DAP_SPK_EN; 0x3:DAP_HPSPK_EN */ adcdrc_cfg = <0x0>; adchpf_cfg = <0x0>; dacdrc_cfg = <0x0>; dachpf_cfg = <0x0>; /* Volume about */ digital_vol = <0x00>; lineout_vol = <0x1a>; headphonegain = <0x00>; /* Pa enabled about */ pa_level = <0x01>; pa_msleep_time = <0x78>; /* gpio-spk = <&pio PH 19 1 1 1 1>;*/ /* regulator about */ avcc-supply = <>; status = "okay"; }; sndcodec:sound@0 { noheadphonemic = <0x01>; status = "okay"; }; spdif:spdif-controller@0x05094000{ status = "disabled"; }; sndspdif:sound@1{ status = "disabled"; }; dmic:dmic-controller@0x05095000{ status = "disabled"; }; snddmic:sound@2{ status = "disabled"; }; daudio0:daudio@0x05090000 { mclk_div = <0x01>; frametype = <0x00>; tdm_config = <0x01>; sign_extend = <0x00>; tx_data_mode = <0x00>; rx_data_mode = <0x00>; msb_lsb_first = <0x00>; pcm_lrck_period = <0x80>; audio_format = <0x01>; daudio_master = <0x04>; signal_inversion = <0x01>; slot_width_select = <0x20>; status = "disabled"; }; snddaudio0:sound@3 { /* sunxi,snddaudio-codec = "ac108.0-003b"; sunxi,snddaudio-codec-dai = "ac108-pcm0"; */ status = "disabled"; }; daudio1:daudio@0x05091000 { mclk_div = <0x01>; frametype = <0x00>; tdm_config = <0x01>; sign_extend = <0x00>; tx_data_mode = <0x00>; rx_data_mode = <0x00>; msb_lsb_first = <0x00>; pcm_lrck_period = <0x20>; audio_format = <0x01>; daudio_master = <0x04>; signal_inversion = <0x01>; slot_width_select = <0x20>; status = "disabled"; }; snddaudio1:sound@4 { status = "disabled"; }; daudio2:daudio@0x05092000 { mclk_div = <0x01>; frametype = <0x00>; tdm_config = <0x01>; sign_extend = <0x00>; tx_data_mode = <0x00>; rx_data_mode = <0x00>; msb_lsb_first = <0x00>; pcm_lrck_period = <0x20>; audio_format = <0x01>; daudio_master = <0x04>; signal_inversion = <0x01>; slot_width_select = <0x20>; status = "disabled"; }; snddaudio2:sound@5 { status = "disabled"; }; daudio3:daudio@0x05093000 { mclk_div = <0x01>; frametype = <0x00>; tdm_config = <0x01>; sign_extend = <0x00>; tx_data_mode = <0x00>; rx_data_mode = <0x00>; msb_lsb_first = <0x00>; pcm_lrck_period = <0x20>; audio_format = <0x01>; daudio_master = <0x04>; signal_inversion = <0x01>; slot_width_select = <0x20>; status = "disabled"; }; snddaudio3:sound@6 { status = "disabled"; }; vind0:vind@0 { vind0_clk = <336000000>; vind0_isp = <300000000>; status = "okay"; actuator0:actuator@0 { device_type = "actuator0"; actuator0_name = "ad5820_act"; actuator0_slave = <0x18>; actuator0_af_pwdn = <>; actuator0_afvdd = "afvcc-csi"; actuator0_afvdd_vol = <2800000>; status = "disabled"; }; flash0:flash@0 { device_type = "flash0"; flash0_type = <2>; flash0_en = <>; flash0_mode = <>; flash0_flvdd = ""; flash0_flvdd_vol = <>; device_id = <0>; status = "disabled"; }; sensor0:sensor@0 { device_type = "sensor0"; sensor0_mname = "imx278_mipi"; sensor0_twi_cci_id = <2>; sensor0_twi_addr = <0x20>; sensor0_mclk_id = <0>; sensor0_pos = "rear"; sensor0_isp_used = <1>; sensor0_fmt = <1>; sensor0_stby_mode = <0>; sensor0_vflip = <0>; sensor0_hflip = <0>; sensor0_iovdd-supply = <>; sensor0_iovdd_vol = <1800000>; sensor0_avdd-supply = <>; sensor0_avdd_vol = <2800000>; sensor0_dvdd-supply = <>; sensor0_dvdd_vol = <1200000>; sensor0_power_en = <>; sensor0_reset = <&pio PE 7 1 0 1 0>; sensor0_pwdn = <&pio PE 6 1 0 1 0>; status = "disabled"; }; sensor1:sensor@1 { device_type = "sensor1"; sensor1_mname = "imx386_mipi"; sensor1_twi_cci_id = <3>; sensor1_twi_addr = <0x20>; sensor1_mclk_id = <1>; sensor1_pos = "front"; sensor1_isp_used = <1>; sensor1_fmt = <1>; sensor1_stby_mode = <0>; sensor1_vflip = <0>; sensor1_hflip = <0>; sensor1_iovdd-supply = <>; sensor1_iovdd_vol = <1800000>; sensor1_avdd-supply = <>; sensor1_avdd_vol = <2800000>; sensor1_dvdd-supply = <>; sensor1_dvdd_vol = <>; sensor1_power_en = <>; sensor1_reset = <&pio PE 9 1 0 1 0>; sensor1_pwdn = <&pio PE 8 1 0 1 0>; status = "disabled"; }; vinc0:vinc@0 { vinc0_csi_sel = <0>; vinc0_mipi_sel = <0>; vinc0_isp_sel = <0>; vinc0_isp_tx_ch = <0>; vinc0_tdm_rx_sel = <0>; vinc0_rear_sensor_sel = <0>; vinc0_front_sensor_sel = <1>; vinc0_sensor_list = <0>; status = "disabled"; }; vinc1:vinc@1 { vinc1_csi_sel = <0>; vinc1_mipi_sel = <0>; vinc1_isp_sel = <0>; vinc1_isp_tx_ch = <0>; vinc1_tdm_rx_sel = <0>; vinc1_rear_sensor_sel = <0>; vinc1_front_sensor_sel = <1>; vinc1_sensor_list = <0>; status = "disabled"; }; vinc2:vinc@2 { vinc2_csi_sel = <1>; vinc2_mipi_sel = <1>; vinc2_isp_sel = <1>; vinc2_isp_tx_ch = <0>; vinc2_tdm_rx_sel = <1>; vinc2_rear_sensor_sel = <0>; vinc2_front_sensor_sel = <1>; vinc2_sensor_list = <0>; status = "disabled"; }; vinc3:vinc@3 { vinc3_csi_sel = <1>; vinc3_mipi_sel = <1>; vinc3_isp_sel = <1>; vinc3_isp_tx_ch = <0>; vinc3_tdm_rx_sel = <0xff>; vinc3_rear_sensor_sel = <0>; vinc3_front_sensor_sel = <1>; vinc3_sensor_list = <0>; status = "disabled"; }; }; /*---------------------------------------------------------------------------------- disp init configuration disp_mode (0:screen0<screen0,fb0>) screenx_output_type (0:none; 1:lcd; 2:tv; 3:hdmi;5:vdpo) screenx_output_mode (used for hdmi output, 0:480i 1:576i 2:480p 3:576p 4:720p50) (5:720p60 6:1080i50 7:1080i60 8:1080p24 9:1080p50 10:1080p60) screenx_output_format (for hdmi, 0:RGB 1:yuv444 2:yuv422 3:yuv420) screenx_output_bits (for hdmi, 0:8bit 1:10bit 2:12bit 2:16bit) screenx_output_eotf (for hdmi, 0:reserve 4:SDR 16:HDR10 18:HLG) screenx_output_cs (for hdmi, 0:undefined 257:BT709 260:BT601 263:BT2020) screenx_output_dvi_hdmi (for hdmi, 0:undefined 1:dvi mode 2:hdmi mode) screen0_output_range (for hdmi, 0:default 1:full 2:limited) screen0_output_scan (for hdmi, 0:no data 1:overscan 2:underscan) screen0_output_aspect_ratio (for hdmi, 8-same as original picture 9-4:3 10-16:9 11-14:9) fbx format (4:RGB655 5:RGB565 6:RGB556 7:ARGB1555 8:RGBA5551 9:RGB888 10:ARGB8888 12:ARGB4444) fbx pixel sequence (0:ARGB 1:BGRA 2:ABGR 3:RGBA) fb0_scaler_mode_enable(scaler mode enable, used FE) fbx_width,fbx_height (framebuffer horizontal/vertical pixels, fix to output resolution while equal 0) lcdx_backlight (lcd init backlight,the range:[0,256],default:197 lcdx_yy (lcd init screen bright/contrast/saturation/hue, value:0~100, default:50/50/57/50) lcd0_contrast (LCD contrast, 0~100) lcd0_saturation (LCD saturation, 0~100) lcd0_hue (LCD hue, 0~100) framebuffer software rotation setting: disp_rotation_used: (0:disable; 1:enable,you must set fbX_width to lcd_y, set fbX_height to lcd_x) degreeX: (X:screen index; 0:0 degree; 1:90 degree; 3:270 degree) degreeX_Y: (X:screen index; Y:layer index 0~15; 0:0 degree; 1:90 degree; 3:270 degree) devX_output_type : config output type in bootGUI framework in UBOOT-2018. (0:none; 1:lcd; 2:tv; 4:hdmi;) devX_output_mode : config output resolution(see include/video/sunxi_display2.h) of bootGUI framework in UBOOT-2018 devX_screen_id : config display index of bootGUI framework in UBOOT-2018 devX_do_hpd : whether do hpd detectation or not in UBOOT-2018 chn_cfg_mode : Hardware DE channel allocation config. 0:single display with 6 channel, 1:dual display with 4 channel in main display and 2 channel in second display, 2:dual display with 3 channel in main display and 3 channel in second in display. ----------------------------------------------------------------------------------*/ disp: disp@06000000 { disp_init_enable = <1>; disp_mode = <1>; screen0_output_type = <1>; screen0_output_mode = <4>; screen0_output_format = <0>; screen0_output_bits = <0>; screen0_output_eotf = <4>; screen0_output_cs = <257>; screen0_output_dvi_hdmi = <2>; screen0_output_range = <2>; screen0_output_scan = <0>; screen0_output_aspect_ratio = <8>; screen1_output_type = <1>; screen1_output_mode = <4>; screen1_output_format = <0>; screen1_output_bits = <0>; screen1_output_eotf = <4>; screen1_output_cs = <257>; screen1_output_dvi_hdmi = <2>; screen1_output_range = <2>; screen1_output_scan = <0>; screen1_output_aspect_ratio = <8>; dev0_output_type = <1>; dev0_output_mode = <4>; dev0_screen_id = <0>; dev0_do_hpd = <0>; dev1_output_type = <1>; dev1_output_mode = <4>; dev1_screen_id = <1>; dev1_do_hpd = <0>; def_output_dev = <0>; hdmi_mode_check = <1>; fb0_format = <0>; fb0_width = <0>; fb0_height = <0>; fb1_format = <0>; fb1_width = <0>; fb1_height = <0>; chn_cfg_mode = <1>; disp_para_zone = <1>; /*VCC-LCD*/ dc1sw-supply = <>; /*VCC-DSI*/ eldo3-supply = <>; /*VCC-PD*/ dcdc1-supply = <>; status = "okay"; }; /*---------------------------------------------------------------------------------- ;lcd0 configuration ;lcd_if: 0:hv(sync+de); 1:8080; 2:ttl; 3:lvds; 4:dsi; 5:edp; 6:extend dsi ;lcd_hv_if 0:Parallel RGB; 8:Serial RGB; 10:Dummy RGB; 11: RGB Dummy;12:CCIR656 ;lcd_hv_clk_phase 0:0 degree;1:90 degree;2:180 degree;3:270 degree ;lcd_hv_sync_polarity 0:vs low,hs low; 1:vs high,hslow; 2:vs low,hs high; 3:vs high,hs high ;lcd_hv_syuv_seq 0:YUYV; 1:YVYU; 2:UYVY; 3:VYUY ;lcd_cpu_if 0:18bit/1 cycle parallel(RGB666); 4:16bit/1cycle parallel (RGB565) ; 6:18bit/3 cycle parallel(RGB666); 7:16bit/2cycle parallel (RGB565) ;lcd_cpu_te 0:frame auto trigger; 1:frame triggered by te rising edge; 2:frame triggered by te falling edge; ;lcd_dsi_if 0:video mode; 1: Command mode; 2:video burst mode ;lcd_dsi_te 0:frame auto trigger; 1:frame triggered by te rising edge; 2:frame triggered by te falling edge; ;lcd_x: lcd horizontal resolution ;lcd_y: lcd vertical resolution ;lcd_width: width of lcd in mm ;lcd_height: height of lcd in mm ;lcd_dclk_freq: in MHZ unit ;lcd_pwm_freq: in HZ unit ;lcd_pwm_pol: lcd backlight PWM polarity ;lcd_pwm_max_limit lcd backlight PWM max limit(<=255) ;lcd_hbp: hsync back porch(pixel) + hsync plus width(pixel); ;lcd_ht: hsync total cycle(pixel) ;lcd_vbp: vsync back porch(line) + vysnc plus width(line) ;lcd_vt: vysnc total cycle(line) ;lcd_hspw: hsync plus width(pixel) ;lcd_vspw: vysnc plus width(pixel) ;lcd_lvds_if: 0:single link; 1:dual link(odd and even); 2:dual link(same pixel) ;lcd_lvds_colordepth: 0:8bit; 1:6bit ;lcd_lvds_mode: 0:NS mode; 1:JEIDA mode ;lcd_frm: 0:disable; 1:enable rgb666 dither; 2:enable rgb656 dither ;lcd_io_phase: 0:noraml; 1:intert phase(0~3bit: vsync phase; 4~7bit:hsync phase; ; 8~11bit:dclk phase; 12~15bit:de phase) ;lcd_gamma_en lcd gamma correction enable ;lcd_bright_curve_en lcd bright curve correction enable ;lcd_cmap_en lcd color map function enable ;deu_mode 0:smoll lcd screen; 1:large lcd screen(larger than 10inch) ;lcdgamma4iep: Smart Backlight parameter, lcd gamma vale * 10; ; decrease it while lcd is not bright enough; increase while lcd is too bright ;smart_color 90:normal lcd screen 65:retina lcd screen(9.7inch) ;Pin setting for special function ie.LVDS, RGB data or vsync ; name(donot care) = port:PD12<pin function><pull up or pull down><drive ability><output level> ;Pin setting for gpio: ; lcd_gpio_X = port:PD12<pin function><pull up or pull down><drive ability><output level> ;Pin setting for backlight enable pin ; lcd_bl_en = port:PD12<pin function><pull up or pull down><drive ability><output level> ;fsync setting, pulse to csi ;lcd_fsync_en (0:disable fsync,1:enable) ;lcd_fsync_act_time (active time of fsync, unit:pixel) ;lcd_fsync_dis_time (disactive time of fsync, unit:pixel) ;lcd_fsync_pol (0:positive;1:negative) ;gpio config: <&pio for cpu or &r_pio for cpus, port, port num, pio function, pull up or pull down(default 0), driver level(default 1), data> ;For dual link lvds: use lvds2link_pins_a and lvds2link_pins_b instead ;For rgb24: use rgb24_pins_a and rgb24_pins_b instead ;For lvds1: use lvds1_pins_a and lvds1_pins_b instead ;For lvds0: use lvds0_pins_a and lvds0_pins_b instead ;----------------------------------------------------------------------------------*/ lcd0: lcd0@01c0c000 { lcd_used = <1>; lcd_driver_name = "tft08006"; lcd_backlight = <100>; lcd_if = <4>; lcd_x = <720>; lcd_y = <1440>; lcd_width = <52>; lcd_height = <52>; lcd_dclk_freq = <70>; lcd_pwm_used = <1>; lcd_pwm_ch = <0>; //PD23 // lcd_pwm_ch = <1>;//PI0 lcd_pwm_freq = <1000>; lcd_pwm_pol = <0>; lcd_pwm_max_limit = <255>; lcd_hbp = <32>; lcd_ht = <868>; lcd_hspw = <4>; lcd_vbp = <12>; lcd_vt = <1488>; lcd_vspw = <4>; lcd_dsi_if = <0>; lcd_dsi_lane = <4>; lcd_lvds_if = <0>; lcd_lvds_colordepth = <0>; lcd_lvds_mode = <0>; lcd_frm = <0>; lcd_hv_clk_phase = <0>; lcd_hv_sync_polarity= <0>; lcd_io_phase = <0x0000>; lcd_gamma_en = <0>; lcd_bright_curve_en = <0>; lcd_cmap_en = <0>; lcd_fsync_en = <0>; lcd_fsync_act_time = <1000>; lcd_fsync_dis_time = <1000>; lcd_fsync_pol = <0>; deu_mode = <0>; lcdgamma4iep = <22>; smart_color = <90>; lcd_pin_power; lcd_power; /*lcd_bl_en = <&pio PB 8 1 0 3 1>;*/ /*lcd_gpio_1 = <&pio PD 23 1 0 3 1>;*/ lcd_gpio_0 = <&r_pio PL 5 1 1 3 1>; //PL5 //lcd_gpio_0 = <&pio PI 1 1 1 3 1>; //PI1 pinctrl-0 = <&dsi4lane_pins_a>; pinctrl-1 = <&dsi4lane_pins_b>; status = "okay"; }; lcd1: lcd1@01c0c001 { lcd_used = <1>; lcd_driver_name = "st7701s_rgb"; lcd_if = <0>; lcd_hv_if = <0>; lcd_width = <70>; lcd_height = <72>; lcd_x = <480>; lcd_y = <480>; lcd_dclk_freq = <11>; lcd_hbp = <60>; lcd_ht = <612>; lcd_hspw = <12>; lcd_vbp = <18>; lcd_vt = <520>; lcd_vspw = <4>; lcd_backlight = <250>;// 0 ~ 255 lcd_pwm_used = <1>; lcd_pwm_ch = <8>; lcd_pwm_freq = <20000>; lcd_pwm_pol = <1>; lcd_pwm_max_limit = <255>; lcd_bright_curve_en = <0>; lcd_frm = <1>; lcd_io_phase = <0x0000>; lcd_gamma_en = <0>; lcd_cmap_en = <0>; lcd_hv_clk_phase = <1>; lcd_hv_sync_polarity= <0>; lcd_rb_swap = <0>; //lcd_bl_en = <&pio PI 7 1 1 3 1>; lcd_gpio_0 = <&pio PJ 16 1 1 3 1>;//reset lcd_gpio_1 = <&pio PJ 17 1 1 3 1>;//cs lcd_gpio_2 = <&pio PC 2 1 1 3 1>;//sdi lcd_gpio_3 = <&pio PC 12 1 1 3 1>;//scl /* lcd_gpio_2 = <&r_pio PL 2 1 1 3 1>;//sdi lcd_gpio_3 = <&r_pio PL 3 1 1 3 1>;//scl */ lcd_pin_power; lcd_power; pinctrl-0 = <&rgb18_pins_c>; pinctrl-1 = <&rgb18_pins_d>; status = "okay"; }; wlan: wlan@0 { compatible = "allwinner,sunxi-wlan"; pinctrl-0; pinctrl-names; wlan_busnum = <0x1>; wlan_power; wlan_io_regulator; wlan_regon = <&r_pio PL 10 1 0xffffffff 0xffffffff 0>; wlan_hostwake = <&r_pio PL 7 1 0xffffffff 0xffffffff 0>; chip_en; power_en; status = "okay"; }; bt: bt@0 { compatible = "allwinner,sunxi-bt"; clocks = <&clk_losc_out>, <&clk_dcxo_out>; bt_power; bt_io_regulator; bt_rst_n = <&r_pio PL 5 1 0xffffffff 0xffffffff 0>; bt_wake = <&r_pio PL 4 1 0xffffffff 0xffffffff 0>; bt_hostwake = <&r_pio PL 6 1 0xffffffff 0xffffffff 0>; status = "okay"; }; modem: modem@0 { compatible = "allwinner,sunxi-modem"; modem_power; modem_rst = <&pio PB 3 1 0xffffffff 0xffffffff 1>; status = "disabled"; }; btlpm: btlpm@0 { compatible = "allwinner,sunxi-btlpm"; uart_index = <0x1>; bt_wake = <&r_pio PL 4 1 0xffffffff 0xffffffff 1>;//AP-WAKE-BT bt_hostwake = <&r_pio PL 6 1 0xffffffff 0xffffffff 1>;//BT-WAKE-AP status = "okay"; }; /* btlpm: btlpm@0 { compatible = "allwinner,sunxi-btlpm"; uart_index = <0x1>; bt_wake = <&r_pio PL 3 1 0xffffffff 0xffffffff 1>; bt_hostwake = <&r_pio PL 4 6 0xffffffff 0xffffffff 1>; status = "disabled"; }; */ addr_mgt: addr_mgt@0 { compatible = "allwinner,sunxi-addr_mgt"; type_addr_wifi = <0x0>; type_addr_bt = <0x0>; type_addr_eth = <0x0>; status = "okay"; }; uart0: uart@05000000 { uart-supply = <>; }; uart1: uart@05000400 { status = "okay"; }; uart5: uart@05001400 { status = "disabled"; }; uart6: uart@05001800 { status = "disabled"; rs485-en = <&pio PI 11 1 1 0xffffffff 1>; }; ncs8801s { status = "disabled"; ncs8801s_reset = <&pio PI 14 1 0xffffffff 0xffffffff 0>; }; }; gpu: gpu@0x01800000 { gpu_idle = <0>; dvfs_status = <1>; pll_rate = <504000>; independent_power = <0>; operating-points = < /* KHz uV */ 504000 950000 472500 950000 441000 950000 252000 950000 >; gpu-supply = <>; }; opp_dvfs_table:opp_dvfs_table { cluster_num = <1>; opp_table_count = <1>; }; }; &cpu0 { cpu-supply = <>; };
-
一顿操作猛如虎, 终于搞定MIPI LCD
Copyright © 2023 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号