disp: msm: hdcp: abort queued tasks while processing PM suspend
During suspend, there might be a chance that lib auth work is queued but not yet started. So during pm cycle it might start execution before host_init which can lead to noc error while accessing dp_aux registers. To prevent that set abort flag to abort lib auth work and set interrupts before host_deinit. Change-Id: Ie2c3ac9b0846644d3c2b37f410c341659b030c16 Signed-off-by: Rajat Gupta <rajatgu@codeaurora.org> Signed-off-by: Tatenda Chipeperekwa <tatendac@codeaurora.org>
This commit is contained in:

committed by
Tatenda Chipeperekwa

parent
54365213d1
commit
0e1496c718
@@ -513,6 +513,22 @@ static void dp_display_hdcp_process_state(struct dp_display_private *dp)
|
||||
}
|
||||
}
|
||||
|
||||
static void dp_display_abort_hdcp(struct dp_display_private *dp,
|
||||
bool abort)
|
||||
{
|
||||
u8 i = HDCP_VERSION_2P2;
|
||||
struct dp_hdcp_dev *dev = NULL;
|
||||
|
||||
while (i) {
|
||||
dev = &dp->hdcp.dev[i];
|
||||
i >>= 1;
|
||||
if (!(dp->hdcp.source_cap & dev->ver))
|
||||
continue;
|
||||
|
||||
dev->ops->abort(dev->fd, abort);
|
||||
}
|
||||
}
|
||||
|
||||
static void dp_display_hdcp_cb_work(struct work_struct *work)
|
||||
{
|
||||
struct dp_display_private *dp;
|
||||
@@ -894,6 +910,7 @@ static void dp_display_host_init(struct dp_display_private *dp)
|
||||
dp->hpd->host_init(dp->hpd, &dp->catalog->hpd);
|
||||
dp->ctrl->init(dp->ctrl, flip, reset);
|
||||
enable_irq(dp->irq);
|
||||
dp_display_abort_hdcp(dp, false);
|
||||
|
||||
dp_display_state_add(DP_STATE_INITIALIZED);
|
||||
|
||||
@@ -971,6 +988,7 @@ static void dp_display_host_deinit(struct dp_display_private *dp)
|
||||
return;
|
||||
}
|
||||
|
||||
dp_display_abort_hdcp(dp, true);
|
||||
dp->ctrl->deinit(dp->ctrl);
|
||||
dp->hpd->host_deinit(dp->hpd, &dp->catalog->hpd);
|
||||
dp->power->deinit(dp->power);
|
||||
|
Reference in New Issue
Block a user