[DESCRIPTION]

如何配置LCD背光和LED,调试方法
[SOLUTION]
LCD背光和LED配置文件
alps/custom/<proj name>lk/cust_leds.c
alps/custom/<proj name>/kernel/leds/mt65xx/cust_leds.c
drvgen.exe编辑修改codegen.dws
 
配置cust_leds.c参数:
static struct cust_mt65xx_led cust_led_list[MT65XX_LED_TYPE_TOTAL] = {
 {"red",                  MT65XX_LED_MODE_NONE, -1,{0}},
 {"green",               MT65XX_LED_MODE_NONE, -1,{0}},
 {"blue",                 MT65XX_LED_MODE_NONE, -1,{0}},
 {"jogball-backlight", MT65XX_LED_MODE_NONE, -1,{0}},
 {"keyboard-backlight",MT65XX_LED_MODE_NONE, -1,{0}},
 {"button-backlight",   MT65XX_LED_MODE_PMIC, MT65XX_LED_PMIC_BUTTON,{0}},
 {"lcd-backlight",        MT65XX_LED_MODE_CUST_BLS_PWM, (int)disp_bls_set_backlight,{0}},
};
 
LCD背光
(PWM5~7在PMIC6320)
频率计算:52M/(1+1)/64/32=12.695KHz
 
3.GPIO脉冲
 {"lcd-backlight",     MT65XX_LED_MODE_GPIO, (int)Cust_SetBacklight,{0}},
通过实现Cust_SetBacklight(level,div)函数操作GPIO动作
 
4.类似OLED屏幕,通过写LCM 寄存器实现
 {"lcd-backlight",     MT65XX_LED_MODE_CUST, (int)Cust_SetBacklight,{0}},
通过实现
unsigned int Cust_SetBacklight(int level, int div)
{
mtkfb_set_backlight_level(level);
}
通过mtkfb_set_backlight_level(level);实现的函数指针将level传到LCM driver
在LCM的driver中实现.set_backlight=lcm_setbacklight,
 
5.PMIC6320的Isinks
MT6320只有3个Isink,应该不能满足要求
 
MT6572
和Mt6589有区别的:
1.PWM1~PWM5
{"lcd-backlight",     MT65XX_LED_MODE_PWM, PWM1,{0,0,0,0,0}},
{0,0,0,0,0}表示src_clk=32k时钟,div=0,HDuration=4; LDuration=4,pmic_pad=0
频率计算:32K/(0+1)/64/4=125Hz
{"lcd-backlight",     MT65XX_LED_MODE_PWM, PWM1,{1,1,32,32,0}},
{1,1,30,30,0}表示src_clk=66M时钟,div=1,HDuration=32; LDuration=32,pmic_pad=0
频率计算:66M/(1+1)/64/32=16.111KHz
 
2.PMIC6323的Isinks
MT6323有4个Isink,每路24mA电流,可以double为48mA,可以接8个LED
{"lcd-backlight",     MT65XX_LED_MODE_PMIC, MT65XX_LED_PMIC_LCD_ISINK,{0}},
 
 
Button LED
MT6589
PMIC mt6530有KPD LDO
 {"button-backlight",  MT65XX_LED_MODE_PMIC, MT65XX_LED_PMIC_BUTTON,{0}},
 
MT6572
mt6323没有KPD LDO,一般兼容使用Isink或者PWM
ISink0和Isink1合并做Button LED
 {"button-backlight",  MT65XX_LED_MODE_PMIC, MT65XX_LED_PMIC_NLED_ISINK01,{0}},
注意:如果需要修改电流等级和double current,请修改leds.c
brightness_set_pmic()和led_blink_pmic()
电流等级接口:upmu_set_isinks_chx_step(0x0);//0x0 4mA;0x01 8mA;0x2 12mA;0x03 16mA 0x04 20mA;0x05 24mA
double current接口:upmu_set_isinks_chx_double_en(0x1);
 
