From: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>
To: Biju Das <biju.das.jz@bp.renesas.com>
Cc: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>,
Maxime Ripard <mripard@kernel.org>,
Thomas Zimmermann <tzimmermann@suse.de>,
Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
David Airlie <airlied@gmail.com>, Simona Vetter <simona@ffwll.ch>,
hienhuynh <hien.huynh.px@renesas.com>,
dri-devel@lists.freedesktop.org,
linux-renesas-soc@vger.kernel.org,
Geert Uytterhoeven <geert+renesas@glider.be>,
Prabhakar Mahadev Lad <prabhakar.mahadev-lad.rj@bp.renesas.com>,
Biju Das <biju.das.au@gmail.com>
Subject: Re: [PATCH] drm: rz-du: Support panels connected directly to the DPAD output
Date: Thu, 8 May 2025 19:04:11 +0200 [thread overview]
Message-ID: <aBzj9CZH3JtzR6og@tom-desktop> (raw)
In-Reply-To: <20250508095042.25164-1-biju.das.jz@bp.renesas.com>
Hi Biju,
Thanks for your patch.
On Thu, May 08, 2025 at 10:50:35AM +0100, Biju Das wrote:
> From: hienhuynh <hien.huynh.px@renesas.com>
>
> This patch is based on the commit 73eb5476df72 ("drm: rcar-du: Support
> panels connected directly to the DPAD outputs").
>
> The RZ DU driver assumes that a bridge is always connected to the DU
> output. This is valid for the HDMI output, but the DPAD output can be
> connected directly to a panel, in which case no bridge is available.
>
> To support this use case, detect whether the entities connected to the DU
> DPAD output is encoders or panels based on the number of ports of their DT
> node, and retrieve the corresponding type of DRM objects. For panels,
> additionally create panel bridge instances.
>
> Signed-off-by: hienhuynh <hien.huynh.px@renesas.com>
> Signed-off-by: Biju Das <biju.das.jz@bp.renesas.com>
Tested on RZ/G3E with the following pipeline:
DU -> adv7513 -> HDMI panel
Reviewed-by: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>
Tested-by: Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>
Thanks & Regards,
Tommaso
> ---
> .../gpu/drm/renesas/rz-du/rzg2l_du_encoder.c | 44 +++++++++++++++++--
> 1 file changed, 40 insertions(+), 4 deletions(-)
>
> diff --git a/drivers/gpu/drm/renesas/rz-du/rzg2l_du_encoder.c b/drivers/gpu/drm/renesas/rz-du/rzg2l_du_encoder.c
> index 564ab4cb3d37..5e6dd16705e6 100644
> --- a/drivers/gpu/drm/renesas/rz-du/rzg2l_du_encoder.c
> +++ b/drivers/gpu/drm/renesas/rz-du/rzg2l_du_encoder.c
> @@ -22,6 +22,26 @@
> * Encoder
> */
>
> +static unsigned int rzg2l_du_encoder_count_ports(struct device_node *node)
> +{
> + struct device_node *ports;
> + struct device_node *port;
> + unsigned int num_ports = 0;
> +
> + ports = of_get_child_by_name(node, "ports");
> + if (!ports)
> + ports = of_node_get(node);
> +
> + for_each_child_of_node(ports, port) {
> + if (of_node_name_eq(port, "port"))
> + num_ports++;
> + }
> +
> + of_node_put(ports);
> +
> + return num_ports;
> +}
> +
> static const struct drm_encoder_funcs rzg2l_du_encoder_funcs = {
> };
>
> @@ -50,10 +70,26 @@ int rzg2l_du_encoder_init(struct rzg2l_du_device *rcdu,
> struct drm_bridge *bridge;
> int ret;
>
> - /* Locate the DRM bridge from the DT node. */
> - bridge = of_drm_find_bridge(enc_node);
> - if (!bridge)
> - return -EPROBE_DEFER;
> + /*
> + * Locate the DRM bridge from the DT node. For the DPAD outputs, if the
> + * DT node has a single port, assume that it describes a panel and
> + * create a panel bridge.
> + */
> + if (output == RZG2L_DU_OUTPUT_DPAD0 && rzg2l_du_encoder_count_ports(enc_node) == 1) {
> + struct drm_panel *panel = of_drm_find_panel(enc_node);
> +
> + if (IS_ERR(panel))
> + return PTR_ERR(panel);
> +
> + bridge = devm_drm_panel_bridge_add_typed(rcdu->dev, panel,
> + DRM_MODE_CONNECTOR_DPI);
> + if (IS_ERR(bridge))
> + return PTR_ERR(bridge);
> + } else {
> + bridge = of_drm_find_bridge(enc_node);
> + if (!bridge)
> + return -EPROBE_DEFER;
> + }
>
> dev_dbg(rcdu->dev, "initializing encoder %pOF for output %s\n",
> enc_node, rzg2l_du_output_name(output));
> --
> 2.43.0
>
prev parent reply other threads:[~2025-05-08 17:04 UTC|newest]
Thread overview: 2+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-08 9:50 [PATCH] drm: rz-du: Support panels connected directly to the DPAD output Biju Das
2025-05-08 17:04 ` Tommaso Merciai [this message]
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=aBzj9CZH3JtzR6og@tom-desktop \
--to=tommaso.merciai.xr@bp.renesas.com \
--cc=airlied@gmail.com \
--cc=biju.das.au@gmail.com \
--cc=biju.das.jz@bp.renesas.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=geert+renesas@glider.be \
--cc=hien.huynh.px@renesas.com \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-renesas-soc@vger.kernel.org \
--cc=maarten.lankhorst@linux.intel.com \
--cc=mripard@kernel.org \
--cc=prabhakar.mahadev-lad.rj@bp.renesas.com \
--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 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.