techpack: display: remove stock doze implementation

This commit is contained in:
yarpiin 2022-05-29 22:26:47 +01:00 committed by spakkkk
parent 6207c41cc9
commit f470e80bdf
5 changed files with 2 additions and 244 deletions

View File

@ -329,30 +329,6 @@ static ssize_t dynamic_fps_show(struct device *dev,
return dsi_display_read_dynamic_fps(connector, buf);
}
static ssize_t doze_brightness_store(struct device *device,
struct device_attribute *attr,
const char *buf, size_t count)
{
struct drm_connector *connector = to_drm_connector(device);
int doze_brightness;
int ret;
ret = kstrtoint(buf, 0, &doze_brightness);;
if (ret)
return ret;
ret = dsi_display_set_doze_brightness(connector, doze_brightness);
return ret ? ret : count;
}
static ssize_t doze_brightness_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
struct drm_connector *connector = to_drm_connector(dev);
return dsi_display_get_doze_brightness(connector, buf);
}
static ssize_t gamma_test_show(struct device *dev,
struct device_attribute *attr, char *buf)
{
@ -453,7 +429,6 @@ static DEVICE_ATTR_RO(oled_pmic_id);
static DEVICE_ATTR_RO(panel_info);
static DEVICE_ATTR_RO(wp_info);
static DEVICE_ATTR_RO(dynamic_fps);
static DEVICE_ATTR_RW(doze_brightness);
static DEVICE_ATTR_RO(gamma_test);
static DEVICE_ATTR_RO(fod_ui_ready);
static DEVICE_ATTR_RO(smart_fps_value);
@ -472,7 +447,6 @@ static struct attribute *connector_dev_attrs[] = {
&dev_attr_panel_info.attr,
&dev_attr_wp_info.attr,
&dev_attr_dynamic_fps.attr,
&dev_attr_doze_brightness.attr,
&dev_attr_gamma_test.attr,
&dev_attr_fod_ui_ready.attr,
&dev_attr_smart_fps_value.attr,

View File

@ -1091,18 +1091,12 @@ int dsi_display_set_power(struct drm_connector *connector,
mi_cfg->in_aod = true;
mi_drm_notifier_call_chain(MI_DRM_EARLY_EVENT_BLANK, &notify_data);
rc = dsi_panel_set_lp1(display->panel);
if (mi_cfg->unset_doze_brightness)
dsi_panel_set_doze_brightness(display->panel,
mi_cfg->unset_doze_brightness, true);
mi_drm_notifier_call_chain(MI_DRM_EVENT_BLANK, &notify_data);
break;
case SDE_MODE_DPMS_LP2:
mi_cfg->in_aod = true;
mi_drm_notifier_call_chain(MI_DRM_EARLY_EVENT_BLANK, &notify_data);
rc = dsi_panel_set_lp2(display->panel);
if (mi_cfg->unset_doze_brightness)
dsi_panel_set_doze_brightness(display->panel,
mi_cfg->unset_doze_brightness, true);
mi_drm_notifier_call_chain(MI_DRM_EVENT_BLANK, &notify_data);
break;
case SDE_MODE_DPMS_ON:

View File

@ -244,48 +244,6 @@ ssize_t dsi_display_read_dynamic_fps(struct drm_connector *connector,
return ret;
}
int dsi_display_set_doze_brightness(struct drm_connector *connector,
int doze_brightness)
{
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_set_doze_brightness(display->panel, doze_brightness, true);
}
ssize_t dsi_display_get_doze_brightness(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_brightness(display->panel, buf);
}
int dsi_display_read_gamma_param(struct drm_connector *connector)
{
struct dsi_display *display = NULL;

View File

@ -4573,7 +4573,6 @@ exit_skip:
}
mi_cfg->in_aod = false;
mi_cfg->doze_brightness_state = DOZE_TO_NORMAL;
mi_cfg->into_aod_pending = false;
mi_cfg->layer_fod_unlock_success = false;
mi_cfg->sysfs_fod_unlock_success = false;
@ -4991,7 +4990,6 @@ int dsi_panel_enable(struct dsi_panel *panel)
mi_cfg->fod_backlight_flag = false;
mi_cfg->in_aod = false;
mi_cfg->dimming_state = STATE_NONE;
mi_cfg->doze_brightness_state = DOZE_TO_NORMAL;
mi_cfg->into_aod_pending = false;
fm_stat.idle_status = false;
@ -5178,10 +5176,6 @@ int dsi_panel_disable(struct dsi_panel *panel)
panel->name, rc);
rc = 0;
}
} else {
mi_cfg->unset_doze_brightness = mi_cfg->doze_brightness_state;
DSI_INFO("save doze brightness state [%d] when ESD recovery is underway\n",
mi_cfg->unset_doze_brightness);
}
panel->panel_initialized = false;
panel->power_mode = SDE_MODE_DPMS_OFF;
@ -5198,7 +5192,6 @@ int dsi_panel_disable(struct dsi_panel *panel)
mi_cfg->fod_backlight_flag = false;
mi_cfg->in_aod = false;
mi_cfg->dimming_state = STATE_NONE;
mi_cfg->doze_brightness_state = DOZE_TO_NORMAL;
mi_cfg->into_aod_pending = false;
mi_cfg->layer_fod_unlock_success = false;
mi_cfg->sysfs_fod_unlock_success = false;