PWM1~5
{"button-backlight",     MT65XX_LED_MODE_PWM, PWM1,{0,0,0,0,0}},
 
 
LED
MT6589
1.Pre-charger(PCH_DET) LED
主要使用由于关机充电LED,插USB charger点亮,lk阶段关闭
如果需要打开PCH_DET:
在mt_leds.c(lk)和leds.c 中要打开pre-charger LED 的控制
Upmu_chr_chrind_on(1);//开启
Upmu_chr_chrind_on(0);//关闭
 
2.使用Isink接LED
 {"red",               MT65XX_LED_MODE_PMIC,MT65XX_LED_PMIC_NLED_ISINK0,{0}},
 {"green",             MT65XX_LED_MODE_PMIC,MT65XX_LED_PMIC_NLED_ISINK1,{0}},
 {"blue",              MT65XX_LED_MODE_PMIC,MT65XX_LED_PMIC_NLED_ISINK2,{0}},
 
3.使用PWM控制LED
 {"red",               MT65XX_LED_MODE_PWM,PWM5,{0,0,0,0,1}},
 {"green",             MT65XX_LED_MODE_PWM,PWM6,{0,0,0,0,1}},
 {"blue",              MT65XX_LED_MODE_PWM,PWM7,{0,0,0,0,1}},
注意:Mt6589上的PWM在sleep的时候没有波形输出的,如果sleep需要闪烁设计,请使用PMIC Mt6320上的PWM(PWM5~PWM7)
 
MT6572
与Mt6589的区别:
1.mt6572没有pre-charger LED的PCH_DET pin
2.Mt6572的PWM1~5在sleep的时候,都是没有波形输出的,设计请注意
3.使用Isink设计时,如果1个isink接2路LED,请注意打开double current,或者step调大
 
 
Flash light
文件:alps/mediatek/custom/<proj name>/kernel/flashlight/constant_flashlight/leds_stobe.c
实现FL_enable()和FL_disable()
MT6589有专门的flash LDO
MT6572没有Flash LDO,可以通过控制PWM,GPIO,ISINK等控制Flash light
 
上层JNI lib文件
alps/mediatek/hardware/liblights/lights.c
如果需要同时打开2个以上的LED,请修改set_speaker_light_locked()里面的逻辑
 
 
adb shell调试LCD背光和LED
 
adb命令查看LED或者backlight的亮度status
cd /sys/class/leds/xxx/brightness
(xxx表示的是light的名字,例如green,blue,red分别表示绿灯、蓝灯和红灯,lcd-backlight表示的是lcd背光。)
如果出现LED或Backlight不正常时,可以通过进入到相应的folder执行如下命令去检测是否driver有问题:
echo brightness_level > brightness  检查是否按照你设置的亮度显示。
对于LED来说brightness_level只要不是0,driver都会让led on。
 
LCD背光不支持blink,测试LED blink可以执行如下命令:
cd /sys/class/leds/xxx/
echo timer > trigger        这个命令会创建delay_on和delay_off两个文件。
echo on_time > delay_on 这个命令用于设置LED on的时间
echo off_time > delay_on 这个命令用于设置LED off的时间(On和off的时间都是以毫秒为单位的。)
echo timer > trigger        命令清除delay_on和delay_off时间,让led off。
echo none > trigger        删除delay_on/delay_off 节点
在kernel_log 可以看到leds.s中函数调用的情况
   如 printk("mt65xx_leds_set_cust: set brightness, name:%s, mode:%d, level:%d\n", cust->name, cust->mode, level);
 

