AMD-GFX Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: Rodrigo Siqueira <siqueira@igalia.com>
To: "Timur Kristóf" <timur.kristof@gmail.com>,
	"Alex Hung" <alex.hung@amd.com>
Cc: amd-gfx@lists.freedesktop.org, Alexander.Deucher@amd.com,
	 Mario Limonciello <mario.limonciello@amd.com>,
	Ivan Lipski <ivan.lipski@amd.com>,
	harry.wentland@amd.com,  Leo Li <sunpeng.li@amd.com>
Subject: Re: [PATCH 1/5] drm/amd/display: Use dce_audio_create for DCE 6
Date: Mon, 2 Feb 2026 07:50:49 -0700	[thread overview]
Message-ID: <aYC5hPSi6Rn9W_eK@atmagalia> (raw)
In-Reply-To: <20260118173150.19790-2-timur.kristof@gmail.com>

On 01/18, Timur Kristóf wrote:
> The only difference between DCE 6 and other DCE versions is
> that DCE 6 doesn't support DCCG_AUDIO_DTO2_USE_512FBR_DTO.
> Recently a check was added to dce_aud_wall_dto_setup() to
> check that. So now DCE 6 can just use dce_aud_wall_dto_setup()
> just like other DCE versions.
> 
> Clean up DCE 6 specific audio functions which were otherwise
> identical to the rest.
> 
> Signed-off-by: Timur Kristóf <timur.kristof@gmail.com>
> ---
>  .../gpu/drm/amd/display/dc/dce/dce_audio.c    | 131 ------------------
>  .../gpu/drm/amd/display/dc/dce/dce_audio.h    |   9 --
>  .../dc/resource/dce60/dce60_resource.c        |   2 +-
>  3 files changed, 1 insertion(+), 141 deletions(-)
> 
> diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_audio.c b/drivers/gpu/drm/amd/display/dc/dce/dce_audio.c
> index fcad61c618a1..1276f19164b3 100644
> --- a/drivers/gpu/drm/amd/display/dc/dce/dce_audio.c
> +++ b/drivers/gpu/drm/amd/display/dc/dce/dce_audio.c
> @@ -1150,98 +1150,6 @@ void dce_aud_wall_dto_setup(
>  	}
>  }
>  
> -#if defined(CONFIG_DRM_AMD_DC_SI)
> -static void dce60_aud_wall_dto_setup(
> -	struct audio *audio,
> -	enum signal_type signal,
> -	const struct audio_crtc_info *crtc_info,
> -	const struct audio_pll_info *pll_info)
> -{
> -	struct dce_audio *aud = DCE_AUD(audio);
> -
> -	struct azalia_clock_info clock_info = { 0 };
> -
> -	if (dc_is_hdmi_signal(signal)) {
> -		uint32_t src_sel;
> -
> -		/*DTO0 Programming goal:
> -		-generate 24MHz, 128*Fs from 24MHz
> -		-use DTO0 when an active HDMI port is connected
> -		(optionally a DP is connected) */
> -
> -		/* calculate DTO settings */
> -		get_azalia_clock_info_hdmi(
> -			crtc_info->requested_pixel_clock_100Hz,
> -			crtc_info->calculated_pixel_clock_100Hz,
> -			&clock_info);
> -
> -		DC_LOG_HW_AUDIO("\n%s:Input::requested_pixel_clock_100Hz = %d"\
> -				"calculated_pixel_clock_100Hz =%d\n"\
> -				"audio_dto_module = %d audio_dto_phase =%d \n\n", __func__,\
> -				crtc_info->requested_pixel_clock_100Hz,\
> -				crtc_info->calculated_pixel_clock_100Hz,\
> -				clock_info.audio_dto_module,\
> -				clock_info.audio_dto_phase);
> -
> -		/* On TN/SI, Program DTO source select and DTO select before
> -		programming DTO modulo and DTO phase. These bits must be
> -		programmed first, otherwise there will be no HDMI audio at boot
> -		up. This is a HW sequence change (different from old ASICs).
> -		Caution when changing this programming sequence.
> -
> -		HDMI enabled, using DTO0
> -		program master CRTC for DTO0 */
> -		src_sel = pll_info->dto_source - DTO_SOURCE_ID0;
> -		REG_UPDATE_2(DCCG_AUDIO_DTO_SOURCE,
> -			DCCG_AUDIO_DTO0_SOURCE_SEL, src_sel,
> -			DCCG_AUDIO_DTO_SEL, 0);
> -
> -		/* module */
> -		REG_UPDATE(DCCG_AUDIO_DTO0_MODULE,
> -			DCCG_AUDIO_DTO0_MODULE, clock_info.audio_dto_module);
> -
> -		/* phase */
> -		REG_UPDATE(DCCG_AUDIO_DTO0_PHASE,
> -			DCCG_AUDIO_DTO0_PHASE, clock_info.audio_dto_phase);
> -	} else {
> -		/*DTO1 Programming goal:
> -		-generate 24MHz, 128*Fs from 24MHz (DCE6 does not support 512*Fs)
> -		-default is to used DTO1, and switch to DTO0 when an audio
> -		master HDMI port is connected
> -		-use as default for DP
> -
> -		calculate DTO settings */
> -		get_azalia_clock_info_dp(
> -			crtc_info->requested_pixel_clock_100Hz,
> -			pll_info,
> -			&clock_info);
> -
> -		/* Program DTO select before programming DTO modulo and DTO
> -		phase. default to use DTO1 */
> -
> -		REG_UPDATE(DCCG_AUDIO_DTO_SOURCE,
> -				DCCG_AUDIO_DTO_SEL, 1);
> -
> -			/* DCCG_AUDIO_DTO2_USE_512FBR_DTO, 1)
> -			 * Cannot select 512fs for DP
> -			 *
> -			 * DCE6 has no DCCG_AUDIO_DTO2_USE_512FBR_DTO mask
> -			*/
> -
> -		/* module */
> -		REG_UPDATE(DCCG_AUDIO_DTO1_MODULE,
> -				DCCG_AUDIO_DTO1_MODULE, clock_info.audio_dto_module);
> -
> -		/* phase */
> -		REG_UPDATE(DCCG_AUDIO_DTO1_PHASE,
> -				DCCG_AUDIO_DTO1_PHASE, clock_info.audio_dto_phase);
> -
> -		/* DCE6 has no DCCG_AUDIO_DTO2_USE_512FBR_DTO mask in DCCG_AUDIO_DTO_SOURCE reg */
> -
> -	}
> -}
> -#endif
> -
>  static bool dce_aud_endpoint_valid(struct audio *audio)
>  {
>  	uint32_t value;
> @@ -1303,18 +1211,6 @@ static const struct audio_funcs funcs = {
>  	.destroy = dce_aud_destroy,
>  };
>  
> -#if defined(CONFIG_DRM_AMD_DC_SI)
> -static const struct audio_funcs dce60_funcs = {
> -	.endpoint_valid = dce_aud_endpoint_valid,
> -	.hw_init = dce_aud_hw_init,
> -	.wall_dto_setup = dce60_aud_wall_dto_setup,
> -	.az_enable = dce_aud_az_enable,
> -	.az_disable = dce_aud_az_disable,
> -	.az_configure = dce_aud_az_configure,
> -	.destroy = dce_aud_destroy,
> -};
> -#endif
> -
>  void dce_aud_destroy(struct audio **audio)
>  {
>  	struct dce_audio *aud = DCE_AUD(*audio);
> @@ -1347,30 +1243,3 @@ struct audio *dce_audio_create(
>  	audio->masks = masks;
>  	return &audio->base;
>  }
> -
> -#if defined(CONFIG_DRM_AMD_DC_SI)
> -struct audio *dce60_audio_create(
> -		struct dc_context *ctx,
> -		unsigned int inst,
> -		const struct dce_audio_registers *reg,
> -		const struct dce_audio_shift *shifts,
> -		const struct dce_audio_mask *masks
> -		)
> -{
> -	struct dce_audio *audio = kzalloc(sizeof(*audio), GFP_KERNEL);
> -
> -	if (audio == NULL) {
> -		ASSERT_CRITICAL(audio);
> -		return NULL;
> -	}
> -
> -	audio->base.ctx = ctx;
> -	audio->base.inst = inst;
> -	audio->base.funcs = &dce60_funcs;
> -
> -	audio->regs = reg;
> -	audio->shifts = shifts;
> -	audio->masks = masks;
> -	return &audio->base;
> -}
> -#endif
> diff --git a/drivers/gpu/drm/amd/display/dc/dce/dce_audio.h b/drivers/gpu/drm/amd/display/dc/dce/dce_audio.h
> index 1b7b8b079af4..3f1d161a0045 100644
> --- a/drivers/gpu/drm/amd/display/dc/dce/dce_audio.h
> +++ b/drivers/gpu/drm/amd/display/dc/dce/dce_audio.h
> @@ -151,15 +151,6 @@ struct audio *dce_audio_create(
>  		const struct dce_audio_shift *shifts,
>  		const struct dce_audio_mask *masks);
>  
> -#if defined(CONFIG_DRM_AMD_DC_SI)
> -struct audio *dce60_audio_create(
> -		struct dc_context *ctx,
> -		unsigned int inst,
> -		const struct dce_audio_registers *reg,
> -		const struct dce_audio_shift *shifts,
> -		const struct dce_audio_mask *masks);
> -#endif
> -
>  void dce_aud_destroy(struct audio **audio);
>  
>  void dce_aud_hw_init(struct audio *audio);
> diff --git a/drivers/gpu/drm/amd/display/dc/resource/dce60/dce60_resource.c b/drivers/gpu/drm/amd/display/dc/resource/dce60/dce60_resource.c
> index f0152933bee2..e0fbb08e6985 100644
> --- a/drivers/gpu/drm/amd/display/dc/resource/dce60/dce60_resource.c
> +++ b/drivers/gpu/drm/amd/display/dc/resource/dce60/dce60_resource.c
> @@ -495,7 +495,7 @@ static void read_dce_straps(
>  static struct audio *create_audio(
>  		struct dc_context *ctx, unsigned int inst)
>  {
> -	return dce60_audio_create(ctx, inst,
> +	return dce_audio_create(ctx, inst,
>  			&audio_regs[inst], &audio_shift, &audio_mask);

Very nice clean-up.

Reviewed-by: Rodrigo Siqueira <siqueira@igalia.com>

>  }
>  
> -- 
> 2.52.0
> 

-- 
Rodrigo Siqueira
https://siqueira.tech

  reply	other threads:[~2026-02-02 14:51 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-01-18 17:31 [PATCH 0/5] drm/amd/display: Clean up some DCE 6 code Timur Kristóf
2026-01-18 17:31 ` [PATCH 1/5] drm/amd/display: Use dce_audio_create for DCE 6 Timur Kristóf
2026-02-02 14:50   ` Rodrigo Siqueira [this message]
2026-01-18 17:31 ` [PATCH 2/5] drm/amd/display: Delete unused dce_clk_mgr.c Timur Kristóf
2026-02-02 14:54   ` Rodrigo Siqueira
2026-01-18 17:31 ` [PATCH 3/5] drm/amd/display: Remove unused dce60_clk_mgr register definitions Timur Kristóf
2026-02-03 23:43   ` Rodrigo Siqueira
2026-01-18 17:31 ` [PATCH 4/5] drm/amd/display: Handle DCE 6 in dce_clk_mgr.c Timur Kristóf
2026-01-30 18:47   ` Alex Hung
2026-02-03 23:45   ` Rodrigo Siqueira
2026-02-09 17:21   ` Alex Hung
2026-02-09 22:11     ` Timur Kristóf
2026-02-15  5:06       ` Alex Hung
2026-02-16 15:19         ` Timur Kristóf
2026-02-16 17:49           ` Alex Hung
2026-02-16 18:22             ` Timur Kristóf
2026-01-18 17:31 ` [PATCH 5/5] drm/amd/display: Handle DCE 6 in dce110_register_irq_handlers Timur Kristóf
2026-02-09 15:48 ` [PATCH 0/5] drm/amd/display: Clean up some DCE 6 code Rodrigo Siqueira
2026-02-09 17:25   ` Alex Hung

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=aYC5hPSi6Rn9W_eK@atmagalia \
    --to=siqueira@igalia.com \
    --cc=Alexander.Deucher@amd.com \
    --cc=alex.hung@amd.com \
    --cc=amd-gfx@lists.freedesktop.org \
    --cc=harry.wentland@amd.com \
    --cc=ivan.lipski@amd.com \
    --cc=mario.limonciello@amd.com \
    --cc=sunpeng.li@amd.com \
    --cc=timur.kristof@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox