Re: [PATCH v6 01/19] dt-bindings: display: imx: Add i.MX8qxp Display Controller processing units

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 12/11/2024, Rob Herring wrote:
> On Wed, Dec 11, 2024 at 11:05:52AM +0800, Liu Ying wrote:
>> On 12/11/2024, Rob Herring wrote:
>>> On Mon, Dec 09, 2024 at 11:39:05AM +0800, Liu Ying wrote:
>>>> Freescale i.MX8qxp Display Controller is implemented as construction set of
>>>> building blocks with unified concept and standardized interfaces.  Document
>>>> all existing processing units.
>>>>
>>>> Signed-off-by: Liu Ying <victor.liu@xxxxxxx>
>>>> ---
>>>> v6:
>>>> * No change.
>>>>
>>>> v5:
>>>> * Document aliases for processing units which have multiple instances in
>>>>   the Display Controller.  Drop Rob's previous R-b tag. (Maxime)
>>>>
>>>> v4:
>>>> * Collect Rob's R-b tag.
>>>>
>>>> v3:
>>>> * Combine fsl,imx8qxp-dc-fetchunit-common.yaml,
>>>>   fsl,imx8qxp-dc-fetchlayer.yaml and fsl,imx8qxp-dc-fetchwarp.yaml
>>>>   into 1 schema doc fsl,imx8qxp-dc-fetchunit.yaml. (Rob)
>>>> * Document all processing units. (Rob)
>>>>
>>>> v2:
>>>> * Drop fsl,dc-*-id DT properties. (Krzysztof)
>>>> * Add port property to fsl,imx8qxp-dc-tcon.yaml. (Krzysztof)
>>>> * Fix register range sizes in examples.
>>>>
>>>>  .../display/imx/fsl,imx8qxp-dc-blitblend.yaml |  46 ++++++
>>>>  .../display/imx/fsl,imx8qxp-dc-clut.yaml      |  49 ++++++
>>>>  .../imx/fsl,imx8qxp-dc-constframe.yaml        |  49 ++++++
>>>>  .../display/imx/fsl,imx8qxp-dc-dither.yaml    |  49 ++++++
>>>>  .../display/imx/fsl,imx8qxp-dc-extdst.yaml    |  77 +++++++++
>>>>  .../display/imx/fsl,imx8qxp-dc-fetchunit.yaml | 147 ++++++++++++++++++
>>>>  .../display/imx/fsl,imx8qxp-dc-filter.yaml    |  47 ++++++
>>>>  .../display/imx/fsl,imx8qxp-dc-framegen.yaml  |  68 ++++++++
>>>>  .../display/imx/fsl,imx8qxp-dc-gammacor.yaml  |  38 +++++
>>>>  .../imx/fsl,imx8qxp-dc-layerblend.yaml        |  45 ++++++
>>>>  .../display/imx/fsl,imx8qxp-dc-matrix.yaml    |  48 ++++++
>>>>  .../display/imx/fsl,imx8qxp-dc-rop.yaml       |  48 ++++++
>>>>  .../display/imx/fsl,imx8qxp-dc-safety.yaml    |  34 ++++
>>>>  .../imx/fsl,imx8qxp-dc-scaling-engine.yaml    |  89 +++++++++++
>>>>  .../display/imx/fsl,imx8qxp-dc-signature.yaml |  58 +++++++
>>>>  .../display/imx/fsl,imx8qxp-dc-store.yaml     | 100 ++++++++++++
>>>>  .../display/imx/fsl,imx8qxp-dc-tcon.yaml      |  50 ++++++
>>>>  17 files changed, 1042 insertions(+)
>>>>  create mode 100644 Documentation/devicetree/bindings/display/imx/fsl,imx8qxp-dc-blitblend.yaml
>>>>  create mode 100644 Documentation/devicetree/bindings/display/imx/fsl,imx8qxp-dc-clut.yaml
>>>>  create mode 100644 Documentation/devicetree/bindings/display/imx/fsl,imx8qxp-dc-constframe.yaml
>>>>  create mode 100644 Documentation/devicetree/bindings/display/imx/fsl,imx8qxp-dc-dither.yaml
>>>>  create mode 100644 Documentation/devicetree/bindings/display/imx/fsl,imx8qxp-dc-extdst.yaml
>>>>  create mode 100644 Documentation/devicetree/bindings/display/imx/fsl,imx8qxp-dc-fetchunit.yaml
>>>>  create mode 100644 Documentation/devicetree/bindings/display/imx/fsl,imx8qxp-dc-filter.yaml
>>>>  create mode 100644 Documentation/devicetree/bindings/display/imx/fsl,imx8qxp-dc-framegen.yaml
>>>>  create mode 100644 Documentation/devicetree/bindings/display/imx/fsl,imx8qxp-dc-gammacor.yaml
>>>>  create mode 100644 Documentation/devicetree/bindings/display/imx/fsl,imx8qxp-dc-layerblend.yaml
>>>>  create mode 100644 Documentation/devicetree/bindings/display/imx/fsl,imx8qxp-dc-matrix.yaml
>>>>  create mode 100644 Documentation/devicetree/bindings/display/imx/fsl,imx8qxp-dc-rop.yaml
>>>>  create mode 100644 Documentation/devicetree/bindings/display/imx/fsl,imx8qxp-dc-safety.yaml
>>>>  create mode 100644 Documentation/devicetree/bindings/display/imx/fsl,imx8qxp-dc-scaling-engine.yaml
>>>>  create mode 100644 Documentation/devicetree/bindings/display/imx/fsl,imx8qxp-dc-signature.yaml
>>>>  create mode 100644 Documentation/devicetree/bindings/display/imx/fsl,imx8qxp-dc-store.yaml
>>>>  create mode 100644 Documentation/devicetree/bindings/display/imx/fsl,imx8qxp-dc-tcon.yaml
>>>>
>>>> diff --git a/Documentation/devicetree/bindings/display/imx/fsl,imx8qxp-dc-blitblend.yaml b/Documentation/devicetree/bindings/display/imx/fsl,imx8qxp-dc-blitblend.yaml
>>>> new file mode 100644
>>>> index 000000000000..7f800e72c3f3
>>>> --- /dev/null
>>>> +++ b/Documentation/devicetree/bindings/display/imx/fsl,imx8qxp-dc-blitblend.yaml
>>>> @@ -0,0 +1,46 @@
>>>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>>>> +%YAML 1.2
>>>> +---
>>>> +$id: http://devicetree.org/schemas/display/imx/fsl,imx8qxp-dc-blitblend.yaml#
>>>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>>>> +
>>>> +title: Freescale i.MX8qxp Display Controller Blit Blend Unit
>>>> +
>>>> +description: |
>>>> +  Combines two input frames to a single output frame, all frames having the
>>>> +  same dimension.
>>>> +
>>>> +  Each Blit Blend Unit device should have an alias in the aliases node, in the
>>>> +  form of dc<x>-blitblend<y>, where <x> is an integer specifying the Display
>>>> +  Controller instance and <y> is an integer specifying the Blit Blend Unit
>>>> +  device instance.
>>>
>>> That's really an abuse of aliases. If you need to describe connections 
>>> between components, use the graph binding like everyone else does for 
>>> display path components.
>>
>> I need to describe components' instance numbers which imply the connections
>> between components but not vice versa. If I use the graph binding, I cannot
>> get the instance numbers(0 or 1) of the two display engines(documented by
>> fsl,imx8qxp-dc-display-engine.yaml). If you have no objections, I may add the
>> instance numbers to compatible strings, like brcm,bcm2835-pixelvalve0.yaml.
>> What do you think?
> 
> You could have dc<x> and blitblend<y> aliases and use the graph to 
> define the connections. But I'm not really a fan of adding custom 
> aliases either. Why are the instance numbers important?
> 
> Are the programming models or features of the instances different? If 
> so, then a different compatible or property describing the feature may 
> be appropriate.

