From 83a97f26b2428dfdd37fba923d30e2b87ffa30a1 Mon Sep 17 00:00:00 2001 From: wangyq13 Date: Mon, 15 Jun 2020 17:42:36 +0800 Subject: [PATCH] dsi: add new backlight control type I2C dsi: Add new backlight I2C. Can't use WLED type, because WLED type don't consider if backlight device is inited later then panel. Change-Id: I1dcb4e10eaaecca8da4d44e384b1e49fb351693c Signed-off-by: wangyq13 Reviewed-on: https://gerrit.mot.com/1621694 SLTApproved: Slta Waiver SME-Granted: SME Approvals Granted Tested-by: Jira Key Reviewed-by: Hua Tan Reviewed-by: Jing Hu Reviewed-by: Dezhen Hou Reviewed-by: Guobin Zhang Submit-Approved: Jira Key Signed-off-by: tanhua1 Reviewed-on: https://gerrit.mot.com/1949835 Reviewed-by: Xiangpo Zhao Reviewed-on: https://gerrit.mot.com/2045804 Reviewed-by: Zhihong Kang Reviewed-by: Huosheng Liao --- msm/dsi/dsi_panel.c | 16 ++++++++++++++++ msm/dsi/dsi_panel.h | 1 + 2 files changed, 17 insertions(+) diff --git a/msm/dsi/dsi_panel.c b/msm/dsi/dsi_panel.c index c7c52832ad4a..d3fd0c6fcd81 100644 --- a/msm/dsi/dsi_panel.c +++ b/msm/dsi/dsi_panel.c @@ -856,6 +856,12 @@ int dsi_panel_set_backlight(struct dsi_panel *panel, u32 bl_lvl) case DSI_BACKLIGHT_PWM: rc = dsi_panel_update_pwm_backlight(panel, bl_lvl); break; + case DSI_BACKLIGHT_I2C: + if (!(bl->raw_bd)) + bl->raw_bd = backlight_device_get_by_type(BACKLIGHT_RAW); + else + rc = backlight_device_set_brightness(bl->raw_bd, bl_lvl); + break; default: DSI_ERR("Backlight type(%d) not supported\n", bl->type); rc = -ENOTSUPP; @@ -878,6 +884,10 @@ static u32 dsi_panel_get_brightness(struct dsi_backlight_config *bl) if (bd->ops && bd->ops->get_brightness) cur_bl_level = bd->ops->get_brightness(bd); break; + case DSI_BACKLIGHT_I2C: + if (bd && bd->ops && bd->ops->get_brightness) + cur_bl_level = bd->ops->get_brightness(bd); + break; case DSI_BACKLIGHT_DCS: case DSI_BACKLIGHT_EXTERNAL: case DSI_BACKLIGHT_PWM: @@ -1139,6 +1149,8 @@ static int dsi_panel_bl_register(struct dsi_panel *panel) break; case DSI_BACKLIGHT_DCS: break; + case DSI_BACKLIGHT_I2C: + break; case DSI_BACKLIGHT_DUMMY: break; case DSI_BACKLIGHT_EXTERNAL: @@ -1176,6 +1188,8 @@ static int dsi_panel_bl_unregister(struct dsi_panel *panel) break; case DSI_BACKLIGHT_DCS: break; + case DSI_BACKLIGHT_I2C: + break; case DSI_BACKLIGHT_DUMMY: break; case DSI_BACKLIGHT_EXTERNAL: @@ -2905,6 +2919,8 @@ static int dsi_panel_parse_bl_config(struct dsi_panel *panel) panel->bl_config.type = DSI_BACKLIGHT_DUMMY; } else if (!strcmp(bl_type, "bl_ctrl_external")) { panel->bl_config.type = DSI_BACKLIGHT_EXTERNAL; + } else if (!strcmp(bl_type, "bl_ctrl_i2c")) { + panel->bl_config.type = DSI_BACKLIGHT_I2C; } else { DSI_DEBUG("[%s] bl-pmic-control-type unknown-%s\n", panel->name, bl_type); diff --git a/msm/dsi/dsi_panel.h b/msm/dsi/dsi_panel.h index 71d28a2c99d5..e8d1dc76d778 100644 --- a/msm/dsi/dsi_panel.h +++ b/msm/dsi/dsi_panel.h @@ -82,6 +82,7 @@ enum dsi_backlight_type { DSI_BACKLIGHT_DCS, DSI_BACKLIGHT_DUMMY, DSI_BACKLIGHT_EXTERNAL, + DSI_BACKLIGHT_I2C, DSI_BACKLIGHT_UNKNOWN, DSI_BACKLIGHT_MAX, };