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
next prev parent 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