mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com>
To: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Cc: Geert Uytterhoeven <geert+renesas@glider.be>,
	Michael Turquette <mturquette@baylibre.com>,
	Stephen Boyd <sboyd@kernel.org>,
	Andrzej Hajda <andrzej.hajda@intel.com>,
	Neil Armstrong <neil.armstrong@linaro.org>,
	Robert Foss <rfoss@kernel.org>, Jonas Karlman <jonas@kwiboo.se>,
	Jernej Skrabec <jernej.skrabec@gmail.com>,
	Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
	Maxime Ripard <mripard@kernel.org>,
	Thomas Zimmermann <tzimmermann@suse.de>,
	David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>,
	Rob Herring <robh@kernel.org>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	Magnus Damm <magnus.damm@gmail.com>,
	Marek Vasut <marek.vasut+renesas@mailbox.org>,
	Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>,
	Philipp Zabel <p.zabel@pengutronix.de>,
	linux-renesas-soc@vger.kernel.org, linux-clk@vger.kernel.org,
	linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
	devicetree@vger.kernel.org
Subject: Re: [PATCH v3 4/7] drm/rcar-du: dsi: Support DSC in the pipeline
Date: Fri, 12 Jun 2026 14:56:11 +0300	[thread overview]
Message-ID: <11f27d38-0224-4fce-a975-7c3f7d8d1d38@ideasonboard.com> (raw)
In-Reply-To: <20260611000324.GH1632628@killaraus.ideasonboard.com>

Hi,

