欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

展讯平台 LCD(Mipi)移植步骤及问题归纳

程序员文章站 2022-03-22 15:17:34
...

PortingGuide

Backlight

背光的硬件设计有两种情况: 
1. 内置并联背光 
2. 外置串联背光 
对于 1 的情况,步骤如下: 
1.移植对应的 lcd 驱动。 
2.设置u-boot\drivers\video\sprdfb\sprdfb_main.c中的背光为内置: 
void set_backlight(uint32_t value)函数中,添加white_led = 1; 
3. 在 kernel/drivers/video/backlight/sprd_backlight.c 的 
#if (defined(CONFIG_SPX15))前面 
删除下述宏定义,只定义 #define SPRD_BACKLIGHT_WHITELED

  1. -- #ifdef CONFIG_BACKLIGHT_SPRD_PWM_MODE
  2. -- /*if the backlight is driven by pwm, use this MACRO */
  3. -- #define SPRD_BACKLIGHT_PWM
  4. -- #else
  5. -- /*the backlight is driven by whiteled default */
  6. -- #define SPRD_BACKLIGHT_WHITELED
  7. -- #define SPRD_DIM_PWM_MODE
  8. -- #endif
  9. ++ #define SPRD_BACKLIGHT_WHITELED
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

4.在sprd_bl_whiteled_update_status中,删除如下操作:

  1. sci_adi_raw_write(PD_PWM_BASE + PWM_SCALE, PWM_PRESCALE);
  2. sci_adi_raw_write(PD_PWM_BASE + PWM_CNT,(pwm_level << 8) | PWM_MOD_MAX);
  3. sci_adi_raw_write(PD_PWM_BASE + PWM_SCALE, PWM_SCALE | PWM_ENABLE);
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

对于 2 的情况, 展讯默认采用的便是外置串联,所以不需要进行配置。但是可以通过 展讯平台 LCD(Mipi) 加载流程分析 来了解 LCD 和 Backlight 的加载过程。

LCD

LCD 的加载分为两个部分,U-Boot 和 Kernel,同样移植也分为这两个部分。

U-Boot

1.添加驱动文件 u-boot/drivers/video/sprdfb/lcd/lcd_ek79007_mipi.c 
2.添加编译规则 u-boot/drivers/video/sprdfb/lcd/Makefile

        COBJS-$(CONFIG_FB_LCD_EK79007_MIPI) += lcd_ek79007_mipi.o
  • 1
  • 1

3.配置 LCD 编译选项及 LCD 尺寸 u-boot/include/configs/sp7731gea_hdr.h 
展讯平台 LCD(Mipi)移植步骤及问题归纳
4.关联到内核 u-boot/drivers/video/sprdfb_panel.c 
添加 
展讯平台 LCD(Mipi)移植步骤及问题归纳
展讯平台 LCD(Mipi)移植步骤及问题归纳

 Kernel

1.添加驱动文件 kernel/drivers/video/sprdfb/lcd/lcd_ek79007_mipi.c 
注意代码文件中需要添加 
展讯平台 LCD(Mipi)移植步骤及问题归纳

2.添加 Makefile

        obj-$(CONFIG_FB_LCD_EK79007_MIPI) += lcd_ek79007_mipi.o
  • 1
  • 1

3.添加 config kernel/arch/arm/configs/sp7731gea_hdr-dt_defconfig

        CONFIG_FB_LCD_EK79007_MIPI=y
  • 1
  • 1

4.修改 Kconfig

  1. config FB_LCD_EK79007_MIPI
  2. boolean "support ek79007 mipi panel"
  3. default y
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

调试过程中遇到的问题

Q: Backlight 不亮 
A: 因为采用的是展讯默认的外置串联背光电路,所以软件方面不需要额外配置。 
检查硬件: 
检查背光的电压是否有给 
展讯平台 LCD(Mipi)移植步骤及问题归纳
——> 
展讯平台 LCD(Mipi)移植步骤及问题归纳
——> 
展讯平台 LCD(Mipi)移植步骤及问题归纳
依次检查 
LCM_BL_PWM 输出的波形 (正常) 
LEDA 电压(异常)交由硬件检查进一步发现,有一颗电阻阻值异常(1.3欧错贴成了1.3k欧) 
修改后,背光正常:白屏

Q:LCD 白屏 
A:移植完成驱动后应该至少可以点亮(显示东西,虽然显示的东西可能有误) 
但是实际为白屏(只点亮了背光) 
检查 屏的电压是否正常。要保证这样几个地方电压是正常的: 
VGH 和 VGL 
展讯平台 LCD(Mipi)移植步骤及问题归纳
——> 这个地方的使能脚控制 VGH 和 VGL 
展讯平台 LCD(Mipi)移植步骤及问题归纳
——> 发现LCD_PWREN 接到的是 LCM_CABC 
展讯平台 LCD(Mipi)移植步骤及问题归纳
而 LCM_CABC 是无法管脚复用的 
所以直接飞线到一个高电压,LCD_PWREN 使能脚为高电压。

Q:开机时,先白屏,然后慢慢的变暗(背光一直为亮) 
A:继续检查硬件,发现 LCD_VDD 没有 LDO 电压供电。 
解决办法是 从 BUFFER 电压飞线过去,用的是 VDD_1V8,板子走线宽度是 2.5mm,可以正常使用。 
至此 Kernel 部分可以正常显示,但是 U-Boot 阶段花屏。

Q:抓取 Log 发现 LCD panel info: 720 x 1280, 16 bit/pix 
但是实际应该是 600 x 1024 ,追踪代码发现 Panel Info 是根据 u-boot/drivers/video/sprdfb/sprdfb_panel.c 来输出的 
展讯平台 LCD(Mipi)移植步骤及问题归纳
在 u-boot/include/configs/sp7731gea_hdr.h 中发现并修改 
展讯平台 LCD(Mipi)移植步骤及问题归纳
并且在烧录的时候修改bootloader阶段的图片为 600x1024 的 bmp 
u-boot 阶段显示正常。