mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-27 17:18:59 +00:00
48 lines
1.9 KiB
Diff
48 lines
1.9 KiB
Diff
|
From 98bd7718d38db5c3e8e8af83f30f9cab0d3c140d Mon Sep 17 00:00:00 2001
|
||
|
From: Maxime Ripard <maxime@cerno.tech>
|
||
|
Date: Thu, 24 Mar 2022 11:57:57 +0100
|
||
|
Subject: [PATCH] drm/vc4: hdmi: Fix hdmi_enable_4kp60 detection
|
||
|
|
||
|
In order to support higher HDMI frequencies, users have to set the
|
||
|
hdmi_enable_4kp60 parameter in their config.txt file.
|
||
|
|
||
|
We were detecting this so far by calling clk_round_rate() on the core
|
||
|
clock with the frequency we're supposed to run at when one of those
|
||
|
modes is enabled. Whether or not the parameter was enabled could then be
|
||
|
inferred by the returned rate since the maximum clock rate reported by
|
||
|
the firmware was one of the side effect of setting that parameter.
|
||
|
|
||
|
However, the recent clock rework we did changed what clk_round_rate()
|
||
|
was returning to always return the minimum allowed, and thus this test
|
||
|
wasn't reliable anymore.
|
||
|
|
||
|
Let's use the new clk_get_max_rate() function to reliably determine the
|
||
|
maximum rate allowed on that clock and fix the 4k@60Hz output.
|
||
|
|
||
|
Fixes: e9d6cea2af1c ("clk: bcm: rpi: Run some clocks at the minimum rate allowed")
|
||
|
Reviewed-by: Dave Stevenson <dave.stevenson@raspberrypi.com>
|
||
|
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
|
||
|
---
|
||
|
drivers/gpu/drm/vc4/vc4_hdmi.c | 3 ++-
|
||
|
1 file changed, 2 insertions(+), 1 deletion(-)
|
||
|
|
||
|
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||
|
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
|
||
|
@@ -46,6 +46,7 @@
|
||
|
#include <linux/pm_runtime.h>
|
||
|
#include <linux/rational.h>
|
||
|
#include <linux/reset.h>
|
||
|
+#include <soc/bcm2835/raspberrypi-clocks.h>
|
||
|
#include <sound/dmaengine_pcm.h>
|
||
|
#include <sound/hdmi-codec.h>
|
||
|
#include <sound/pcm_drm_eld.h>
|
||
|
@@ -3695,7 +3696,7 @@ static int vc4_hdmi_bind(struct device *
|
||
|
|
||
|
if (variant->max_pixel_clock == 600000000) {
|
||
|
struct vc4_dev *vc4 = to_vc4_dev(drm);
|
||
|
- long max_rate = clk_round_rate(vc4->hvs->core_clk, 550000000);
|
||
|
+ unsigned int max_rate = rpi_firmware_clk_get_max_rate(vc4->hvs->core_clk);
|
||
|
|
||
|
if (max_rate < 550000000)
|
||
|
vc4_hdmi->disable_4kp60 = true;
|