disp: msm: Provide a dynamic method to disable the ESD.

Providing a dynamic method to disable ESD detection and recovery with UTAGS.

Port from: 1adab9a

Change-Id: I767666d2e802e40af9c8f3508e84b76df365ea38
Signed-off-by: Bang Nguyen <bangnguyen@motorola.com>
Reviewed-on: https://gerrit.mot.com/1444399
SLTApproved: Slta Waiver
SME-Granted: SME Approvals Granted
Tested-by: Jira Key
Submit-Approved: Jira Key
Reviewed-on: https://gerrit.mot.com/1509801
Reviewed-by: Hua Tan <tanhua1@motorola.com>
This commit is contained in:
Bang Nguyen authored and Gilberto Gambugge committed 2023-06-01 00:43:20 -03:00
1 parent 912a0498c8
commit e0ac15bcc0
5 files changed
+34 -2

No files matched your search

+13
View File
@@ -898,6 +898,19 @@ release_panel_lock:
return rc; return rc;
} }
bool dsi_display_force_esd_disable(void *display)
{
struct dsi_display *dsi_display = display;
struct dsi_panel *panel;
if (dsi_display == NULL)
return false;
panel = dsi_display->panel;
return (panel->esd_utag_enable? false: true);
}
static int dsi_display_cmd_prepare(const char *cmd_buf, u32 cmd_buf_len, static int dsi_display_cmd_prepare(const char *cmd_buf, u32 cmd_buf_len,
struct dsi_cmd_desc *cmd, u8 *payload, u32 payload_len) struct dsi_cmd_desc *cmd, u8 *payload, u32 payload_len)
{ {
+7
View File
@@ -670,6 +670,13 @@ int dsi_display_motUtil_transfer(void *display, const char *cmd_buf,
u32 cmd_buf_len, struct motUtil *motUtil_data); u32 cmd_buf_len, struct motUtil *motUtil_data);
/**
* dsi_display_force_esd_disable() - check if ESD UTAG is forced to disable ESD
* @display: Handle to display.
*/
bool dsi_display_force_esd_disable(void *display);
/** /**
* dsi_display_soft_reset() - perform a soft reset on DSI controller * dsi_display_soft_reset() - perform a soft reset on DSI controller
* @display: Handle to display * @display: Handle to display
+4 -2
View File
@@ -488,8 +488,10 @@ void sde_connector_schedule_status_work(struct drm_connector *connector,
return; return;
sde_connector_get_info(connector, &info); sde_connector_get_info(connector, &info);
if (c_conn->ops.check_status && if ((c_conn->ops.force_esd_disable &&
(info.capabilities & MSM_DISPLAY_ESD_ENABLED)) { (c_conn->ops.force_esd_disable(c_conn->display) == false)) &&
(c_conn->ops.check_status &&
(info.capabilities & MSM_DISPLAY_ESD_ENABLED))) {
if (en) { if (en) {
u32 interval; u32 interval;
+7
View File
@@ -277,6 +277,13 @@ struct sde_connector_ops {
int (*motUtil_transfer)(void *display, const char *cmd_buf, int (*motUtil_transfer)(void *display, const char *cmd_buf,
u32 cmd_buf_len, struct motUtil *motUtil_data); u32 cmd_buf_len, struct motUtil *motUtil_data);
/**
* force_esd_disable - force to disable check_status
* @display: Pointer to private display handle
* Returns: true for forcing ESD disable
*/
bool (*force_esd_disable)(void *display);
/** /**
* config_hdr - configure HDR * config_hdr - configure HDR
* @connector: Pointer to drm connector structure * @connector: Pointer to drm connector structure
+3
View File
@@ -1437,6 +1437,7 @@ static int _sde_kms_setup_displays(struct drm_device *dev,
.enable_event = dsi_conn_enable_event, .enable_event = dsi_conn_enable_event,
.motUtil_transfer = dsi_display_motUtil_transfer, .motUtil_transfer = dsi_display_motUtil_transfer,
.cmd_transfer = dsi_display_cmd_transfer, .cmd_transfer = dsi_display_cmd_transfer,
.force_esd_disable = dsi_display_force_esd_disable,
.cont_splash_config = dsi_display_cont_splash_config, .cont_splash_config = dsi_display_cont_splash_config,
.get_panel_vfp = dsi_display_get_panel_vfp, .get_panel_vfp = dsi_display_get_panel_vfp,
.get_default_lms = dsi_display_get_default_lms, .get_default_lms = dsi_display_get_default_lms,
@@ -1454,6 +1455,7 @@ static int _sde_kms_setup_displays(struct drm_device *dev,
.get_dst_format = NULL, .get_dst_format = NULL,
.check_status = NULL, .check_status = NULL,
.cmd_transfer = NULL, .cmd_transfer = NULL,
.force_esd_disable = NULL,
.cont_splash_config = NULL, .cont_splash_config = NULL,
.get_panel_vfp = NULL, .get_panel_vfp = NULL,
}; };
@@ -1471,6 +1473,7 @@ static int _sde_kms_setup_displays(struct drm_device *dev,
.set_colorspace = dp_connector_set_colorspace, .set_colorspace = dp_connector_set_colorspace,
.config_hdr = dp_connector_config_hdr, .config_hdr = dp_connector_config_hdr,
.cmd_transfer = NULL, .cmd_transfer = NULL,
.force_esd_disable = NULL,
.cont_splash_config = NULL, .cont_splash_config = NULL,
.get_panel_vfp = NULL, .get_panel_vfp = NULL,
.update_pps = dp_connector_update_pps, .update_pps = dp_connector_update_pps,