diff --git a/drivers/gpu/drm/drm_sysfs.c b/drivers/gpu/drm/drm_sysfs.c index ec54cf967e85..4799d8c13445 100644 --- a/drivers/gpu/drm/drm_sysfs.c +++ b/drivers/gpu/drm/drm_sysfs.c @@ -260,6 +260,17 @@ static ssize_t panel_info_show(struct device *device, return written; } +static ssize_t doze_brightness_show(struct device *device, + struct device_attribute *attr, + char *buf) +{ + struct drm_connector *connector = to_drm_connector(device); + struct drm_device *dev = connector->dev; + + return snprintf(buf, PAGE_SIZE, "%d\n", + dev->doze_brightness); +} + void drm_bridge_disp_param_set(struct drm_bridge *bridge, int cmd); static ssize_t disp_param_store(struct device *device, struct device_attribute *attr, @@ -291,57 +302,6 @@ static ssize_t disp_param_store(struct device *device, return count; } -int dsi_bridge_disp_set_doze_backlight(struct drm_connector *connector, - int doze_backlight); -ssize_t dsi_bridge_disp_get_doze_backlight(struct drm_connector *connector, - char *buf); -static ssize_t doze_brightness_show(struct device *device, - struct device_attribute *attr, - char *buf) -{ - int writen = 0; - struct drm_connector *connector = NULL; - struct drm_device *dev = NULL; - - if (!device) - return writen; - - connector = to_drm_connector(device); - if (!connector) - return writen; - - dev = connector->dev; - if (!dev) - return writen; - - return snprintf(buf, PAGE_SIZE, "%d\n", - dev->doze_brightness); -} - -static ssize_t doze_backlight_store(struct device *device, - struct device_attribute *attr, - const char *buf, size_t count) -{ - struct drm_connector *connector = to_drm_connector(device); - int doze_backlight; - int ret; - - ret = kstrtoint(buf, 0, &doze_backlight); - if (ret) - return ret; - - ret = dsi_bridge_disp_set_doze_backlight(connector, doze_backlight); - - return ret ? ret : count; -} - -static ssize_t doze_backlight_show(struct device *dev, - struct device_attribute *attr, char *buf) -{ - struct drm_connector *connector = to_drm_connector(dev); - return dsi_bridge_disp_get_doze_backlight(connector, buf); -} - extern ssize_t mipi_reg_write(char *buf, size_t count); extern ssize_t mipi_reg_read(char *buf); @@ -498,7 +458,6 @@ static DEVICE_ATTR_RO(modes); static DEVICE_ATTR_RO(panel_info); static DEVICE_ATTR_WO(disp_param); static DEVICE_ATTR_RO(doze_brightness); -static DEVICE_ATTR_RW(doze_backlight); static DEVICE_ATTR_RW(mipi_reg); static DEVICE_ATTR_RW(disp_count); static DEVICE_ATTR_RW(dim_layer_enable); @@ -514,7 +473,6 @@ static struct attribute *connector_dev_attrs[] = { &dev_attr_panel_info.attr, &dev_attr_disp_param.attr, &dev_attr_doze_brightness.attr, - &dev_attr_doze_backlight.attr, &dev_attr_mipi_reg.attr, &dev_attr_disp_count.attr, &dev_attr_dim_layer_enable.attr, diff --git a/drivers/gpu/drm/msm/dsi-staging/dsi_display.c b/drivers/gpu/drm/msm/dsi-staging/dsi_display.c index cf82d664d4a5..91198970d344 100644 --- a/drivers/gpu/drm/msm/dsi-staging/dsi_display.c +++ b/drivers/gpu/drm/msm/dsi-staging/dsi_display.c @@ -236,10 +236,19 @@ int dsi_display_set_backlight(struct drm_connector *connector, goto error; } - rc = dsi_panel_set_backlight(panel, (u32)bl_temp); - if (rc) - pr_err("unable to set backlight\n"); - + if (drm_dev && (drm_dev->doze_state == MSM_DRM_BLANK_LP1 || drm_dev->doze_state == MSM_DRM_BLANK_LP2)) { + rc = dsi_panel_set_doze_backlight(display, (u32)bl_temp); + if (rc) + pr_err("unable to set doze backlight\n"); + rc = dsi_panel_enable_doze_backlight(panel, (u32)bl_temp); + if (rc) + pr_err("unable to enable doze backlight\n"); + } else { + drm_dev->doze_brightness = DOZE_BRIGHTNESS_INVALID; + rc = dsi_panel_set_backlight(panel, (u32)bl_temp); + if (rc) + pr_err("unable to set backlight\n"); + } rc = dsi_display_clk_ctrl(dsi_display->dsi_clk_handle, DSI_CORE_CLK, DSI_CLK_OFF); if (rc) { @@ -1259,7 +1268,7 @@ int dsi_display_set_power(struct drm_connector *connector, return -EINVAL; } else { dev = connector->dev; - event = dev->state; + event = dev->doze_state; } g_notify_data.data = &event; @@ -1268,15 +1277,11 @@ int dsi_display_set_power(struct drm_connector *connector, case SDE_MODE_DPMS_LP1: msm_drm_notifier_call_chain(MSM_DRM_EARLY_EVENT_BLANK, &g_notify_data); rc = dsi_panel_set_lp1(display->panel); - if (!rc) - dsi_panel_set_doze_backlight(display); msm_drm_notifier_call_chain(MSM_DRM_EVENT_BLANK, &g_notify_data); break; case SDE_MODE_DPMS_LP2: msm_drm_notifier_call_chain(MSM_DRM_EARLY_EVENT_BLANK, &g_notify_data); rc = dsi_panel_set_lp2(display->panel); - if (!rc) - dsi_panel_set_doze_backlight(display); msm_drm_notifier_call_chain(MSM_DRM_EVENT_BLANK, &g_notify_data); break; case SDE_MODE_DPMS_ON: @@ -1284,8 +1289,6 @@ int dsi_display_set_power(struct drm_connector *connector, display->panel->power_mode == SDE_MODE_DPMS_LP2) { msm_drm_notifier_call_chain(MSM_DRM_EARLY_EVENT_BLANK, &g_notify_data); rc = dsi_panel_set_nolp(display->panel); - if (!rc) - dsi_panel_set_doze_backlight(display); msm_drm_notifier_call_chain(MSM_DRM_EVENT_BLANK, &g_notify_data); } break; diff --git a/drivers/gpu/drm/msm/dsi-staging/dsi_display.h b/drivers/gpu/drm/msm/dsi-staging/dsi_display.h index 04be58725e22..bbc3b41c3bc0 100644 --- a/drivers/gpu/drm/msm/dsi-staging/dsi_display.h +++ b/drivers/gpu/drm/msm/dsi-staging/dsi_display.h @@ -653,14 +653,7 @@ void dsi_display_enable_event(struct drm_connector *connector, int dsi_display_set_backlight(struct drm_connector *connector, void *display, u32 bl_lvl); -/** - * dsi_display_set_doze_backlight() - set doze backlight - * @display: Handle to display. - */ - -int dsi_panel_set_doze_backlight(struct dsi_display *display); - -ssize_t dsi_panel_get_doze_backlight(struct dsi_display *display, char *buf); +int dsi_panel_set_doze_backlight(struct dsi_display *display, u32 bl_lvl); /** * dsi_display_check_status() - check if panel is dead or alive diff --git a/drivers/gpu/drm/msm/dsi-staging/dsi_drm.c b/drivers/gpu/drm/msm/dsi-staging/dsi_drm.c index bce05dd3be4e..39e4bed9756f 100644 --- a/drivers/gpu/drm/msm/dsi-staging/dsi_drm.c +++ b/drivers/gpu/drm/msm/dsi-staging/dsi_drm.c @@ -198,12 +198,12 @@ static void dsi_bridge_pre_enable(struct drm_bridge *bridge) struct drm_device *dev = bridge->dev; int event = 0; - if (dev->state == MSM_DRM_BLANK_POWERDOWN) { - dev->state = MSM_DRM_BLANK_UNBLANK; + if (dev->doze_state == MSM_DRM_BLANK_POWERDOWN) { + dev->doze_state = MSM_DRM_BLANK_UNBLANK; pr_info("%s power on from power off\n", __func__); } - event = dev->state; + event = dev->doze_state; g_notify_data.data = &event; @@ -223,7 +223,7 @@ static void dsi_bridge_pre_enable(struct drm_bridge *bridge) cancel_delayed_work_sync(&prim_panel_work); __pm_relax(&prim_panel_wakelock); if (dev->fp_quickon && - (dev->state == MSM_DRM_BLANK_LP1 || dev->state == MSM_DRM_BLANK_LP2)) { + (dev->doze_state == MSM_DRM_BLANK_LP1 || dev->doze_state == MSM_DRM_BLANK_LP2)) { event = MSM_DRM_BLANK_POWERDOWN; msm_drm_notifier_call_chain(MSM_DRM_EARLY_EVENT_BLANK, &g_notify_data); msm_drm_notifier_call_chain(MSM_DRM_EVENT_BLANK, &g_notify_data); @@ -364,53 +364,6 @@ static int dsi_bridge_get_panel_info(struct drm_bridge *bridge, char *buf) return rc; } -int dsi_panel_set_doze_backlight(struct dsi_display *display); - -ssize_t dsi_panel_get_doze_backlight(struct dsi_display *display, char *buf); - -int dsi_bridge_disp_set_doze_backlight(struct drm_connector *connector, - int doze_backlight) -{ - struct dsi_display *display = NULL; - struct dsi_bridge *c_bridge = NULL; - - if (!connector || !connector->encoder || !connector->encoder->bridge) { - pr_err("Invalid connector/encoder/bridge ptr\n"); - return -EINVAL; - } - - c_bridge = to_dsi_bridge(connector->encoder->bridge); - display = c_bridge->display; - if (!display || !display->panel || !display->drm_dev) { - pr_err("Invalid display/panel/drm_dev ptr\n"); - return -EINVAL; - } else - display->drm_dev->doze_brightness = doze_backlight; - - return dsi_panel_set_doze_backlight(display); -} - -ssize_t dsi_bridge_disp_get_doze_backlight(struct drm_connector *connector, - char *buf) -{ - struct dsi_display *display = NULL; - struct dsi_bridge *c_bridge = NULL; - - if (!connector || !connector->encoder || !connector->encoder->bridge) { - pr_err("Invalid connector/encoder/bridge ptr\n"); - return -EINVAL; - } - - c_bridge = to_dsi_bridge(connector->encoder->bridge); - display = c_bridge->display; - if (!display || !display->panel) { - pr_err("Invalid display/panel ptr\n"); - return -EINVAL; - } - - return dsi_panel_get_doze_backlight(display, buf); -} - static void dsi_bridge_enable(struct drm_bridge *bridge) { int rc = 0; @@ -468,12 +421,12 @@ static void dsi_bridge_post_disable(struct drm_bridge *bridge) struct drm_device *dev = bridge->dev; int event = 0; - if (dev->state == MSM_DRM_BLANK_UNBLANK) { - dev->state = MSM_DRM_BLANK_POWERDOWN; + if (dev->doze_state == MSM_DRM_BLANK_UNBLANK) { + dev->doze_state = MSM_DRM_BLANK_POWERDOWN; pr_info("%s wrong doze state\n", __func__); } - event = dev->state; + event = dev->doze_state; g_notify_data.data = &event; @@ -487,7 +440,7 @@ static void dsi_bridge_post_disable(struct drm_bridge *bridge) return; } - if (dev->state == MSM_DRM_BLANK_LP1 || dev->state == MSM_DRM_BLANK_LP2) { + if (dev->doze_state == MSM_DRM_BLANK_LP1 || dev->doze_state == MSM_DRM_BLANK_LP2) { pr_err("%s doze state can't power off panel\n", __func__); event = MSM_DRM_BLANK_POWERDOWN; msm_drm_notifier_call_chain(MSM_DRM_EARLY_EVENT_BLANK, &g_notify_data); diff --git a/drivers/gpu/drm/msm/dsi-staging/dsi_panel.c b/drivers/gpu/drm/msm/dsi-staging/dsi_panel.c index 461c33d25cf6..5c1fbe70c2ed 100644 --- a/drivers/gpu/drm/msm/dsi-staging/dsi_panel.c +++ b/drivers/gpu/drm/msm/dsi-staging/dsi_panel.c @@ -740,79 +740,62 @@ error: return rc; } -int dsi_panel_set_doze_backlight(struct dsi_display *display) +int dsi_panel_set_doze_backlight(struct dsi_display *display, u32 bl_lvl) { int rc = 0; - struct dsi_display *dsi_display = display; struct dsi_panel *panel = NULL; struct drm_device *drm_dev = NULL; - if (!dsi_display || !dsi_display->panel || !dsi_display->drm_dev) { + if (!display || !display->panel || !display->drm_dev) { pr_err("invalid display/panel/drm_dev\n"); return -EINVAL; } - panel = dsi_display->panel; - drm_dev = dsi_display->drm_dev; - mutex_lock(&panel->panel_lock); - if (!dsi_panel_initialized(panel)) { - pr_info("[%s] set doze backlight before panel initialized!\n", dsi_display->name); - goto error; + panel = display->panel; + drm_dev = display->drm_dev; + + if (panel->fod_hbm_enabled || panel->fod_backlight_flag || panel->fod_dimlayer_hbm_enabled) { + pr_debug("%s FOD HBM open, skip value:%u [hbm=%d][fod_bl=%d][dimlayer_fod=%d]\n", __func__, + bl_lvl, panel->fod_hbm_enabled, panel->fod_backlight_flag, panel->fod_dimlayer_hbm_enabled); + return rc; } - if (drm_dev && (drm_dev->state == MSM_DRM_BLANK_LP1 || drm_dev->state == MSM_DRM_BLANK_LP2)) { - if (panel->fod_hbm_enabled || panel->fod_backlight_flag) { - pr_info("%s FOD HBM open, skip set doze backlight at: [hbm=%d][fod_bl=%d]\n", __func__, - panel->fod_hbm_enabled, panel->fod_backlight_flag); - goto error; - } - if (drm_dev->doze_brightness == DOZE_BRIGHTNESS_HBM) { - rc = dsi_panel_tx_cmd_set(panel, DSI_CMD_SET_DOZE_HBM); - if (rc) - pr_err("[%s] failed to send DSI_CMD_SET_DOZE_HBM cmd, rc=%d\n", panel->name, rc); - else - pr_info("In %s the doze_brightness value:%u\n", __func__, drm_dev->doze_brightness); - panel->in_aod = true; - panel->skip_dimmingon = STATE_DIM_BLOCK; - } else if (drm_dev->doze_brightness == DOZE_BRIGHTNESS_LBM) { - rc = dsi_panel_tx_cmd_set(panel, DSI_CMD_SET_DOZE_LBM); - if (rc) - pr_err("[%s] failed to send DSI_CMD_SET_DOZE_LBM cmd, rc=%d\n", - panel->name, rc); - else - pr_info("In %s the doze_brightness value:%u\n", __func__, drm_dev->doze_brightness); - panel->in_aod = true; - panel->skip_dimmingon = STATE_DIM_BLOCK; - } else { - drm_dev->doze_brightness = DOZE_BRIGHTNESS_INVALID; - pr_info("In %s the doze_brightness value:%u\n", __func__, drm_dev->doze_brightness); - } + if (bl_lvl > panel->doze_backlight_threshold) { + rc = dsi_panel_tx_cmd_set(panel, DSI_CMD_SET_DOZE_HBM); + if (rc) + pr_err("[%s] failed to send DSI_CMD_SET_DOZE_HBM cmd, rc=%d\n", + panel->name, rc); + drm_dev->doze_brightness = DOZE_BRIGHTNESS_HBM; + panel->in_aod = true; + panel->skip_dimmingon = STATE_DIM_BLOCK; + } else if (bl_lvl <= panel->doze_backlight_threshold && bl_lvl > 0) { + rc = dsi_panel_tx_cmd_set(panel, DSI_CMD_SET_DOZE_LBM); + if (rc) + pr_err("[%s] failed to send DSI_CMD_SET_DOZE_LBM cmd, rc=%d\n", + panel->name, rc); + drm_dev->doze_brightness = DOZE_BRIGHTNESS_LBM; + panel->in_aod = true; + panel->skip_dimmingon = STATE_DIM_BLOCK; + } else { + drm_dev->doze_brightness = DOZE_BRIGHTNESS_INVALID; } -error: - mutex_unlock(&panel->panel_lock); + + pr_debug("%s value:%u\n", __func__, drm_dev->doze_brightness); return rc; } -ssize_t dsi_panel_get_doze_backlight(struct dsi_display *display, char *buf) +int dsi_panel_enable_doze_backlight(struct dsi_panel *panel, u32 bl_lvl) { - int rc = 0; - struct dsi_display *dsi_display = display; - struct dsi_panel *panel = NULL; - struct drm_device *drm_dev = NULL; + struct dsi_backlight_config *bl = &panel->bl_config; - if (!dsi_display || !dsi_display->panel || !dsi_display->drm_dev) { - pr_err("invalid display/panel/drm_dev\n"); - return -EINVAL; + if (panel->fod_backlight_flag) { + pr_debug("fod_backlight_flag set\n"); + } else { + pr_debug("enable doze backlight type:%d lvl:%d\n", bl->type, bl_lvl); + rc = dsi_panel_update_backlight(panel, bl_lvl); } - panel = dsi_display->panel; - drm_dev = dsi_display->drm_dev; - mutex_lock(&panel->panel_lock); - - rc = snprintf(buf, PAGE_SIZE, "%d\n", drm_dev->doze_brightness); - pr_info("In %s the doze_brightness value:%u\n", __func__, drm_dev->doze_brightness); - - mutex_unlock(&panel->panel_lock); + panel->last_bl_lvl = bl_lvl; return rc; } @@ -4534,6 +4517,45 @@ int dsi_panel_set_lp1(struct dsi_panel *panel) pr_err("[%s] failed to send DSI_CMD_SET_LP1 cmd, rc=%d\n", panel->name, rc); + if (panel->fod_hbm_enabled || panel->fod_backlight_flag || panel->fod_dimlayer_hbm_enabled) { + pr_debug("%s skip [hbm=%d][fod_bl=%d][dimlayer_hbm=%d]\n", __func__, + panel->fod_hbm_enabled, panel->fod_backlight_flag, panel->fod_dimlayer_hbm_enabled); + } else { + struct dsi_display *display = NULL; + struct mipi_dsi_host *host = panel->host; + if (host) + display = container_of(host, struct dsi_display, host); + + if (panel->last_bl_lvl > panel->doze_backlight_threshold) { + pr_debug("dsi_panel_set_lp1 DSI_CMD_SET_DOZE_HBM"); + rc = dsi_panel_tx_cmd_set(panel, DSI_CMD_SET_DOZE_HBM); + if (rc) + pr_err("[%s] failed to send DSI_CMD_SET_DOZE_HBM cmd, rc=%d\n", + panel->name, rc); + if (display) + display->drm_dev->doze_brightness = DOZE_BRIGHTNESS_HBM; + + panel->in_aod = true; + panel->skip_dimmingon = STATE_DIM_BLOCK; + } else if (panel->last_bl_lvl <= panel->doze_backlight_threshold && panel->last_bl_lvl > 0) { + pr_debug("dsi_panel_set_lp1 DSI_CMD_SET_DOZE_LBM"); + rc = dsi_panel_tx_cmd_set(panel, DSI_CMD_SET_DOZE_LBM); + if (rc) + pr_err("[%s] failed to send DSI_CMD_SET_DOZE_LBM cmd, rc=%d\n", + panel->name, rc); + + if (display) + display->drm_dev->doze_brightness = DOZE_BRIGHTNESS_LBM; + + panel->in_aod = true; + panel->skip_dimmingon = STATE_DIM_BLOCK; + } else { + pr_debug("dsi_panel_set_lp1 DOZE_BRIGHTNESS_INVALID"); + if (display) + display->drm_dev->doze_brightness = DOZE_BRIGHTNESS_INVALID; + } + } + mutex_unlock(&panel->panel_lock); return rc; } @@ -5042,8 +5064,8 @@ static int panel_disp_param_send_lock(struct dsi_panel *panel, int param) if (host) display = container_of(host, struct dsi_display, host); - if ((display->drm_dev && display->drm_dev->state == MSM_DRM_BLANK_LP1) || - (display->drm_dev && display->drm_dev->state == MSM_DRM_BLANK_LP2)) { + if ((display->drm_dev && display->drm_dev->doze_state == MSM_DRM_BLANK_LP1) || + (display->drm_dev && display->drm_dev->doze_state == MSM_DRM_BLANK_LP2)) { #if 0 if (panel->last_bl_lvl > panel->doze_backlight_threshold) { pr_info("hbm fod off DSI_CMD_SET_DOZE_HBM"); @@ -5162,21 +5184,21 @@ static int panel_disp_param_send_lock(struct dsi_panel *panel, int param) if (host) display = container_of(host, struct dsi_display, host); - pr_info("FOD backlight restore last_bl_lvl=%d, state=%d", - panel->last_bl_lvl, display->drm_dev->state); + pr_debug("FOD backlight restore last_bl_lvl=%d, doze_state=%d", + panel->last_bl_lvl, display->drm_dev->doze_state); rc = dsi_panel_tx_cmd_set(panel, DSI_CMD_SET_DISP_DIMMINGOFF); if (panel->dc_enable) { pr_info("FOD backlight restore dc_threshold=%d, doze_state=%d", - panel->dc_threshold, display->drm_dev->state); + panel->dc_threshold, display->drm_dev->doze_state); rc = dsi_panel_update_backlight(panel, panel->dc_threshold); } else { pr_info("FOD backlight restore last_bl_lvl=%d, doze_state=%d", - panel->last_bl_lvl, display->drm_dev->state); + panel->last_bl_lvl, display->drm_dev->doze_state); rc = dsi_panel_update_backlight(panel, panel->last_bl_lvl); } - if ((display->drm_dev && display->drm_dev->state == MSM_DRM_BLANK_LP1) || - (display->drm_dev && display->drm_dev->state == MSM_DRM_BLANK_LP2)) { + if ((display->drm_dev && display->drm_dev->doze_state == MSM_DRM_BLANK_LP1) || + (display->drm_dev && display->drm_dev->doze_state == MSM_DRM_BLANK_LP2)) { #if 0 if (panel->last_bl_lvl > panel->doze_backlight_threshold) { pr_info("FOD backlight restore DSI_CMD_SET_DOZE_HBM"); diff --git a/drivers/gpu/drm/msm/dsi-staging/dsi_panel.h b/drivers/gpu/drm/msm/dsi-staging/dsi_panel.h index 38ca0b7554f3..16d8f6db26f7 100644 --- a/drivers/gpu/drm/msm/dsi-staging/dsi_panel.h +++ b/drivers/gpu/drm/msm/dsi-staging/dsi_panel.h @@ -358,6 +358,8 @@ int dsi_panel_post_unprepare(struct dsi_panel *panel); int dsi_panel_set_backlight(struct dsi_panel *panel, u32 bl_lvl); +int dsi_panel_enable_doze_backlight(struct dsi_panel *panel, u32 bl_lvl); + int dsi_panel_update_pps(struct dsi_panel *panel); int dsi_panel_send_qsync_on_dcs(struct dsi_panel *panel, diff --git a/drivers/gpu/drm/msm/sde/sde_connector.c b/drivers/gpu/drm/msm/sde/sde_connector.c index 7c86d38cb60d..dfe3e3fc668c 100644 --- a/drivers/gpu/drm/msm/sde/sde_connector.c +++ b/drivers/gpu/drm/msm/sde/sde_connector.c @@ -713,8 +713,8 @@ int sde_connector_update_hbm(struct sde_connector *c_conn) if (dsi_display->panel->fod_dimlayer_hbm_enabled) { mutex_lock(&dsi_display->panel->panel_lock); sde_encoder_wait_for_event(c_conn->encoder, MSM_ENC_VBLANK); - if ((dsi_display->drm_dev && dsi_display->drm_dev->state == MSM_DRM_BLANK_LP1) || - (dsi_display->drm_dev && dsi_display->drm_dev->state == MSM_DRM_BLANK_LP2)) { + if ((dsi_display->drm_dev && dsi_display->drm_dev->doze_state == MSM_DRM_BLANK_LP1) || + (dsi_display->drm_dev && dsi_display->drm_dev->doze_state == MSM_DRM_BLANK_LP2)) { if (dsi_display->panel->last_bl_lvl > dsi_display->panel->doze_backlight_threshold) { dsi_display->panel->hbm_enabled = false; dsi_display->panel->fod_dimlayer_hbm_enabled = false; @@ -765,8 +765,8 @@ int sde_connector_update_hbm(struct sde_connector *c_conn) mutex_lock(&dsi_display->panel->panel_lock); sde_encoder_wait_for_event(c_conn->encoder, MSM_ENC_VBLANK); pr_debug("wait one frame for hbm on\n"); - if (dsi_display->panel->last_bl_lvl || dsi_display->drm_dev->state == MSM_DRM_BLANK_LP1 - || dsi_display->drm_dev->state == MSM_DRM_BLANK_LP2) { + if (dsi_display->panel->last_bl_lvl || dsi_display->drm_dev->doze_state == MSM_DRM_BLANK_LP1 + || dsi_display->drm_dev->doze_state == MSM_DRM_BLANK_LP2) { dsi_display->panel->fod_dimlayer_hbm_enabled = true; dsi_display->panel->skip_dimmingon = STATE_DIM_BLOCK; dsi_display->panel->hbm_enabled = true; @@ -1359,7 +1359,7 @@ static int sde_connector_atomic_set_property(struct drm_connector *connector, switch (idx) { case CONNECTOR_PROP_LP: if(connector->dev) - connector->dev->state = val; + connector->dev->doze_state = val; break; case CONNECTOR_PROP_OUT_FB: /* clear old fb, if present */ diff --git a/include/drm/drm_device.h b/include/drm/drm_device.h index 26a243d4c9e6..3e8e2d02fcbb 100644 --- a/include/drm/drm_device.h +++ b/include/drm/drm_device.h @@ -195,7 +195,7 @@ struct drm_device { struct drm_vma_offset_manager *vma_offset_manager; /*@} */ int switch_power_state; - int state; + int doze_state; int doze_brightness; bool fp_quickon; };