devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Marek Vasut <marek.vasut@mailbox.org>
To: Ying Liu <victor.liu@nxp.com>,
	"dri-devel@lists.freedesktop.org"
	<dri-devel@lists.freedesktop.org>
Cc: Abel Vesa <abelvesa@kernel.org>,
	Conor Dooley <conor+dt@kernel.org>,
	Fabio Estevam <festevam@gmail.com>,
	Krzysztof Kozlowski <krzk+dt@kernel.org>,
	Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
	Lucas Stach <l.stach@pengutronix.de>, Peng Fan <peng.fan@nxp.com>,
	Pengutronix Kernel Team <kernel@pengutronix.de>,
	Rob Herring <robh@kernel.org>, Shawn Guo <shawnguo@kernel.org>,
	Thomas Zimmermann <tzimmermann@suse.de>,
	"devicetree@vger.kernel.org" <devicetree@vger.kernel.org>,
	"imx@lists.linux.dev" <imx@lists.linux.dev>,
	"linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>,
	"linux-clk@vger.kernel.org" <linux-clk@vger.kernel.org>
Subject: Re: [PATCH 00/39] Add i.MX95 DPU/DSI/LVDS support
Date: Sun, 2 Nov 2025 17:33:16 +0100	[thread overview]
Message-ID: <ad7c080f-38e3-4579-8cd8-148df7769826@mailbox.org> (raw)
In-Reply-To: <AM7PR04MB70466BF64A1CD8EB01D2DD9C98F5A@AM7PR04MB7046.eurprd04.prod.outlook.com>

On 10/20/25 4:15 AM, Ying Liu wrote:

Hello Liu,

>>>> I wanted to put this whole thing on the list first, before I start splitting it
>> up.
>>>>
>>>> For starters, I think I can send these separately:
>>>
>>> Before discussing how to split, a bigger question is that is it fine to
>>> support both i.MX8qxp DC and i.MX95 DC in the same imx8_dc_drm
>> module?
>>> Separate modules look more reasonable to me, considering the fact that
>>> there are quite a lot difference between the two DCs.
>>
>> (maybe I do not quite understand your suggestion with "separate module",
>> I assume this means entirely duplicate driver, is that correct? I
>> operate with that assumption in the text below.)
> 
> I'd expect separate modules: the existing imx8_dc_drm(which can be
> modprobe'd) and something like imx95_dc_drm.  I wouldn't call them
> *entirely* duplicated drivers since I mentioned common part of the DCs
> could be wrapped as helpers in an additional module(something like
> imx_dc_drm_common).

How would this look if everything is built into the kernel ?

>> This series indicates that the functional units in the DC are basically
>> identical, with the majority of changes being register base addresses of
>> the whole DC and an odd bit or register offset here and there. Most of
>> the code can be reused, as can be seen in the first half of the series.
> 
> The major differences between the i.MX95 and i.MX8qxp DCs are
> different components in Display Engines(especially the additional
> Domain Blend Unit in i.MX95 DC)

This seems to be one component in the whole pipeline, with links going 
into it. Those links are already in place. Maybe I am not seeing the 
specialty of this particular DB component ?

> plus i.MX8qxp DC's capability
> to connect with the prefetch engines(DPRC & PRG).

Isn't the prefetch engine only a bit of register configuration, that can 
be abstracted out ?

> Both would
> have significant impact on how we implement the drivers.  We'll
> certainly end up having different implementations for callbacks to
> enable/disable CRTCs or update/disable planes.

It doesn't seem they have to be entirely different so far, do they ?

> The sort of minor difference is in Pixel Engine(including Blit Engine)
> where FethUnit types and numbers are different plus different numbers
> of Scaler Engine.  I'd expect logics to allocate FetchUnits for planes can be
> implemented in the imx_dc_drm_common module

This part is fine, but ultimately, it would have to be possible to build 
both the MX8Q and MX95 drivers into the kernel too. And then there would 
have to be some logic to deal with that, likely based on driver data, as 
it is done here.

