当前位置: 代码迷 >> 综合 >> [SPRD]展讯平台 LCD(Mipi)移植步骤及问题归纳
  详细解决方案

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

热度:35   发布时间:2024-01-13 22:18:12.0

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

-- #ifdef CONFIG_BACKLIGHT_SPRD_PWM_MODE -- /*if the backlight is driven by pwm, use this MACRO */ -- #define SPRD_BACKLIGHT_PWM -- #else -- /*the backlight is driven by whiteled default */ -- #define SPRD_BACKLIGHT_WHITELED -- #define SPRD_DIM_PWM_MODE -- #endif ++ #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中,删除如下操作:

sci_adi_raw_write(PD_PWM_BASE + PWM_SCALE, PWM_PRESCALE);
sci_adi_raw_write(PD_PWM_BASE + PWM_CNT,(pwm_level << 8) | PWM_MOD_MAX);
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

4.关联到内核 u-boot/drivers/video/sprdfb_panel.c
添加

 Kernel

1.添加驱动文件 kernel/drivers/video/sprdfb/lcd/lcd_ek79007_mipi.c
注意代码文件中需要添加

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

    config FB_LCD_EK79007_MIPIboolean "support ek79007 mipi panel"default y
  
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3

调试过程中遇到的问题

Q: Backlight 不亮
A: 因为采用的是展讯默认的外置串联背光电路,所以软件方面不需要额外配置。
检查硬件:
检查背光的电压是否有给

——>

——>

依次检查
LCM_BL_PWM 输出的波形 (正常)
LEDA 电压(异常)交由硬件检查进一步发现,有一颗电阻阻值异常(1.3欧错贴成了1.3k欧)
修改后,背光正常:白屏

Q:LCD 白屏
A:移植完成驱动后应该至少可以点亮(显示东西,虽然显示的东西可能有误)
但是实际为白屏(只点亮了背光)
检查 屏的电压是否正常。要保证这样几个地方电压是正常的:
VGH 和 VGL

——> 这个地方的使能脚控制 VGH 和 VGL

——> 发现LCD_PWREN 接到的是 LCM_CABC

而 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 来输出的

在 u-boot/include/configs/sp7731gea_hdr.h 中发现并修改

并且在烧录的时候修改bootloader阶段的图片为 600x1024 的 bmp
u-boot 阶段显示正常。

原文地址:http://blog.csdn.net/dearsq/article/details/51210703
欢迎转载,转载著名作者 Younix 及 原文地址!谢谢!