All of lore.kernel.org
 help / color / mirror / Atom feed
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Nikita Yushchenko <nikita.yoush@cogentembedded.com>
Cc: Geert Uytterhoeven <geert+renesas@glider.be>,
	Magnus Damm <magnus.damm@gmail.com>,
	Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>,
	David Airlie <airlied@linux.ie>, Daniel Vetter <daniel@ffwll.ch>,
	Rob Herring <robh+dt@kernel.org>,
	dri-devel@lists.freedesktop.org,
	linux-renesas-soc@vger.kernel.org, devicetree@vger.kernel.org,
	linux-kernel@vger.kernel.org
Subject: Re: [PATCH 2/3] arm64: dts: renesas: r8a77961: Add lvds0 device node
Date: Thu, 30 Dec 2021 00:19:31 +0200	[thread overview]
Message-ID: <Ycze8wzD3Qi8YVAa@pendragon.ideasonboard.com> (raw)
In-Reply-To: <bb6ef732-7cd2-5ba9-0eef-caf2fbfbf829@cogentembedded.com>

Hi Nikito,

On Thu, Dec 30, 2021 at 12:12:04AM +0300, Nikita Yushchenko wrote:
>   Endpoints are meant to model a link between two ports, so an endpoint
> > shouldn't exist in isolation. The issue with creating named endpoints in
> > SoC files is that you can't tell there what remote devices may exist, so
> > the endpoint may or may not match the actual hardware design of a board.
> > I think it's better to create endpoints on both sides together in
> > overlays.
> > 
> > https://lore.kernel.org/linux-renesas-soc/20211229193135.28767-2-laurent.pinchart+renesas@ideasonboard.com/T/#t
> 
> What I don't like here is: details of particular SoC (such as "panel gets video from port@1 of &lvds1) 
> leak into per-panel DT fragment.
> 
> This limits possibilities to share DT fragments between different use cases. In the patch pointed by the 
> above URL, you have to reference both board and panel in the dts file name.
>
> I'd prefer to make each DT fragment to use only either entities defined in that fragment itself, or 
> defined "interface entities" between this and "neighbor" DT fragment.
> 
> Such as:
> - SoC's DT fragment defines a named port/endpoint to export video stream at
> - board's DT fragment defines a named panel node corresponding to panel plugged into board's physical 
> connector, and connects endpoints with SoC's video export,
> - panel's DT fragment extends the panel node from board with video mode information for this particular 
> panel.
> 
> And similar for backlight, power, and whatever else exposed on the physical panel connector.
> 
> So for the board's physical connector there is a set of board-DT-provided entities for use by DT 
> fragment of whatever component plugged to the connector, without direct references to final SoC 
> interfaces. And possibility to reuse DT fragments between boards, and probably have a library of DT 
> fragments for hardware currently available in the market, usable with different boards where that 
> hardware can be connected.

I agree it's annoying, but we'll have a similar problem, just the other
way around, with an endpoint defined in the SoC dtsi. Many R-Car SoCs
have two LVDS encoders, and you can attach a panel to either of them.
Some boards use LVDS0, some boards use LVDS1, and some boards could even
use both.

A real solution for this problem will require a new concept. The "DT
connector" proposal is related to this problem space. There's also a
proprietary implementation in the Rapsberry Pi boot loader of a
mechanism to support parametrized overlays ([2] and [3], or [4] for an
example of how a panel reset or backlight GPIO can be parametrized).

[1] https://lwn.net/Articles/689783/
[2] https://www.raspberrypi.com/documentation/computers/configuration.html#part3
[3] https://github.com/raspberrypi/firmware/blob/master/boot/overlays/README#L122
[4] https://github.com/raspberrypi/firmware/blob/master/boot/overlays/README#L312

-- 
Regards,

Laurent Pinchart

WARNING: multiple messages have this Message-ID (diff)
From: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
To: Nikita Yushchenko <nikita.yoush@cogentembedded.com>
Cc: devicetree@vger.kernel.org,
	Geert Uytterhoeven <geert+renesas@glider.be>,
	David Airlie <airlied@linux.ie>,
	Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>,
	Magnus Damm <magnus.damm@gmail.com>,
	linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org,
	linux-renesas-soc@vger.kernel.org,
	Rob Herring <robh+dt@kernel.org>
