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

原创文章,原文地址:http://blog.csdn.net/dearsq/article/details/51210703

欢迎转载,转载请保留地址!

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

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);

对于 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

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

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

        CONFIG_FB_LCD_EK79007_MIPI=y

4.修改 Kconfig

    config FB_LCD_EK79007_MIPI
        boolean "support ek79007 mipi panel"
        default y

调试过程中遇到的问题

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

欢迎转载,转载请保留地址!

时间: 2024-12-24 19:49:19

展讯平台 LCD(Mipi)移植步骤及问题归纳的相关文章

展讯平台 LCD(Mipi) 加载流程分析

stage1 阶段的详细分析参见 uboot 详细注释讲解 我们从 uboot 的 stage2 开始分析. 加载流程分析 首先是完成硬件的初始化. 函数调用流程为: u-boot64/arch/arm/board.c: board_init_r() u-boot64/common/stdio.c: stdio_init() u-boot64/common/lcd.c: drv_lcd_init() lcd_init() u-boot/drivers/video/sprdfb/sprdfb_ma

展讯sc7731 LCD驱动简明笔记之二

此篇笔记基于sc7731 - android 5.1,对lcd的framebuffer做一个简明笔记. 一共分为两大部分:第一部分,关于LCD的硬件方面的:第二部分,关于lcd核心处理(framebuffer)部分的. 第一部分,LCD硬件相关的 一.液晶 液晶是一种高分子有机材料.当给它加上直流电场后,原本有序的分子排列被打乱,一部分液晶变得不透明,颜色加深,便因此显示出字符和图形. 液晶的光电效应:干涉.散射.衍射.旋光.吸收等. 二.LCD种类 1. 构造: 使用两块玻璃板夹着一块液晶:一

展讯sc7731 LCD驱动简明笔记之三

此篇笔记基于sc7731 - android 5.1,对lcd的gralloc库做一个简明笔记. 第一部分 调用gralloc.sc8830.so所谓的Gralloc模块,它就是一个模块,一个操作kernel层framebuffer驱动的动态库模块,它属于大名鼎鼎的HAL层.用的时候就加载到内存空间,不用的时候就从内存空间中卸载掉.下面看下系统如何将该模块加载到内存空间的.在Android系统中,所有访问HAL层模块的应用,都需要通过一个叫 hw_get_module() 的方法去获得需要的HA

展讯平台uboot启动流程

启动流程 1. Stage1 start.S代码结构 u-boot的stage1代码通常放在start.S文件中,用汇编语言,主要实现功能如下:? (1) 定义入口: 该工作通过修改连接器脚本来完成.? (2)设置异常向量(Exception Vector).? (3)设置CPU的速度.时钟频率及终端控制寄存器. (4)初始化内存控制器.? (5)将ROM中的程序复制到RAM中.? (6)初始化堆栈.? (7)转到RAM中执行,该工作可使用指令ldr pc来完成. bl lowlevel_ini

关于android各种双卡手机获取imei,imsi的处置(mtk,展讯,高通等)

关于android各种双卡手机获取imei,imsi的处理(mtk,展讯,高通等) 目前国内对于双卡智能手机的需求还是很大的,各种复杂的业务会涉及到双卡模块:而android标准的api又不提供对双卡的支持.导致国内双卡模块标准混乱,各个厂商各玩各的.目前我知道的双卡解决方案就有:mtk,展讯,高通,broadcom等. 由于公司业务需要,必须要对双卡手机获取各自的imei,imsi,所以也做了一些研究: 首先是最为应用广泛的mtk平台,国内山寨手机以及一些低端品牌双卡都是做的mtk的双卡解决方

展讯sprd_battery.c 充电驱动

sprd_battery.c 是充电驱动,这个是充电功能的核心内容,电量显示策略.温度检测策略.充电保护机制等功能在这里实现,功能实现与硬件细节剥离,调用通用接口实现逻辑控制: 1 sprdbat_probe函数: static int sprdbat_probe(struct platform_device *pdev) { int ret = -ENODEV; enum usb_charger_state usb_online_state = USB_CHARGER_DEFAULT; str

展讯LCD浏览之前记

基于展讯sc7731 - Android 5.1 代码分析浏览.将屏蔽细节,把握整体,并且不涉及其他设备和LCD的交互. 以下对sc7731 lcd大体流程进行简要说明. 第一,lcd 的两个阶段 1. 在uboot引起系统阶段,大约1~5秒左右,需要打印一个厂商log.这里对驱动要求非常简单,只要能打印log即可. (下面皆以lcd_ili9486s1_mipi.c为例)  驱动文件放置路径: u-boot64/drivers/video/sprdfb/lcd/ 添加新屏时需要修改的文件分别为

展讯7731平台驱动调试总结-驱动配置部分

转载至:http://blog.csdn.net/bmw7bmw7/article/details/46126223 展讯7731平台驱动调试总结-驱动配置部分 1. 关键配置文件路径 1). 项目板级配置:idh.code/device/sprd/scx35_sp7731geaplus_pad_qhd/文件夹内各文件 ⑴.BoardConfig.mk---板级宏配置文件.包括设置该板(项目)所使用的uboot/kerenl全局配置宏文件,摄像头接口类型.分辨率等参数,所使用的重力加速度.光线传

展讯7731平台驱动调试总结(2)---- 驱动配置部分

1. 关键配置文件路径 1). 项目板级配置:idh.code/device/sprd/scx35_sp7731geaplus_pad_qhd/文件夹内各文件 ⑴.BoardConfig.mk---板级宏配置文件.包括设置该板(项目)所使用的uboot/kerenl全局配置宏文件,摄像头接口类型.分辨率等参数,所使用的重力加速度.光线传感器,内部存储空间大小分配等. ⑵. init.board.rc---板级自定义启动服务文件(TP,传感器等设备的启动指令放置在此文件中) ⑶.system.pr