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 v2 48/91] drm/vc4: crtc: Move the cob allocation outside of bind
Date: Fri, 24 Apr 2020 17:34:29 +0200 [thread overview]
Message-ID: <8a63b7d2863bd0c3e9811eb59917e077a4a44384.1587742492.git-series.maxime@cerno.tech> (raw)
In-Reply-To: <cover.d1e741d37e43e1ba2d2ecd93fc81d42a6df99d14.1587742492.git-series.maxime@cerno.tech>
The COB allocation depends on the HVS channel used for a given
pixelvalve.
While the channel allocation was entirely static in vc4, vc5 changes
that and at bind time, a pixelvalve can be assigned to multiple
HVS channels.
Let's prepare that rework by allocating the COB when it's actually
needed.
Signed-off-by: Maxime Ripard <maxime@cerno.tech>
---
drivers/gpu/drm/vc4/vc4_crtc.c | 39 +++++++++++++++++------------------
drivers/gpu/drm/vc4/vc4_drv.h | 2 +--
2 files changed, 20 insertions(+), 21 deletions(-)
diff --git a/drivers/gpu/drm/vc4/vc4_crtc.c b/drivers/gpu/drm/vc4/vc4_crtc.c
index 06bda23cd560..e469bdab9124 100644
--- a/drivers/gpu/drm/vc4/vc4_crtc.c
+++ b/drivers/gpu/drm/vc4/vc4_crtc.c
@@ -65,6 +65,23 @@ static const struct debugfs_reg32 crtc_regs[] = {
VC4_REG32(PV_HACT_ACT),
};
+static unsigned int
+vc4_crtc_get_cob_allocation(struct vc4_crtc *vc4_crtc, unsigned int channel)
+{
+ struct drm_device *drm = vc4_crtc->base.dev;
+ struct vc4_dev *vc4 = to_vc4_dev(drm);
+
+ u32 dispbase = HVS_READ(SCALER_DISPBASEX(channel));
+ /* Top/base are supposed to be 4-pixel aligned, but the
+ * Raspberry Pi firmware fills the low bits (which are
+ * presumably ignored).
+ */
+ u32 top = VC4_GET_FIELD(dispbase, SCALER_DISPBASEX_TOP) & ~3;
+ u32 base = VC4_GET_FIELD(dispbase, SCALER_DISPBASEX_BASE) & ~3;
+
+ return top - base + 4;
+}
+
static bool vc4_crtc_get_scanout_position(struct drm_crtc *crtc,
bool in_vblank_irq,
int *vpos, int *hpos,
@@ -74,6 +91,7 @@ static bool vc4_crtc_get_scanout_position(struct drm_crtc *crtc,
struct drm_device *dev = crtc->dev;
struct vc4_dev *vc4 = to_vc4_dev(dev);
struct vc4_crtc *vc4_crtc = to_vc4_crtc(crtc);
+ unsigned int cob_size;
u32 val;
int fifo_lines;
int vblank_lines;
@@ -109,8 +127,9 @@ static bool vc4_crtc_get_scanout_position(struct drm_crtc *crtc,
*hpos += mode->crtc_htotal / 2;
}
+ cob_size = vc4_crtc_get_cob_allocation(vc4_crtc, vc4_crtc->channel);
/* This is the offset we need for translating hvs -> pv scanout pos. */
- fifo_lines = vc4_crtc->cob_size / mode->crtc_hdisplay;
+ fifo_lines = cob_size / mode->crtc_hdisplay;
if (fifo_lines > 0)
ret = true;
@@ -1105,22 +1124,6 @@ static void vc4_set_crtc_possible_masks(struct drm_device *drm,
}
}
-static void
-vc4_crtc_get_cob_allocation(struct vc4_crtc *vc4_crtc)
-{
- struct drm_device *drm = vc4_crtc->base.dev;
- struct vc4_dev *vc4 = to_vc4_dev(drm);
- u32 dispbase = HVS_READ(SCALER_DISPBASEX(vc4_crtc->channel));
- /* Top/base are supposed to be 4-pixel aligned, but the
- * Raspberry Pi firmware fills the low bits (which are
- * presumably ignored).
- */
- u32 top = VC4_GET_FIELD(dispbase, SCALER_DISPBASEX_TOP) & ~3;
- u32 base = VC4_GET_FIELD(dispbase, SCALER_DISPBASEX_BASE) & ~3;
-
- vc4_crtc->cob_size = top - base + 4;
-}
-
static int vc4_crtc_bind(struct device *dev, struct device *master, void *data)
{
struct platform_device *pdev = to_platform_device(dev);
@@ -1175,8 +1178,6 @@ static int vc4_crtc_bind(struct device *dev, struct device *master, void *data)
*/
drm_crtc_enable_color_mgmt(crtc, 0, true, crtc->gamma_size);
- vc4_crtc_get_cob_allocation(vc4_crtc);
-
CRTC_WRITE(PV_INTEN, 0);
CRTC_WRITE(PV_INTSTAT, PV_INT_VFP_START);
ret = devm_request_irq(dev, platform_get_irq(pdev, 0),
diff --git a/drivers/gpu/drm/vc4/vc4_drv.h b/drivers/gpu/drm/vc4/vc4_drv.h
index cda738dbd6c1..84e318098c5f 100644
--- a/drivers/gpu/drm/vc4/vc4_drv.h
+++ b/drivers/gpu/drm/vc4/vc4_drv.h
@@ -475,8 +475,6 @@ struct vc4_crtc {
u8 lut_r[256];
u8 lut_g[256];
u8 lut_b[256];
- /* Size in pixels of the COB memory allocated to this CRTC. */
- u32 cob_size;
struct drm_pending_vblank_event *event;
--
git-series 0.9.1
next prev parent reply other threads:[~2020-04-24 15:39 UTC|newest]
Thread overview: 142+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-24 15:33 [PATCH v2 00/91] drm/vc4: Support BCM2711 Display Pipeline Maxime Ripard
2020-04-24 15:33 ` [PATCH v2 01/91] i2c: brcmstb: Allow to compile it on BCM2835 Maxime Ripard
2020-04-24 16:13 ` Wolfram Sang
2020-04-24 17:07 ` Florian Fainelli
2020-04-24 19:04 ` Wolfram Sang
2020-04-26 7:44 ` Wolfram Sang
2020-04-24 15:33 ` [PATCH v2 02/91] dt-bindings: arm: bcm: Convert BCM2835 firmware binding to YAML Maxime Ripard
2020-04-24 15:33 ` [PATCH v2 03/91] dt-bindings: clock: Add a binding for the RPi Firmware clocks Maxime Ripard
2020-05-11 21:47 ` Rob Herring
2020-05-13 8:13 ` Maxime Ripard
2020-04-24 15:33 ` [PATCH v2 04/91] firmware: rpi: Only create clocks device if we don't have a node for it Maxime Ripard
2020-04-27 11:24 ` Nicolas Saenz Julienne
2020-04-28 13:50 ` Maxime Ripard
2020-04-30 16:27 ` Nicolas Saenz Julienne
2020-04-24 15:33 ` [PATCH v2 05/91] clk: bcm: rpi: Allow the driver to be probed by DT Maxime Ripard
2020-04-30 16:19 ` Nicolas Saenz Julienne
2020-04-24 15:33 ` [PATCH v2 06/91] clk: bcm: rpi: Statically init clk_init_data Maxime Ripard
2020-05-27 6:47 ` Stephen Boyd
2020-04-24 15:33 ` [PATCH v2 07/91] clk: bcm: rpi: Use clk_hw_register for pllb_arm Maxime Ripard
2020-04-24 15:33 ` [PATCH v2 08/91] clk: bcm: rpi: Remove global pllb_arm clock pointer Maxime Ripard
2020-05-27 6:48 ` Stephen Boyd
2020-04-24 15:33 ` [PATCH v2 09/91] clk: bcm: rpi: Make sure pllb_arm is removed Maxime Ripard
2020-05-27 6:48 ` Stephen Boyd
2020-04-24 15:33 ` [PATCH v2 10/91] clk: bcm: rpi: Remove pllb_arm_lookup global pointer Maxime Ripard
2020-04-24 15:33 ` [PATCH v2 11/91] clk: bcm: rpi: Switch to clk_hw_register_clkdev Maxime Ripard
2020-04-24 15:33 ` [PATCH v2 12/91] clk: bcm: rpi: Make sure the clkdev lookup is removed Maxime Ripard
2020-04-24 15:33 ` [PATCH v2 13/91] clk: bcm: rpi: Create a data structure for the clocks Maxime Ripard
2020-04-24 15:33 ` [PATCH v2 14/91] clk: bcm: rpi: Add clock id to data Maxime Ripard
2020-04-24 15:33 ` [PATCH v2 15/91] clk: bcm: rpi: Pass the clocks data to the firmware function Maxime Ripard
2020-05-27 6:49 ` Stephen Boyd
2020-04-24 15:33 ` [PATCH v2 16/91] clk: bcm: rpi: Rename is_prepared function Maxime Ripard
2020-04-24 15:33 ` [PATCH v2 17/91] clk: bcm: rpi: Split pllb clock hooks Maxime Ripard
2020-04-24 15:33 ` [PATCH v2 18/91] clk: bcm: rpi: Make the PLLB registration function return a clk_hw Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 19/91] clk: bcm: rpi: Add DT provider for the clocks Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 20/91] clk: bcm: rpi: Discover the firmware clocks Maxime Ripard
2020-05-04 12:05 ` Nicolas Saenz Julienne
2020-05-15 8:19 ` Maxime Ripard
2020-05-21 9:13 ` Nicolas Saenz Julienne
2020-05-27 7:03 ` Stephen Boyd
2020-04-24 15:34 ` [PATCH v2 21/91] ARM: dts: bcm2711: Add firmware clocks node Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 22/91] reset: Move reset-simple header out of drivers/reset Maxime Ripard
2020-05-06 9:26 ` Philipp Zabel
2020-05-13 11:52 ` Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 23/91] reset: simple: Add reset callback Maxime Ripard
2020-05-06 9:26 ` Philipp Zabel
2020-04-24 15:34 ` [PATCH v2 24/91] dt-bindings: clock: Add BCM2711 DVP binding Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 25/91] clk: bcm: Add BCM2711 DVP driver Maxime Ripard
2020-05-27 7:06 ` Stephen Boyd
2020-04-24 15:34 ` [PATCH v2 26/91] ARM: dts: bcm2711: Add HDMI DVP Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 27/91] dt-bindings: display: Convert VC4 bindings to schemas Maxime Ripard
2020-04-27 21:32 ` Rob Herring
2020-04-24 15:34 ` [PATCH v2 28/91] dt-bindings: display: vc4: dpi: Add missing clock-names property Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 29/91] dt-bindings: display: vc4: dsi: Add missing clock properties Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 30/91] dt-bindings: display: vc4: hdmi: Add missing clock-names property Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 31/91] dt-bindings: display: vc4: Document BCM2711 VC5 Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 32/91] drm/vc4: drv: Add include guards Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 33/91] drm/vc4: drv: Support BCM2711 Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 34/91] dt-bindings: display: Add support for the BCM2711 HVS Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 35/91] drm/vc4: Add support for the BCM2711 HVS5 Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 36/91] drm/vc4: hvs: Boost the core clock during modeset Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 37/91] drm/vc4: plane: Improve LBM usage Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 38/91] drm/vc4: plane: Move planes creation to its own function Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 39/91] drm/vc4: plane: Move additional planes creation to driver Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 40/91] drm/vc4: plane: Register all the planes at once Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 41/91] drm/vc4: plane: Create overlays for any CRTC Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 42/91] drm/vc4: plane: Create more planes Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 43/91] drm/vc4: crtc: Rename SoC data structures Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 44/91] drm/vc4: crtc: Move crtc state to common header Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 45/91] drm/vc4: crtc: Deal with different number of pixel per clock Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 46/91] drm/vc4: crtc: Use a shared interrupt Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 47/91] drm/vc4: crtc: Turn static const variable into a define Maxime Ripard
2020-04-24 15:34 ` Maxime Ripard [this message]
2020-04-24 15:34 ` [PATCH v2 49/91] drm/vc4: crtc: Rename HVS channel to output Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 50/91] drm/vc4: crtc: Use local chan variable Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 51/91] drm/vc4: crtc: Enable and disable the PV in atomic_enable / disable Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 52/91] drm/vc4: crtc: Assign output to channel automatically Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 53/91] drm/vc4: crtc: Add FIFO depth to vc4_crtc_data Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 54/91] drm/vc4: crtc: Add function to compute FIFO level bits Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 55/91] drm/vc4: crtc: Rename HDMI encoder type to HDMI0 Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 56/91] drm/vc4: crtc: Add HDMI1 encoder type Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 57/91] drm/vc4: crtc: Remove redundant call to drm_crtc_enable_color_mgmt Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 58/91] drm/vc4: crtc: Disable color management for HVS5 Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 59/91] dt-bindings: display: vc4: pv: Add BCM2711 pixel valves Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 60/91] drm/vc4: crtc: Add BCM2711 pixelvalves Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 61/91] drm/vc4: hdmi: Use debugfs private field Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 62/91] drm/vc4: hdmi: Move structure to header Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 63/91] drm/vc4: hdmi: rework connectors and encoders Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 64/91] drm/vc4: hdmi: Remove DDC argument to connector_init Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 65/91] drm/vc4: hdmi: Rename hdmi to vc4_hdmi Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 66/91] drm/vc4: hdmi: Move accessors " Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 67/91] drm/vc4: hdmi: Use local vc4_hdmi directly Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 68/91] drm/vc4: hdmi: Add container_of macros for encoders and connectors Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 69/91] drm/vc4: hdmi: Pass vc4_hdmi to CEC code Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 70/91] drm/vc4: hdmi: Remove vc4_dev hdmi pointer Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 71/91] drm/vc4: hdmi: Remove vc4_hdmi_connector Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 72/91] drm/vc4: hdmi: Introduce resource init and variant Maxime Ripard
2020-04-25 21:06 ` Stefan Wahren
2020-04-24 15:34 ` [PATCH v2 73/91] drm/vc4: hdmi: Implement a register layout abstraction Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 74/91] drm/vc4: hdmi: Add reset callback Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 75/91] drm/vc4: hdmi: Add PHY init and disable function Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 76/91] drm/vc4: hdmi: Add PHY RNG enable / " Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 77/91] drm/vc4: hdmi: Add a CSC setup callback Maxime Ripard
2020-04-24 15:34 ` [PATCH v2 78/91] drm/vc4: hdmi: Store the encoder type in the variant structure Maxime Ripard
2020-04-24 15:35 ` [PATCH v2 79/91] drm/vc4: hdmi: Deal with multiple debugfs files Maxime Ripard
2020-04-25 21:26 ` Stefan Wahren
2020-04-28 15:57 ` Maxime Ripard
2020-04-28 16:19 ` Dave Stevenson
2020-04-24 15:35 ` [PATCH v2 80/91] drm/vc4: hdmi: Move CEC init to its own function Maxime Ripard
2020-04-24 15:35 ` [PATCH v2 81/91] drm/vc4: hdmi: Add CEC support flag Maxime Ripard
2020-04-24 15:35 ` [PATCH v2 82/91] drm/vc4: hdmi: Remove unused CEC_CLOCK_DIV define Maxime Ripard
2020-04-24 15:35 ` [PATCH v2 83/91] drm/vc4: hdmi: Rename drm_encoder pointer in mode_valid Maxime Ripard
2020-04-24 15:35 ` [PATCH v2 84/91] drm/vc4: hdmi: Adjust HSM clock rate depending on pixel rate Maxime Ripard
2020-04-24 15:35 ` [PATCH v2 85/91] drm/vc4: hdmi: Use reg-names to retrieve the HDMI audio registers Maxime Ripard
2020-04-24 15:35 ` [PATCH v2 86/91] drm/vc4: hdmi: Reset audio infoframe on encoder_enable if previously streaming Maxime Ripard
2020-04-24 15:35 ` [PATCH v2 87/91] drm/vc4: hdmi: Set the b-frame marker to the match ALSA's default Maxime Ripard
2020-04-24 15:35 ` [PATCH v2 88/91] drm/vc4: hdmi: Add audio-related callbacks Maxime Ripard
2020-04-24 15:35 ` [PATCH v2 89/91] drm/vc4: hdmi: Support the BCM2711 HDMI controllers Maxime Ripard
2020-05-07 17:36 ` Stefan Wahren
2020-04-24 15:35 ` [PATCH v2 90/91] dt-bindings: display: vc4: hdmi: Add BCM2711 HDMI controllers bindings Maxime Ripard
2020-05-11 21:50 ` Rob Herring
2020-05-13 8:16 ` Maxime Ripard
2020-04-24 15:35 ` [PATCH v2 91/91] ARM: dts: bcm2711: Enable the display pipeline Maxime Ripard
2020-04-25 20:54 ` Stefan Wahren
2020-04-28 14:11 ` Maxime Ripard
2020-04-27 7:23 ` [PATCH v2 00/91] drm/vc4: Support BCM2711 Display Pipelin Jian-Hong Pan
2020-04-28 16:21 ` Maxime Ripard
2020-05-04 6:35 ` Jian-Hong Pan
2020-05-07 17:21 ` Maxime Ripard
2020-05-08 6:20 ` Jian-Hong Pan
2020-05-11 3:12 ` Jian-Hong Pan
2020-05-25 11:11 ` Maxime Ripard
2020-05-26 10:20 ` Maxime Ripard
2020-05-27 3:49 ` Daniel Drake
2020-05-27 9:13 ` Maxime Ripard
2020-05-27 9:15 ` Daniel Drake
2020-05-28 7:30 ` Maxime Ripard
2020-06-01 7:58 ` Jian-Hong Pan
2020-06-02 11:04 ` Maxime Ripard
2020-06-05 8:44 ` Jian-Hong Pan
2020-06-29 14:21 ` Maxime Ripard
2020-06-30 8:26 ` Jian-Hong Pan
2020-07-03 12:56 ` 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=8a63b7d2863bd0c3e9811eb59917e077a4a44384.1587742492.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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).