drm/vc4: hdmi: Enable power domain before setting minimum
authorMaxime Ripard <maxime@cerno.tech>
Thu, 26 Jan 2023 17:05:47 +0000 (18:05 +0100)
committerMaxime Ripard <maxime@cerno.tech>
Thu, 16 Feb 2023 09:24:10 +0000 (10:24 +0100)
commit0267c6c01a4c8bd6a48b1394ddf3738d5e1daffd
treec61b396b54f8263eb25fe37365a526a616a0cbee
parent89a173dec1b8951696b324880448d781d45f13ca
drm/vc4: hdmi: Enable power domain before setting minimum

On the RaspberryPi0-3, the HSM clock was provided by the clk-bcm2835
driver, but on the Pi4 it was provided by the firmware through the
clk-raspberrypi driver.

The clk-bcm2835 driver registers the HSM clock using the
CLK_SET_RATE_GATE flag that prevents any modification to the rate while
the clock is active.

This meant that we needed to call clk_set_min_rate() before our call to
pm_runtime_resume_and_get() since our runtime_resume implementation
needs to enable the HSM clock for the HDMI controller registers to be
functional.

However, the HSM clock is part of the HDMI power domain which might not
be powered prior to the pm_runtime_resume_and_get() call, so we could
end up changing the rate of the HSM clock while its power domain was
disabled.

We recently changed the backing driver for the RaspberryPi0-3 to
clk-raspberrypi though, which doesn't have such restrictions. We can
thus move the clk_set_min_rate() after our call to runtime_resume and
avoid the access while the power domain is disabled.

Reviewed-by: Javier Martinez Canillas <javierm@redhat.com>
Link: https://lore.kernel.org/r/20230126-rpi-display-fw-clk-cleanup-v1-2-d646ff6fb842@cerno.tech
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
drivers/gpu/drm/vc4/vc4_hdmi.c