--- /dev/null
+From f2703a3596a279b0be6eeed4c500bdbaa8dc3ce4 Mon Sep 17 00:00:00 2001
+From: Martin Leung <martin.leung@amd.com>
+Date: Mon, 26 Feb 2024 13:20:08 -0500
+Subject: drm/amd/display: revert Exit idle optimizations before HDCP execution
+
+From: Martin Leung <martin.leung@amd.com>
+
+commit f2703a3596a279b0be6eeed4c500bdbaa8dc3ce4 upstream.
+
+why and how:
+causes black screen on PNP on DCN 3.5
+
+This reverts commit f30a3bea92bd ("drm/amd/display: Exit idle
+optimizations before HDCP execution")
+
+Cc: Mario Limonciello <mario.limonciello@amd.com>
+Cc: Alex Deucher <alexander.deucher@amd.com>
+Reviewed-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
+Acked-by: Wayne Lin <wayne.lin@amd.com>
+Signed-off-by: Martin Leung <martin.leung@amd.com>
+Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
+Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/gpu/drm/amd/display/modules/hdcp/hdcp.c | 10 ----------
+ drivers/gpu/drm/amd/display/modules/inc/mod_hdcp.h | 8 --------
+ 2 files changed, 18 deletions(-)
+
+--- a/drivers/gpu/drm/amd/display/modules/hdcp/hdcp.c
++++ b/drivers/gpu/drm/amd/display/modules/hdcp/hdcp.c
+@@ -86,14 +86,6 @@ static uint8_t is_cp_desired_hdcp2(struc
+ !hdcp->connection.is_hdcp2_revoked;
+ }
+
+-static void exit_idle_optimizations(struct mod_hdcp *hdcp)
+-{
+- struct mod_hdcp_dm *dm = &hdcp->config.dm;
+-
+- if (dm->funcs.exit_idle_optimizations)
+- dm->funcs.exit_idle_optimizations(dm->handle);
+-}
+-
+ static enum mod_hdcp_status execution(struct mod_hdcp *hdcp,
+ struct mod_hdcp_event_context *event_ctx,
+ union mod_hdcp_transition_input *input)
+@@ -456,8 +448,6 @@ enum mod_hdcp_status mod_hdcp_process_ev
+ memset(&event_ctx, 0, sizeof(struct mod_hdcp_event_context));
+ event_ctx.event = event;
+
+- exit_idle_optimizations(hdcp);
+-
+ /* execute and transition */
+ exec_status = execution(hdcp, &event_ctx, &hdcp->auth.trans_input);
+ trans_status = transition(
+--- a/drivers/gpu/drm/amd/display/modules/inc/mod_hdcp.h
++++ b/drivers/gpu/drm/amd/display/modules/inc/mod_hdcp.h
+@@ -143,13 +143,6 @@ struct mod_hdcp_ddc {
+ } funcs;
+ };
+
+-struct mod_hdcp_dm {
+- void *handle;
+- struct {
+- void (*exit_idle_optimizations)(void *handle);
+- } funcs;
+-};
+-
+ struct mod_hdcp_psp {
+ void *handle;
+ void *funcs;
+@@ -259,7 +252,6 @@ struct mod_hdcp_display_query {
+ struct mod_hdcp_config {
+ struct mod_hdcp_psp psp;
+ struct mod_hdcp_ddc ddc;
+- struct mod_hdcp_dm dm;
+ uint8_t index;
+ };
+