diff --git a/techpack/display/msm/sde/sde_connector.c b/techpack/display/msm/sde/sde_connector.c index 5a124d808b9f..5d50ec1a0bf9 100644 --- a/techpack/display/msm/sde/sde_connector.c +++ b/techpack/display/msm/sde/sde_connector.c @@ -138,8 +138,11 @@ static int sde_backlight_device_update_status(struct backlight_device *bd) if (brightness > c_conn->thermal_max_brightness) brightness = c_conn->thermal_max_brightness; - if(brightness && brightness < display->panel->bl_config.bl_min_level) - brightness = display->panel->bl_config.bl_min_level; + if (c_conn->connector_type == DRM_MODE_CONNECTOR_DSI) { + if (brightness && + brightness < dsi_display->panel->bl_config.bl_min_level) + brightness = dsi_display->panel->bl_config.bl_min_level; + } /* map UI brightness into driver backlight level with rounding */ bl_lvl = mult_frac(brightness, bl_max_level, brightness_max_level); @@ -214,6 +217,7 @@ static int sde_backlight_setup(struct sde_connector *c_conn, static int display_count; char bl_node_name[BL_NODE_NAME_SIZE]; u32 brightness_max_level = 0; + u32 brightness_default_level = 0; sde_kms = _sde_connector_get_kms(&c_conn->base); if (!sde_kms) { @@ -225,16 +229,21 @@ static int sde_backlight_setup(struct sde_connector *c_conn, display = (struct dsi_display *) c_conn->display; dsi_bl_config = &display->panel->bl_config; brightness_max_level = dsi_bl_config->brightness_max_level; + brightness_default_level = + dsi_bl_config->brightness_default_level; if (dsi_bl_config->type != DSI_BACKLIGHT_DCS && sde_in_trusted_vm(sde_kms)) return 0; } else if (c_conn->connector_type == DRM_MODE_CONNECTOR_eDP) { dp_panel = (struct dp_panel *) c_conn->drv_panel; - if (dp_panel) + if (dp_panel) { brightness_max_level = dp_panel->bl_config.brightness_max_level; - else { + brightness_default_level = + dp_panel->bl_config.brightness_max_level; + } else { brightness_max_level = MAX_BRIGHTNESS_LEVEL; + brightness_default_level = MAX_BRIGHTNESS_LEVEL; } } else { SDE_DEBUG("invalid connector type %d\n", @@ -247,7 +256,7 @@ static int sde_backlight_setup(struct sde_connector *c_conn, props.type = BACKLIGHT_RAW; props.power = FB_BLANK_UNBLANK; props.max_brightness = brightness_max_level; - props.brightness = bl_config->brightness_default_level; + props.brightness = brightness_default_level; snprintf(bl_node_name, BL_NODE_NAME_SIZE, "panel%u-backlight", display_count); c_conn->bl_device = backlight_device_register(bl_node_name, dev->dev,