All of lore.kernel.org
 help / color / mirror / Atom feed
From: Maxime Ripard <maxime@cerno.tech>
To: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>,
	Eric Anholt <eric@anholt.net>
Cc: dri-devel@lists.freedesktop.org,
	linux-rpi-kernel@lists.infradead.org,
	bcm-kernel-feedback-list@broadcom.com,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org,
	Dave Stevenson <dave.stevenson@raspberrypi.com>,
	Tim Gover <tim.gover@raspberrypi.com>,
	Phil Elwell <phil@raspberrypi.com>,
	Maxime Ripard <maxime@cerno.tech>
Subject: [PATCH 86/89] drm/vc4: hdmi: Adjust HSM clock rate depending on pixel rate
Date: Mon, 24 Feb 2020 10:07:28 +0100	[thread overview]
Message-ID: <abf64b907cd23488e06d2aca4991ac1be216ec8f.1582533919.git-series.maxime@cerno.tech> (raw)
In-Reply-To: <cover.6c896ace9a5a7840e9cec008b553cbb004ca1f91.1582533919.git-series.maxime@cerno.tech>

The HSM clock needs to be setup at around 110% of the pixel rate. This
was done previously by setting the clock rate to 148.5MHz * 108% at
probe time and only check in mode_valid whether the mode pixel clock was
under 148.5MHz or not.

However, with 4k we need to change that frequency to a higher frequency
than 148.5MHz.

Let's change that logic a bit by setting the clock rate of the HSM clock
to the pixel rate at encoder_enable time. This would work for the
BCM2711 that support 4k resolutions and has a clock that can provide it,
but we still have to take care of a 4k panel plugged on a BCM283x SoCs
that wouldn't be able to use those modes, so let's define the limit in
the variant.

Signed-off-by: Maxime Ripard <maxime@cerno.tech>
---
 drivers/gpu/drm/vc4/vc4_hdmi.c | 55 ++++++++++++++++-------------------
 drivers/gpu/drm/vc4/vc4_hdmi.h |  3 ++-
 2 files changed, 29 insertions(+), 29 deletions(-)

diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
index 2cbb950f5d5a..079bec993598 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
@@ -52,7 +52,6 @@
 #include "vc4_hdmi_regs.h"
 #include "vc4_regs.h"
 
-#define HSM_CLOCK_FREQ 163682864
 #define CEC_CLOCK_FREQ 40000
 
 static int vc4_hdmi_debugfs_regs(struct seq_file *m, void *unused)
@@ -328,6 +327,7 @@ static void vc4_hdmi_encoder_disable(struct drm_encoder *encoder)
 	HDMI_WRITE(HDMI_VID_CTL,
 		   HDMI_READ(HDMI_VID_CTL) & ~VC4_HD_VID_CTL_ENABLE);
 
+	clk_disable_unprepare(vc4_hdmi->hsm_clock);
 	clk_disable_unprepare(vc4_hdmi->pixel_clock);
 
 	ret = pm_runtime_put(&vc4_hdmi->pdev->dev);
@@ -425,6 +425,7 @@ static void vc4_hdmi_encoder_enable(struct drm_encoder *encoder)
 	struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
 	struct vc4_hdmi_encoder *vc4_encoder = to_vc4_hdmi_encoder(encoder);
 	bool debug_dump_regs = false;
+	unsigned long pixel_rate, hsm_rate;
 	int ret;
 
 	ret = pm_runtime_get_sync(&vc4_hdmi->pdev->dev);
@@ -433,9 +434,8 @@ static void vc4_hdmi_encoder_enable(struct drm_encoder *encoder)
 		return;
 	}
 
-	ret = clk_set_rate(vc4_hdmi->pixel_clock,
-			   mode->clock * 1000 *
-			   ((mode->flags & DRM_MODE_FLAG_DBLCLK) ? 2 : 1));
+	pixel_rate = mode->clock * 1000 * ((mode->flags & DRM_MODE_FLAG_DBLCLK) ? 2 : 1);
+	ret = clk_set_rate(vc4_hdmi->pixel_clock, pixel_rate);
 	if (ret) {
 		DRM_ERROR("Failed to set pixel clock rate: %d\n", ret);
 		return;
@@ -447,6 +447,24 @@ static void vc4_hdmi_encoder_enable(struct drm_encoder *encoder)
 		return;
 	}
 
+	/*
+	 * The HSM rate needs to be at 108% of the pixel clock, with a
+	 * minimum of 108MHz.
+	 */
+	hsm_rate = max_t(unsigned long, 108000000, (pixel_rate / 100) * 108);
+	ret = clk_set_rate(vc4_hdmi->hsm_clock, hsm_rate);
+	if (ret) {
+		DRM_ERROR("Failed to set HSM clock rate: %d\n", ret);
+		return;
+	}
+
+	ret = clk_prepare_enable(vc4_hdmi->hsm_clock);
+	if (ret) {
+		DRM_ERROR("Failed to turn on HSM clock: %d\n", ret);
+		clk_disable_unprepare(vc4_hdmi->pixel_clock);
+		return;
+	}
+
 	if (vc4_hdmi->variant->reset)
 		vc4_hdmi->variant->reset(vc4_hdmi);
 
@@ -561,11 +579,9 @@ static enum drm_mode_status
 vc4_hdmi_encoder_mode_valid(struct drm_encoder *encoder,
 			    const struct drm_display_mode *mode)
 {
-	/* HSM clock must be 108% of the pixel clock.  Additionally,
-	 * the AXI clock needs to be at least 25% of pixel clock, but
-	 * HSM ends up being the limiting factor.
-	 */
-	if (mode->clock > HSM_CLOCK_FREQ / (1000 * 108 / 100))
+	struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
+
+	if ((mode->clock * 1000) > vc4_hdmi->variant->max_pixel_clock)
 		return MODE_CLOCK_HIGH;
 
 	return MODE_OK;
@@ -1338,23 +1354,6 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data)
 		return -EPROBE_DEFER;
 	}
 