View File

@ -69,20 +69,10 @@ static void enter_aod_delayed_work(struct work_struct *work)
if (panel->power_mode == SDE_MODE_DPMS_LP1 ||
panel->power_mode == SDE_MODE_DPMS_LP2) {
if (mi_cfg->layer_fod_unlock_success || mi_cfg->sysfs_fod_unlock_success) {
if (mi_cfg->layer_fod_unlock_success || mi_cfg->sysfs_fod_unlock_success)
pr_info("[%d,%d]Fod fingerprint unlocked successfully, skip to enter aod mode\n",
mi_cfg->layer_fod_unlock_success, mi_cfg->sysfs_fod_unlock_success);
goto exit;
} else {
if (!mi_cfg->unset_doze_brightness) {
mi_cfg->unset_doze_brightness = mi_cfg->doze_brightness_state;
}
pr_info("delayed_work runing --- set doze brightness\n");
if (mi_cfg->layer_aod_flag)
dsi_panel_set_doze_brightness(panel, mi_cfg->unset_doze_brightness, false);
else
pr_info("delayed_work runing --- skip into doze\n");
}
}
exit:
@ -589,8 +579,6 @@ skip_dimlayer_parse:
mi_cfg->thermal_hbm_disabled = false;
mi_cfg->fod_hbm_enabled = false;
mi_cfg->fod_hbm_layer_enabled = false;
mi_cfg->doze_brightness_state = DOZE_TO_NORMAL;
mi_cfg->unset_doze_brightness = DOZE_TO_NORMAL;
mi_cfg->dimming_state = STATE_NONE;
mi_cfg->fod_backlight_flag = false;
mi_cfg->fod_flag = false;
@ -2200,132 +2188,6 @@ ssize_t dsi_panel_read_wp_info(struct dsi_panel *panel, char *buf)
return count;
}
int dsi_panel_set_doze_brightness(struct dsi_panel *panel,
int doze_brightness, bool need_panel_lock)
{
int rc = 0;
struct dsi_panel_mi_cfg *mi_cfg;
struct dsi_display *display;
int cmd_type = DSI_CMD_SET_MAX;
const char *doze_brightness_str[] = {
[DOZE_TO_NORMAL] = "DOZE_TO_NORMAL",
[DOZE_BRIGHTNESS_HBM] = "DOZE_BRIGHTNESS_HBM",
[DOZE_BRIGHTNESS_LBM] = "DOZE_BRIGHTNESS_LBM",
};
if (!panel || !panel->host) {
pr_err("invalid params\n");
return -EINVAL;
}
display = to_dsi_display(panel->host);
if (!display || !display->drm_dev){
pr_err("invalid display or drm_dev ptr\n");
return -EINVAL;
}
if (need_panel_lock)
mutex_lock(&panel->panel_lock);
mi_cfg = &panel->mi_cfg;
if (!panel->panel_initialized) {
mi_cfg->unset_doze_brightness = doze_brightness;
pr_info("Panel not initialized! save unset_doze_brightness = %s\n",
doze_brightness_str[mi_cfg->unset_doze_brightness]);
goto exit;
}
if (mi_cfg->fod_hbm_enabled) {
mi_cfg->unset_doze_brightness = doze_brightness;
if (mi_cfg->unset_doze_brightness == DOZE_TO_NORMAL) {
mi_cfg->doze_brightness_state = DOZE_TO_NORMAL;
mi_cfg->dimming_state = STATE_DIM_BLOCK;
}
pr_info("fod_hbm_enabled set, save unset_doze_brightness = %s\n",
doze_brightness_str[mi_cfg->unset_doze_brightness]);
goto exit;
}
if (mi_cfg->in_aod) {
if (mi_cfg->doze_brightness_state != doze_brightness ||
mi_cfg->unset_doze_brightness != DOZE_TO_NORMAL) {
if (mi_cfg->into_aod_pending &&
!mi_cfg->layer_aod_flag &&
doze_brightness != DOZE_TO_NORMAL) {
/* After unlocking the fingerprint, request to enter aod mode,
*but there is no aod layer, skip to set doze brightness */
pr_info("aod layer is not ready, skip to set doze brightness\n");
rc = -EAGAIN;
} else {
if (doze_brightness == DOZE_BRIGHTNESS_HBM ||
mi_cfg->unset_doze_brightness == DOZE_BRIGHTNESS_HBM) {
cmd_type = DSI_CMD_SET_MI_DOZE_HBM;
mi_cfg->aod_backlight = 170;
} else if (doze_brightness == DOZE_BRIGHTNESS_LBM ||
mi_cfg->unset_doze_brightness == DOZE_BRIGHTNESS_LBM) {
cmd_type = DSI_CMD_SET_MI_DOZE_LBM;
mi_cfg->aod_backlight = 10;
}
}
if (cmd_type != DSI_CMD_SET_MAX) {
if (sde_kms_is_suspend_blocked(display->drm_dev)) {
pr_err("sde_kms is suspended, skip to set doze brightness\n");
mi_cfg->unset_doze_brightness = doze_brightness;
rc = -EBUSY;
goto exit;
} else {
rc = dsi_panel_tx_cmd_set(panel, cmd_type);
if (rc) {
pr_err("[%s] failed to send DSI_CMD_SET_MI_DOZE_%s cmd, rc=%d\n",
panel->name, cmd_type == DSI_CMD_SET_MI_DOZE_HBM ? "HBM" : "LBM", rc);
}
}
}
mi_cfg->dimming_state = STATE_DIM_BLOCK;
mi_cfg->unset_doze_brightness = DOZE_TO_NORMAL;
mi_cfg->doze_brightness_state = doze_brightness;
if (display->drm_conn && display->drm_conn->kdev)
sysfs_notify(&display->drm_conn->kdev->kobj, NULL, "doze_brightness");
pr_info("set doze brightness to %s\n", doze_brightness_str[doze_brightness]);
} else {
pr_info("%s has been set, skip\n", doze_brightness_str[doze_brightness]);
}
} else {
mi_cfg->unset_doze_brightness = doze_brightness;
if (mi_cfg->unset_doze_brightness != DOZE_TO_NORMAL)
pr_info("Not in Doze mode! save unset_doze_brightness = %s\n",
doze_brightness_str[mi_cfg->unset_doze_brightness]);
}
exit:
if (need_panel_lock)
mutex_unlock(&panel->panel_lock);
return rc;
}
ssize_t dsi_panel_get_doze_brightness(struct dsi_panel *panel, char *buf)
{
ssize_t count = 0;
struct dsi_panel_mi_cfg *mi_cfg;
if (!panel) {
pr_err("invalid params\n");
return -EAGAIN;
}
mutex_lock(&panel->panel_lock);
mi_cfg = &panel->mi_cfg;
count = snprintf(buf, PAGE_SIZE, "%d\n", mi_cfg->doze_brightness_state);
mutex_unlock(&panel->panel_lock);
return count;
}
ssize_t dsi_panel_lockdown_info_read(unsigned char *plockdowninfo)
{
int rc = 0;
@ -2952,13 +2814,8 @@ int dsi_panel_set_disp_param(struct dsi_panel *panel, u32 param)
if (panel->power_mode == SDE_MODE_DPMS_LP1 ||
panel->power_mode == SDE_MODE_DPMS_LP2) {
cancel_delayed_work_sync(&mi_cfg->enter_aod_delayed_work);
if (mi_cfg->layer_fod_unlock_success) {
if (mi_cfg->layer_fod_unlock_success)
pr_info("layer_fod_unlock_success is true, skip into aod mode\n");
} else {
if (!mi_cfg->unset_doze_brightness)
mi_cfg->unset_doze_brightness = mi_cfg->doze_brightness_state;
dsi_panel_set_doze_brightness(panel, mi_cfg->unset_doze_brightness, false);
}
}
break;
case DISPPARAM_DC_ON:
@ -3003,24 +2860,6 @@ int dsi_panel_set_disp_param(struct dsi_panel *panel, u32 param)
pr_info("sRGB\n");
rc = dsi_panel_tx_cmd_set(panel, DSI_CMD_SET_MI_SRGB);
break;
case DISPPARAM_DOZE_BRIGHTNESS_HBM:
if (mi_cfg->in_aod) {
pr_info("doze hbm On\n");
rc = dsi_panel_tx_cmd_set(panel, DSI_CMD_SET_MI_DOZE_HBM);
mi_cfg->dimming_state = STATE_DIM_BLOCK;
}
break;
case DISPPARAM_DOZE_BRIGHTNESS_LBM:
if (mi_cfg->in_aod) {
pr_info("doze lbm On\n");
rc = dsi_panel_tx_cmd_set(panel, DSI_CMD_SET_MI_DOZE_LBM);
mi_cfg->dimming_state = STATE_DIM_BLOCK;
}
break;
case DISPPARAM_DOZE_OFF:
pr_info("doze Off\n");
rc = dsi_panel_tx_cmd_set(panel, DSI_CMD_SET_NOLP);
break;
case DISPPARAM_HBM_BACKLIGHT_RESEND:
dsi_panel_tx_cmd_set(panel, DSI_CMD_SET_MI_DIMMINGON);
backlight_delta++;