drm/msm: add debugfs support to change ESD check interval
Add a debugfs entry to change ESD status check interval
from command line. This will help to debug any issues
related to ESD feature in runtime.
Change-Id: I4d056b049a0aa9b741588496d7885c52b444d858
Signed-off-by: Jayant Shekhar <jshekhar@codeaurora.org>
diff --git a/drivers/gpu/drm/msm/sde/sde_connector.c b/drivers/gpu/drm/msm/sde/sde_connector.c
index 2adae3d..f908e7f 100644
--- a/drivers/gpu/drm/msm/sde/sde_connector.c
+++ b/drivers/gpu/drm/msm/sde/sde_connector.c
@@ -417,13 +417,23 @@
sde_connector_get_info(connector, &info);
if (c_conn->ops.check_status &&
(info.capabilities & MSM_DISPLAY_ESD_ENABLED)) {
- if (en)
+ if (en) {
+ u32 interval;
+
+ /*
+ * If debugfs property is not set then take
+ * default value
+ */
+ interval = c_conn->esd_status_interval ?
+ c_conn->esd_status_interval :
+ STATUS_CHECK_INTERVAL_MS;
/* Schedule ESD status check */
schedule_delayed_work(&c_conn->status_work,
- msecs_to_jiffies(STATUS_CHECK_INTERVAL_MS));
- else
+ msecs_to_jiffies(interval));
+ } else {
/* Cancel any pending ESD status check */
cancel_delayed_work_sync(&c_conn->status_work);
+ }
}
}
@@ -1542,10 +1552,14 @@
sde_connector_get_info(connector, &info);
if (sde_connector->ops.check_status &&
- (info.capabilities & MSM_DISPLAY_ESD_ENABLED))
+ (info.capabilities & MSM_DISPLAY_ESD_ENABLED)) {
debugfs_create_u32("force_panel_dead", 0600,
connector->debugfs_entry,
&sde_connector->force_panel_dead);
+ debugfs_create_u32("esd_status_interval", 0600,
+ connector->debugfs_entry,
+ &sde_connector->esd_status_interval);
+ }
if (!debugfs_create_bool("fb_kmap", 0600, connector->debugfs_entry,
&sde_connector->fb_kmap)) {
@@ -1720,10 +1734,16 @@
}
if (rc > 0) {
+ u32 interval;
+
SDE_DEBUG("esd check status success conn_id: %d enc_id: %d\n",
conn->base.base.id, conn->encoder->base.id);
+
+ /* If debugfs property is not set then take default value */
+ interval = conn->esd_status_interval ?
+ conn->esd_status_interval : STATUS_CHECK_INTERVAL_MS;
schedule_delayed_work(&conn->status_work,
- msecs_to_jiffies(STATUS_CHECK_INTERVAL_MS));
+ msecs_to_jiffies(interval));
return;
}
diff --git a/drivers/gpu/drm/msm/sde/sde_connector.h b/drivers/gpu/drm/msm/sde/sde_connector.h
index 9c37869..17d200d 100644
--- a/drivers/gpu/drm/msm/sde/sde_connector.h
+++ b/drivers/gpu/drm/msm/sde/sde_connector.h
@@ -307,6 +307,7 @@
* @bl_device: backlight device node
* @status_work: work object to perform status checks
* @force_panel_dead: variable to trigger forced ESD recovery
+ * @esd_status_interval: variable to change ESD check interval in millisec
* @bl_scale_dirty: Flag to indicate PP BL scale value(s) is changed
* @bl_scale: BL scale value for ABA feature
* @bl_scale_ad: BL scale value for AD feature
@@ -347,6 +348,7 @@
struct backlight_device *bl_device;
struct delayed_work status_work;
u32 force_panel_dead;
+ u32 esd_status_interval;
bool bl_scale_dirty;
u32 bl_scale;