[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <no7cgb4vfd4cxhsjoftfeizvzby4vfbq2okvneq4nbxs4ogwvt@ohplzz5bez4j>
Date: Sun, 28 Jul 2024 01:08:18 +0300
From: Dmitry Baryshkov <dmitry.baryshkov@...aro.org>
To: Sui Jingfeng <sui.jingfeng@...ux.dev>
Cc: Liu Ying <victor.liu@....com>, dri-devel@...ts.freedesktop.org,
devicetree@...r.kernel.org, imx@...ts.linux.dev, linux-arm-kernel@...ts.infradead.org,
linux-kernel@...r.kernel.org, linux-phy@...ts.infradead.org, p.zabel@...gutronix.de,
airlied@...il.com, daniel@...ll.ch, maarten.lankhorst@...ux.intel.com,
mripard@...nel.org, tzimmermann@...e.de, robh@...nel.org, krzk+dt@...nel.org,
conor+dt@...nel.org, shawnguo@...nel.org, s.hauer@...gutronix.de,
kernel@...gutronix.de, festevam@...il.com, tglx@...utronix.de, vkoul@...nel.org,
kishon@...nel.org, aisheng.dong@....com, agx@...xcpu.org, francesco@...cini.it,
frank.li@....com
Subject: Re: [PATCH v3 00/19] Add Freescale i.MX8qxp Display Controller
support
On Sun, Jul 28, 2024 at 05:38:37AM GMT, Sui Jingfeng wrote:
> Hi,
>
> On 7/28/24 04:28, Dmitry Baryshkov wrote:
> > On Sun, Jul 28, 2024 at 03:10:21AM GMT, Sui Jingfeng wrote:
> > > Hi,
> > >
> > > On 7/28/24 00:39, Dmitry Baryshkov wrote:
> > > > > Hi,
> > > > >
> > > > > This patch series aims to add Freescale i.MX8qxp Display Controller support.
> > > > >
> > > > > The controller is comprised of three main components that include a blit
> > > > > engine for 2D graphics accelerations, display controller for display output
> > > > > processing, as well as a command sequencer.
> > > > >
> > > > > Previous patch series attempts to do that can be found at:
> > > > > https://patchwork.freedesktop.org/series/84524/
> > > > >
> > > > > This series addresses Maxime's comments on the previous one:
> > > > > a. Split the display controller into multiple internal devices.
> > > > > 1) List display engine, pixel engine, interrupt controller and more as the
> > > > > controller's child devices.
> > > > > 2) List display engine and pixel engine's processing units as their child
> > > > > devices.
> > > > >
> > > > > b. Add minimal feature support.
> > > > > Only support two display pipelines with primary planes with XR24 fb,
> > > > > backed by two fetchunits. No fetchunit dynamic allocation logic(to be done
> > > > > when necessary).
> > > > >
> > > > > c. Use drm_dev_{enter, exit}().
> > > > >
> > > > > Since this series changes a lot comparing to the previous one, I choose to
> > > > > send it with a new patch series, not a new version.
> > > > I'm sorry, I have started reviewing v2 without noticing that there is a
> > > > v3 already.
> > > >
> > > > Let me summarize my comments:
> > > >
> > > > - You are using OF aliases. Are they documented and acked by DT
> > > > maintainers?
> > > >
> > > > - I generally feel that the use of so many small devices to declare
> > > > functional blocks is an abuse of the DT. Please consider creating
> > > > _small_ units from the driver code directly rather than going throught
> > > > the components.
> > >
> > > Well, I really don't think so. I don't agree.
> > >
> > > I have checked the DTSpec[1] before type, the spec isn't define how
> > > many is considered to be "many", and the spec isn't define to what
> > > extent is think to be "small" as well.
> >
> > Yeah. However _usually_ we are not defining DT devices for sub-device
> > components.
>
> I guess, this depended on their hardware (i.MX8qxp) layout, reflecting
> exactly what their hardware's layout is perfectly valid. It also depend
> on if specific part of those sub-device will be re-visioned or not. If
> only a small part of the whole is re-versioned in the future, we can still
> re-using this same driver with slightly modify(update) the DTS.
>
> The point is to controll the granularity and forward compatibility.
That's why I asked for the comments or explanations. The cover letter is
a usual place, as it is an introduction to the series. The reviewers
don't start the series from 8/N, they start from 00/NN.
>
> > So at least such decisions ought to be described and
> > explained in the cover letter.
>
> Agree, but I see 08/19 patch has a beautiful schematic. I have learned
> a lot when reading it. I can't see any abuse of the DT through this
> bulk series anyway.
>
>
> Comments below are not revelant to Ying's patch series itself.
>
> /*----------------------------------------------------------------*/
>
> By the way, the last time that I have ever seen and feel abuse of the
> DT is the aux-bridge.c[1] and aux-hpd-bridge.c[2]. I strongly feel that
> those two *small* programs are abuses to the DT and possibily abuse to
> the auxiliary bus framework.
Off-topic should be directed as an answer to the original series. And if
you tried, you'd have seen the reason and the explanation. And a quick
glance around would have shown you the ti-sn65dsi86 bridge, which also
has similar structure for exactly the same reasons.
Nevertheless, the aux-bridge and aux-hpd-bridge provide a way to link
two different directions of the probe dependency chains: from the SoC to
the connector (DRM bridge chains) and from the connector to the SoC
(USB-C chains).
> 1) It's so *small* that it don't even have a hardware entity (physical
> device) to corresponding with. As far as I can see, all hardware
> units in this patch series are bigger than yours. Because your HPD
> bridge is basically a "virtual wire".
>
> An non-physical-exist wire hold reference to several device node,
> this is the most awful abuse to the DT I have ever seen. In other
> words, despite you want to solve some software problems, but then,
> you could put a device not in the DTS, and let the 'OF' system
> create a device for you. Just like what this series do.
Thank you for your opinion. However you have clearly provided the reason
why these devices do not have a separate DT node: they are internal
parts of the existing device.
>
> 2) I feel your HPD fake bridge driver abuse to the philosophy of
> auxiliary bus [3]. The document of auxiliary bus tell us that
>
> "These individual devices split from the core cannot live on
> the platform bus as they are not physical devices that are
> controlled by DT/ACPI"
This is correct and two mentioned bridges follow this approach. This
phrase mostly provides a boundary between platform-based MFD devices
which usually have MMIO-like addressing for cells and non-MMIO,
non-platform devices living on the aux bus.
> Which is nearly equivalent to say that devices that are controlled
> by DT/ACPI have better ways to enforce the control. When using
> auxiliary bus, we *generally* should not messed with DT. See
> golden examples[4][5]. At least, their code are able to run on
> X86, while the code you write just can't.
>
> [0] https://patchwork.freedesktop.org/patch/605555/?series=135786&rev=3
> [1] https://elixir.bootlin.com/linux/v6.10.2/source/drivers/gpu/drm/bridge/aux-bridge.c
> [2] https://elixir.bootlin.com/linux/v6.10.2/source/drivers/gpu/drm/bridge/aux-hpd-bridge.c
> [3] https://www.kernel.org/doc/html/latest/driver-api/auxiliary_bus.html
>
> [4] https://patchwork.freedesktop.org/series/136431/
> [5] https://patchwork.freedesktop.org/series/134837/
>
>
> Best regards
> Sui
>
> > >
> > > [1]
> > > https://github.com/devicetree-org/devicetree-specification/releases/tag/v0.4
> >
>
> --
> Best regards
> Sui
>
--
With best wishes
Dmitry
Powered by blists - more mailing lists