From 685dc11fceb5676b3f141b612d40b0d5f42c81ee Mon Sep 17 00:00:00 2001 From: Sandor Yu Date: Fri, 19 Feb 2021 17:53:54 +0800 Subject: [PATCH] LF-3367-3: drm: mhdp-hdcp: adjust state handle priority Handle HDCP_STATE_INACTIVE and HDCP_STATE_DISABLING state priority to avoid unnecessary HPD state check, drm has check it when hdcp enable/disable. Signed-off-by: Sandor Yu Reviewed-by: Robby Cai Acked-by: Jason Liu --- .../gpu/drm/bridge/cadence/cdns-hdmi-hdcp.c | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/drivers/gpu/drm/bridge/cadence/cdns-hdmi-hdcp.c b/drivers/gpu/drm/bridge/cadence/cdns-hdmi-hdcp.c index 9119f2063098..5dfbd7943306 100644 --- a/drivers/gpu/drm/bridge/cadence/cdns-hdmi-hdcp.c +++ b/drivers/gpu/drm/bridge/cadence/cdns-hdmi-hdcp.c @@ -1048,6 +1048,15 @@ static int hdmi_hdcp_check_link(struct cdns_mhdp_device *mhdp) mhdp->hdcp.reauth_in_progress = 0; mutex_lock(&mhdp->lock); + if (mhdp->hdcp.state == HDCP_STATE_INACTIVE) + goto out; + + if (mhdp->hdcp.state == HDCP_STATE_DISABLING) { + _hdmi_hdcp_disable(mhdp); + mhdp->hdcp.state = HDCP_STATE_INACTIVE; + goto out; + } + if ((mhdp->hdcp.state == HDCP_STATE_AUTHENTICATED) || (mhdp->hdcp.state == HDCP_STATE_AUTHENTICATING) || (mhdp->hdcp.state == HDCP_STATE_REAUTHENTICATING) || @@ -1056,18 +1065,11 @@ static int hdmi_hdcp_check_link(struct cdns_mhdp_device *mhdp) /* In active states, check the HPD signal. Because of the IRQ * debounce delay, the state might not reflect the disconnection. * The FW could already have detected the HDP down and reported error */ - hpd_sts = cdns_mhdp_read_hpd(mhdp); - if (1 != hpd_sts) + hpd_sts = cdns_mhdp_read_hpd(mhdp); + if (1 != hpd_sts) { mhdp->hdcp.state = HDCP_STATE_DISABLING; - } - - if (mhdp->hdcp.state == HDCP_STATE_INACTIVE) - goto out; - - if (mhdp->hdcp.state == HDCP_STATE_DISABLING) { - _hdmi_hdcp_disable(mhdp); - mhdp->hdcp.state = HDCP_STATE_INACTIVE; - goto out; + goto out; + } } /* TODO items: -- 2.17.1