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, };