Android Qcom Display学习(十)
admin
2024-02-24 06:57:28

该系列文章总目录链接与各部分简介: Android Qcom Display学习(零)
本章主要是基于高通平台不同的背光类型处理的学习,包含XBL和Kernel两大部分。

Kernel

- qcom,mdss-dsi-bl-pmic-control-type:	A string that specifies the implementation of backlightcontrol for this panel."bl_ctrl_pwm" = Backlight controlled by PWM gpio.         "bl_ctrl_wled" = Backlight controlled by WLED."bl_ctrl_dcs" = Backlight controlled by DCS commands."bl_ctrl_external" = Backlight controlled by externallyother: Unknown backlight control. (default)
pmic qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_pwm";    DSI_BACKLIGHT_PWM       
wledqcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled";   DSI_BACKLIGHT_WLED       
amoledqcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_dcs";    DSI_BACKLIGHT_DCS

LPG是Light PulseGenerator,对应PWM ,qcom-spmi-pmic.c pwm-qti-lpg.c
WLED是White Light Emitting Diode(白光二极管) qcom-spmi-wled.c + leds-qpnp-wled.c

PMI632 Display LCDB only, WLED need externl driver 
qcom,pmi632@2 {compatible = "qcom,spmi-pmic";	pmi632_lcdb: qpnp-lcdb@ec00 compatible = "qcom,qpnp-lcdb-regulator";PMI6150 或 PM660等 Support WLED 需要看平台芯片支持,不支持需外接
pm660l_3: qcom,pm660l@3 {compatible ="qcom,spmi-pmic";pm660l_wled: qcom,leds@d800 {compatible = "qcom,pm660l-spmi-wled";   label = "backlight";		

backlight ic

Android Qcom Display学习(一)原理图中的背光IC就是LV52207,单纯的转换芯片,非I2C,非PMIC,单路输出,如果仅使用CABC那么上层无法使用亮度控制,如果要支持CABC,还是使用平台的PMIC WLED或者I2C器件 AW99703或LM36922双路控制的背光IC

LV52207 only support pwm input, not I2C,AW99703CSR  The LED current is adjusted via an I2C interface or through a logic level PWM input. LM36922 Brightness mode: 00 I2C only/ 01 PWM only/ 10 I2C + PWM / 11 I2C + PWM 结合方式有所不同In brightness control mode 00 the I2C Brightness registers control LED current, and the PWM input is disabled.In brightness control mode 11 both the I2C brightness code and the PWM duty cycle control the LED current. 

register backlight

dsi_panel_bl_registerswitch (bl->type) {case DSI_BACKLIGHT_WLED:rc = dsi_panel_wled_register(panel, bl);backlight_device_get_by_type(BACKLIGHT_RAW);  由wled驱动注册并获取到blacklight_deviceBACKLIGHT_RAW: The backlight is controlled using hardware registers.wled_probe -> devm_backlight_device_register	qcom-spmi-wled.c -> backlight.csys/class/backlight/backlight  (wled->name = dtsi lable = backlight)			break;case DSI_BACKLIGHT_DCS:break;case DSI_BACKLIGHT_EXTERNAL:break;case DSI_BACKLIGHT_PWM:rc = dsi_panel_pwm_register(panel);devm_of_pwm_get(panel->parent, panel->panel_of_node, NULL);of_pwm_get -> of_parse_phandle_with_args(np, "pwms", "#pwm-cells", index, &args);cells_name = "#pwm-cells" phandle 指向的节点所含的 cells 个数;index代表索引pm6125_pwm 中 #pwm-cells = 2 对应 所以devicetree: pwms = <&pm6125_pwm 0 0>pmi632_gpios 6 BLK_EN   pm6125_gpios 8 WLED_PWM  WLED_PWM can be replaced by CABCBOOT.XF.4.1/boot_images/QcomPkg/SocPkg/KamortaPkg/Settings/PMIC/pm_spmi_config.c{0, 0xC7, SPMI_OWNER_APPS,    SPMI_OWNER_APPS},   /* GPIO08 PWM_OUT FOR BACKLIGHT */

set backlight

dsi_panel_set_backlight		switch (bl->type) {case DSI_BACKLIGHT_WLED:rc = backlight_device_set_brightness(bl->raw_bd, bl_lvl);backlight_update_status ->  bd->ops->update_status -> wled_update_status	break;case DSI_BACKLIGHT_DCS:rc = dsi_panel_update_backlight(panel, bl_lvl);mipi_dsi_dcs_set_display_brightness + MIPI_DCS_SET_DISPLAY_BRIGHTNESSbreak;case DSI_BACKLIGHT_EXTERNAL:break;case DSI_BACKLIGHT_PWM:rc = dsi_panel_update_pwm_backlight(panel, bl_lvl);pwm_enable -> pwm_apply_state -> pwm->chip->ops -> enablepwm_config -> pwm_apply_state -> pwm->chip->ops -> config_extend ↓↓↓ devicetree:pm6125_pwm compatible = "qcom,pwm-lpg";  -> pwm-qti-lpg.c  -> qpnp_lpg_pwm_config_extend

backlight node

 sde_backlight_setup   sde_connector.c -> backlight.cbacklight_device_register   "/sys/class/backlight/panel0-backlight"static const struct backlight_ops sde_backlight_device_ops = {.update_status = sde_backlight_device_update_status,.get_brightness = sde_backlight_device_get_brightness,}static struct attribute *bl_device_attrs[] = {&dev_attr_bl_power.attr,&dev_attr_brightness.attr, &dev_attr_actual_brightness.attr,&dev_attr_max_brightness.attr,&dev_attr_type.attr,NULL,};bringtness节点控制brightness_store           >>   backlight_device_set_brightness backlight_update_status    >>   bd->ops->update_status -> sde_backlight_device_update_statusc_conn->ops.set_backlight  >>   dsi_display_set_backlight/sys/class/backlight/panel0-backlight # ls                                                                        
actual_brightness  bl_power  brightness  device  max_brightness  power  subsystem  type  ueventhardware/qcom/display/liblight/lights.c
char const*const LCD_FILE = "/sys/class/leds/lcd-backlight/brightness";                fd  architecture(mdss_fb_probe)
char const*const LCD_FILE2  = "/sys/class/backlight/panel0-backlight/brightness";      drm architecture(sde_backlight_setup)

XBL

configue define

boot_images/boot/QcomPkg/Library/MDPLib/MDPEDID.c   
boot_images/boot/QcomPkg/Include/Library/MDPTypes.h 
MDPDetectPanel-> pPanelXMLConfig ->  XML_Parser -> sXmlTagsListXML_CREATE_TAG_ENTRY("BacklightType",              XML_TAG_DATATYPE_INTEGER, gPanelConfig.sBacklightConfig.eBacklightType),XML_CREATE_TAG_ENTRY("BacklightPmicControlType",   XML_TAG_DATATYPE_INTEGER, gPanelConfig.sBacklightConfig.uBacklightCntrl.eBacklightCtrl),1                             //MDP_Panel_BacklightType      MDP_PANEL_BACKLIGHTTYPE_PMIC2       //MDP_PmicBacklightControlType MDP_PMIC_BACKLIGHT_CONTROLTYPE_WLED

control interface

Library/MDPPlatformLib/MDPPlatformLibPanelCommon.c 
Panel_Default_Brightness_Enable  Panel_Default_Brightness_Level
MDP_PANEL_BACKLIGHTTYPE_PMICMDP_PMIC_BACKLIGHT_CONTROLTYPE_LPG    -> EFI_QCOM_PMIC_PWM_PROTOCOLPMICPWMProtocol->PwmConfigMDP_PMIC_BACKLIGHT_CONTROLTYPE_WLED   ->  EFI_QCOM_PMIC_WLED_PROTOCOLPmicWledProtocol->EnableCurrentSinkPmicWledProtocol->SetLedDutyCycleMDP_PANEL_BACKLIGHTTYPE_I2Ci2c_open i2c_read i2c_write i2c_close + i2c_slave_config

相关内容

热门资讯

原创 餐... 2026年9月8日晚,南京浦口区泰冯路29号,墨语江南·阿婆菜餐厅户外帐篷里,灯火温润,其间还天降喜...
原创 它... 人到中年肝肾精血慢慢耗损,容易腰膝酸软、头晕眼花、精神疲惫。黄精性平,擅长补肝肾、益精血,搭配不同食...
同样卖奶茶,为何古茗赚了15亿... 出品/联商专栏 撰文/老刀 编辑/蔡建桢 今年上半年,蜜雪、古茗、霸王茶姬、茶百道、沪上阿姨全部盈利...
现烤散装走俏、新口味亮相、健康... 中秋佳节临近,成都月饼市场已全面开启“上新季”。记者连日来走访成都多家商超看到,月饼专区占据卖场核心...
散装月饼靠性价比当上“人气王” 华润超市货架上的散装月饼。 深圳报业集团记者 欧阳莹 摄 深圳晚报讯 (深圳报业集团记者 欧阳莹) ...