>> The addition of iMX95 into the iMX8QXP DC also does not seem to be
>> making the driver in any way more complicated.
> 
> Disagree. The addition would introduce quite a few i.MX95 or i.MX8qxp
> DC specific code branches due to the differences mentioned above.

This does not need to be the case, see the first half of this series ?

> I'd say i.MX95 DC support could be in drivers/gpu/drm/imx/dc, but it
> needs to be in a separate module like again imx95_dc_drm.
> 
> This makes feel that the debate here becomes kind of similar to what
> we did for single mxsfb module vs  mxsfb + imx_lcdif separate modules...

The mxsfb (the old iMX23 LCDIF) and lcdifv3 (the new iMX8MP/iMXRT LCDIF) 
are entirely different hardware IPs, the former is from SigmaTel , the 
later is from somewhere else, right ?

>> What would be the benefit of having duplicate driver for IP that is
>> basically identical, for i.MX95 ?
> 
> Cleaner driver implementation and easier to maintain.  I don’t want
> to test both i.MX95 and i.MX8qxp platforms when only either
> i.MX95 DC specific or i.MX8qxp DC specific code is changed.
> 
> But again, they won't be entirely duplicated drivers.  Common
> part could be shared between the drivers with software techniques,
> like the imx_dc_drm_common module mentioned above.
Please have a look at the first part of this patchset, there do not seem 
to be that many new or complex branches.

  reply	other threads:[~2025-11-02 17:15 UTC|newest]