Subject: Re: [PATCH 2/3] arm64: dts: renesas: r8a77961: Add lvds0 device node
Date: Thu, 30 Dec 2021 00:19:31 +0200	[thread overview]
Message-ID: <Ycze8wzD3Qi8YVAa@pendragon.ideasonboard.com> (raw)
In-Reply-To: <bb6ef732-7cd2-5ba9-0eef-caf2fbfbf829@cogentembedded.com>

Hi Nikito,

On Thu, Dec 30, 2021 at 12:12:04AM +0300, Nikita Yushchenko wrote:
>   Endpoints are meant to model a link between two ports, so an endpoint
> > shouldn't exist in isolation. The issue with creating named endpoints in
> > SoC files is that you can't tell there what remote devices may exist, so
> > the endpoint may or may not match the actual hardware design of a board.
> > I think it's better to create endpoints on both sides together in
> > overlays.
> > 
> > https://lore.kernel.org/linux-renesas-soc/20211229193135.28767-2-laurent.pinchart+renesas@ideasonboard.com/T/#t
> 
> What I don't like here is: details of particular SoC (such as "panel gets video from port@1 of &lvds1) 
> leak into per-panel DT fragment.
> 
> This limits possibilities to share DT fragments between different use cases. In the patch pointed by the 
> above URL, you have to reference both board and panel in the dts file name.
>
> I'd prefer to make each DT fragment to use only either entities defined in that fragment itself, or 
> defined "interface entities" between this and "neighbor" DT fragment.
> 
> Such as:
> - SoC's DT fragment defines a named port/endpoint to export video stream at
> - board's DT fragment defines a named panel node corresponding to panel plugged into board's physical 
> connector, and connects endpoints with SoC's video export,
> - panel's DT fragment extends the panel node from board with video mode information for this particular 
> panel.
> 
> And similar for backlight, power, and whatever else exposed on the physical panel connector.
> 
> So for the board's physical connector there is a set of board-DT-provided entities for use by DT 
> fragment of whatever component plugged to the connector, without direct references to final SoC 
> interfaces. And possibility to reuse DT fragments between boards, and probably have a library of DT 
> fragments for hardware currently available in the market, usable with different boards where that 
> hardware can be connected.

I agree it's annoying, but we'll have a similar problem, just the other
way around, with an endpoint defined in the SoC dtsi. Many R-Car SoCs
have two LVDS encoders, and you can attach a panel to either of them.
Some boards use LVDS0, some boards use LVDS1, and some boards could even
use both.

A real solution for this problem will require a new concept. The "DT
connector" proposal is related to this problem space. There's also a
proprietary implementation in the Rapsberry Pi boot loader of a
mechanism to support parametrized overlays ([2] and [3], or [4] for an
example of how a panel reset or backlight GPIO can be parametrized).

[1] https://lwn.net/Articles/689783/
[2] https://www.raspberrypi.com/documentation/computers/configuration.html#part3
[3] https://github.com/raspberrypi/firmware/blob/master/boot/overlays/README#L122
[4] https://github.com/raspberrypi/firmware/blob/master/boot/overlays/README#L312

-- 
Regards,

Laurent Pinchart

  reply	other threads:[~2021-12-29 22:19 UTC|newest]

