From: Maxime Ripard <maxime@cerno.tech> To: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>, Thomas Zimmermann <tzimmermann@suse.de>, Maxime Ripard <maxime@cerno.tech>, dri-devel@lists.freedesktop.org, Daniel Vetter <daniel.vetter@intel.com>, David Airlie <airlied@linux.ie> Cc: Eric Anholt <eric@anholt.net>, Nicolas Saenz Julienne <nsaenz@kernel.org>, bcm-kernel-feedback-list@broadcom.com, linux-rpi-kernel@lists.infradead.org, Dave Stevenson <dave.stevenson@raspberrypi.com>, Phil Elwell <phil@raspberrypi.com>, Tim Gover <tim.gover@raspberrypi.com>, Dom Cobley <dom@raspberrypi.com>, linux-kernel@vger.kernel.org Subject: [PATCH v4 08/12] drm/vc4: hdmi: Properly compute the BVB clock rate Date: Fri, 7 May 2021 17:05:11 +0200 [thread overview] Message-ID: <20210507150515.257424-9-maxime@cerno.tech> (raw) In-Reply-To: <20210507150515.257424-1-maxime@cerno.tech> The BVB clock rate computation doesn't take into account a mode clock of 594MHz that we're going to need to support 4k60. Acked-by: Thomas Zimmermann <tzimmermann@suse.de> Reviewed-by: Dave Stevenson <dave.stevenson@raspberrypi.com> Signed-off-by: Maxime Ripard <maxime@cerno.tech> --- drivers/gpu/drm/vc4/vc4_hdmi.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c index 9c919472ae84..c50dc5a59b2f 100644 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c @@ -91,7 +91,6 @@ # define VC4_HD_M_ENABLE BIT(0) #define CEC_CLOCK_FREQ 40000 -#define VC4_HSM_MID_CLOCK 149985000 #define HDMI_14_MAX_TMDS_CLK (340 * 1000 * 1000) @@ -739,7 +738,7 @@ static void vc4_hdmi_encoder_pre_crtc_configure(struct drm_encoder *encoder, conn_state_to_vc4_hdmi_conn_state(conn_state); struct drm_display_mode *mode = &encoder->crtc->state->adjusted_mode; struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder); - unsigned long pixel_rate, hsm_rate; + unsigned long bvb_rate, pixel_rate, hsm_rate; int ret; ret = pm_runtime_get_sync(&vc4_hdmi->pdev->dev); @@ -793,12 +792,14 @@ static void vc4_hdmi_encoder_pre_crtc_configure(struct drm_encoder *encoder, vc4_hdmi_cec_update_clk_div(vc4_hdmi); - /* - * FIXME: When the pixel freq is 594MHz (4k60), this needs to be setup - * at 300MHz. - */ - ret = clk_set_min_rate(vc4_hdmi->pixel_bvb_clock, - (hsm_rate > VC4_HSM_MID_CLOCK ? 150000000 : 75000000)); + if (pixel_rate > 297000000) + bvb_rate = 300000000; + else if (pixel_rate > 148500000) + bvb_rate = 150000000; + else + bvb_rate = 75000000; + + ret = clk_set_min_rate(vc4_hdmi->pixel_bvb_clock, bvb_rate); if (ret) { DRM_ERROR("Failed to set pixel bvb clock rate: %d\n", ret); clk_disable_unprepare(vc4_hdmi->hsm_clock); -- 2.31.1
WARNING: multiple messages have this Message-ID (diff)
From: Maxime Ripard <maxime@cerno.tech> To: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>, Thomas Zimmermann <tzimmermann@suse.de>, Maxime Ripard <maxime@cerno.tech>, dri-devel@lists.freedesktop.org, Daniel Vetter <daniel.vetter@intel.com>, David Airlie <airlied@linux.ie> Cc: Nicolas Saenz Julienne <nsaenz@kernel.org>, Dom Cobley <dom@raspberrypi.com>, Tim Gover <tim.gover@raspberrypi.com>, Dave Stevenson <dave.stevenson@raspberrypi.com>, linux-kernel@vger.kernel.org, bcm-kernel-feedback-list@broadcom.com, linux-rpi-kernel@lists.infradead.org, Phil Elwell <phil@raspberrypi.com> Subject: [PATCH v4 08/12] drm/vc4: hdmi: Properly compute the BVB clock rate Date: Fri, 7 May 2021 17:05:11 +0200 [thread overview] Message-ID: <20210507150515.257424-9-maxime@cerno.tech> (raw) In-Reply-To: <20210507150515.257424-1-maxime@cerno.tech> The BVB clock rate computation doesn't take into account a mode clock of 594MHz that we're going to need to support 4k60. Acked-by: Thomas Zimmermann <tzimmermann@suse.de> Reviewed-by: Dave Stevenson <dave.stevenson@raspberrypi.com> Signed-off-by: Maxime Ripard <maxime@cerno.tech> --- drivers/gpu/drm/vc4/vc4_hdmi.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c index 9c919472ae84..c50dc5a59b2f 100644 --- a/drivers/gpu/drm/vc4/vc4_hdmi.c +++ b/drivers/gpu/drm/vc4/vc4_hdmi.c @@ -91,7 +91,6 @@ # define VC4_HD_M_ENABLE BIT(0) #define CEC_CLOCK_FREQ 40000 -#define VC4_HSM_MID_CLOCK 149985000 #define HDMI_14_MAX_TMDS_CLK (340 * 1000 * 1000) @@ -739,7 +738,7 @@ static void vc4_hdmi_encoder_pre_crtc_configure(struct drm_encoder *encoder, conn_state_to_vc4_hdmi_conn_state(conn_state); struct drm_display_mode *mode = &encoder->crtc->state->adjusted_mode; struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder); - unsigned long pixel_rate, hsm_rate; + unsigned long bvb_rate, pixel_rate, hsm_rate; int ret; ret = pm_runtime_get_sync(&vc4_hdmi->pdev->dev); @@ -793,12 +792,14 @@ static void vc4_hdmi_encoder_pre_crtc_configure(struct drm_encoder *encoder, vc4_hdmi_cec_update_clk_div(vc4_hdmi); - /* - * FIXME: When the pixel freq is 594MHz (4k60), this needs to be setup - * at 300MHz. - */ - ret = clk_set_min_rate(vc4_hdmi->pixel_bvb_clock, - (hsm_rate > VC4_HSM_MID_CLOCK ? 150000000 : 75000000)); + if (pixel_rate > 297000000) + bvb_rate = 300000000; + else if (pixel_rate > 148500000) + bvb_rate = 150000000; + else + bvb_rate = 75000000; + + ret = clk_set_min_rate(vc4_hdmi->pixel_bvb_clock, bvb_rate); if (ret) { DRM_ERROR("Failed to set pixel bvb clock rate: %d\n", ret); clk_disable_unprepare(vc4_hdmi->hsm_clock); -- 2.31.1
next prev parent reply other threads:[~2021-05-07 15:06 UTC|newest] Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top 2021-05-07 15:05 [PATCH v4 00/12] drm/vc4: hdmi: Support the 4k @ 60Hz modes Maxime Ripard 2021-05-07 15:05 ` Maxime Ripard 2021-05-07 15:05 ` [PATCH v4 01/12] drm/vc4: txp: Properly set the possible_crtcs mask Maxime Ripard 2021-05-07 15:05 ` Maxime Ripard 2021-05-07 15:05 ` [PATCH v4 02/12] drm/vc4: crtc: Skip the TXP Maxime Ripard 2021-05-07 15:05 ` Maxime Ripard 2021-05-07 15:05 ` [PATCH v4 03/12] drm/vc4: crtc: Pass the drm_atomic_state to config_pv Maxime Ripard 2021-05-07 15:05 ` Maxime Ripard 2021-05-21 17:26 ` Dave Stevenson 2021-05-21 17:26 ` Dave Stevenson 2021-05-07 15:05 ` [PATCH v4 04/12] drm/vc4: crtc: Fix vc4_get_crtc_encoder logic Maxime Ripard 2021-05-07 15:05 ` Maxime Ripard 2021-05-21 17:54 ` Dave Stevenson 2021-05-21 17:54 ` Dave Stevenson 2021-05-07 15:05 ` [PATCH v4 05/12] drm/vc4: crtc: Lookup the encoder from the register at boot Maxime Ripard 2021-05-07 15:05 ` Maxime Ripard 2021-05-21 17:58 ` Dave Stevenson 2021-05-21 17:58 ` Dave Stevenson 2021-05-07 15:05 ` [PATCH v4 06/12] drm/vc4: hdmi: Prevent clock unbalance Maxime Ripard 2021-05-07 15:05 ` Maxime Ripard 2021-05-21 18:05 ` Dave Stevenson 2021-05-21 18:05 ` Dave Stevenson 2021-05-07 15:05 ` [PATCH v4 07/12] drm/vc4: hvs: Make the HVS bind first Maxime Ripard 2021-05-07 15:05 ` Maxime Ripard 2021-05-07 15:05 ` Maxime Ripard [this message] 2021-05-07 15:05 ` [PATCH v4 08/12] drm/vc4: hdmi: Properly compute the BVB clock rate Maxime Ripard 2021-05-07 15:05 ` [PATCH v4 09/12] drm/vc4: hdmi: Check and warn if we can't reach 4kp60 frequencies Maxime Ripard 2021-05-07 15:05 ` Maxime Ripard 2021-05-07 15:05 ` [PATCH v4 10/12] drm/vc4: hdmi: Enable the scrambler Maxime Ripard 2021-05-07 15:05 ` Maxime Ripard 2021-05-21 17:39 ` Dave Stevenson 2021-05-21 17:39 ` Dave Stevenson 2021-05-07 15:05 ` [PATCH v4 11/12] drm/vc4: hdmi: Add a workqueue to set scrambling Maxime Ripard 2021-05-07 15:05 ` Maxime Ripard 2021-05-21 17:43 ` Dave Stevenson 2021-05-21 17:43 ` Dave Stevenson 2021-05-07 15:05 ` [PATCH v4 12/12] drm/vc4: hdmi: Raise the maximum clock rate Maxime Ripard 2021-05-07 15:05 ` Maxime Ripard 2021-05-24 12:45 ` [PATCH v4 00/12] drm/vc4: hdmi: Support the 4k @ 60Hz modes Maxime Ripard 2021-05-24 12:45 ` Maxime Ripard
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20210507150515.257424-9-maxime@cerno.tech \ --to=maxime@cerno.tech \ --cc=airlied@linux.ie \ --cc=bcm-kernel-feedback-list@broadcom.com \ --cc=daniel.vetter@intel.com \ --cc=dave.stevenson@raspberrypi.com \ --cc=dom@raspberrypi.com \ --cc=dri-devel@lists.freedesktop.org \ --cc=eric@anholt.net \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-rpi-kernel@lists.infradead.org \ --cc=maarten.lankhorst@linux.intel.com \ --cc=nsaenz@kernel.org \ --cc=phil@raspberrypi.com \ --cc=tim.gover@raspberrypi.com \ --cc=tzimmermann@suse.de \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.