[PATCH v3 2/3] Subject: [PATCH] drm/mediatek/dp: Add HDCP2.x feature for DisplayPort

CK Hu (胡俊光) ck.hu at mediatek.com
Mon Aug 12 00:25:27 PDT 2024


Hi, Mac:

On Sat, 2024-06-08 at 20:01 +0800, mac.shen wrote:
> Changes in v3:
> - refine the function to get system time
> - refine the flow to do HDCP with content type and
>   protection value which set by user space
> - refine the flow to update content protection
> - refine the flow to do HDCP2.x authentication
> per suggestion from the previous thread:
> https://urldefense.com/v3/__https://patchwork.kernel.org/project/linux-mediatek__;!!CTRNKA9wMg0ARbw!md6xUiYN88D2YmETs8FQgaExM2zH8S1SmAEU9GRchwpNsXOyDFul3ziVKhRpCJaj8Rcn-gvM-801runjwA$ 
> /patch/20240205055055.25340-3-mac.shen at mediatek.com/
> 
> Signed-off-by: mac.shen <mac.shen at mediatek.com>
> ---

[snip]

> @@ -2242,6 +2373,7 @@ static void mtk_dp_bridge_atomic_enable(struct drm_bridge *bridge,
>  					struct drm_bridge_state *old_state)
>  {
>  	struct mtk_dp *mtk_dp = mtk_dp_from_bridge(bridge);
> +	struct drm_connector_state *connector_state;
>  	int ret;
>  
>  	mtk_dp->conn = drm_atomic_get_new_connector_for_encoder(old_state->base.state,
> @@ -2252,6 +2384,8 @@ static void mtk_dp_bridge_atomic_enable(struct drm_bridge *bridge,
>  		return;
>  	}
>  
> +	connector_state = drm_atomic_get_connector_state(old_state->base.state, mtk_dp->conn);
> +
>  	mtk_dp_aux_panel_poweron(mtk_dp, true);
>  
>  	/* Training */
> @@ -2281,6 +2415,14 @@ static void mtk_dp_bridge_atomic_enable(struct drm_bridge *bridge,
>  	mtk_dp->enabled = true;
>  	mtk_dp_update_plugged_status(mtk_dp);
>  
> +	/* Enable hdcp if it's desired */
> +	dev_dbg(mtk_dp->dev, "hdcp_content_type:%d, content protection: %d",
> +		connector_state->hdcp_content_type, connector_state->content_protection);
> +	if (connector_state->content_protection == DRM_MODE_CONTENT_PROTECTION_DESIRED) {
> +		mtk_dp->hdcp_info.hdcp_content_type = connector_state->hdcp_content_type;
> +		mtk_dp_hdcp_enable(mtk_dp);
> +	}
> +
>  	return;
>  power_off_aux:
>  	mtk_dp_update_bits(mtk_dp, MTK_DP_TOP_PWR_STATE,
> @@ -2427,6 +2569,8 @@ static int mtk_dp_bridge_atomic_check(struct drm_bridge *bridge,
>  
>  	drm_display_mode_to_videomode(&crtc_state->adjusted_mode, &mtk_dp->info.vm);
>  
> +	mtk_dp_hdcp_atomic_check(mtk_dp, conn_state);
> +
>  	return 0;
>  }

In mtk_dp_bridge_atomic_enable(), you enable hdcp.
So in mtk_dp_bridge_atomic_disable(), you should disable hdcp.

Regards,
CK

>  


More information about the Linux-mediatek mailing list