由调试AMOLED屏的重要点在于给屏提供的两个电,OVDD(4.6V)与OVSS(-2.9V),电是由平台的PMU pm8996提供的,由SWIRE信号控制,主要修改了供电的方式,先写在内核中点亮的过程。
在项目的dtsi文件中修改如下几个属性,其他的与LCD屏调试一样。
1.在msm-pmi8994.dtsi文件中添加如下属性。添加最后一行: qcom,disp-type-amoled;
注释掉属性
/qcom,en-ext-pfet-sc-pro;/
qcom,leds@d800 {
compatible = "qcom,qpnp-wled";
reg = <0xd800 0x100>,
..
qcom,en-ext-pfet-sc-pro;
qcom,cons-sync-write-delay-us = <1000>;
/*qcom,en-ext-pfet-sc-pro;*/
qcom,disp-type-amoled;
};
2.在项目dtsi中修如下属性。
labibb {
qpnp,qpnp-labibb-mode = “lcd"; /* remove this line */
qpnp,qpnp-labibb-mode = "amoled"; /* add this line */
qpnp,swire-control; /* add this line*/
};
&lab_regulator {
/delete-property/ qcom,qpnp-lab-ps-enable;
};
4.增加如下的节点,名字添加的屏的dtsi文件决定
&dsi_XXXX_1080p_video {
qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_dcs";
qcom,mdss-dsi-bl-min-level = <1>;
qcom,mdss-dsi-bl-max-level = <255>;
qcom,mdss-brightness-max-level = <255>;
qcom,cont-splash-enabled;
qcom,panel-supply-entries = <&dsi_panel_pwr_supply_amoled>;
};
5.修改dsi_panel_pwr_supply_amoled 的电压lab(4.6V)ibb(-2.9V)
qcom,supply-max-voltage = <46000000>;
qcom,supply-min-voltage = <2900000>;
qcom,supply-max-voltage = <2900000>;
1.在lk中只需要在panel_XXX_video.h 中增加如下数据结构
static struct labibb_desc panel_truly_1080p_video_labibb = {
1, // lcd = 0, amoled = 1
1, // force_config 0 to use default value
2900000, // IBB minimum voltage in µV 这个电压由屏的SPEC决定。
2900000, // IBB maximum voltage in µV
4600000, // LAB minimum voltage in µV
4600000, // LAB maximum voltage in µV
3, // power up delay
3, //power down delay
1, //IBB discharge enable
1 // SWIRE control
};
增加了这个节点后还是不能点亮。器测量电压发现LAB与IBB不受SWIRE信号控制。通过对比旧基线与新基线发现是高通代码bug,缺失了一部分代码,然后发现AVDD上电比较早导致时序不对.是mpp信号不对.在xbl中增加代码,拉低mpp.就可以了。
调节avdd的电压为5.8V,默认值为7.6V
在节点qcom,leds@d800中增加属性
qcom,ovp-mv = <17800>; //原来值29500
qcom,avdd-target-voltage-mv = <5800>;
在lk中修改如下
dev/qpnp_wled/include/qpnp_wled.h
#define QPNP_WLED_AVDD_DEFAULT_VOLTAGE_MV 5800
dev/qpnp_wled/qpnp_wled.c
wled->ovp_mv = QPNP_WLED_OVP_17800_MV;