drm/amd/display: rename dsc extended caps as dsc branch decoder caps
[why] The capability fields are reserved for DSC branch only to report the capability related to the branch's DSC decoder. Signed-off-by: Wenjing Liu <wenjing.liu@amd.com> Reviewed-by: Tony Cheng <Tony.Cheng@amd.com> Acked-by: Qingqing Zhuo <qingqing.zhuo@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
5cb32419ce
commit
6d824ed524
|
@ -4542,7 +4542,7 @@ create_stream_for_sink(struct amdgpu_dm_connector *aconnector,
|
||||||
#if defined(CONFIG_DRM_AMD_DC_DCN)
|
#if defined(CONFIG_DRM_AMD_DC_DCN)
|
||||||
dc_dsc_parse_dsc_dpcd(aconnector->dc_link->ctx->dc,
|
dc_dsc_parse_dsc_dpcd(aconnector->dc_link->ctx->dc,
|
||||||
aconnector->dc_link->dpcd_caps.dsc_caps.dsc_basic_caps.raw,
|
aconnector->dc_link->dpcd_caps.dsc_caps.dsc_basic_caps.raw,
|
||||||
aconnector->dc_link->dpcd_caps.dsc_caps.dsc_ext_caps.raw,
|
aconnector->dc_link->dpcd_caps.dsc_caps.dsc_branch_decoder_caps.raw,
|
||||||
&dsc_caps);
|
&dsc_caps);
|
||||||
#endif
|
#endif
|
||||||
link_bandwidth_kbps = dc_link_bandwidth_kbps(aconnector->dc_link,
|
link_bandwidth_kbps = dc_link_bandwidth_kbps(aconnector->dc_link,
|
||||||
|
|
|
@ -3519,8 +3519,8 @@ static bool retrieve_link_cap(struct dc_link *link)
|
||||||
status = core_link_read_dpcd(
|
status = core_link_read_dpcd(
|
||||||
link,
|
link,
|
||||||
DP_DSC_BRANCH_OVERALL_THROUGHPUT_0,
|
DP_DSC_BRANCH_OVERALL_THROUGHPUT_0,
|
||||||
link->dpcd_caps.dsc_caps.dsc_ext_caps.raw,
|
link->dpcd_caps.dsc_caps.dsc_branch_decoder_caps.raw,
|
||||||
sizeof(link->dpcd_caps.dsc_caps.dsc_ext_caps.raw));
|
sizeof(link->dpcd_caps.dsc_caps.dsc_branch_decoder_caps.raw));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!dpcd_read_sink_ext_caps(link))
|
if (!dpcd_read_sink_ext_caps(link))
|
||||||
|
|
|
@ -726,7 +726,7 @@ union dpcd_dsc_basic_capabilities {
|
||||||
uint8_t raw[16];
|
uint8_t raw[16];
|
||||||
};
|
};
|
||||||
|
|
||||||
union dpcd_dsc_ext_capabilities {
|
union dpcd_dsc_branch_decoder_capabilities {
|
||||||
struct {
|
struct {
|
||||||
uint8_t BRANCH_OVERALL_THROUGHPUT_0;
|
uint8_t BRANCH_OVERALL_THROUGHPUT_0;
|
||||||
uint8_t BRANCH_OVERALL_THROUGHPUT_1;
|
uint8_t BRANCH_OVERALL_THROUGHPUT_1;
|
||||||
|
@ -737,7 +737,7 @@ union dpcd_dsc_ext_capabilities {
|
||||||
|
|
||||||
struct dpcd_dsc_capabilities {
|
struct dpcd_dsc_capabilities {
|
||||||
union dpcd_dsc_basic_capabilities dsc_basic_caps;
|
union dpcd_dsc_basic_capabilities dsc_basic_caps;
|
||||||
union dpcd_dsc_ext_capabilities dsc_ext_caps;
|
union dpcd_dsc_branch_decoder_capabilities dsc_branch_decoder_caps;
|
||||||
};
|
};
|
||||||
|
|
||||||
/* These parameters are from PSR capabilities reported by Sink DPCD */
|
/* These parameters are from PSR capabilities reported by Sink DPCD */
|
||||||
|
|
|
@ -747,7 +747,7 @@ done:
|
||||||
return is_dsc_possible;
|
return is_dsc_possible;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool dc_dsc_parse_dsc_dpcd(const struct dc *dc, const uint8_t *dpcd_dsc_basic_data, const uint8_t *dpcd_dsc_ext_data, struct dsc_dec_dpcd_caps *dsc_sink_caps)
|
bool dc_dsc_parse_dsc_dpcd(const struct dc *dc, const uint8_t *dpcd_dsc_basic_data, const uint8_t *dpcd_dsc_branch_decoder_caps, struct dsc_dec_dpcd_caps *dsc_sink_caps)
|
||||||
{
|
{
|
||||||
if (!dpcd_dsc_basic_data)
|
if (!dpcd_dsc_basic_data)
|
||||||
return false;
|
return false;
|
||||||
|
@ -818,14 +818,14 @@ bool dc_dsc_parse_dsc_dpcd(const struct dc *dc, const uint8_t *dpcd_dsc_basic_da
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Extended caps */
|
/* Extended caps */
|
||||||
if (dpcd_dsc_ext_data == NULL) { // Extended DPCD DSC data can be null, e.g. because it doesn't apply to SST
|
if (dpcd_dsc_branch_decoder_caps == NULL) { // branch decoder DPCD DSC data can be null for non branch device
|
||||||
dsc_sink_caps->branch_overall_throughput_0_mps = 0;
|
dsc_sink_caps->branch_overall_throughput_0_mps = 0;
|
||||||
dsc_sink_caps->branch_overall_throughput_1_mps = 0;
|
dsc_sink_caps->branch_overall_throughput_1_mps = 0;
|
||||||
dsc_sink_caps->branch_max_line_width = 0;
|
dsc_sink_caps->branch_max_line_width = 0;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
dsc_sink_caps->branch_overall_throughput_0_mps = dpcd_dsc_ext_data[DP_DSC_BRANCH_OVERALL_THROUGHPUT_0 - DP_DSC_BRANCH_OVERALL_THROUGHPUT_0];
|
dsc_sink_caps->branch_overall_throughput_0_mps = dpcd_dsc_branch_decoder_caps[DP_DSC_BRANCH_OVERALL_THROUGHPUT_0 - DP_DSC_BRANCH_OVERALL_THROUGHPUT_0];
|
||||||
if (dsc_sink_caps->branch_overall_throughput_0_mps == 0)
|
if (dsc_sink_caps->branch_overall_throughput_0_mps == 0)
|
||||||
dsc_sink_caps->branch_overall_throughput_0_mps = 0;
|
dsc_sink_caps->branch_overall_throughput_0_mps = 0;
|
||||||
else if (dsc_sink_caps->branch_overall_throughput_0_mps == 1)
|
else if (dsc_sink_caps->branch_overall_throughput_0_mps == 1)
|
||||||
|
@ -835,7 +835,7 @@ bool dc_dsc_parse_dsc_dpcd(const struct dc *dc, const uint8_t *dpcd_dsc_basic_da
|
||||||
dsc_sink_caps->branch_overall_throughput_0_mps += 600;
|
dsc_sink_caps->branch_overall_throughput_0_mps += 600;
|
||||||
}
|
}
|
||||||
|
|
||||||
dsc_sink_caps->branch_overall_throughput_1_mps = dpcd_dsc_ext_data[DP_DSC_BRANCH_OVERALL_THROUGHPUT_1 - DP_DSC_BRANCH_OVERALL_THROUGHPUT_0];
|
dsc_sink_caps->branch_overall_throughput_1_mps = dpcd_dsc_branch_decoder_caps[DP_DSC_BRANCH_OVERALL_THROUGHPUT_1 - DP_DSC_BRANCH_OVERALL_THROUGHPUT_0];
|
||||||
if (dsc_sink_caps->branch_overall_throughput_1_mps == 0)
|
if (dsc_sink_caps->branch_overall_throughput_1_mps == 0)
|
||||||
dsc_sink_caps->branch_overall_throughput_1_mps = 0;
|
dsc_sink_caps->branch_overall_throughput_1_mps = 0;
|
||||||
else if (dsc_sink_caps->branch_overall_throughput_1_mps == 1)
|
else if (dsc_sink_caps->branch_overall_throughput_1_mps == 1)
|
||||||
|
@ -845,7 +845,7 @@ bool dc_dsc_parse_dsc_dpcd(const struct dc *dc, const uint8_t *dpcd_dsc_basic_da
|
||||||
dsc_sink_caps->branch_overall_throughput_1_mps += 600;
|
dsc_sink_caps->branch_overall_throughput_1_mps += 600;
|
||||||
}
|
}
|
||||||
|
|
||||||
dsc_sink_caps->branch_max_line_width = dpcd_dsc_ext_data[DP_DSC_BRANCH_MAX_LINE_WIDTH - DP_DSC_BRANCH_OVERALL_THROUGHPUT_0] * 320;
|
dsc_sink_caps->branch_max_line_width = dpcd_dsc_branch_decoder_caps[DP_DSC_BRANCH_MAX_LINE_WIDTH - DP_DSC_BRANCH_OVERALL_THROUGHPUT_0] * 320;
|
||||||
ASSERT(dsc_sink_caps->branch_max_line_width == 0 || dsc_sink_caps->branch_max_line_width >= 5120);
|
ASSERT(dsc_sink_caps->branch_max_line_width == 0 || dsc_sink_caps->branch_max_line_width >= 5120);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
Loading…
Reference in New Issue