diff options
| -rw-r--r-- | drivers/gpu/drm/drm_sysfs.c | 36 | ||||
| -rw-r--r-- | techpack/display/msm/dsi/dsi_panel.c | 15 |
2 files changed, 50 insertions, 1 deletions
diff --git a/drivers/gpu/drm/drm_sysfs.c b/drivers/gpu/drm/drm_sysfs.c index 4de88672e97c..4c8e757bb77f 100644 --- a/drivers/gpu/drm/drm_sysfs.c +++ b/drivers/gpu/drm/drm_sysfs.c @@ -1420,7 +1420,39 @@ static ssize_t force_screenfp_store(struct device *dev, return count; } +int oneplus_auth_status = 0; +int oneplus_cancel_status = 0; int oneplus_panel_status = 0; +static ssize_t op_display_get_auth_status(struct device *dev, + struct device_attribute *attr, char *buf) +{ + return sprintf(buf, "%d\n", oneplus_auth_status); +} + +static ssize_t op_display_set_auth_status(struct device *dev, + struct device_attribute *attr, + const char *buf, size_t count) +{ + sscanf(buf, "%d", &oneplus_auth_status); + + return count; +} + +static ssize_t op_display_get_cancel_status(struct device *dev, + struct device_attribute *attr, char *buf) +{ + return sprintf(buf, "%d\n", oneplus_cancel_status); +} + +static ssize_t op_display_set_cancel_status(struct device *dev, + struct device_attribute *attr, + const char *buf, size_t count) +{ + sscanf(buf, "%d", &oneplus_cancel_status); + + return count; +} + static ssize_t power_status_show(struct device *dev, struct device_attribute *attr, char *buf) { @@ -1544,6 +1576,8 @@ static DEVICE_ATTR_RW(dp_en); static DEVICE_ATTR_RW(dither_en); static DEVICE_ATTR_RW(power_status); static DEVICE_ATTR_RW(seed_lp); +static DEVICE_ATTR(auth_status, S_IRUGO|S_IWUSR, op_display_get_auth_status, op_display_set_auth_status); +static DEVICE_ATTR(cancel_status, S_IRUGO|S_IWUSR, op_display_get_cancel_status, op_display_set_cancel_status); static struct attribute *connector_dev_attrs[] = { &dev_attr_status.attr, &dev_attr_enabled.attr, @@ -1585,6 +1619,8 @@ static struct attribute *connector_dev_attrs[] = { &dev_attr_dimlayer_bl_en.attr, &dev_attr_dp_en.attr, &dev_attr_dither_en.attr, + &dev_attr_auth_status.attr, + &dev_attr_cancel_status.attr, &dev_attr_power_status.attr, &dev_attr_seed_lp.attr, NULL diff --git a/techpack/display/msm/dsi/dsi_panel.c b/techpack/display/msm/dsi/dsi_panel.c index 53ee722335ad..c50a53a2d4cf 100644 --- a/techpack/display/msm/dsi/dsi_panel.c +++ b/techpack/display/msm/dsi/dsi_panel.c @@ -5270,6 +5270,8 @@ bool real_aod_mode = false; extern bool oneplus_dimlayer_hbm_enable; bool backup_dimlayer_hbm = false; +extern int oneplus_auth_status; +extern int oneplus_cancel_status; extern int oneplus_dim_status; int backup_dim_status = 0; int dsi_panel_enable(struct dsi_panel *panel) @@ -5339,9 +5341,20 @@ int dsi_panel_enable(struct dsi_panel *panel) panel->need_power_on_backlight = true; oneplus_panel_status = 2; // DISPLAY_POWER_ON + + if (oneplus_cancel_status == 1) { + backup_dimlayer_hbm = 0; + backup_dim_status = 0; + } else if (oneplus_auth_status == 1) { + backup_dimlayer_hbm = 1; + backup_dim_status = 1; + } oneplus_dimlayer_hbm_enable = backup_dimlayer_hbm; oneplus_dim_status = backup_dim_status; - pr_err("Restore dim when panel goes on"); + if (!oneplus_cancel_status) + pr_err("Restore dim when panel goes on"); + oneplus_auth_status = 0; + oneplus_cancel_status = 0; blank = DRM_PANEL_BLANK_UNBLANK_CHARGE; notifier_data.data = ␣ |
