drm/amd/display: Disabled seamless boots on DP and renamed power_down_display_on_boot
authorJarif Aftab <jaraftab@amd.com>
Tue, 16 Nov 2021 23:24:06 +0000 (18:24 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 18 Jan 2022 22:41:18 +0000 (17:41 -0500)
[WHY]
- We only ever want seamless boots on eDPs
- The naming and logic did not match the context

[HOW]
- Removed unnecessary if statements
- Renamed power_down_display_on_boot to seamless_boot_edp_requested and
swapped the logic

Reviewed-by: Martin Leung <Martin.Leung@amd.com>
Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Signed-off-by: Jarif Aftab <jaraftab@amd.com>
Tested-by: Daniel Wheeler <daniel.wheeler@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c
drivers/gpu/drm/amd/display/dc/core/dc_link.c
drivers/gpu/drm/amd/display/dc/dc.h
drivers/gpu/drm/amd/display/dc/dcn10/dcn10_hw_sequencer.c
drivers/gpu/drm/amd/display/dc/dcn30/dcn30_hwseq.c
drivers/gpu/drm/amd/display/dc/dcn31/dcn31_hwseq.c

index 6692c8f75f2369f6db3f7b5aad3490bb38cba812..8a46b8430f1e40118279c20d64934807d571959c 100644 (file)
@@ -1496,10 +1496,10 @@ static int amdgpu_dm_init(struct amdgpu_device *adev)
                init_data.flags.allow_lttpr_non_transparent_mode.bits.DP2_0 = true;
 #endif
 
-       init_data.flags.power_down_display_on_boot = true;
+       init_data.flags.seamless_boot_edp_requested = false;
 
        if (check_seamless_boot_capability(adev)) {
-               init_data.flags.power_down_display_on_boot = false;
+               init_data.flags.seamless_boot_edp_requested = true;
                init_data.flags.allow_seamless_boot_optimization = true;
                DRM_INFO("Seamless boot condition check passed\n");
        }
index b5e570d33ca947d1d4eb97190f682f0e56356801..0c64dea4fdd8fa6e891e3d4be36d2978f5c021b3 100644 (file)
@@ -1019,18 +1019,6 @@ static bool dc_link_detect_helper(struct dc_link *link,
                                        link->type != dc_connection_mst_branch)
                                dm_helpers_dp_mst_stop_top_mgr(link->ctx, link);
 
-
-                       // For seamless boot, to skip verify link cap, we read UEFI settings and set them as verified.
-                       if (reason == DETECT_REASON_BOOT &&
-                                       !dc_ctx->dc->config.power_down_display_on_boot &&
-                                       link->link_status.link_active)
-                               perform_dp_seamless_boot = true;
-
-                       if (perform_dp_seamless_boot) {
-                               read_current_link_settings_on_detect(link);
-                               link->verified_link_cap = link->reported_link_cap;
-                       }
-
                        break;
                }
 