Thread overview: 50+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-24  5:23 [PATCH 0/3] add R-Car M3-W+ (r8a99761) LVDS encoder support Nikita Yushchenko
2021-12-24  5:23 ` Nikita Yushchenko
2021-12-24  5:23 ` [PATCH 1/3] drm: rcar-du: lvds: Add r8a77961 support Nikita Yushchenko
2021-12-24  5:23   ` Nikita Yushchenko
2021-12-29 16:53   ` Laurent Pinchart
2021-12-29 16:53     ` Laurent Pinchart
2021-12-24  5:23 ` [PATCH 2/3] arm64: dts: renesas: r8a77961: Add lvds0 device node Nikita Yushchenko
2021-12-24  5:23   ` Nikita Yushchenko
2021-12-29 16:56   ` Laurent Pinchart
2021-12-29 16:56     ` Laurent Pinchart
2021-12-29 17:04     ` Nikita Yushchenko
2021-12-29 17:04       ` Nikita Yushchenko
2021-12-29 17:13       ` Laurent Pinchart
2021-12-29 17:13         ` Laurent Pinchart
2021-12-29 17:19         ` Nikita Yushchenko
2021-12-29 17:19           ` Nikita Yushchenko
2021-12-29 19:33           ` Laurent Pinchart
2021-12-29 19:33             ` Laurent Pinchart
2021-12-29 21:12             ` Nikita Yushchenko
2021-12-29 21:12               ` Nikita Yushchenko
2021-12-29 22:19               ` Laurent Pinchart [this message]
2021-12-29 22:19                 ` Laurent Pinchart
2021-12-30  5:30                 ` Nikita Yushchenko
2021-12-30  5:30                   ` Nikita Yushchenko
2021-12-30 17:11                   ` Laurent Pinchart
2021-12-30 17:11                     ` Laurent Pinchart
2022-01-12 21:10         ` Nikita Yushchenko
2022-01-13  9:01           ` Geert Uytterhoeven
2022-01-10  8:43     ` Geert Uytterhoeven
2022-01-10  8:43       ` Geert Uytterhoeven
2022-01-10  8:51       ` Laurent Pinchart
2022-01-10  8:51         ` Laurent Pinchart
2022-01-10  8:52   ` Geert Uytterhoeven
2022-01-10  8:52     ` Geert Uytterhoeven
2022-01-10  9:51     ` Nikita Yushchenko
2022-01-10  9:51       ` Nikita Yushchenko
2022-01-10  9:55       ` Geert Uytterhoeven
2022-01-10  9:55         ` Geert Uytterhoeven
2021-12-24  5:23 ` [PATCH 3/3] dt-bindings: display: bridge: renesas,lvds: Document r8a77961 bindings Nikita Yushchenko
2021-12-24  5:23   ` [PATCH 3/3] dt-bindings: display: bridge: renesas, lvds: " Nikita Yushchenko
2021-12-29 16:46   ` [PATCH 3/3] dt-bindings: display: bridge: renesas,lvds: " Laurent Pinchart
2021-12-29 16:46     ` [PATCH 3/3] dt-bindings: display: bridge: renesas, lvds: " Laurent Pinchart
2022-03-02 17:00     ` [PATCH 3/3] dt-bindings: display: bridge: renesas,lvds: " Geert Uytterhoeven
2022-03-02 17:00       ` [PATCH 3/3] dt-bindings: display: bridge: renesas, lvds: " Geert Uytterhoeven
2022-03-03  9:14       ` [PATCH 3/3] dt-bindings: display: bridge: renesas,lvds: " Laurent Pinchart
2022-03-03  9:14         ` [PATCH 3/3] dt-bindings: display: bridge: renesas, lvds: " Laurent Pinchart
2022-03-04 12:20         ` [PATCH 3/3] dt-bindings: display: bridge: renesas,lvds: " Laurent Pinchart
2022-03-04 12:20           ` [PATCH 3/3] dt-bindings: display: bridge: renesas, lvds: " Laurent Pinchart
2022-01-04 20:19   ` [PATCH 3/3] dt-bindings: display: bridge: renesas,lvds: " Rob Herring
2022-01-04 20:19     ` [PATCH 3/3] dt-bindings: display: bridge: renesas, lvds: " Rob Herring

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=Ycze8wzD3Qi8YVAa@pendragon.ideasonboard.com \
    --to=laurent.pinchart@ideasonboard.com \
    --cc=airlied@linux.ie \
    --cc=daniel@ffwll.ch \
    --cc=devicetree@vger.kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=geert+renesas@glider.be \
    --cc=kieran.bingham+renesas@ideasonboard.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    --cc=magnus.damm@gmail.com \
    --cc=nikita.yoush@cogentembedded.com \
    --cc=robh+dt@kernel.org \
    /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.