LCD 亮度相关(背光) 正负压相关

LCD 亮度相关(背光)

\kernel\msm-3.18\drivers\video\msm\mdss\mdss_fb.c

调用led_classdev_register();注册lcd-backlight

/sys/class/leds/lcd-backlight

dtsi:dsi-panel-BOE-NT51021-1200p-video.dtsi中:

qcom,mdss-dsi-bl-min-level = <1>;        最小等级

qcom,mdss-dsi-bl-max-level = <100>;   最大等级

qcom,mdss-brightness-max-level = <255>; 最大亮度

LCD 亮度相关(背光) 正负压相关_第1张图片

代码:

mdss_fb_set_bl_brightness中:MDSS_BRIGHT_TO_BL通过亮度算等级

简化之后就是 (v) * (bl_max) / max_bright + 0.5  四舍五入

即可以调节qcom,mdss-brightness-max-level的值来调节每个显示屏的最大亮度

但这里有个我挺纠结的问题,上层调的是 brightness的值 和等级其实没什么关系,导致例如我把最大亮度改成100,而应用看到的等级完后调亮度也不会变化,因为大于100的都会设置成100

dts设置占空比的频率:

qcom,mdss-dsi-bl-pmic-pwm-frequency = <100>;  //只是影响频率不影响占空比

LCD 亮度相关(背光) 正负压相关_第2张图片

关于pwm的配置参考patch:

正负压相关

对应msm8916,5.1和4.4都是在lk设置打开了正负压,到了kernel都是一直打开的没有再控制。

其中5.1:有文件kernel\drivers\video\msm\mdss\tps_65132.c,在msm8916-mtp.dtsi中有配置,在kernel\drivers\video\msm\mdss\mdss_dsi_panel.c文件mdss_dsi_panel_init和mdss_dsi_panel_reset中有调用但都被注释掉了。

4.4:dts没有配置tps65132.相关的,即完全没控制

而在5.1和4.4的代码里原本都有kernel\drivers\regulator\tps65132-regulator.c文件,这里是标准的注册regulator调用函数regulator_register注册,但dts中也没有配置ti,tps65132,所以也没有用到,如果需要用,标准的方法应该是参考其他ldo的用法regulator_get 、regulator_set_voltage 、 regulator_enable这些去使用

lk: 5.1:bootable\bootloader\lk\target\msm8916\target_display.c   target_panel_reset

4.4:bootable\bootloader\lk\target\msm8916\target_display.c   target_panel_reset_awdev

msm8917 / msm8937

FHD 显示屏没有到正负压,所以代码也没有设置

HD 显示屏也只是在LK设置了,然后有一个LCD_AVDD_EN,内核这控制了使能脚没有在通过I2C设置电压,因为正负压IC供电是VPH所以在LK设置了之后就没再断过电,电压值在LK设置之后到内核直接设置EN脚就可以了。 tps65132和SGM3804寄存器控制的值都一样,所以兼容两个。

IC的后缀不同有默认电压不一样的,但都不适合我们使用都需软件再设置

LCD 亮度相关(背光) 正负压相关_第3张图片

msm8917 LK设置

bootable\bootloader\lk\target\msm8952\target_display.c

你可能感兴趣的:(高通,显示屏)