The instances numbers are important mainly because the four ExtDsts(0/1/4/5)
belong to content or safety streams of the two Display Engines, plus the four
LayerBlends(0/1/2/3) in Pixel Engine have different numbers of input ports to
connect with the outputs of other LayerBlends, though the reason for LBs is
weak since the input ports can be expressed by the graph binding.

                                           CF0/1/4/5
                           PE               | | | |
                                            V V V V  primary layer cross bar
                          +------------------------------------------+
                          |                                          |
4 FUs + (VS4/5 + HS4/5) =>|               LB0/1/2/3                  |
   secondary layer        |                                          |
   cross bar              +------------------------------------------+
                             |          |              |          |
                             V          V              V          V
                          +-----+    +-----+        +-----+    +-----+
                          | ED0 |    | ED4 |        | ED5 |    | ED1 |
                          +-----+    +-----+        +-----+    +-----+
-----------------------------|----------|--------------|----------|-------------
                          content     safety        content     safety
                          stream0    stream0        stream1    stream1
                             |          |              |          |
                             |  DE0     V              V    DE1   |
                             |       +-----+        +-----+       |
                              ------>| FG0 |        | FG1 |<------
                                     +-----+        +-----+
                                        |              |
                                        V              V
                                       ...            ...

(Safety stream still is supposed to still function when content stream fails
over.)