Thread overview: 115+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-10-11 16:51 [PATCH 00/39] Add i.MX95 DPU/DSI/LVDS support Marek Vasut
2025-10-11 16:51 ` [PATCH 01/39] dt-bindings: display: imx: Document i.MX95 Display Controller DomainBlend Marek Vasut
2025-10-15 13:24   ` Rob Herring
2025-10-16  2:07     ` Liu Ying
2025-10-17 15:15       ` Marek Vasut
2025-10-18  6:09         ` Ying Liu
2025-11-02 16:41           ` Marek Vasut
2025-10-21  6:52       ` Krzysztof Kozlowski
2025-10-11 16:51 ` [PATCH 02/39] drm/imx: Add " Marek Vasut
2025-10-13 16:38   ` Frank Li
2025-10-14 11:50     ` Marek Vasut
2025-10-11 16:51 ` [PATCH 03/39] dt-bindings: display: imx: Document i.MX95 Display Controller processing units Marek Vasut
2025-10-13 16:49   ` Frank Li
2025-10-14 11:52     ` Marek Vasut
2025-10-15  8:59       ` Liu Ying
2025-10-15 10:19         ` Marek Vasut
2025-10-16  2:28           ` Liu Ying
2025-10-16  2:58             ` Liu Ying
2025-10-17 15:18             ` Marek Vasut
2025-10-18  5:44               ` Ying Liu
2025-10-11 16:51 ` [PATCH 04/39] drm/imx: dc: Use bulk clock Marek Vasut
2025-10-13 16:54   ` Frank Li
2025-10-14 12:02     ` Marek Vasut
2025-10-11 16:51 ` [PATCH 05/39] drm/imx: dc: Rework dc_subdev_get_id() to drop ARRAY_SIZE() use Marek Vasut
2025-10-13 16:56   ` Frank Li
2025-10-14 14:03     ` Marek Vasut
2025-10-14 15:11       ` Frank Li
2025-10-14 21:11         ` Marek Vasut
2025-10-15  9:14           ` Liu Ying
2025-10-15 14:31             ` Frank Li
2025-10-16  2:50               ` Liu Ying
2025-10-11 16:51 ` [PATCH 06/39] drm/imx: dc: Rename i.MX8QXP specific Link IDs Marek Vasut
2025-10-13 16:58   ` Frank Li
2025-10-11 16:51 ` [PATCH 07/39] drm/imx: dc: cf: Pass struct dc_subdev_info via OF match data Marek Vasut
2025-10-13 17:01   ` Frank Li
2025-10-11 16:51 ` [PATCH 08/39] drm/imx: dc: de: Pass struct dc_de_subdev_match_data " Marek Vasut
2025-10-13 17:05   ` Frank Li
2025-10-11 16:51 ` [PATCH 09/39] drm/imx: dc: ed: Rework dc_ed_pec_src_sel() to drop ARRAY_SIZE() use Marek Vasut
2025-10-13 18:24   ` Frank Li
2025-10-11 16:51 ` [PATCH 10/39] drm/imx: dc: ed: Pass struct dc_ed_subdev_match_data via OF match data Marek Vasut
2025-10-13 18:26   ` Frank Li
2025-10-11 16:51 ` [PATCH 11/39] drm/imx: dc: fg: Parametrize register access Marek Vasut
2025-10-13 18:29   ` Frank Li
2025-10-11 16:51 ` [PATCH 12/39] drm/imx: dc: ed: Pass struct dc_fg_subdev_match_data via OF match data Marek Vasut
2025-10-13 18:31   ` Frank Li
2025-10-11 16:51 ` [PATCH 13/39] drm/imx: dc: fu: Describe remaining register offsets Marek Vasut
2025-10-13 18:34   ` Frank Li
2025-10-11 16:51 ` [PATCH 14/39] drm/imx: dc: fu: Inline FRAC_OFFSET into FetchLayer and FetchWrap Marek Vasut
2025-10-13 18:39   ` Frank Li
2025-10-11 16:51 ` [PATCH 15/39] drm/imx: dc: fu: Pass struct dc_fu_subdev_match_data via OF match data Marek Vasut
2025-10-13 18:43   ` Frank Li
2025-10-11 16:51 ` [PATCH 16/39] drm/imx: dc: lb: Pass struct dc_lb_subdev_match_data " Marek Vasut
2025-10-13 18:45   ` Frank Li
2025-10-11 16:51 ` [PATCH 17/39] drm/imx: dc: tc: Pass struct dc_tc_subdev_match_data " Marek Vasut
2025-10-11 16:51 ` [PATCH 18/39] drm/imx: dc: ic: Pass struct dc_ic_subdev_match_data " Marek Vasut
2025-10-11 16:51 ` [PATCH 19/39] drm/imx: dc: ic: Use DT node as interrupt controller name Marek Vasut
2025-10-11 16:51 ` [PATCH 20/39] drm/imx: dc: Configure display CSR clock feed select Marek Vasut
2025-10-13 18:48   ` Frank Li
2025-10-17 15:20     ` Marek Vasut
2025-10-11 16:51 ` [PATCH 21/39] drm/imx: dc: crtc: Do not check disabled CRTCs Marek Vasut
2025-10-13 18:50   ` Frank Li
2025-10-14 21:41     ` Marek Vasut
2025-10-11 16:51 ` [PATCH 22/39] drm/imx: dc: Keep FU unit running on i.MX95 Marek Vasut
2025-10-13 18:52   ` Frank Li
2025-10-11 16:51 ` [PATCH 23/39] drm/imx: dc: Add OF match data for i.MX95 Marek Vasut
2025-10-13 18:54   ` Frank Li
2025-10-11 16:51 ` [PATCH 24/39] drm/imx: Add more RGB swizzling options Marek Vasut
2025-10-11 16:51 ` [PATCH 25/39] dt-bindings: display: bridge: Document NXP i.MX95 pixel interleaver support Marek Vasut
2025-10-13 18:57   ` Frank Li
2025-10-17 14:55     ` Marek Vasut
2025-10-11 16:51 ` [PATCH 26/39] drm/bridge: imx: Add " Marek Vasut
2025-10-13 19:02   ` Frank Li
2025-10-11 16:51 ` [PATCH 27/39] dt-bindings: display: bridge: Document NXP i.MX95 pixel link support Marek Vasut
2025-10-13 19:08   ` Frank Li
2025-10-17 15:01     ` Marek Vasut
2025-10-11 16:51 ` [PATCH 28/39] drm/bridge: imx: Add " Marek Vasut
2025-10-13 19:10   ` Frank Li
2025-10-11 16:51 ` [PATCH 29/39] dt-bindings: display: bridge: Document Freescale i.MX95 MIPI DSI Marek Vasut
2025-10-13 19:13   ` Frank Li
2025-10-17 15:37     ` Marek Vasut
2025-10-11 16:51 ` [PATCH 30/39] drm/bridge: imx93-mipi-dsi: Add i.MX95 PLL initialization Marek Vasut
2025-10-11 16:51 ` [PATCH 31/39] dt-bindings: clock: Split support for i.MX95 LVDS CSR Marek Vasut
2025-10-13 19:17   ` Frank Li
2025-10-17 15:49     ` Marek Vasut
2025-10-11 16:51 ` [PATCH 32/39] dt-bindings: display: bridge: Document i.MX95 LVDS display bridge binding Marek Vasut
2025-10-13 19:20   ` Frank Li
2025-10-17 15:04     ` Marek Vasut
2025-10-11 16:51 ` [PATCH 33/39] drm: bridge: imx: Add i.MX95 LVDS Display Bridge (LDB) driver Marek Vasut
2025-10-11 16:51 ` [PATCH 34/39] dt-bindings: display: bridge: ldb: Add an i.MX95 entry Marek Vasut
2025-10-13 11:34   ` Rob Herring (Arm)
2025-10-11 16:51 ` [PATCH 35/39] drm/bridge: fsl-ldb: Parse register offsets from DT Marek Vasut
2025-10-13 19:23   ` Frank Li
2025-10-17 15:39     ` Marek Vasut
2025-10-11 16:51 ` [PATCH 36/39] drm/bridge: fsl-ldb: Add i.MX95 support Marek Vasut
2025-10-13 19:24   ` Frank Li
2025-10-11 16:51 ` [PATCH 37/39] dt-bindings: interrupt-controller: fsl,irqsteer: " Marek Vasut
2025-10-13 19:25   ` Frank Li
2025-10-15 13:31   ` Rob Herring (Arm)
2025-10-11 16:51 ` [PATCH 38/39] dt-bindings: clock: support i.MX95 Display Stream CSR module Marek Vasut
2025-10-13 19:26   ` Frank Li
2025-10-17 15:05     ` Marek Vasut
2025-10-15 13:33   ` Rob Herring
2025-10-17 15:08     ` Marek Vasut
2025-10-11 16:51 ` [PATCH 39/39] arm64: dts: imx95: Describe display pipeline Marek Vasut
2025-10-14  8:51 ` [PATCH 00/39] Add i.MX95 DPU/DSI/LVDS support Liu Ying
2025-10-14 21:55   ` Marek Vasut
2025-10-15 10:00     ` Liu Ying
2025-10-15 16:18       ` Marek Vasut
2025-10-20  2:15         ` Ying Liu
2025-11-02 16:33           ` Marek Vasut [this message]
2025-10-14  9:13 ` Liu Ying
2025-10-14 22:09   ` Marek Vasut
2025-10-15 10:09     ` Liu Ying
2025-10-17 15:54       ` Marek Vasut
2025-10-20  2:35         ` Liu Ying

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=ad7c080f-38e3-4579-8cd8-148df7769826@mailbox.org \
    --to=marek.vasut@mailbox.org \
    --cc=abelvesa@kernel.org \
    --cc=conor+dt@kernel.org \
    --cc=devicetree@vger.kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=festevam@gmail.com \
    --cc=imx@lists.linux.dev \
    --cc=kernel@pengutronix.de \
    --cc=krzk+dt@kernel.org \
    --cc=l.stach@pengutronix.de \
    --cc=laurent.pinchart@ideasonboard.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-clk@vger.kernel.org \
    --cc=peng.fan@nxp.com \
    --cc=robh@kernel.org \
    --cc=shawnguo@kernel.org \
    --cc=tzimmermann@suse.de \
    --cc=victor.liu@nxp.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).