diff --git a/drivers/gpu/drm/imx/hdp/imx-hdp.c b/drivers/gpu/drm/imx/hdp/imx-hdp.c
index 70b31c85c98d930c71e9d7c3ffc038004e966ec3..774857843a086774509a74809c5542a690ad8441 100644
--- a/drivers/gpu/drm/imx/hdp/imx-hdp.c
+++ b/drivers/gpu/drm/imx/hdp/imx-hdp.c
@@ -1065,6 +1065,10 @@ static void imx_hdp_imx_encoder_enable(struct drm_encoder *encoder)
 	struct drm_connector_state *conn_state = hdp->connector.state;
 	int ret = 0;
 
+	if (conn_state->content_protection ==
+	    DRM_MODE_CONTENT_PROTECTION_DESIRED)
+		imx_hdcp_enable(hdp);
+
 	if (!hdp->ops->write_hdr_metadata)
 		goto out;
 
@@ -1093,10 +1097,6 @@ static void imx_hdp_imx_encoder_enable(struct drm_encoder *encoder)
 
 	hdp->ops->write_hdr_metadata(&hdp->state, &frame);
 
-	if (conn_state->content_protection ==
-	    DRM_MODE_CONTENT_PROTECTION_DESIRED)
-		imx_hdcp_enable(hdp);
-
 out:
 	imx_hdp_call(hdp, pixel_link_validate, &hdp->state);
 	imx_hdp_call(hdp, pixel_link_sync_ctrl_enable, &hdp->state);