[PATCH 6/6] drm/amd/display: add event type check before restart the authentication

Harry Wentland hwentlan at amd.com
Thu Dec 12 19:05:21 UTC 2019


Patches 1-3 are
Reviewed-by: Harry Wentland <harry.wentland at amd.com>

Patches 4-6 are
Acked-by: Harry Wentland <harry.wentland at amd.com>

Harry

On 2019-12-12 12:06 p.m., Bhawanpreet Lakha wrote:
> From: Xiaodong Yan <Xiaodong.Yan at amd.com>
> 
> [Why]
> Some combined docks will always trigger CP_IRQ but there's nothing the driver
> needs to take care of, but the CP_IRQ breaks the original hdcp state and
> triggers the driver to restart the authentication.
> 
> [How]
> Add the event type check before restart the authentication or resend the stream
> management
> 
> Signed-off-by: Xiaodong Yan <Xiaodong.Yan at amd.com>
> Reviewed-by: Wenjing Liu <Wenjing.Liu at amd.com>
> ---
>  .../gpu/drm/amd/display/modules/hdcp/hdcp2_transition.c  | 9 +++++++--
>  1 file changed, 7 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/display/modules/hdcp/hdcp2_transition.c b/drivers/gpu/drm/amd/display/modules/hdcp/hdcp2_transition.c
> index da190739a969..8cae3e3aacd5 100644
> --- a/drivers/gpu/drm/amd/display/modules/hdcp/hdcp2_transition.c
> +++ b/drivers/gpu/drm/amd/display/modules/hdcp/hdcp2_transition.c
> @@ -630,7 +630,10 @@ enum mod_hdcp_status mod_hdcp_hdcp2_dp_transition(struct mod_hdcp *hdcp,
>  			break;
>  		} else if (input->prepare_stream_manage != PASS ||
>  				input->stream_manage_write != PASS) {
> -			fail_and_restart_in_ms(0, &status, output);
> +			if (event_ctx->event == MOD_HDCP_EVENT_CALLBACK)
> +				fail_and_restart_in_ms(0, &status, output);
> +			else
> +				increment_stay_counter(hdcp);
>  			break;
>  		}
>  		callback_in_ms(100, output);
> @@ -655,10 +658,12 @@ enum mod_hdcp_status mod_hdcp_hdcp2_dp_transition(struct mod_hdcp *hdcp,
>  			 */
>  			if (hdcp->auth.count.stream_management_retry_count > 10) {
>  				fail_and_restart_in_ms(0, &status, output);
> -			} else {
> +			} else if (event_ctx->event == MOD_HDCP_EVENT_CALLBACK) {
>  				hdcp->auth.count.stream_management_retry_count++;
>  				callback_in_ms(0, output);
>  				set_state_id(hdcp, output, D2_A9_SEND_STREAM_MANAGEMENT);
> +			} else {
> +				increment_stay_counter(hdcp);
>  			}
>  			break;
>  		}
> 


More information about the amd-gfx mailing list