-	/* This is the rate that is set by the firmware.  The number
-	 * needs to be a bit higher than the pixel clock rate
-	 * (generally 148.5Mhz).
-	 */
-	ret = clk_set_rate(vc4_hdmi->hsm_clock, HSM_CLOCK_FREQ);
-	if (ret) {
-		DRM_ERROR("Failed to set HSM clock rate: %d\n", ret);
-		goto err_put_i2c;
-	}
-
-	ret = clk_prepare_enable(vc4_hdmi->hsm_clock);
-	if (ret) {
-		DRM_ERROR("Failed to turn on HDMI state machine clock: %d\n",
-			  ret);
-		goto err_put_i2c;
-	}
-
 	/* Only use the GPIO HPD pin if present in the DT, otherwise
 	 * we'll use the HDMI core's register.
 	 */
@@ -1412,9 +1411,7 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data)
 err_destroy_encoder:
 	vc4_hdmi_encoder_destroy(encoder);
 err_unprepare_hsm:
-	clk_disable_unprepare(vc4_hdmi->hsm_clock);
 	pm_runtime_disable(dev);
-err_put_i2c:
 	put_device(&vc4_hdmi->ddc->dev);
 
 	return ret;
@@ -1437,7 +1434,6 @@ static void vc4_hdmi_unbind(struct device *dev, struct device *master,
 	vc4_hdmi_connector_destroy(&vc4_hdmi->connector);
 	vc4_hdmi_encoder_destroy(&vc4_hdmi->encoder.base.base);
 
-	clk_disable_unprepare(vc4_hdmi->hsm_clock);
 	pm_runtime_disable(dev);
 
 	put_device(&vc4_hdmi->ddc->dev);
@@ -1460,6 +1456,7 @@ static int vc4_hdmi_dev_remove(struct platform_device *pdev)
 }
 
 struct vc4_hdmi_variant bcm2835_variant = {
+	.max_pixel_clock	= 148500000,
 	.audio_available	= true,
 	.cec_available		= true,
 	.registers		= vc4_hdmi_fields,
diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.h b/drivers/gpu/drm/vc4/vc4_hdmi.h
index cbb1d3ab85d7..ee9753255b68 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.h
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.h
@@ -38,6 +38,9 @@ struct vc4_hdmi_variant {
 	/* Set to true when the CEC support is available */
 	bool cec_available;
 
+	/* Maximum pixel clock supported by the controller (in Hz) */
+	unsigned long long max_pixel_clock;
+
 	/* List of the registers available on that variant */
 	const struct vc4_hdmi_register *registers;
 
-- 
git-series 0.9.1

WARNING: multiple messages have this Message-ID (diff)
From: Maxime Ripard <maxime@cerno.tech>
To: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>,
	Eric Anholt <eric@anholt.net>
Cc: Tim Gover <tim.gover@raspberrypi.com>,
	Dave Stevenson <dave.stevenson@raspberrypi.com>,
	linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
	bcm-kernel-feedback-list@broadcom.com,
	linux-rpi-kernel@lists.infradead.org,
	Phil Elwell <phil@raspberrypi.com>,
	linux-arm-kernel@lists.infradead.org,
	Maxime Ripard <maxime@cerno.tech>
Subject: [PATCH 86/89] drm/vc4: hdmi: Adjust HSM clock rate depending on pixel rate
Date: Mon, 24 Feb 2020 10:07:28 +0100	[thread overview]
Message-ID: <abf64b907cd23488e06d2aca4991ac1be216ec8f.1582533919.git-series.maxime@cerno.tech> (raw)
In-Reply-To: <cover.6c896ace9a5a7840e9cec008b553cbb004ca1f91.1582533919.git-series.maxime@cerno.tech>

The HSM clock needs to be setup at around 110% of the pixel rate. This
was done previously by setting the clock rate to 148.5MHz * 108% at
probe time and only check in mode_valid whether the mode pixel clock was
under 148.5MHz or not.

However, with 4k we need to change that frequency to a higher frequency
than 148.5MHz.

Let's change that logic a bit by setting the clock rate of the HSM clock
to the pixel rate at encoder_enable time. This would work for the
BCM2711 that support 4k resolutions and has a clock that can provide it,
but we still have to take care of a 4k panel plugged on a BCM283x SoCs
that wouldn't be able to use those modes, so let's define the limit in
the variant.

Signed-off-by: Maxime Ripard <maxime@cerno.tech>
---
 drivers/gpu/drm/vc4/vc4_hdmi.c | 55 ++++++++++++++++-------------------
 drivers/gpu/drm/vc4/vc4_hdmi.h |  3 ++-
 2 files changed, 29 insertions(+), 29 deletions(-)

diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
index 2cbb950f5d5a..079bec993598 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
@@ -52,7 +52,6 @@
 #include "vc4_hdmi_regs.h"
 #include "vc4_regs.h"
 
-#define HSM_CLOCK_FREQ 163682864
 #define CEC_CLOCK_FREQ 40000
 
 static int vc4_hdmi_debugfs_regs(struct seq_file *m, void *unused)
@@ -328,6 +327,7 @@ static void vc4_hdmi_encoder_disable(struct drm_encoder *encoder)
 	HDMI_WRITE(HDMI_VID_CTL,
 		   HDMI_READ(HDMI_VID_CTL) & ~VC4_HD_VID_CTL_ENABLE);
 
+	clk_disable_unprepare(vc4_hdmi->hsm_clock);
 	clk_disable_unprepare(vc4_hdmi->pixel_clock);
 
 	ret = pm_runtime_put(&vc4_hdmi->pdev->dev);
@@ -425,6 +425,7 @@ static void vc4_hdmi_encoder_enable(struct drm_encoder *encoder)
 	struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
 	struct vc4_hdmi_encoder *vc4_encoder = to_vc4_hdmi_encoder(encoder);
 	bool debug_dump_regs = false;
+	unsigned long pixel_rate, hsm_rate;
 	int ret;
 
 	ret = pm_runtime_get_sync(&vc4_hdmi->pdev->dev);
@@ -433,9 +434,8 @@ static void vc4_hdmi_encoder_enable(struct drm_encoder *encoder)
 		return;
 	}
 
-	ret = clk_set_rate(vc4_hdmi->pixel_clock,
-			   mode->clock * 1000 *
-			   ((mode->flags & DRM_MODE_FLAG_DBLCLK) ? 2 : 1));
+	pixel_rate = mode->clock * 1000 * ((mode->flags & DRM_MODE_FLAG_DBLCLK) ? 2 : 1);
+	ret = clk_set_rate(vc4_hdmi->pixel_clock, pixel_rate);
 	if (ret) {
 		DRM_ERROR("Failed to set pixel clock rate: %d\n", ret);
 		return;
@@ -447,6 +447,24 @@ static void vc4_hdmi_encoder_enable(struct drm_encoder *encoder)
 		return;
 	}
 
+	/*
+	 * The HSM rate needs to be at 108% of the pixel clock, with a
+	 * minimum of 108MHz.
+	 */
+	hsm_rate = max_t(unsigned long, 108000000, (pixel_rate / 100) * 108);
+	ret = clk_set_rate(vc4_hdmi->hsm_clock, hsm_rate);
+	if (ret) {
+		DRM_ERROR("Failed to set HSM clock rate: %d\n", ret);
+		return;
+	}
+
+	ret = clk_prepare_enable(vc4_hdmi->hsm_clock);
+	if (ret) {
+		DRM_ERROR("Failed to turn on HSM clock: %d\n", ret);
+		clk_disable_unprepare(vc4_hdmi->pixel_clock);
+		return;
+	}
+
 	if (vc4_hdmi->variant->reset)
 		vc4_hdmi->variant->reset(vc4_hdmi);
 
@@ -561,11 +579,9 @@ static enum drm_mode_status
 vc4_hdmi_encoder_mode_valid(struct drm_encoder *encoder,
 			    const struct drm_display_mode *mode)
 {
-	/* HSM clock must be 108% of the pixel clock.  Additionally,
-	 * the AXI clock needs to be at least 25% of pixel clock, but
-	 * HSM ends up being the limiting factor.
-	 */
-	if (mode->clock > HSM_CLOCK_FREQ / (1000 * 108 / 100))
+	struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
+
+	if ((mode->clock * 1000) > vc4_hdmi->variant->max_pixel_clock)
 		return MODE_CLOCK_HIGH;
 
 	return MODE_OK;
@@ -1338,23 +1354,6 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data)
 		return -EPROBE_DEFER;
 	}
 