On 11/06/2026 03:03, Laurent Pinchart wrote:
> Hi Tomi,
> 
> Thank you for the patch.
> 
> On Fri, May 15, 2026 at 12:09:29PM +0300, Tomi Valkeinen wrote:
>> Enabling DSI clocks on rcar-du needs some tricks as the DU dot clock is
>> provided by the DSI. Thus, we call rcar_mipi_dsi_pclk_enable() from the
>> crtc, when enabling the crtc.
>>
>> With DSC (added in upcoming patch) in the pipeline, between the DU and
>> the DSI, the above call path is broken as the crtc tries to call
>> rcar_mipi_dsi_pclk_enable() on the DSC.
>>
>> Adjust the rcar_mipi_dsi_pclk_enable() so that it detects the DSC, and
>> in that case gets the next bridge from the DSC, which is the DSI.
>>
>> Signed-off-by: Tomi Valkeinen <tomi.valkeinen+renesas@ideasonboard.com>
>> ---
>>   drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c | 36 +++++++++++++++++++++++--
>>   1 file changed, 34 insertions(+), 2 deletions(-)
>>
>> diff --git a/drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c b/drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c
>> index 4ef2e3c129ed..085e229bcb0b 100644
>> --- a/drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c
>> +++ b/drivers/gpu/drm/renesas/rcar-du/rcar_mipi_dsi.c
>> @@ -88,6 +88,8 @@ struct dsi_setup_info {
>>   	const struct dsi_clk_config *clkset;
>>   };
>>   
>> +static const struct drm_bridge_funcs rcar_mipi_dsi_bridge_ops;
>> +
>>   static inline struct rcar_mipi_dsi *
>>   bridge_to_rcar_mipi_dsi(struct drm_bridge *bridge)
>>   {
>> @@ -844,15 +846,39 @@ static void rcar_mipi_dsi_atomic_disable(struct drm_bridge *bridge,
>>   	rcar_mipi_dsi_stop_video(dsi);
>>   }
>>   
>> +/*
>> + * We need to skip the DSC bridge when we have DSC in between the DU and
>> + * the DSI. We detect the DSI bridge via bridge->funcs, and assume the
>> + * next_bridge is the DSI bridge. If this is not the case, the DT data
>> + * is wrong (so it shouldn't really happen).
>> + */
>> +static struct drm_bridge *
>> +rcar_mipi_dsi_resolve_bridge(struct drm_bridge *bridge)
>> +{
>> +	if (bridge->funcs != &rcar_mipi_dsi_bridge_ops)
>> +		bridge = bridge->next_bridge;
>> +
>> +	if (!bridge || bridge->funcs != &rcar_mipi_dsi_bridge_ops)
>> +		return NULL;
>> +
>> +	return bridge;
>> +}
> 
> Hmmmm... It's quite a bit of a hack. It would be nicer to do this in
> rcar_du_crtc.c instead, where we cache the dsi bridge pointer. The

It's actually cached in rcar_du_encoder.c, but used in rcar_du_crtc.c.

If I understand right, you'd like to do the DSC detection in 
rcar_du_crtc, and skip the DSC, if needed, before calling 
rcar_mipi_dsi_pclk_enable()?

> question is how to then identify the right bridge, as we won't have
> access to rcar_mipi_dsi_bridge_ops. Should this driver set the bridge
> type field to DRM_MODE_CONNECTOR_DSI ?

I'm not sure how that would help. Or, I can, as the dsi driver does not 
set the bridge type, so only DSC would set it. But isn't that even more 
hacky?

Or did you rather mean that the DSI driver would set the bridge type, 
and DSC would not? We can then do:

		if (bridge->type != DRM_MODE_CONNECTOR_DSI)
			bridge = bridge->next_bridge;

in the crtc driver. This works. It's still a bit hacky, but I think the 
chances of the code getting it wrong are quite low. If the output port 
is RCAR_DU_OUTPUT_DSIx, then the next bridge must be rcar-dsi or 
rcar-dsc, so it's all under our control. Also, it's less code than this 
patch, so I'll go with that.

  Tomi


  reply	other threads:[~2026-06-12 11:56 UTC|newest]

Thread overview: 20+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2026-05-15  9:09 [PATCH v3 0/7] drm/rcar-du: Add support for DSI pipelines with DSC Tomi Valkeinen
2026-05-15  9:09 ` [PATCH v3 1/7] clk: renesas: r8a779g0: Add DSC clock Tomi Valkeinen
2026-05-27 13:34   ` Geert Uytterhoeven
2026-06-10 23:14   ` Laurent Pinchart
2026-05-15  9:09 ` [PATCH v3 2/7] dt-bindings: display: bridge: Document Renesas R-Car V4H DSC bindings Tomi Valkeinen
2026-06-08 15:04   ` Rob Herring
2026-06-10 23:20   ` Laurent Pinchart
2026-05-15  9:09 ` [PATCH v3 3/7] drm/rcar-du: dsc: Add rudimentary Renesas R-Car V4H DSC driver Tomi Valkeinen
2026-05-18 11:40   ` Geert Uytterhoeven
2026-06-10 23:51   ` Laurent Pinchart
2026-05-15  9:09 ` [PATCH v3 4/7] drm/rcar-du: dsi: Support DSC in the pipeline Tomi Valkeinen
2026-06-11  0:03   ` Laurent Pinchart
2026-06-12 11:56     ` Tomi Valkeinen [this message]
2026-06-12 15:53       ` Laurent Pinchart
2026-05-15  9:09 ` [PATCH v3 5/7] arm64: dts: renesas: r8a779g0: Add DSC Tomi Valkeinen
2026-06-10 23:24   ` Laurent Pinchart
2026-05-15  9:09 ` [PATCH v3 6/7] arm64: dts: renesas: sparrow-hawk: Enable DisplayPort by adding DSC Tomi Valkeinen
2026-06-10 23:24   ` Laurent Pinchart
2026-05-15  9:09 ` [PATCH v3 7/7] arm64: dts: renesas: white-hawk: Add second mini-DP output support Tomi Valkeinen
2026-06-10 23:34   ` Laurent Pinchart

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=11f27d38-0224-4fce-a975-7c3f7d8d1d38@ideasonboard.com \
    --to=tomi.valkeinen@ideasonboard.com \
    --cc=airlied@gmail.com \
    --cc=andrzej.hajda@intel.com \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=geert+renesas@glider.be \
    --cc=jernej.skrabec@gmail.com \
    --cc=jonas@kwiboo.se \
    --cc=kieran.bingham+renesas@ideasonboard.com \
    --cc=krzk+dt@kernel.org \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-clk@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    --cc=maarten.lankhorst@linux.intel.com \
    --cc=magnus.damm@gmail.com \
    --cc=marek.vasut+renesas@mailbox.org \
    --cc=mripard@kernel.org \
    --cc=mturquette@baylibre.com \
    --cc=neil.armstrong@linaro.org \
    --cc=p.zabel@pengutronix.de \
    --cc=rfoss@kernel.org \
    --cc=robh@kernel.org \
    --cc=sboyd@kernel.org \
    --cc=simona@ffwll.ch \
    --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: 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

all inboxes | Powered by JetHome®