ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

玩转移远SC60 Android开发板------(2)LCD背光控制

2021-01-20 13:59:49  阅读:343  来源: 互联网

标签:开发板 LCD qcom mpp dsi ------ mdss pwm panel


SC60 Android开发板
在这里插入图片描述
SC60的背光使用PM_MPP4输出PWM信号来控制背光芯片:
在这里插入图片描述
但是PMU的MPP4脚默认并不是PWM功能,需要修改配置。PWM的设备树节点为:

		pm8953_pwm: qcom,pwms@bc00 {
			status = "Okay";
			compatible = "qcom,qpnp-pwm";
			reg = <0xbc00 0x100>;
			reg-names = "qpnp-lpg-channel-base";
			qcom,channel-id = <0>;
			qcom,supported-sizes = <6>, <9>;
			#pwm-cells = <2>;
			qcom,dtest-line = <2>; // notice: pwm need config DTETS2
			qcom,dtest-output = <2>;
		};

如下修改把MPP4配置为数字输出功能:

&pm8953_mpps {
	/delete-node/ case_therm;
//begin: stone mofify mpp4 for lcd-backlight
	mpp@a300 {
		reg = <0xa300 0x100>;
		com,pin-num = <4>;          /*管脚号*/
		qcom,mode = <1>; 		/* Digital output */
		qcom,invert = <0>; 		/* Disable invert */
		qcom,src-sel = <5>; 		/* DTEST2 ?? */
		qcom,pull = <1>;
		qcom,vin-sel = <3>;		/* VPH_PWR */
		qcom,master-en = <1>; 		/* Enable MPP */
		status = "okay";
	};
//end: stone mofify mpp4 for lcd-backlight
};

这样,在对应的LCD驱动中指定PWM的管脚即可:

&dsi_lead_ili9885a_1080p_video{
	qcom,mdss-dsi-panel-timings-phy-v2 = [23 1e 08 09 05 03 04 a0
		23 1e 08 09 05 03 04 a0
		23 1e 08 09 05 03 04 a0
		23 1e 08 09 05 03 04 a0
		23 1e 08 09 05 03 04 a0];
	//qcom,esd-check-enabled;
	qcom,mdss-dsi-panel-status-check-mode = "reg_read";
	qcom,mdss-dsi-panel-status-command = [06 01 00 01 00 00 02 0a];
	qcom,mdss-dsi-panel-status-command-state = "dsi_hs_mode";
	qcom,mdss-dsi-panel-status-value = <0x08>;
	qcom,mdss-dsi-panel-on-check-value = <0x08>;
	qcom,mdss-dsi-panel-status-read-length = <2>;
	qcom,mdss-dsi-panel-max-error-count = <3>;

	qcom,display-id = "secondary";
	qcom,panel-supply-entries = <&dsi_panel_pwr_supply>;
	qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_pwm";
	qcom,mdss-dsi-bl-pmic-pwm-frequency = <25>;
	qcom,mdss-dsi-bl-pmic-bank-select = <0>;
	qcom,mdss-dsi-pwm-gpio = <&pm8953_mpps 4 0>;  //这里指定PWM管脚MPP4
	qcom,5v-boost-gpio = <&tlmm 0 0>;
};

要注意,8953上默认是把MPP4脚作为温度采样功能配置了,需要修改掉:

			case_therm {
				cas_therm_default: cas_therm_default {
					pins = "mpp4";
					function = "analog";
					input-enable;
					qcom,amux-route = <3>;
				};
			};
			
chan@13 {
				label = "case_therm";
				reg = <0x13>;
				qcom,decimation = <0>;
				qcom,pre-div-channel-scaling = <0>;
				qcom,calibration-type = "ratiometric";
				qcom,scale-function = <2>;
				qcom,hw-settle-time = <2>;
				qcom,fast-avg-setup = <0>;
				qcom,vadc-thermal-node;
			};

如果要在LK阶段打开PWM,参考如下代码修改LK中的背光函数即可:

 static int pwm_backlight_ctrl(uint8_t enable)
 {
+//begin: stone added for pm8953-mpp4 as lcd-backlight
+#ifdef FEATURE_SC60
+	struct pm8x41_mpp mpp;
+	int rc;
+
+	mpp.base = PM8x41_MMP4_BASE;
+	mpp.vin = MPP_VIN3;
+
+	if(enable) {
+		pm_pwm_enable(false);
+		rc = pm_pwm_config(PWM_DUTY_US, PWM_PERIOD_US);
+		if (rc < 0)
+			mpp.mode = MPP_HIGH;
+		else {
+			mpp.mode = MPP_DTEST2;
+			pm_pwm_enable(true);
+		}
+		pm8x41_config_output_mpp(&mpp);
+		pm8x41_enable_mpp(&mpp, MPP_ENABLE);
+		//pm8x41_reg_write(0x1BCD0, 0xA5);
+		//pm8x41_reg_write(0x1BCE3, 0x02);//notic: config pwm choose dtest2
+	} else {
+		pm_pwm_enable(false);
+		pm8x41_enable_mpp(&mpp, MPP_DISABLE);
+	}
+	mdelay(20);
+#else
……
#endif
}

标签:开发板,LCD,qcom,mpp,dsi,------,mdss,pwm,panel
来源: https://blog.csdn.net/cornerstone1/article/details/112863060

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有