-	/* This is the rate that is set by the firmware.  The number
-	 * needs to be a bit higher than the pixel clock rate
-	 * (generally 148.5Mhz).
-	 */
-	ret = clk_set_rate(vc4_hdmi->hsm_clock, HSM_CLOCK_FREQ);
-	if (ret) {
-		DRM_ERROR("Failed to set HSM clock rate: %d\n", ret);
-		goto err_put_i2c;
-	}
-
-	ret = clk_prepare_enable(vc4_hdmi->hsm_clock);
-	if (ret) {
-		DRM_ERROR("Failed to turn on HDMI state machine clock: %d\n",
-			  ret);
-		goto err_put_i2c;
-	}
-
 	/* Only use the GPIO HPD pin if present in the DT, otherwise
 	 * we'll use the HDMI core's register.
 	 */
@@ -1412,9 +1411,7 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data)
 err_destroy_encoder:
 	vc4_hdmi_encoder_destroy(encoder);
 err_unprepare_hsm:
-	clk_disable_unprepare(vc4_hdmi->hsm_clock);
 	pm_runtime_disable(dev);
-err_put_i2c:
 	put_device(&vc4_hdmi->ddc->dev);
 
 	return ret;
@@ -1437,7 +1434,6 @@ static void vc4_hdmi_unbind(struct device *dev, struct device *master,
 	vc4_hdmi_connector_destroy(&vc4_hdmi->connector);
 	vc4_hdmi_encoder_destroy(&vc4_hdmi->encoder.base.base);
 
-	clk_disable_unprepare(vc4_hdmi->hsm_clock);
 	pm_runtime_disable(dev);
 
 	put_device(&vc4_hdmi->ddc->dev);
@@ -1460,6 +1456,7 @@ static int vc4_hdmi_dev_remove(struct platform_device *pdev)
 }
 
 struct vc4_hdmi_variant bcm2835_variant = {
+	.max_pixel_clock	= 148500000,
 	.audio_available	= true,
 	.cec_available		= true,
 	.registers		= vc4_hdmi_fields,
diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.h b/drivers/gpu/drm/vc4/vc4_hdmi.h
index cbb1d3ab85d7..ee9753255b68 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.h
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.h
@@ -38,6 +38,9 @@ struct vc4_hdmi_variant {
 	/* Set to true when the CEC support is available */
 	bool cec_available;
 
+	/* Maximum pixel clock supported by the controller (in Hz) */
+	unsigned long long max_pixel_clock;
+
 	/* List of the registers available on that variant */
 	const struct vc4_hdmi_register *registers;
 
-- 
git-series 0.9.1

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

WARNING: multiple messages have this Message-ID (diff)
From: Maxime Ripard <maxime@cerno.tech>
To: Nicolas Saenz Julienne <nsaenzjulienne@suse.de>,
	Eric Anholt <eric@anholt.net>
Cc: Tim Gover <tim.gover@raspberrypi.com>,
	Dave Stevenson <dave.stevenson@raspberrypi.com>,
	linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
	bcm-kernel-feedback-list@broadcom.com,
	linux-rpi-kernel@lists.infradead.org,
	Phil Elwell <phil@raspberrypi.com>,
	linux-arm-kernel@lists.infradead.org,
	Maxime Ripard <maxime@cerno.tech>
Subject: [PATCH 86/89] drm/vc4: hdmi: Adjust HSM clock rate depending on pixel rate
Date: Mon, 24 Feb 2020 10:07:28 +0100	[thread overview]
Message-ID: <abf64b907cd23488e06d2aca4991ac1be216ec8f.1582533919.git-series.maxime@cerno.tech> (raw)
In-Reply-To: <cover.6c896ace9a5a7840e9cec008b553cbb004ca1f91.1582533919.git-series.maxime@cerno.tech>

The HSM clock needs to be setup at around 110% of the pixel rate. This
was done previously by setting the clock rate to 148.5MHz * 108% at
probe time and only check in mode_valid whether the mode pixel clock was
under 148.5MHz or not.

However, with 4k we need to change that frequency to a higher frequency
than 148.5MHz.

Let's change that logic a bit by setting the clock rate of the HSM clock
to the pixel rate at encoder_enable time. This would work for the
BCM2711 that support 4k resolutions and has a clock that can provide it,
but we still have to take care of a 4k panel plugged on a BCM283x SoCs
that wouldn't be able to use those modes, so let's define the limit in
the variant.

Signed-off-by: Maxime Ripard <maxime@cerno.tech>
---
 drivers/gpu/drm/vc4/vc4_hdmi.c | 55 ++++++++++++++++-------------------
 drivers/gpu/drm/vc4/vc4_hdmi.h |  3 ++-
 2 files changed, 29 insertions(+), 29 deletions(-)

diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.c b/drivers/gpu/drm/vc4/vc4_hdmi.c
index 2cbb950f5d5a..079bec993598 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.c
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.c
@@ -52,7 +52,6 @@
 #include "vc4_hdmi_regs.h"
 #include "vc4_regs.h"
 
-#define HSM_CLOCK_FREQ 163682864
 #define CEC_CLOCK_FREQ 40000
 
 static int vc4_hdmi_debugfs_regs(struct seq_file *m, void *unused)
@@ -328,6 +327,7 @@ static void vc4_hdmi_encoder_disable(struct drm_encoder *encoder)
 	HDMI_WRITE(HDMI_VID_CTL,
 		   HDMI_READ(HDMI_VID_CTL) & ~VC4_HD_VID_CTL_ENABLE);
 
+	clk_disable_unprepare(vc4_hdmi->hsm_clock);
 	clk_disable_unprepare(vc4_hdmi->pixel_clock);
 
 	ret = pm_runtime_put(&vc4_hdmi->pdev->dev);
@@ -425,6 +425,7 @@ static void vc4_hdmi_encoder_enable(struct drm_encoder *encoder)
 	struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
 	struct vc4_hdmi_encoder *vc4_encoder = to_vc4_hdmi_encoder(encoder);
 	bool debug_dump_regs = false;
+	unsigned long pixel_rate, hsm_rate;
 	int ret;
 
 	ret = pm_runtime_get_sync(&vc4_hdmi->pdev->dev);
@@ -433,9 +434,8 @@ static void vc4_hdmi_encoder_enable(struct drm_encoder *encoder)
 		return;
 	}
 
-	ret = clk_set_rate(vc4_hdmi->pixel_clock,
-			   mode->clock * 1000 *
-			   ((mode->flags & DRM_MODE_FLAG_DBLCLK) ? 2 : 1));
+	pixel_rate = mode->clock * 1000 * ((mode->flags & DRM_MODE_FLAG_DBLCLK) ? 2 : 1);
+	ret = clk_set_rate(vc4_hdmi->pixel_clock, pixel_rate);
 	if (ret) {
 		DRM_ERROR("Failed to set pixel clock rate: %d\n", ret);
 		return;
@@ -447,6 +447,24 @@ static void vc4_hdmi_encoder_enable(struct drm_encoder *encoder)
 		return;
 	}
 
+	/*
+	 * The HSM rate needs to be at 108% of the pixel clock, with a
+	 * minimum of 108MHz.
+	 */
+	hsm_rate = max_t(unsigned long, 108000000, (pixel_rate / 100) * 108);
+	ret = clk_set_rate(vc4_hdmi->hsm_clock, hsm_rate);
+	if (ret) {
+		DRM_ERROR("Failed to set HSM clock rate: %d\n", ret);
+		return;
+	}
+
+	ret = clk_prepare_enable(vc4_hdmi->hsm_clock);
+	if (ret) {
+		DRM_ERROR("Failed to turn on HSM clock: %d\n", ret);
+		clk_disable_unprepare(vc4_hdmi->pixel_clock);
+		return;
+	}
+
 	if (vc4_hdmi->variant->reset)
 		vc4_hdmi->variant->reset(vc4_hdmi);
 
@@ -561,11 +579,9 @@ static enum drm_mode_status
 vc4_hdmi_encoder_mode_valid(struct drm_encoder *encoder,
 			    const struct drm_display_mode *mode)
 {
-	/* HSM clock must be 108% of the pixel clock.  Additionally,
-	 * the AXI clock needs to be at least 25% of pixel clock, but
-	 * HSM ends up being the limiting factor.
-	 */
-	if (mode->clock > HSM_CLOCK_FREQ / (1000 * 108 / 100))
+	struct vc4_hdmi *vc4_hdmi = encoder_to_vc4_hdmi(encoder);
+
+	if ((mode->clock * 1000) > vc4_hdmi->variant->max_pixel_clock)
 		return MODE_CLOCK_HIGH;
 
 	return MODE_OK;
@@ -1338,23 +1354,6 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data)
 		return -EPROBE_DEFER;
 	}
 
