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 <[email protected]> > --- > .../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 <[email protected]> > } > > -- > 2.52.0 > -- Rodrigo Siqueira https://siqueira.tech
