drm/amd/display: Remove check for default eDP panel_mode
authorTaimur Hassan <syed.hassan@amd.com>
Fri, 14 Jul 2023 16:59:06 +0000 (12:59 -0400)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 25 Jul 2023 17:41:12 +0000 (13:41 -0400)
[Why]
DPCD read is skipped first time after driver initialization.

Reviewed-by: Charlene Liu <charlene.liu@amd.com>
Acked-by: Alex Hung <alex.hung@amd.com>
Signed-off-by: Taimur Hassan <syed.hassan@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/dc/link/protocols/link_edp_panel_control.c

index 5add2360fc94c2d0b2bd5672828d5a63f55e2243..8b360c09e0e87861a77c91c44ffd8f37f0a5e1e5 100644 (file)
@@ -46,43 +46,42 @@ void dp_set_panel_mode(struct dc_link *link, enum dp_panel_mode panel_mode)
 {
        union dpcd_edp_config edp_config_set;
        bool panel_mode_edp = false;
+       enum dc_status result;
 
        memset(&edp_config_set, '\0', sizeof(union dpcd_edp_config));
 
-       if (panel_mode != DP_PANEL_MODE_DEFAULT) {
+       switch (panel_mode) {
+       case DP_PANEL_MODE_EDP:
+       case DP_PANEL_MODE_SPECIAL:
+               panel_mode_edp = true;
+               break;
 
-               switch (panel_mode) {
-               case DP_PANEL_MODE_EDP:
-               case DP_PANEL_MODE_SPECIAL:
-                       panel_mode_edp = true;
-                       break;
+       default:
+               break;
+       }
 
-               default:
-                               break;
-               }
+       /*set edp panel mode in receiver*/
+       result = core_link_read_dpcd(
+               link,
+               DP_EDP_CONFIGURATION_SET,
+               &edp_config_set.raw,
+               sizeof(edp_config_set.raw));
+
+       if (result == DC_OK &&
+               edp_config_set.bits.PANEL_MODE_EDP
+               != panel_mode_edp) {
 
-               /*set edp panel mode in receiver*/
-               core_link_read_dpcd(
+               edp_config_set.bits.PANEL_MODE_EDP =
+               panel_mode_edp;
+               result = core_link_write_dpcd(
                        link,
                        DP_EDP_CONFIGURATION_SET,
                        &edp_config_set.raw,
                        sizeof(edp_config_set.raw));
 
-               if (edp_config_set.bits.PANEL_MODE_EDP
-                       != panel_mode_edp) {
-                       enum dc_status result;
-
-                       edp_config_set.bits.PANEL_MODE_EDP =
-                       panel_mode_edp;
-                       result = core_link_write_dpcd(
-                               link,
-                               DP_EDP_CONFIGURATION_SET,
-                               &edp_config_set.raw,
-                               sizeof(edp_config_set.raw));
-
-                       ASSERT(result == DC_OK);
-               }
+               ASSERT(result == DC_OK);
        }
+
        link->panel_mode = panel_mode;
        DC_LOG_DETECTION_DP_CAPS("Link: %d eDP panel mode supported: %d "
                 "eDP panel mode enabled: %d \n",