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>; 最大亮度
代码:
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>; //只是影响频率不影响占空比
关于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的后缀不同有默认电压不一样的,但都不适合我们使用都需软件再设置
msm8917 LK设置
bootable\bootloader\lk\target\msm8952\target_display.c