-	/* This is the rate that is set by the firmware.  The number
-	 * needs to be a bit higher than the pixel clock rate
-	 * (generally 148.5Mhz).
-	 */
-	ret = clk_set_rate(vc4_hdmi->hsm_clock, HSM_CLOCK_FREQ);
-	if (ret) {
-		DRM_ERROR("Failed to set HSM clock rate: %d\n", ret);
-		goto err_put_i2c;
-	}
-
-	ret = clk_prepare_enable(vc4_hdmi->hsm_clock);
-	if (ret) {
-		DRM_ERROR("Failed to turn on HDMI state machine clock: %d\n",
-			  ret);
-		goto err_put_i2c;
-	}
-
 	/* Only use the GPIO HPD pin if present in the DT, otherwise
 	 * we'll use the HDMI core's register.
 	 */
@@ -1412,9 +1411,7 @@ static int vc4_hdmi_bind(struct device *dev, struct device *master, void *data)
 err_destroy_encoder:
 	vc4_hdmi_encoder_destroy(encoder);
 err_unprepare_hsm:
-	clk_disable_unprepare(vc4_hdmi->hsm_clock);
 	pm_runtime_disable(dev);
-err_put_i2c:
 	put_device(&vc4_hdmi->ddc->dev);
 
 	return ret;