index 288e7b01f56174cbcb33932a3f5a8d6d5928a448..263f7edd42a4a6d1be345b4dd878c701d36cb474 100644 (file)
@@ -322,7 +322,7 @@ struct dc_config {
        bool fbc_support;
        bool disable_fractional_pwm;
        bool allow_seamless_boot_optimization;
-       bool power_down_display_on_boot;
+       bool seamless_boot_edp_requested;
        bool edp_not_connected;
        bool edp_no_power_sequencing;
        bool force_enum_edp;
index 530a72e3eefe29b9d767c8784e0b6b0b864d89d4..915eecb4078838dcecee1dcf63145e10a7bcbbd5 100644 (file)
@@ -1505,8 +1505,7 @@ void dcn10_init_hw(struct dc *dc)
                dmub_enable_outbox_notification(dc);
 
        /* we want to turn off all dp displays before doing detection */
-       if (dc->config.power_down_display_on_boot)
-               dc_link_blank_all_dp_displays(dc);
+       dc_link_blank_all_dp_displays(dc);
 
        /* If taking control over from VBIOS, we may want to optimize our first
         * mode set, so we need to skip powering down pipes until we know which
@@ -1514,7 +1513,7 @@ void dcn10_init_hw(struct dc *dc)
         * Otherwise, if taking control is not possible, we need to power
         * everything down.
         */
-       if (dcb->funcs->is_accelerated_mode(dcb) || dc->config.power_down_display_on_boot) {
+       if (dcb->funcs->is_accelerated_mode(dcb) || !dc->config.seamless_boot_edp_requested) {
                if (!is_optimized_init_done) {
                        hws->funcs.init_pipes(dc, dc->current_state);
                        if (dc->res_pool->hubbub->funcs->allow_self_refresh_control)
index 1db1ca19411d8d4b6a1115a439d75b155fc40b06..ed0a0e5fd80539e46c184c6d6de036ba2e9ae349 100644 (file)
@@ -545,8 +545,7 @@ void dcn30_init_hw(struct dc *dc)
                        hws->funcs.dsc_pg_control(hws, res_pool->dscs[i]->inst, false);
 
        /* we want to turn off all dp displays before doing detection */
-       if (dc->config.power_down_display_on_boot)
-               dc_link_blank_all_dp_displays(dc);
+       dc_link_blank_all_dp_displays(dc);
 
        /* If taking control over from VBIOS, we may want to optimize our first
         * mode set, so we need to skip powering down pipes until we know which
@@ -554,7 +553,7 @@ void dcn30_init_hw(struct dc *dc)
         * Otherwise, if taking control is not possible, we need to power
         * everything down.
         */
-       if (dcb->funcs->is_accelerated_mode(dcb) || dc->config.power_down_display_on_boot) {
+       if (dcb->funcs->is_accelerated_mode(dcb) || !dc->config.seamless_boot_edp_requested) {
                hws->funcs.init_pipes(dc, dc->current_state);
                if (dc->res_pool->hubbub->funcs->allow_self_refresh_control)
                        dc->res_pool->hubbub->funcs->allow_self_refresh_control(dc->res_pool->hubbub,
@@ -566,7 +565,7 @@ void dcn30_init_hw(struct dc *dc)
         * To avoid this, power down hardware on boot
         * if DIG is turned on and seamless boot not enabled
         */
-       if (dc->config.power_down_display_on_boot) {
+       if (!dc->config.seamless_boot_edp_requested) {
                struct dc_link *edp_links[MAX_NUM_EDP];
                struct dc_link *edp_link = NULL;
 
index 4206ce5bf9a92dc68d42c054b48eb9575f8f893a..b2cfd277b9139a6e0b1bd5fbfec8eafaa5007b6b 100644 (file)
@@ -197,8 +197,7 @@ void dcn31_init_hw(struct dc *dc)
                dmub_enable_outbox_notification(dc);
 
        /* we want to turn off all dp displays before doing detection */
-       if (dc->config.power_down_display_on_boot)
-               dc_link_blank_all_dp_displays(dc);
+       dc_link_blank_all_dp_displays(dc);
 
        /* If taking control over from VBIOS, we may want to optimize our first
         * mode set, so we need to skip powering down pipes until we know which
@@ -206,7 +205,7 @@ void dcn31_init_hw(struct dc *dc)
         * Otherwise, if taking control is not possible, we need to power
         * everything down.
         */
-       if (dcb->funcs->is_accelerated_mode(dcb) || dc->config.power_down_display_on_boot) {
+       if (dcb->funcs->is_accelerated_mode(dcb) || !dc->config.seamless_boot_edp_requested) {
                hws->funcs.init_pipes(dc, dc->current_state);
                if (dc->res_pool->hubbub->funcs->allow_self_refresh_control)
                        dc->res_pool->hubbub->funcs->allow_self_refresh_control(dc->res_pool->hubbub,