LayerBlend primary layer selections:
static const enum dc_link_id prim_sels[] = {                                     
        /* common options */                                                     
        LINK_ID_NONE,                                                            
        LINK_ID_CONSTFRAME0,                                                     
        LINK_ID_CONSTFRAME1,                                                     
        LINK_ID_CONSTFRAME4,                                                     
        LINK_ID_CONSTFRAME5,                                                     
        /*                                                                       
         * special options:                                                      
         * layerblend(n) has n special options,                                  
         * from layerblend0 to layerblend(n - 1), e.g.,                          
         * layerblend3 has 3 special options -                                   
         * layerblend0/1/2.                                                      
         */                                                                      
        LINK_ID_LAYERBLEND0,                                                     
        LINK_ID_LAYERBLEND1,                                                     
        LINK_ID_LAYERBLEND2,                                                     
        LINK_ID_LAYERBLEND3,                                                     
};

People may argue that ED instance number is also not that important, because
content/safety stream can be inferred from FG input port numbers.  That's
true, but the connections between the internal devices are too complex and
I'm afraid it's an over-kill to use the graph binding. I list LB2 primary
layer selections and ED0 input selections here as examples:

--8<--
Selection of the source for the prim input of the layerblend2 module
0: disable      
10: blitblend9  
12: constframe0 
16: constframe1 
14: constframe4 
18: constframe5 
27: matrix4     
28: hscaler4    
29: vscaler4    
30: matrix5     
31: hscaler5    
32: vscaler5    
34: layerblend1 
33: layerblend0 
--8<--

--8<--
Selection of the source for the src input of the extdst0 module
0: disable      
10: blitblend9  
12: constframe0 
16: constframe1 
14: constframe4 
18: constframe5 
27: matrix4     
28: hscaler4    
29: vscaler4    
30: matrix5     
31: hscaler5    
32: vscaler5    
36: layerblend3 
35: layerblend2 
34: layerblend1 
33: layerblend0 
--8<--

TL;DR: I'd like to get instance numbers because of an appropriate programming
model _and_ different features of EDs and LBs(content/safety steam for EDs +
different input selections for LBs).  If no objections, I'll add instance
numbers to compatible strings in next version.

> 
> Rob

-- 
Regards,
Liu Ying




[Index of Archives]     [Device Tree Compilter]     [Device Tree Spec]     [Linux Driver Backports]     [Video for Linux]     [Linux USB Devel]     [Linux PCI Devel]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Yosemite Backpacking]


  Powered by Linux