aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoralk3pInjection <webmaster@raspii.tech>2022-01-23 12:47:03 +0800
committerSemavi Ulusoy <doc.divxm@gmail.com>2022-02-12 00:38:44 +0300
commite083bbd7015f85c298e3c961f8f072022d7c25c3 (patch)
treee6149e0ee34c6ad7b45a672ca828374d97086de2
parent3c24148ee69c0c0e146e16f9e8ee09586712b7f4 (diff)
disp: msm: Allow hooking dim when screen goes ons12.0
Change-Id: I5ca0b3905ebfb7200cd04bfae28ad1feb06d1a44 Signed-off-by: alk3pInjection <webmaster@raspii.tech>
-rw-r--r--drivers/gpu/drm/drm_sysfs.c36
-rw-r--r--techpack/display/msm/dsi/dsi_panel.c15
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 = &blank;