@@ -1437,7 +1434,6 @@ static void vc4_hdmi_unbind(struct device *dev, struct device *master,
 	vc4_hdmi_connector_destroy(&vc4_hdmi->connector);
 	vc4_hdmi_encoder_destroy(&vc4_hdmi->encoder.base.base);
 
-	clk_disable_unprepare(vc4_hdmi->hsm_clock);
 	pm_runtime_disable(dev);
 
 	put_device(&vc4_hdmi->ddc->dev);
@@ -1460,6 +1456,7 @@ static int vc4_hdmi_dev_remove(struct platform_device *pdev)
 }
 
 struct vc4_hdmi_variant bcm2835_variant = {
+	.max_pixel_clock	= 148500000,
 	.audio_available	= true,
 	.cec_available		= true,
 	.registers		= vc4_hdmi_fields,
diff --git a/drivers/gpu/drm/vc4/vc4_hdmi.h b/drivers/gpu/drm/vc4/vc4_hdmi.h
index cbb1d3ab85d7..ee9753255b68 100644
--- a/drivers/gpu/drm/vc4/vc4_hdmi.h
+++ b/drivers/gpu/drm/vc4/vc4_hdmi.h
@@ -38,6 +38,9 @@ struct vc4_hdmi_variant {
 	/* Set to true when the CEC support is available */
 	bool cec_available;
 
+	/* Maximum pixel clock supported by the controller (in Hz) */
+	unsigned long long max_pixel_clock;
+
 	/* List of the registers available on that variant */
 	const struct vc4_hdmi_register *registers;
 
-- 
git-series 0.9.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  parent reply	other threads:[~2020-02-24  9:11 UTC|newest]

Thread overview: 501+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-02-24  9:06 [PATCH 00/89] drm/vc4: Support BCM2711 Display Pipeline Maxime Ripard
2020-02-24  9:06 ` Maxime Ripard
2020-02-24  9:06 ` Maxime Ripard
2020-02-24  9:06 ` [PATCH 01/89] dt-bindings: i2c: brcmstb: Convert the BRCMSTB binding to a schema Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24 17:40   ` Florian Fainelli
2020-02-24 17:40     ` Florian Fainelli
2020-02-24 17:40     ` Florian Fainelli
2020-02-25 18:14   ` Rob Herring
2020-02-25 18:14     ` Rob Herring
2020-02-25 18:14     ` Rob Herring
2020-02-25 18:14     ` Rob Herring
2020-03-10 10:07   ` Wolfram Sang
2020-03-10 10:07     ` Wolfram Sang
2020-03-10 10:07     ` Wolfram Sang
2020-03-10 10:07   ` Wolfram Sang
2020-03-10 10:07     ` Wolfram Sang
2020-03-10 10:07     ` Wolfram Sang
2020-03-10 10:07     ` Wolfram Sang
2020-02-24  9:06 ` [PATCH 02/89] dt-bindings: i2c: brcmstb: Add BCM2711 BSC/AUTO-I2C binding Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24 17:48   ` Florian Fainelli
2020-02-24 17:48     ` Florian Fainelli
2020-02-24 17:48     ` Florian Fainelli
2020-02-24 17:48     ` Florian Fainelli
2020-02-25 18:15   ` Rob Herring
2020-02-25 18:15     ` Rob Herring
2020-02-25 18:15     ` Rob Herring
2020-02-25 18:15     ` Rob Herring
2020-03-10 10:07   ` Wolfram Sang
2020-03-10 10:07     ` Wolfram Sang
2020-03-10 10:07     ` Wolfram Sang
2020-03-10 10:07     ` Wolfram Sang
2020-02-24  9:06 ` [PATCH 03/89] i2c: brcmstb: Support BCM2711 HDMI BSC controllers Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24 17:44   ` Florian Fainelli
2020-02-24 17:44     ` Florian Fainelli
2020-02-24 17:44     ` Florian Fainelli
2020-03-10 10:12   ` Wolfram Sang
2020-03-10 10:12     ` Wolfram Sang
2020-03-10 10:12     ` Wolfram Sang
2020-02-24  9:06 ` [PATCH 04/89] i2c: brcmstb: Allow to compile it on BCM2835 Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24 17:39   ` Florian Fainelli
2020-02-24 17:39     ` Florian Fainelli
2020-02-24 17:39     ` Florian Fainelli
2020-03-10 10:16   ` Wolfram Sang
2020-03-10 10:16     ` Wolfram Sang
2020-03-10 10:16     ` Wolfram Sang
2020-02-24  9:06 ` [PATCH 05/89] clk: Return error code when of provider pointer is NULL Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-03-12 23:13   ` Stephen Boyd
2020-03-12 23:13     ` Stephen Boyd
2020-03-12 23:13     ` Stephen Boyd
2020-02-24  9:06 ` [PATCH 06/89] dt-bindings: clock: Add a binding for the RPi Firmware clocks Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-25 18:16   ` Rob Herring
2020-02-25 18:16     ` Rob Herring
2020-02-25 18:16     ` Rob Herring
2020-03-12 23:14     ` Stephen Boyd
2020-03-12 23:14       ` Stephen Boyd
2020-03-12 23:14       ` Stephen Boyd
2020-02-24  9:06 ` [PATCH 07/89] clk: bcm: rpi: Allow the driver to be probed by DT Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-25 16:00   ` Nicolas Saenz Julienne
2020-02-25 16:00     ` Nicolas Saenz Julienne
2020-02-25 16:00     ` Nicolas Saenz Julienne
2020-02-26 15:01     ` Maxime Ripard
2020-02-26 15:01       ` Maxime Ripard
2020-02-26 15:01       ` Maxime Ripard
2020-02-28 19:57       ` Nicolas Saenz Julienne
2020-02-28 19:57         ` Nicolas Saenz Julienne
2020-02-28 19:57         ` Nicolas Saenz Julienne
2020-03-01 12:16   ` Stefan Wahren
2020-03-01 12:16     ` Stefan Wahren
2020-03-01 12:16     ` Stefan Wahren
2020-03-23 15:13     ` Maxime Ripard
2020-03-23 15:13       ` Maxime Ripard
2020-03-23 15:13       ` Maxime Ripard
2020-02-24  9:06 ` [PATCH 08/89] clk: bcm: rpi: Statically init clk_init_data Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-25 16:05   ` Nicolas Saenz Julienne
2020-02-25 16:05     ` Nicolas Saenz Julienne
2020-02-25 16:05     ` Nicolas Saenz Julienne
2020-02-24  9:06 ` [PATCH 09/89] clk: bcm: rpi: Use clk_hw_register for pllb_arm Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-25 16:11   ` Nicolas Saenz Julienne
2020-02-25 16:11     ` Nicolas Saenz Julienne
2020-02-25 16:11     ` Nicolas Saenz Julienne
2020-03-12 23:17   ` Stephen Boyd
2020-03-12 23:17     ` Stephen Boyd
2020-03-12 23:17     ` Stephen Boyd
2020-02-24  9:06 ` [PATCH 10/89] clk: bcm: rpi: Remove global pllb_arm clock pointer Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-25 16:13   ` Nicolas Saenz Julienne
2020-02-25 16:13     ` Nicolas Saenz Julienne
2020-02-25 16:13     ` Nicolas Saenz Julienne
2020-02-26 14:26     ` Maxime Ripard
2020-02-26 14:26       ` Maxime Ripard
2020-02-26 14:26       ` Maxime Ripard
2020-02-26 14:57       ` Nicolas Saenz Julienne
2020-02-26 14:57         ` Nicolas Saenz Julienne
2020-02-26 14:57         ` Nicolas Saenz Julienne
2020-02-24  9:06 ` [PATCH 11/89] clk: bcm: rpi: Make sure pllb_arm is removed Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-25 16:14   ` Nicolas Saenz Julienne
2020-02-25 16:14     ` Nicolas Saenz Julienne
2020-02-25 16:14     ` Nicolas Saenz Julienne
2020-03-12 23:20   ` Stephen Boyd
2020-03-12 23:20     ` Stephen Boyd
2020-03-12 23:20     ` Stephen Boyd
2020-02-24  9:06 ` [PATCH 12/89] clk: bcm: rpi: Remove pllb_arm_lookup global pointer Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-25 16:16   ` Nicolas Saenz Julienne
2020-02-25 16:16     ` Nicolas Saenz Julienne
2020-02-25 16:16     ` Nicolas Saenz Julienne
2020-03-12 23:21   ` Stephen Boyd
2020-03-12 23:21     ` Stephen Boyd
2020-03-12 23:21     ` Stephen Boyd
2020-03-13  1:13   ` Stephen Boyd
2020-03-13  1:13     ` Stephen Boyd
2020-03-13  1:13     ` Stephen Boyd
2020-02-24  9:06 ` [PATCH 13/89] clk: bcm: rpi: Switch to clk_hw_register_clkdev Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-25 16:17   ` Nicolas Saenz Julienne
2020-02-25 16:17     ` Nicolas Saenz Julienne
2020-02-25 16:17     ` Nicolas Saenz Julienne
2020-03-13  1:12   ` Stephen Boyd
2020-03-13  1:12     ` Stephen Boyd
2020-03-13  1:12     ` Stephen Boyd
2020-02-24  9:06 ` [PATCH 14/89] clk: bcm: rpi: Make sure the clkdev lookup is removed Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-25 16:19   ` Nicolas Saenz Julienne
2020-02-25 16:19     ` Nicolas Saenz Julienne
2020-02-25 16:19     ` Nicolas Saenz Julienne
2020-03-13  1:11   ` Stephen Boyd
2020-03-13  1:11     ` Stephen Boyd
2020-03-13  1:11     ` Stephen Boyd
2020-02-24  9:06 ` [PATCH 15/89] clk: bcm: rpi: Create a data structure for the clocks Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-25 16:24   ` Nicolas Saenz Julienne
2020-02-25 16:24     ` Nicolas Saenz Julienne
2020-02-25 16:24     ` Nicolas Saenz Julienne
2020-03-13  1:11   ` Stephen Boyd
2020-03-13  1:11     ` Stephen Boyd
2020-03-13  1:11     ` Stephen Boyd
2020-02-24  9:06 ` [PATCH 16/89] clk: bcm: rpi: Add clock id to data Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24 19:25   ` Stefan Wahren
2020-02-24 19:25     ` Stefan Wahren
2020-02-24 19:25     ` Stefan Wahren
2020-02-25  9:54     ` Maxime Ripard
2020-02-25  9:54       ` Maxime Ripard
2020-02-25  9:54       ` Maxime Ripard
2020-02-25 14:33       ` Nicolas Saenz Julienne
2020-02-25 14:33         ` Nicolas Saenz Julienne
2020-02-25 14:33         ` Nicolas Saenz Julienne
2020-02-25 16:24   ` Nicolas Saenz Julienne
2020-02-25 16:24     ` Nicolas Saenz Julienne
2020-02-25 16:24     ` Nicolas Saenz Julienne
2020-03-13  1:11   ` Stephen Boyd
2020-03-13  1:11     ` Stephen Boyd
2020-03-13  1:11     ` Stephen Boyd
2020-02-24  9:06 ` [PATCH 17/89] clk: bcm: rpi: Pass the clocks data to the firmware function Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-25 16:26   ` Nicolas Saenz Julienne
2020-02-25 16:26     ` Nicolas Saenz Julienne
2020-02-25 16:26     ` Nicolas Saenz Julienne
2020-03-13  1:09   ` Stephen Boyd
2020-03-13  1:09     ` Stephen Boyd
2020-03-13  1:09     ` Stephen Boyd
2020-02-24  9:06 ` [PATCH 18/89] clk: bcm: rpi: Rename is_prepared function Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-25 16:45   ` Nicolas Saenz Julienne
2020-02-25 16:45     ` Nicolas Saenz Julienne
2020-02-25 16:45     ` Nicolas Saenz Julienne
2020-03-13  1:09   ` Stephen Boyd
2020-03-13  1:09     ` Stephen Boyd
2020-03-13  1:09     ` Stephen Boyd
2020-02-24  9:06 ` [PATCH 19/89] clk: bcm: rpi: Split pllb clock hooks Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-03-13  1:08   ` Stephen Boyd
2020-03-13  1:08     ` Stephen Boyd
2020-03-13  1:08     ` Stephen Boyd
2020-02-24  9:06 ` [PATCH 20/89] clk: bcm: rpi: Make the PLLB registration function return a clk_hw Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-03-13  1:01   ` Stephen Boyd
2020-03-13  1:01     ` Stephen Boyd
2020-03-13  1:01     ` Stephen Boyd
2020-02-24  9:06 ` [PATCH 21/89] clk: bcm: rpi: Add DT provider for the clocks Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-03-13  1:01   ` Stephen Boyd
2020-03-13  1:01     ` Stephen Boyd
2020-03-13  1:01     ` Stephen Boyd
2020-02-24  9:06 ` [PATCH 22/89] clk: bcm: rpi: Discover the firmware clocks Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24 16:47   ` kbuild test robot
2020-02-24 16:47     ` kbuild test robot
2020-02-24 16:47     ` kbuild test robot
2020-02-24 16:47     ` kbuild test robot
2020-02-24 16:47   ` [PATCH] clk: bcm: rpi: fix noderef.cocci warnings kbuild test robot
2020-02-24 16:47     ` kbuild test robot
2020-02-24 16:47     ` kbuild test robot
2020-02-24 16:47     ` kbuild test robot
2020-02-24 18:15   ` [PATCH 22/89] clk: bcm: rpi: Discover the firmware clocks Florian Fainelli
2020-02-24 18:15     ` Florian Fainelli
2020-02-24 18:15     ` Florian Fainelli
2020-02-26 14:15     ` Maxime Ripard
2020-02-26 14:15       ` Maxime Ripard
2020-02-26 14:15       ` Maxime Ripard
2020-02-24 20:24   ` kbuild test robot
2020-02-24 20:24     ` kbuild test robot
2020-02-24 20:24     ` kbuild test robot
2020-02-24 20:24     ` kbuild test robot
2020-03-13  1:08   ` Stephen Boyd
2020-03-13  1:08     ` Stephen Boyd
2020-03-13  1:08     ` Stephen Boyd
2020-02-24  9:06 ` [PATCH 23/89] ARM: dts: bcm2711: Add firmware clocks node Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06 ` [PATCH 24/89] reset: Move reset-simple header out of drivers/reset Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06 ` [PATCH 25/89] reset: simple: Add reset callback Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-03-04 12:03   ` Philipp Zabel
2020-03-04 12:03     ` Philipp Zabel
2020-03-04 12:03     ` Philipp Zabel
2020-02-24  9:06 ` [PATCH 26/89] dt-bindings: clock: Add BCM2711 DVP binding Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-25 18:17   ` Rob Herring
2020-02-25 18:17     ` Rob Herring
2020-02-25 18:17     ` Rob Herring
2020-02-24  9:06 ` [PATCH 27/89] clk: bcm: Add BCM2711 DVP driver Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-03-13  1:00   ` Stephen Boyd
2020-03-13  1:00     ` Stephen Boyd
2020-03-13  1:00     ` Stephen Boyd
2020-03-23 10:56     ` Maxime Ripard
2020-03-23 10:56       ` Maxime Ripard
2020-03-23 10:56       ` Maxime Ripard
2020-03-25  2:20       ` Stephen Boyd
2020-03-25  2:20         ` Stephen Boyd
2020-03-25  2:20         ` Stephen Boyd
2020-02-24  9:06 ` [PATCH 28/89] ARM: dts: bcm2711: Add HDMI DVP Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06 ` [PATCH 29/89] dt-bindings: display: Convert VC4 bindings to schemas Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24 18:41   ` Rob Herring
2020-02-24 18:41     ` Rob Herring
2020-02-24 18:41     ` Rob Herring
2020-02-25 11:54     ` Maxime Ripard
2020-02-25 11:54       ` Maxime Ripard
2020-02-25 11:54       ` Maxime Ripard
2020-02-25 14:02       ` Rob Herring
2020-02-25 14:02         ` Rob Herring
2020-02-25 14:02         ` Rob Herring
2020-02-24  9:06 ` [PATCH 30/89] dt-bindings: display: vc4: dpi: Add missing clock-names property Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-25 18:17   ` Rob Herring
2020-02-25 18:17     ` Rob Herring
2020-02-25 18:17     ` Rob Herring
2020-02-24  9:06 ` [PATCH 31/89] dt-bindings: display: vc4: dsi: Add missing clock properties Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-25 18:18   ` Rob Herring
2020-02-25 18:18     ` Rob Herring
2020-02-25 18:18     ` Rob Herring
2020-02-24  9:06 ` [PATCH 32/89] dt-bindings: display: vc4: hdmi: Add missing clock-names property Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-25 18:18   ` Rob Herring
2020-02-25 18:18     ` Rob Herring
2020-02-25 18:18     ` Rob Herring
2020-02-24  9:06 ` [PATCH 33/89] dt-bindings: display: vc4: Document BCM2711 VC5 Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-25 18:18   ` Rob Herring
2020-02-25 18:18     ` Rob Herring
2020-02-25 18:18     ` Rob Herring
2020-02-24  9:06 ` [PATCH 34/89] drm/vc4: drv: Add include guards Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06 ` [PATCH 35/89] drm/vc4: drv: Support BCM2711 Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06 ` [PATCH 36/89] drm/vc4: drv: Add support for the BCM2711 HVS5 Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06 ` [PATCH 37/89] drm/vc4: plane: Improve LBM usage Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06 ` [PATCH 38/89] drm/vc4: plane: Move planes creation to its own function Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06 ` [PATCH 39/89] drm/vc4: plane: Move additional planes creation to driver Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06 ` [PATCH 40/89] drm/vc4: plane: Register all the planes at once Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06 ` [PATCH 41/89] drm/vc4: plane: Create overlays for any CRTC Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06 ` [PATCH 42/89] drm/vc4: plane: Create more planes Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06 ` [PATCH 43/89] drm/vc4: crtc: Rename SoC data structures Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06 ` [PATCH 44/89] drm/vc4: crtc: Move crtc state to common header Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06 ` [PATCH 45/89] drm/vc4: crtc: Deal with different number of pixel per clock Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06 ` [PATCH 46/89] drm/vc4: crtc: Use a shared interrupt Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06 ` [PATCH 47/89] drm/vc4: crtc: Turn static const variable into a define Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06 ` [PATCH 48/89] drm/vc4: crtc: Move the cob allocation outside of bind Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06 ` [PATCH 49/89] drm/vc4: crtc: Rename HVS channel to output Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06 ` [PATCH 50/89] drm/vc4: crtc: Use local chan variable Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06 ` [PATCH 51/89] drm/vc4: crtc: Enable and disable the PV in atomic_enable / disable Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06 ` [PATCH 52/89] drm/vc4: crtc: Assign output to channel automatically Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06 ` [PATCH 53/89] drm/vc4: crtc: Add FIFO depth to vc4_crtc_data Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06 ` [PATCH 54/89] drm/vc4: crtc: Add function to compute FIFO level bits Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06 ` [PATCH 55/89] drm/vc4: crtc: Rename HDMI encoder type to HDMI0 Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06 ` [PATCH 56/89] drm/vc4: crtc: Add HDMI1 encoder type Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06 ` [PATCH 57/89] drm/vc4: crtc: Remove redundant call to drm_crtc_enable_color_mgmt Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:06   ` Maxime Ripard
2020-02-24  9:07 ` [PATCH 58/89] drm/vc4: crtc: Disable color management for HVS5 Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07 ` [PATCH 59/89] dt-bindings: display: vc4: pv: Add BCM2711 pixel valves Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-25 18:19   ` Rob Herring
2020-02-25 18:19     ` Rob Herring
2020-02-25 18:19     ` Rob Herring
2020-02-24  9:07 ` [PATCH 60/89] drm/vc4: crtc: Add BCM2711 pixelvalves Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07 ` [PATCH 61/89] drm/vc4: hdmi: Use debugfs private field Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07 ` [PATCH 62/89] drm/vc4: hdmi: Move structure to header Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07 ` [PATCH 63/89] drm/vc4: hdmi: rework connectors and encoders Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07 ` [PATCH 64/89] drm/vc4: hdmi: Remove DDC argument to connector_init Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07 ` [PATCH 65/89] drm/vc4: hdmi: Rename hdmi to vc4_hdmi Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24 13:12   ` kbuild test robot
2020-02-24  9:07 ` [PATCH 66/89] drm/vc4: hdmi: Move accessors " Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24 15:37   ` kbuild test robot
2020-02-24  9:07 ` [PATCH 67/89] drm/vc4: hdmi: Use local vc4_hdmi directly Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07 ` [PATCH 68/89] drm/vc4: hdmi: Add container_of macros for encoders and connectors Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07 ` [PATCH 69/89] drm/vc4: hdmi: Pass vc4_hdmi to CEC code Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24 18:27   ` kbuild test robot
2020-02-24  9:07 ` [PATCH 70/89] drm/vc4: hdmi: Remove vc4_dev hdmi pointer Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24 14:13   ` kbuild test robot
2020-02-24  9:07 ` [PATCH 71/89] drm/vc4: hdmi: Remove vc4_hdmi_connector Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07 ` [PATCH 72/89] drm/vc4: hdmi: Introduce resource init and variant Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-25  0:33   ` [RFC PATCH] drm/vc4: hdmi: bcm2835_variant can be static kbuild test robot
2020-02-24  9:07 ` [PATCH 73/89] drm/vc4: hdmi: Implement a register layout abstraction Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24 15:58   ` kbuild test robot
2020-02-24  9:07 ` [PATCH 74/89] drm/vc4: hdmi: Add reset callback Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07 ` [PATCH 75/89] drm/vc4: hdmi: Add PHY init and disable function Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07 ` [PATCH 76/89] drm/vc4: hdmi: Add PHY RNG enable / " Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07 ` [PATCH 77/89] drm/vc4: hdmi: Add a CSC setup callback Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07 ` [PATCH 78/89] drm/vc4: hdmi: Add a set_timings callback Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07 ` [PATCH 79/89] drm/vc4: hdmi: Add HDMI ID Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07 ` [PATCH 80/89] drm/vc4: hdmi: Deal with multiple debugfs files Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07 ` [PATCH 81/89] drm/vc4: hdmi: Add an audio support flag Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07 ` [PATCH 82/89] drm/vc4: hdmi: Move CEC init to its own function Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24 12:51   ` kbuild test robot
2020-02-24  9:07 ` [PATCH 83/89] drm/vc4: hdmi: Add CEC support flag Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07 ` [PATCH 84/89] drm/vc4: hdmi: Remove unused CEC_CLOCK_DIV define Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07 ` [PATCH 85/89] drm/vc4: hdmi: Rename drm_encoder pointer in mode_valid Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07 ` Maxime Ripard [this message]
2020-02-24  9:07   ` [PATCH 86/89] drm/vc4: hdmi: Adjust HSM clock rate depending on pixel rate Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-03-16 12:54   ` Nicolas Saenz Julienne
2020-03-16 12:54     ` Nicolas Saenz Julienne
2020-03-16 12:54     ` Nicolas Saenz Julienne
2020-02-24  9:07 ` [PATCH 87/89] drm/vc4: hdmi: Support the BCM2711 HDMI controllers Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-25  4:31   ` [RFC PATCH] drm/vc4: hdmi: bcm2711_hdmi0_variant can be static kbuild test robot
2020-03-17 18:25   ` [PATCH 87/89] drm/vc4: hdmi: Support the BCM2711 HDMI controllers Daniel Rodriguez
2020-03-17 18:25     ` Daniel Rodriguez
2020-03-17 18:25     ` Daniel Rodriguez
2020-02-24  9:07 ` [PATCH 88/89] dt-bindings: display: vc4: hdmi: Add BCM2711 HDMI controllers bindings Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-25 18:24   ` Rob Herring
2020-02-25 18:24     ` Rob Herring
2020-02-25 18:24     ` Rob Herring
2020-02-24  9:07 ` [PATCH 89/89] ARM: dts: bcm2711: Enable the display pipeline Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-02-24  9:07   ` Maxime Ripard
2020-03-05 10:00 ` [PATCH 70/89] drm/vc4: hdmi: Remove vc4_dev hdmi pointer Jian-Hong Pan
2020-03-05 10:00   ` Jian-Hong Pan
2020-03-05 10:00   ` Jian-Hong Pan

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=abf64b907cd23488e06d2aca4991ac1be216ec8f.1582533919.git-series.maxime@cerno.tech \
    --to=maxime@cerno.tech \
    --cc=bcm-kernel-feedback-list@broadcom.com \
    --cc=dave.stevenson@raspberrypi.com \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=eric@anholt.net \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-rpi-kernel@lists.infradead.org \
    --cc=nsaenzjulienne@suse.de \
    --cc=phil@raspberrypi.com \
    --cc=tim.gover@raspberrypi.com \
    /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: link
Be 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.