也来驱动8080屏
-
T113 驱动ili9342 8080屏,rgb565 16位模式下正常显示。
rgb16_pins_a: rgb16@0 { pins = "PD1", "PD2","PD3","PD4","PD5","PD6", "PD7", "PD8", \ "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PD16", "PD17", \ "PD18", "PD19", "PD20", "PD21"; allwinner,function = "rgb16"; allwinner,muxsel = <2>; allwinner,drive = <3>; allwinner,pull = <0>; }; rgb16_pins_b: rgb16@1 { pins = "PD1", "PD2","PD3","PD4","PD5","PD6", "PD7", "PD8", \ "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PD16", "PD17", \ "PD18", "PD19", "PD20", "PD21"; allwinner,function = "rgb16_suspend"; allwinner,muxsel = <15>; allwinner,drive = <1>; allwinner,pull = <0>; };
&lcd0 { lcd_used = <1>; lcd_driver_name = "default_lcd"; /* part 2 */ lcd_if = <1>; lcd_cpu_if = <8>; /* part 3 */ lcd_x = <320>; lcd_y = <240>; lcd_width = <49>; lcd_height = <37>; lcd_dclk_freq = <6>; // DOTCLK频率 lcd_hspw = <10>; // Hsync = 10 DOTCLK lcd_hbp = <20>; // HBP = 20 DOTCLK lcd_ht = <360>; // 总水平时序 = 320 + 10 + 20 + 10 = 360 DOTCLK lcd_vspw = <2>; // Vsync = 2 lines lcd_vbp = <4>; // VBP = 4 lines lcd_vt = <250>; // 总垂直时序 = 240 + 2 + 4 + 4 = 250 lines /* part 4 */ lcd_backlight = <170>; lcd_pwm_used = <0>; lcd_pwm_ch = <4>; lcd_pwm_freq = <20000>; lcd_pwm_pol = <1>; lcd_bright_curve_en = <0>; /* part 5 */ lcd_cpu_mode= <1>; lcd_cpu_te= <2>; /* part 6 */ lcd_frm = <2>; lcd_gamma_en = <0>; lcd_cmap_en = <0>; lcd_rb_swap = <0>; /* part 7 */ lcd_gpio_0 = <&pio PE 1 GPIO_ACTIVE_HIGH>; // cs pin lcd_gpio_1 = <&pio PE 9 GPIO_ACTIVE_LOW>; pinctrl-0 = <&rgb16_pins_a>; pinctrl-1 = <&rgb16_pins_b>; };
&disp { disp_init_enable = <1>; disp_mode = <0>; screen0_output_type = <1>; screen0_output_mode = <4>; screen1_output_type = <3>; 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 = <4>; dev1_output_mode = <10>; dev1_screen_id = <1>; dev1_do_hpd = <1>; def_output_dev = <1>; hdmi_mode_check = <3>; disp_rotation_used = <0>; degree0 = <0>; fb0_format = <0>; fb0_buffer_num = <1>; fb0_width = <320>; fb0_height = <240>; fb1_format = <0>; fb1_width = <0>; fb1_height = <0>; chn_cfg_mode = <1>; disp_para_zone = <1>; /*VCC-LCD*/ /* dc1sw-supply = <®_dc1sw>;*/ /*VCC-DSI*/ /* eldo3-supply = <®_eldo3>;*/ /*VCC-PD*/ /* dcdc1-supply = <®_dcdc1>;*/ };
但是如果是在18位模式下,显示是白屏。
硬件支持18位。原理图是
设备树是:rgb18_pins_a: rgb18@0 { allwinner,pins = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", \ "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PD16", "PD17", "PD18", "PD19", \ "PD20", "PD21"; allwinner,pname = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", \ "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PD16", "PD17", "PD18", "PD19", \ "PD20", "PD21"; allwinner,function = "rgb18"; allwinner,muxsel = <2>; allwinner,drive = <3>; allwinner,pull = <0>; }; rgb18_pins_b: rgb18@1 { allwinner,pins = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", \ "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PD16", "PD17", "PD18", "PD19", \ "PD20", "PD21"; allwinner,pname = "PD0", "PD1", "PD2", "PD3", "PD4", "PD5", "PD6", "PD7", "PD8", "PD9", \ "PD10", "PD11", "PD12", "PD13", "PD14", "PD15", "PD16", "PD17", "PD18", "PD19", \ "PD20", "PD21"; allwinner,function = "rgb18_suspend"; allwinner,muxsel = <15>; allwinner,drive = <1>; allwinner,pull = <0>; };
&lcd0 { lcd_used = <1>; lcd_driver_name = "default_lcd"; /* part 2 */ lcd_if = <1>; lcd_cpu_if = <0>; /* part 3 */ lcd_x = <320>; lcd_y = <240>; lcd_width = <49>; lcd_height = <37>; lcd_dclk_freq = <6>; // DOTCLK频率 lcd_hspw = <10>; // Hsync = 10 DOTCLK lcd_hbp = <20>; // HBP = 20 DOTCLK lcd_ht = <360>; // 总水平时序 = 320 + 10 + 20 + 10 = 360 DOTCLK lcd_vspw = <2>; // Vsync = 2 lines lcd_vbp = <4>; // VBP = 4 lines lcd_vt = <250>; // 总垂直时序 = 240 + 2 + 4 + 4 = 250 lines /* part 4 */ lcd_backlight = <170>; lcd_pwm_used = <0>; lcd_pwm_ch = <4>; lcd_pwm_freq = <20000>; lcd_pwm_pol = <1>; lcd_bright_curve_en = <0>; /* part 5 */ lcd_cpu_mode= <1>; lcd_cpu_te= <0>; /* part 6 */ lcd_frm = <1>; lcd_gamma_en = <0>; lcd_cmap_en = <0>; lcd_rb_swap = <0>; /* part 7 */ lcd_gpio_0 = <&pio PE 1 GPIO_ACTIVE_HIGH>; // cs pin lcd_gpio_1 = <&pio PE 9 GPIO_ACTIVE_LOW>; pinctrl-0 = <&rgb18_pins_a>; pinctrl-1 = <&rgb18_pins_b>; };
初始化时改了3A寄存器
u32 id[5]; DBG_INFO("\n"); lcd_bl_init(); /*lcd_cs, active low */ lcd_cs(0); sunxi_lcd_delay_ms(10); panel_reset(1); sunxi_lcd_delay_ms(20); panel_reset(0); sunxi_lcd_delay_ms(20); panel_reset(1); sunxi_lcd_delay_ms(120); memset(id,0,sizeof(id)); tcon0_cpu_rd_24b_data(0, 0xD3, id, 4); printk("ili9342 0x%02x 0x%02x 0x%02x 0x%02x\n", id[0], id[1], id[2], id[3]); sunxi_lcd_cpu_write_index(0,0xB9); sunxi_lcd_cpu_write_data(0,0xFF); sunxi_lcd_cpu_write_data(0,0x93); sunxi_lcd_cpu_write_data(0,0x42); //sunxi_lcd_cpu_write_index(0,0x21); sunxi_lcd_cpu_write_index(0,0x36); sunxi_lcd_cpu_write_data(0,0x88); sunxi_lcd_cpu_write_index(0,0xB6); sunxi_lcd_cpu_write_data(0,0x0A); sunxi_lcd_cpu_write_data(0,0xA2);//0x80 sunxi_lcd_cpu_write_index(0,0xC0); sunxi_lcd_cpu_write_data(0,0x1D); sunxi_lcd_cpu_write_data(0,0x0A); sunxi_lcd_cpu_write_index(0,0xC1); sunxi_lcd_cpu_write_data(0,0x02); //Vgate voltage sunxi_lcd_cpu_write_index(0,0xC5); sunxi_lcd_cpu_write_data(0,0x2F); sunxi_lcd_cpu_write_data(0,0x2F);//27 sunxi_lcd_cpu_write_index(0,0xC7); sunxi_lcd_cpu_write_data(0,0xC3); //A4vcom offset sunxi_lcd_cpu_write_index(0,0xB8); sunxi_lcd_cpu_write_data(0,0x0B); sunxi_lcd_cpu_write_index(0,0xE0); sunxi_lcd_cpu_write_data(0,0x0F); sunxi_lcd_cpu_write_data(0,0x33);//24 sunxi_lcd_cpu_write_data(0,0x30);// sunxi_lcd_cpu_write_data(0,0x0c); sunxi_lcd_cpu_write_data(0,0x0F); sunxi_lcd_cpu_write_data(0,0x08);//06 sunxi_lcd_cpu_write_data(0,0x5D);//50 sunxi_lcd_cpu_write_data(0,0x66);//75 sunxi_lcd_cpu_write_data(0,0x4A);//3f sunxi_lcd_cpu_write_data(0,0x07); sunxi_lcd_cpu_write_data(0,0x13);//12 sunxi_lcd_cpu_write_data(0,0x05); sunxi_lcd_cpu_write_data(0,0x1B);//11 sunxi_lcd_cpu_write_data(0,0x0E);//0B sunxi_lcd_cpu_write_data(0,0x08); sunxi_lcd_cpu_write_index(0,0xE1); sunxi_lcd_cpu_write_data(0,0x08); sunxi_lcd_cpu_write_data(0,0x0E);//1D sunxi_lcd_cpu_write_data(0,0x11);//20 sunxi_lcd_cpu_write_data(0,0x02); sunxi_lcd_cpu_write_data(0,0x0E); sunxi_lcd_cpu_write_data(0,0x02);//04 sunxi_lcd_cpu_write_data(0,0x24);//31 sunxi_lcd_cpu_write_data(0,0x33);//24 sunxi_lcd_cpu_write_data(0,0x37);//42 sunxi_lcd_cpu_write_data(0,0x03); sunxi_lcd_cpu_write_data(0,0x0A);//0B sunxi_lcd_cpu_write_data(0,0x09); sunxi_lcd_cpu_write_data(0,0x26);//30 sunxi_lcd_cpu_write_data(0,0x33);//36 sunxi_lcd_cpu_write_data(0,0x0F); sunxi_lcd_cpu_write_index(0,0x11); //Exit Sleep sunxi_lcd_delay_ms(10); // 设置18位RGB接口 sunxi_lcd_cpu_write_index(0,0xB6); // Display Function Control sunxi_lcd_cpu_write_data(0,0x0A); // RGB interface control sunxi_lcd_cpu_write_data(0,0xA2); // RGB interface setting [7]=1 18bit sunxi_lcd_cpu_write_index(0,0x3A); sunxi_lcd_cpu_write_data(0,0x66); //55=16 bits/pixel 66=18 bits/pixel sunxi_lcd_cpu_write_index(0,0x11); //Exit Sleep sunxi_lcd_delay_ms(80); //sunxi_lcd_cpu_write_index(0,0x29); //sunxi_lcd_cpu_write_index(0,0x2C); #if defined(CPU_TRI_MODE) /* enable te, mode 0 */ sunxi_lcd_cpu_write_index(0, 0x35); sunxi_lcd_cpu_write_data(0, 0x00); sunxi_lcd_cpu_write_index(0, 0x44); sunxi_lcd_cpu_write_data(0, 0x00); sunxi_lcd_cpu_write_data(0, 0x80); #endif //sunxi_lcd_cpu_write_index(0, 0x11); //sunxi_lcd_delay_ms(120); sunxi_lcd_cpu_write_index(0, 0x29); sunxi_lcd_cpu_write_index(0, 0x2c);
-
18位模式到底要怎么驱动呢?
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号