[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