[PATCH] drm/amd/display: Add Missing HPO Stream Encoder Function Hook
Harry Wentland
harry.wentland at amd.com
Tue Jan 25 16:41:38 UTC 2022
On 2022-01-25 01:25, Fangzhi Zuo wrote:
> [Why]
> configure_dp_hpo_throttled_vcp_size() was missing promotion before, but it was covered by
> not calling the missing function hook in the old interface hpo_dp_link_encoder->funcs.
>
> Recent refactor replaces with new caller link_hwss->set_throttled_vcp_size
> which needs that hook, and that causes null ptr hang.
>
> Signed-off-by: Fangzhi Zuo <Jerry.Zuo at amd.com>
Reviewed-by: Harry Wentland <harry.wentland at amd.com>
Harry
> ---
> .../display/dc/dcn31/dcn31_hpo_dp_stream_encoder.c | 11 +++++++++++
> .../display/dc/dcn31/dcn31_hpo_dp_stream_encoder.h | 9 ++++++---
> 2 files changed, 17 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/amd/display/dc/dcn31/dcn31_hpo_dp_stream_encoder.c b/drivers/gpu/drm/amd/display/dc/dcn31/dcn31_hpo_dp_stream_encoder.c
> index 5065904c7833..23621ff08c90 100644
> --- a/drivers/gpu/drm/amd/display/dc/dcn31/dcn31_hpo_dp_stream_encoder.c
> +++ b/drivers/gpu/drm/amd/display/dc/dcn31/dcn31_hpo_dp_stream_encoder.c
> @@ -710,6 +710,16 @@ static void dcn31_hpo_dp_stream_enc_read_state(
> }
> }
>
> +static void dcn31_set_hblank_min_symbol_width(
> + struct hpo_dp_stream_encoder *enc,
> + uint16_t width)
> +{
> + struct dcn31_hpo_dp_stream_encoder *enc3 = DCN3_1_HPO_DP_STREAM_ENC_FROM_HPO_STREAM_ENC(enc);
> +
> + REG_SET(DP_SYM32_ENC_HBLANK_CONTROL, 0,
> + HBLANK_MINIMUM_SYMBOL_WIDTH, width);
> +}
> +
> static const struct hpo_dp_stream_encoder_funcs dcn30_str_enc_funcs = {
> .enable_stream = dcn31_hpo_dp_stream_enc_enable_stream,
> .dp_unblank = dcn31_hpo_dp_stream_enc_dp_unblank,
> @@ -725,6 +735,7 @@ static const struct hpo_dp_stream_encoder_funcs dcn30_str_enc_funcs = {
> .dp_audio_enable = dcn31_hpo_dp_stream_enc_audio_enable,
> .dp_audio_disable = dcn31_hpo_dp_stream_enc_audio_disable,
> .read_state = dcn31_hpo_dp_stream_enc_read_state,
> + .set_hblank_min_symbol_width = dcn31_set_hblank_min_symbol_width,
> };
>
> void dcn31_hpo_dp_stream_encoder_construct(
> diff --git a/drivers/gpu/drm/amd/display/dc/dcn31/dcn31_hpo_dp_stream_encoder.h b/drivers/gpu/drm/amd/display/dc/dcn31/dcn31_hpo_dp_stream_encoder.h
> index 70b94fc25304..7c77c71591a0 100644
> --- a/drivers/gpu/drm/amd/display/dc/dcn31/dcn31_hpo_dp_stream_encoder.h
> +++ b/drivers/gpu/drm/amd/display/dc/dcn31/dcn31_hpo_dp_stream_encoder.h
> @@ -80,7 +80,8 @@
> SRI(DP_SYM32_ENC_SDP_GSP_CONTROL11, DP_SYM32_ENC, id),\
> SRI(DP_SYM32_ENC_SDP_METADATA_PACKET_CONTROL, DP_SYM32_ENC, id),\
> SRI(DP_SYM32_ENC_SDP_AUDIO_CONTROL0, DP_SYM32_ENC, id),\
> - SRI(DP_SYM32_ENC_VID_CRC_CONTROL, DP_SYM32_ENC, id)
> + SRI(DP_SYM32_ENC_VID_CRC_CONTROL, DP_SYM32_ENC, id), \
> + SRI(DP_SYM32_ENC_HBLANK_CONTROL, DP_SYM32_ENC, id)
>
> #define DCN3_1_HPO_DP_STREAM_ENC_REGS \
> uint32_t DP_STREAM_MAPPER_CONTROL0;\
> @@ -116,7 +117,8 @@
> uint32_t DP_SYM32_ENC_SDP_GSP_CONTROL11;\
> uint32_t DP_SYM32_ENC_SDP_METADATA_PACKET_CONTROL;\
> uint32_t DP_SYM32_ENC_SDP_AUDIO_CONTROL0;\
> - uint32_t DP_SYM32_ENC_VID_CRC_CONTROL
> + uint32_t DP_SYM32_ENC_VID_CRC_CONTROL;\
> + uint32_t DP_SYM32_ENC_HBLANK_CONTROL
>
>
> #define DCN3_1_HPO_DP_STREAM_ENC_MASK_SH_LIST(mask_sh)\
> @@ -202,7 +204,8 @@
> type GSP_SOF_REFERENCE;\
> type METADATA_PACKET_ENABLE;\
> type CRC_ENABLE;\
> - type CRC_CONT_MODE_ENABLE
> + type CRC_CONT_MODE_ENABLE;\
> + type HBLANK_MINIMUM_SYMBOL_WIDTH
>
>
> struct dcn31_hpo_dp_stream_encoder_registers {
More information about the amd-gfx
mailing list