Message ID | 20210525132354.297468-7-maxime@cerno.tech (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | drm/vc4: hdmi: Enable Channel Mapping, IEC958, HBR Passthrough using hdmi-codec | expand |
On Tue, 2021-05-25 at 15:23 +0200, Maxime Ripard wrote: > From: Dom Cobley <popcornmix@gmail.com> > > Symptom is random switching of speakers when using multichannel. > > Repeatedly running speakertest -c8 occasionally starts with > channels jumbled. This is fixed with HD_CTL_WHOLSMP. > > The other bit looks beneficial and apears harmless in testing so > I'd suggest adding it too. > > Documentation says: HD_CTL_WHILSMP_SET > Wait for whole sample. When this bit is set MAI transmit will start > only when there is at least one whole sample available in the fifo. > > Documentation says: HD_CTL_CHALIGN_SET > Channel Align When Overflow. This bit is used to realign the audio > channels in case of an overflow. > If this bit is set, after the detection of an overflow, equal > amount of dummy words to the missing words will be written to fifo, > filling up the broken sample and maintaining alignment. > > Signed-off-by: Dom Cobley <popcornmix@gmail.com> > Signed-off-by: Maxime Ripard <maxime@cerno.tech> > --- Reviewed-by: Nicolas Saenz Julienne <nsaenz@kernel.org> Regards, Nicolas
diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c index c27b287d2053..212b5df11d73 100644 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c @@ -1267,7 +1267,9 @@ static int vc4_hdmi_audio_trigger(struct snd_pcm_substream *substream, int cmd, HDMI_WRITE(HDMI_MAI_CTL, VC4_SET_FIELD(vc4_hdmi->audio.channels, VC4_HD_MAI_CTL_CHNUM) | - VC4_HD_MAI_CTL_ENABLE); + VC4_HD_MAI_CTL_WHOLSMP | + VC4_HD_MAI_CTL_CHALIGN | + VC4_HD_MAI_CTL_ENABLE); break; case SNDRV_PCM_TRIGGER_STOP: HDMI_WRITE(HDMI_MAI_CTL,