On 07/09/2024, Rob Herring wrote: > On Mon, Jul 08, 2024 at 02:30:37PM +0800, Liu Ying wrote: >> On 07/07/2024, Krzysztof Kozlowski wrote: >>> On 05/07/2024 11:09, Liu Ying wrote: >>>> Freescale i.MX8qxp Display Controller is implemented as construction set of >>>> building blocks with unified concept and standardized interfaces. >>>> >>>> Document some processing units to support two display outputs. >>> >>> >>>> +maintainers: >>>> + - Liu Ying <victor.liu@xxxxxxx> >>>> + >>>> +properties: >>>> + compatible: >>>> + const: fsl,imx8qxp-dc-tcon >>>> + >>>> + reg: >>>> + maxItems: 1 >>>> + >>>> + fsl,dc-tc-id: >>>> + description: Timing Controller unit instance number >>> >>> No instance numbering. This applies to your entire patchset. >> >> Then, I'll call of_alias_get_id() from the drivers to get >> instance number instead. > > Ideally, no. > >> As i.MX8qm SoC embeds two Display Controllers, the alias >> stem would contain the Display Controller instance >> number, like "dc0-tcon" and "dc1-tcon". Is this ok? > > The format of aliases is fooN, so no. Aliases should also be generic > rather than vendor specific. > > If you need to describe the connection of components in the display > pipeline, then use the graph binding. I mentioned OF graph in the previous patch set discussion. " There are 50+ individual DPU internal units and 20+ unit types. Do you really mean that each unit should be a separate device in device tree and each unit type should have it's own compatible string ? Almost all units have input/output ports to connect with each other. Some units have multiple input/output options. Should we use OF graph ports to tell the connections ? " https://lists.infradead.org/pipermail/linux-arm-kernel/2023-August/861811.html I hope we don't end up using the graph binding, as there are too many input/output options between processing units in the pixel engine, e.g., " Selection of the source for the sec input of the layerblend0 module 000000b - Unit layerblend0 input port sec is disabled 010100b - Unit layerblend0 input port sec is connected to output of unit fetchwarp2 010110b - Unit layerblend0 input port sec is connected to output of unit fetchdecode0 011000b - Unit layerblend0 input port sec is connected to output of unit fetchdecode1 011010b - Unit layerblend0 input port sec is connected to output of unit fetchlayer0 011011b - Unit layerblend0 input port sec is connected to output of unit matrix4 011100b - Unit layerblend0 input port sec is connected to output of unit hscaler4 011101b - Unit layerblend0 input port sec is connected to output of unit vscaler4 011110b - Unit layerblend0 input port sec is connected to output of unit matrix5 011111b - Unit layerblend0 input port sec is connected to output of unit hscaler5 100000b - Unit layerblend0 input port sec is connected to output of unit vscaler5 Selection of the source for the prim input of the layerblend0 module 000000b - Unit layerblend0 input port prim is disabled 000000b - Unit layerblend0 input port prim is connected to output of unit constframe1 001010b - Unit layerblend0 input port prim is connected to output of unit blitblend9 001100b - Unit layerblend0 input port prim is connected to output of unit constframe0 001110b - Unit layerblend0 input port prim is connected to output of unit constframe4 010010b - Unit layerblend0 input port prim is connected to output of unit constframe5 011011b - Unit layerblend0 input port prim is connected to output of unit matrix4 011100b - Unit layerblend0 input port prim is connected to output of unit hscaler4 011101b - Unit layerblend0 input port prim is connected to output of unit vscaler4 011110b - Unit layerblend0 input port prim is connected to output of unit matrix5 011111b - Unit layerblend0 input port prim is connected to output of unit hscaler5 100000b - Unit layerblend0 input port prim is connected to output of unit vscaler5 " Also, Matrix, GammarCor and Dither in the display engine can be bypassed. Matrix can be put at optional position(1 or 2). Signature can be tapped after FrameGen, GammaCor, Matrix or Dither. FrameGen -> Matrix(1) -> GammaCor -> Maxtrix(2) -> Dither -> TCon Aside from the alias approach, another idea is to specify the instance number in compatible string, like "fsl,imx8qxp-dc-constframe5", no? > > Rob -- Regards, Liu Ying