OSDN Git Service

Revert "drm/vc4: hdmi: Fix HSM clock too low on Pi4"
authorMaxime Ripard <maxime@cerno.tech>
Thu, 26 Jan 2023 17:05:48 +0000 (18:05 +0100)
committerMaxime Ripard <maxime@cerno.tech>
Thu, 16 Feb 2023 09:24:10 +0000 (10:24 +0100)
This reverts commit 3bc6a37f59f21a8bfaf74d0975b2eb0b2d52a065.

Commit 3bc6a37f59f2 ("drm/vc4: hdmi: Fix HSM clock too low on Pi4") was
introduced to work around an issue partly due to the clk-bcm2835 driver
on the RaspberryPi0-3.

Since we're not using that driver for our HDMI clocks, we can now revert
that inelegant solution.

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

index 9dd722b..e82fe17 100644 (file)
@@ -3189,16 +3189,9 @@ static int vc4_hdmi_init_resources(struct drm_device *drm,
                DRM_ERROR("Failed to get HDMI state machine clock\n");
                return PTR_ERR(vc4_hdmi->hsm_clock);
        }
-
        vc4_hdmi->audio_clock = vc4_hdmi->hsm_clock;
        vc4_hdmi->cec_clock = vc4_hdmi->hsm_clock;
 
-       vc4_hdmi->hsm_rpm_clock = devm_clk_get(dev, "hdmi");
-       if (IS_ERR(vc4_hdmi->hsm_rpm_clock)) {
-               DRM_ERROR("Failed to get HDMI state machine clock\n");
-               return PTR_ERR(vc4_hdmi->hsm_rpm_clock);
-       }
-
        return 0;
 }
 
@@ -3281,12 +3274,6 @@ static int vc5_hdmi_init_resources(struct drm_device *drm,
                return PTR_ERR(vc4_hdmi->hsm_clock);
        }
 
-       vc4_hdmi->hsm_rpm_clock = devm_clk_get(dev, "hdmi");
-       if (IS_ERR(vc4_hdmi->hsm_rpm_clock)) {
-               DRM_ERROR("Failed to get HDMI state machine clock\n");
-               return PTR_ERR(vc4_hdmi->hsm_rpm_clock);
-       }
-
        vc4_hdmi->pixel_bvb_clock = devm_clk_get(dev, "bvb");
        if (IS_ERR(vc4_hdmi->pixel_bvb_clock)) {
                DRM_ERROR("Failed to get pixel bvb clock\n");
@@ -3350,7 +3337,7 @@ static int vc4_hdmi_runtime_suspend(struct device *dev)
 {
        struct vc4_hdmi *vc4_hdmi = dev_get_drvdata(dev);
 
-       clk_disable_unprepare(vc4_hdmi->hsm_rpm_clock);
+       clk_disable_unprepare(vc4_hdmi->hsm_clock);
 
        return 0;
 }
@@ -3368,11 +3355,11 @@ static int vc4_hdmi_runtime_resume(struct device *dev)
         * its frequency while the power domain is active so that it
         * keeps its rate.
         */
-       ret = clk_set_min_rate(vc4_hdmi->hsm_rpm_clock, HSM_MIN_CLOCK_FREQ);
+       ret = clk_set_min_rate(vc4_hdmi->hsm_clock, HSM_MIN_CLOCK_FREQ);
        if (ret)
                return ret;
 
-       ret = clk_prepare_enable(vc4_hdmi->hsm_rpm_clock);
+       ret = clk_prepare_enable(vc4_hdmi->hsm_clock);
        if (ret)
                return ret;
 
@@ -3385,7 +3372,7 @@ static int vc4_hdmi_runtime_resume(struct device *dev)
         * case, it will lead to a silent CPU stall. Let's make sure we
         * prevent such a case.
         */
-       rate = clk_get_rate(vc4_hdmi->hsm_rpm_clock);
+       rate = clk_get_rate(vc4_hdmi->hsm_clock);
        if (!rate) {
                ret = -EINVAL;
                goto err_disable_clk;
index dc3ccd8..e361983 100644 (file)
@@ -164,7 +164,6 @@ struct vc4_hdmi {
        struct clk *cec_clock;
        struct clk *pixel_clock;
        struct clk *hsm_clock;
-       struct clk *hsm_rpm_clock;
        struct clk *audio_clock;
        struct clk *pixel_bvb_clock;