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 及 原文地址!谢谢!