[LED]如何配置LCD背光和LED,调试方法的更多相关文章

  1. 如何配置LCD背光和LED,调试方法

    LCD背光和LED配置文件 alps/custom/<proj name>lk/cust_leds.c alps/custom/<proj name>/kernel/leds/ ...

  2. [转帖]LCD与LED的区别之背光原理与优缺点对比介绍

    LCD与LED的区别之背光原理与优缺点对比介绍 http://m.elecfans.com/article/620376.html 时下液晶面板与液晶电视技术已经达到炉火纯青的境界,并已经成为大屏幕平 ...

  3. amba H2平台用PWM控制LCD背光

    ambarella H2系列Soc的GPIO口能作PWM使用的个数有限(GPIO0-GPIO3),从PRM里GPIO: Function Selection章节可以得到如何配置GPIO为PWM功能. ...

  4. 使用IOCTL代码实现LCD背光调节

    国内这种代码找不到.于是參考了相关代码后完好例如以下代码,且实现方式通过IOCTL代码实现LCD背光调节的功能. 适合场合为平板电脑或者笔记本.主要还是要靠BIOS支持与否. 编译环境使用:Dev-c ...

  5. LED Magic Light - How Does The LED Light Change Color?

    The    LED Magic Light    states that the color-changing LED is not an LED in the package, but three ...

  6. 【STM32H7教程】第7章 STM32H7下载和调试方法(IAR8)

    完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第7章   STM32H7下载和调试方法(IAR8) 本 ...

  7. 【STM32H7教程】第5章 STM32H7下载和调试方法(MDK5)

    完整教程下载地址:http://forum.armfly.com/forum.php?mod=viewthread&tid=86980 第5章   STM32H7下载和调试方法(MDK5) 本 ...

  8. FreeRTOS 调试方法(printf---打印任务执行情况)

    以下转载自安富莱电子: http://forum.armfly.com/forum.php 本章节为大家介绍 FreeRTOS 的调试方法,这里的调试方法主要是教会大家如何获取任务的执行情况,通过获取 ...

  9. kernel启动console_init之前console不可用时发生crash的调试方法

    http://code.google.com/p/innosoc/wiki/KernelBootCrashDebug 注: 如在i386_start_kernel中加入:early_printk(&q ...

随机推荐

  1. MongoDB Shell

    MongoDB Shell   1.连接指定主机及数据库 mongo 127.0.0.1:30000/myDB 链接到127.0.0.1的30000端口的myDB 2.启动后连接指定数据库 *.&qu ...

  2. [已解决] java.lang.ClassNotFoundException: org.apache.jsp.WEB_002dINF.com.yourproject.test_jsp

    同事遇到了一个问题,开始项目运行的好好的,过了一段时间再访问页面会报出如下错误信息(只贴了部分), 这是为啥呢,可能是由于servlet-api版本jar包重复导致的,他项目本身使用了servlet- ...

  3. Oracle性能优化--DBMS_PROFILER

      想看到过程或者函数执行每一步的过程:想看到每一步所占的时间吗?借助profiler吧:它可以满足你来分析过程/函数执行比较久:可以直接快速找到病因:从而可以优化那一步需要优化下.        一 ...

  4. 发送xml报文去第三方请求获取xml报文数据

    import java.io.*; import java.net.HttpURLConnection; import java.net.MalformedURLException; import j ...

  5. YTU 3007: 顺序串的基本运算

    3007: 顺序串的基本运算 时间限制: 1 Sec  内存限制: 128 MB 提交: 1  解决: 1 题目描述 编写一个程序,实现顺序串的各种基本运算,主函数已给出,请补充每一种方法. 1.建立 ...

  6. Unity脚本在层级面板中的执行顺序测试4-附加整理

    测试4为一些附加内容,后续的各种tips都加在此. 前几篇测试的链接: Unity脚本在层级面板中的执行顺序测试1 http://www.cnblogs.com/hont/p/4298110.html ...

  7. 移动平台前端开发之WebApp代码技巧

    1.首先我们来看看webkit内核中的一些私有的meta标签,这些meta标签在开发webapp时起到非常重要的作用 <meta content="width=device-width ...

  8. [转]Windows8下设置VS默认启动方式为管理员启动

    在Windows7下通常使用修改属性的方式:在任意快捷方式上右击,选择属性,选择高级,选择以管理员身份启动: 在Windows8下如上设置后,右击直接打开项目的话是不会以管理员身份启动的,这里用比较h ...

  9. ContentProvider官方教程(6)provider支持的数据类型

    Provider Data Types Content providers can offer many different data types. The User Dictionary Provi ...

  10. SqlSever基础 where 与 group by组合起来 处理数据

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...