A133适配AMOLED屏幕,LCD时序参数过小导致无法进入U-Boot
-
目前有一个LCD驱动,里面的LCD时序参数是:
lcd_hbp = <40>; lcd_ht = <820>; lcd_hspw = <20>; lcd_vbp = <16>; lcd_vt = <1320>; lcd_vspw = <8>;
然后能正常进入U-Boot,但是新屏幕,我修改了如下参数:
lcd_hbp = <20>; lcd_ht = <654>; lcd_hspw = <32>; lcd_vbp = <12>; lcd_vt = <828>; lcd_vspw = <4>;
然后就发现U-Boot进不去了,然后我适当增大了
lcd_hbp
、lcd_vbp
的值,然后就能进入U-Boot了,修改后的参数是:lcd_hbp = <40>; lcd_ht = <684>; lcd_hspw = <32>; lcd_vbp = <16>; lcd_vt = <888>; lcd_vspw = <4>;
所以我现在的疑问是LCD时序参数里面
lcd_hbp
与lcd_vbp
是不是有一个最小值限制呀?另外屏厂给的推荐参数就是那个不能进入U-Boot的参数值,适当增大之后对屏幕驱动是不是有相关影响呀?求各位大佬帮帮忙 -
@ceoifung 看这个
@anruliu 在 D1H支持1920*1200分辨率,但是1080*1920竖屏支持吗 中说:你是怎么互换的,如果计算出现负数肯定进不去
lcd_x = 屏厂给的实际的x lcd_hbp = 屏厂给的实际的hbp + 屏厂给的实际的hsync lcd_ht = 屏厂给的实际的lcd_h + 屏厂给的实际的hsync + 屏厂给的实际的hbp + 屏厂给的实际的hfp lcd_hspw = 屏厂给的实际的hsync lcd_y = 屏厂给的实际的y lcd_vpp = 屏厂给的实际的vbp + 屏厂给的实际的vsync lcd_vt = 屏厂给的实际的lcd_y + 屏厂给的实际的vsync + 屏厂给的实际的vbp + 屏厂给的实际的vfp lcd_vspw = 屏厂给的实际的vsync
-
@anruliu 我这边重新计算了以下相关的值,还是进不去u-boot,我的屏幕13.3寸,这个和屏幕大小尺寸会有关系吗?以下是开机后,打印的内容
[SCP] :sunxi-arisc driver begin startup 2 [SCP] :0x1 [SCP] :arisc version: [] [SCP] :arisc startup ready [SCP] :arisc startup notify message feedback [SCP] :send hard sync feedback message: 0x900200 [SCP] :sunxi-arisc driver v1.10 is starting [00.616]PMU: AXP803 [00.618]PMU: AXP803 bias_name:pc_bias bias_vol:1800 [00.688]CPU=1008 MHz,PLL6=600 Mhz,AHB=200 Mhz, APB1=100Mhz MBus=400Mhz [00.695]drv_disp_init [00.720]drv_disp_init finish [00.726]gic: sec monitor mode [00.728]flash init start [00.730]workmode = 0,storage type = 2 [00.734][mmc]: mmc driver ver uboot2018:2020-5-25 9:26:00-202007011433 [00.741][mmc]: get sdc_type fail and use default host:tm4. [00.753][mmc]: SUNXI SDMMC Controller Version:0x50300 [00.781][mmc]: Best spd md: 4-HS400, freq: 3-100000000, Bus width: 8 [00.787]sunxi flash init ok [00.791]Loading Environment from SUNXI_FLASH... OK [00.800]out of usb burn from boot: not need burn key [00.804]boot_gui_init:start [00.809]set disp.dev2_output_type fail. using defval=0
串口输出到
[00.809]set disp.dev2_output_type fail. using defval=0
就没有内容了,然后测试发现初始化完LCD_cfg_panel_info
这个函数之后,进不去LCD_power_on
这个函数 -
@ceoifung 贴出你的dts lcd0部分
-
lcd_x = 屏厂给的实际的x lcd_hbp = 屏厂给的实际的hbp + 屏厂给的实际的hsync lcd_ht = 屏厂给的实际的lcd_h + 屏厂给的实际的hsync + 屏厂给的实际的hbp + 屏厂给的实际的hfp lcd_hspw = 屏厂给的实际的hsync lcd_y = 屏厂给的实际的y lcd_vbp = 屏厂给的实际的vbp + 屏厂给的实际的vsync lcd_vt = 屏厂给的实际的lcd_y + 屏厂给的实际的vsync + 屏厂给的实际的vbp + 屏厂给的实际的vfp lcd_vspw = 屏厂给的实际的vsync
驱动会通过上面的参数计算lcd_xbp与lcd_xspw的值来确定实际的屏幕的参数(实际的vsync,实际的vbp等等),当给的值不对计算出现负数的时候会卡死不启动。
-
lcd0: lcd0@01c0c000 { lcd_used = <1>; lcd_driver_name = "xiaor_amoled"; lcd_backlight = <255>; lcd_if = <4>; lcd_x = <600>; lcd_y = <800>; lcd_width = <190>; lcd_height = <254>; lcd_dclk_freq = <55>; lcd_pwm_used = <0>; lcd_pwm_ch = <0>; lcd_pwm_freq = <5000>; lcd_pwm_pol = <1>; lcd_pwm_max_limit = <250>; lcd_hbp = <52>; lcd_ht = <654>; lcd_hspw = <32>; lcd_vbp = <16>; lcd_vt = <828>; lcd_vspw = <4>; lcd_frm = <0>; lcd_io_phase = <0>; lcd_gamma_en = <0>; lcd_bright_curve_en = <0>; lcd_cmap_en = <0>; deu_mode = <0>; lcdgamma4iep = <22>; smart_color = <90>; lcd_dsi_if = <0>; lcd_dsi_lane = <4>; lcd_dsi_format = <0>; lcd_dsi_te = <0>; lcd_dsi_eotp = <0>; lcd_pin_power = "eldo1"; lcd_power = "dc1sw"; //lcd_bl_en = <&pio PG 9 1 0 3 1>; lcd_gpio_0 = <&pio PB 6 1 1 3 1>; lcd_gpio_1 = <&pio PB 2 1 1 3 1>; lcd_gpio_2 = <&pio PD 20 1 1 3 1>; pinctrl-0 = <&dsi4lane_pins_a>; pinctrl-1 = <&dsi4lane_pins_b>; };
-
@ceoifung hfp = 654-600-52=2,屏厂给的hfp怎么这么小
-
@anruliu 屏厂给的这个参数就是这么小的
-
@anruliu 请问一下:屏厂给的参数就是这样的,对方FAE说这个参数可能不适用于所有的平台,需要芯片厂家推荐一个合适的值,下面是厂商给的部分参数,A133这个平台LCD的时序与这个屏幕怎么个调整比较合适呢?大佬有什么解决方法吗?
建议值:HSW=32,HBP=20,HFP=2, VSW=4,VBP=12,VFP=12 分辨率:720*800 Frame rate:60HZ
-
lcd_dclk_freq = <38>;
lcd_x = <720>;
lcd_y = <800>;lcd_hbp = <52>;
lcd_ht = <774>;
lcd_hspw = <32>;
lcd_vbp = <16>;
lcd_vt = <828>;
lcd_vspw = <4>;不行的话,lcd_ht以2为挡位慢慢网上加试试
Copyright © 2024 深圳全志在线有限公司 粤ICP备2021084185号 粤公网安备44030502007680号