Merge tag 'amd-drm-next-6.1-2022-09-08' of https://gitlab.freedesktop.org/agd5f/linux...
[sfrench/cifs-2.6.git] / drivers / gpu / drm / amd / display / dc / core / dc_link.c
index 9e51338441d079db5fb0cfba982405fb2f4f4080..4ab27e23133784d5b3b0b3be4dfdf7b264e7670c 100644 (file)
@@ -1311,6 +1311,14 @@ static bool detect_link_and_local_sink(struct dc_link *link,
                                sink->edid_caps.audio_modes[i].sample_rate,
                                sink->edid_caps.audio_modes[i].sample_size);
                }
+
+               if (link->connector_signal == SIGNAL_TYPE_EDP) {
+                       // Init dc_panel_config
+                       dm_helpers_init_panel_settings(dc_ctx, &link->panel_config);
+                       // Override dc_panel_config if system has specific settings
+                       dm_helpers_override_panel_settings(dc_ctx, &link->panel_config);
+               }
+
        } else {
                /* From Connected-to-Disconnected. */
                link->type = dc_connection_none;
@@ -2069,11 +2077,7 @@ static enum dc_status enable_link_edp(
                struct dc_state *state,
                struct pipe_ctx *pipe_ctx)
 {
-       enum dc_status status;
-
-       status = enable_link_dp(state, pipe_ctx);
-
-       return status;
+       return enable_link_dp(state, pipe_ctx);
 }
 
 static enum dc_status enable_link_dp_mst(
@@ -3372,7 +3376,7 @@ bool dc_link_setup_psr(struct dc_link *link,
                switch(link->ctx->asic_id.chip_family) {
                case FAMILY_YELLOW_CARP:
                case AMDGPU_FAMILY_GC_10_3_6:
-               case AMDGPU_FAMILY_GC_11_0_2:
+               case AMDGPU_FAMILY_GC_11_0_1:
                        if(!dc->debug.disable_z10)
                                psr_context->psr_level.bits.SKIP_CRTC_DISABLE = false;
                        break;
@@ -3516,7 +3520,7 @@ static void update_mst_stream_alloc_table(
        struct dc_link *link,
        struct stream_encoder *stream_enc,
        struct hpo_dp_stream_encoder *hpo_dp_stream_enc, // TODO: Rename stream_enc to dio_stream_enc?
-       const struct dp_mst_stream_allocation_table *proposed_table)
+       const struct dc_dp_mst_stream_allocation_table *proposed_table)
 {
        struct link_mst_stream_allocation work_table[MAX_CONTROLLER_NUM] = { 0 };
        struct link_mst_stream_allocation *dc_alloc;
@@ -3679,7 +3683,7 @@ enum dc_status dc_link_allocate_mst_payload(struct pipe_ctx *pipe_ctx)
 {
        struct dc_stream_state *stream = pipe_ctx->stream;
        struct dc_link *link = stream->link;
-       struct dp_mst_stream_allocation_table proposed_table = {0};
+       struct dc_dp_mst_stream_allocation_table proposed_table = {0};
        struct fixed31_32 avg_time_slots_per_mtp;
        struct fixed31_32 pbn;
        struct fixed31_32 pbn_per_slot;
@@ -3784,7 +3788,7 @@ enum dc_status dc_link_reduce_mst_payload(struct pipe_ctx *pipe_ctx, uint32_t bw
        struct fixed31_32 avg_time_slots_per_mtp;
        struct fixed31_32 pbn;
        struct fixed31_32 pbn_per_slot;
-       struct dp_mst_stream_allocation_table proposed_table = {0};
+       struct dc_dp_mst_stream_allocation_table proposed_table = {0};
        uint8_t i;
        const struct link_hwss *link_hwss = get_link_hwss(link, &pipe_ctx->link_res);
        DC_LOGGER_INIT(link->ctx->logger);
@@ -3873,7 +3877,7 @@ enum dc_status dc_link_increase_mst_payload(struct pipe_ctx *pipe_ctx, uint32_t
        struct fixed31_32 avg_time_slots_per_mtp;
        struct fixed31_32 pbn;
        struct fixed31_32 pbn_per_slot;
-       struct dp_mst_stream_allocation_table proposed_table = {0};
+       struct dc_dp_mst_stream_allocation_table proposed_table = {0};
        uint8_t i;
        enum act_return_status ret;
        const struct link_hwss *link_hwss = get_link_hwss(link, &pipe_ctx->link_res);
@@ -3957,7 +3961,7 @@ static enum dc_status deallocate_mst_payload(struct pipe_ctx *pipe_ctx)
 {
        struct dc_stream_state *stream = pipe_ctx->stream;
        struct dc_link *link = stream->link;
-       struct dp_mst_stream_allocation_table proposed_table = {0};
+       struct dc_dp_mst_stream_allocation_table proposed_table = {0};
        struct fixed31_32 avg_time_slots_per_mtp = dc_fixpt_from_int(0);
        int i;
        bool mst_mode = (link->type == dc_connection_mst_branch);
@@ -4295,18 +4299,6 @@ void core_link_enable_stream(
                if (pipe_ctx->stream->dpms_off)
                        return;
 
-               /* Have to setup DSC before DIG FE and BE are connected (which happens before the
-                * link training). This is to make sure the bandwidth sent to DIG BE won't be
-                * bigger than what the link and/or DIG BE can handle. VBID[6]/CompressedStream_flag
-                * will be automatically set at a later time when the video is enabled
-                * (DP_VID_STREAM_EN = 1).
-                */
-               if (pipe_ctx->stream->timing.flags.DSC) {
-                       if (dc_is_dp_signal(pipe_ctx->stream->signal) ||
-                                       dc_is_virtual_signal(pipe_ctx->stream->signal))
-                               dp_set_dsc_enable(pipe_ctx, true);
-               }
-
                status = enable_link(state, pipe_ctx);
 
                if (status != DC_OK) {
@@ -4736,7 +4728,7 @@ bool dc_link_should_enable_fec(const struct dc_link *link)
        else if (link->connector_signal == SIGNAL_TYPE_EDP
                        && (link->dpcd_caps.dsc_caps.dsc_basic_caps.fields.
                         dsc_support.DSC_SUPPORT == false
-                               || link->dc->debug.disable_dsc_edp
+                               || link->panel_config.dsc.disable_dsc_edp
                                || !link->dc->caps.edp_dsc_support))
                force_disable = true;