drm/vc4: hdmi: Use a fixed rate for the HSM clock on BCM2835
authorDom Cobley <popcornmix@gmail.com>
Mon, 28 Jun 2021 14:07:16 +0000 (16:07 +0200)
committerPhil Elwell <8911409+pelwell@users.noreply.github.com>
Mon, 28 Jun 2021 15:44:54 +0000 (16:44 +0100)
commitd2d1ac07330bfb8e896bd58a6ac3a950d1d96fde
tree3396ca2cd1d45355ba2ac1d87a230565a3943dca
parente791d8ef8358341681f5e23d5b513f539a192067
drm/vc4: hdmi: Use a fixed rate for the HSM clock on BCM2835

Before the introduction of the BCM2711 support, the HSM clock rate was
fixed, and was the CEC and audio clock source on the SoCs previously
supported.

The HSM clock is also the source of the internal state machine of the
controller and needs to run faster than the pixel clock. All these
requirements were met by running at 101% of the maximum pixel rate,
meeting the fixed clock requirement for audio and CEC, while remaining
faster than any pixel clock we might need.

However, the BCM2711 brought support for 4k and therefore increased
significantly the rate needed for the HSM, and new, independant, clocks
to feed the audio and CEC clocks. Since the HSM clock can also run much
higher, we also need to lower its rate if possible to reduce its power
consumption.

The CEC support code changes its clock divider when the HSM clock rate
is changed, but the audio support never had a similar feature and will
glitch out if audio is played back during a mode set.

Since the HSM rate was meant to be fixed on the SoCs prior to the
BCM2711 anyway, let's introduce back a fixed HSM rate and fix audio.

Fixes: cd4cb49dc5bb ("drm/vc4: hdmi: Adjust HSM clock rate depending on pixel rate")
Signed-off-by: Dom Cobley <popcornmix@gmail.com>
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
drivers/gpu/drm/vc4/vc4_hdmi.c
drivers/gpu/drm/vc4/vc4_hdmi.h