[PATCH v7 03/19] dt-bindings: display: imx: Add i.MX8qxp Display Controller display engine
Liu Ying
victor.liu at nxp.com
Mon Dec 23 23:04:20 PST 2024
On 12/24/2024, Dmitry Baryshkov wrote:
> On Tue, 24 Dec 2024 at 07:56, Liu Ying <victor.liu at nxp.com> wrote:
>>
>> On 12/23/2024, Dmitry Baryshkov wrote:
>>> On Mon, Dec 23, 2024 at 02:41:31PM +0800, Liu Ying wrote:
>>>> i.MX8qxp Display Controller display engine consists of all processing units
>>>> that operate in a display clock domain.
>>>>
>>>> Signed-off-by: Liu Ying <victor.liu at nxp.com>
>>>> ---
>>>> v7:
>>>> * Drop DT alias documentations and add instance numbers to compatible strings.
>>>> (Rob)
>>>>
>>>> v6:
>>>> * No change.
>>>>
>>>> v5:
>>>> * Document aliases. Drop Rob's previous R-b tag. (Maxime)
>>>>
>>>> v4:
>>>> * Collect Rob's R-b tag.
>>>>
>>>> v3:
>>>> * No change.
>>>>
>>>> v2:
>>>> * Drop fsl,dc-*-id DT properties. (Krzysztof)
>>>> * Drop port property. (Krzysztof)
>>>> * Fix register range sizes in example.
>>>>
>>>> .../imx/fsl,imx8qxp-dc-display-engine0.yaml | 235 ++++++++++++++++++
>>>> 1 file changed, 235 insertions(+)
>>>> create mode 100644 Documentation/devicetree/bindings/display/imx/fsl,imx8qxp-dc-display-engine0.yaml
>>>>
>>>> diff --git a/Documentation/devicetree/bindings/display/imx/fsl,imx8qxp-dc-display-engine0.yaml b/Documentation/devicetree/bindings/display/imx/fsl,imx8qxp-dc-display-engine0.yaml
>>>> new file mode 100644
>>>> index 000000000000..60d1e0a4a5dd
>>>> --- /dev/null
>>>> +++ b/Documentation/devicetree/bindings/display/imx/fsl,imx8qxp-dc-display-engine0.yaml
>>>> @@ -0,0 +1,235 @@
>>>> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
>>>> +%YAML 1.2
>>>> +---
>>>> +$id: http://devicetree.org/schemas/display/imx/fsl,imx8qxp-dc-display-engine0.yaml#
>>>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>>>> +
>>>> +title: Freescale i.MX8qxp Display Controller Display Engine
>>>> +
>>>> +description:
>>>> + All Processing Units that operate in a display clock domain. Pixel pipeline
>>>> + is driven by a video timing and cannot be stalled. Implements all display
>>>> + specific processing.
>>>> +
>>>> +maintainers:
>>>> + - Liu Ying <victor.liu at nxp.com>
>>>> +
>>>> +properties:
>>>> + compatible:
>>>> + enum:
>>>> + - fsl,imx8qxp-dc-display-engine0
>>>> + - fsl,imx8qxp-dc-display-engine1
>>>
>>> Is there actual difference between engines 0 and 1? If there is none,
>>> why are you artificially adding one here?
>>
>> I think engine 0 and 1 have the same HW implementation, but they connect
>> to different ExtDsts through FrameGens. The two compatible strings make
>> it possible for an operating system to figure out which engine is which
>> by getting the instance numbers from them.
>
> This is about HW description, no OS in place.
>
>>
>> If the two engines use a same compatible string, then either 1) use
>> DT aliases to get the instance number(as v5/v6 do) or 2) use OF graph to
>> describe the connections between FrameGens and ExtDsts. However, in v6,
>> Rob doesn't like 1) because it abuses the aliases which contain the display
>> controller instance number, like "dc0-display-engine0"(i.MX8QM SoC has
>> two display controllers), and 2) is too complex because all connections
>> between internal devices need to be documented with OF graph. So, I choose
>> to use the two compatible strings, like brcm,bcm2835-pixelvalve0.yaml does.
>> Thinking about 2) more, maybe the connections between pixel engine and
>> display engines need to be documented too, which seems to be more or less
>> duplicating the connections between FrameGens and ExtDsts.
>
> 3) use IO addresses to determine the block ID. I think this has been
> pointed out by somebody else too, not only by me.
Will try to use 3). Thanks.
>
>>
>> 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 safety content
>> stream0 stream0 stream1 stream1
>> | | | |
>> | DE0 V V DE1 |
>> | +-----+ +-----+ |
>> ------>| FG0 | | FG1 |<------
>> +-----+ +-----+
>> | |
>> V V
>> ... ...
>>
>>>
>>>> +
>>>> + reg:
>>>> + maxItems: 2
>>>> +
>>>> + reg-names:
>>>> + items:
>>>> + - const: top
>>>> + - const: cfg
>>>> +
>>>> + resets:
>>>> + maxItems: 1
>>>> +
>>>> + interrupts:
>>>> + maxItems: 3
>>>> +
>>>> + interrupt-names:
>>>> + items:
>>>> + - const: shdload
>>>> + - const: framecomplete
>>>> + - const: seqcomplete
>>>> +
>>>> + power-domains:
>>>> + maxItems: 1
>>>> +
>>>> + "#address-cells":
>>>> + const: 1
>>>> +
>>>> + "#size-cells":
>>>> + const: 1
>>>> +
>>>> + ranges: true
>>>> +
>>>> +patternProperties:
>>>> + "^dither@[0-9a-f]+$":
>>>> + type: object
>>>> + additionalProperties: true
>>>> +
>>>> + properties:
>>>> + compatible:
>>>> + enum:
>>>> + - fsl,imx8qxp-dc-dither0
>>>> + - fsl,imx8qxp-dc-dither1
>>>> +
>>>> + "^framegen@[0-9a-f]+$":
>>>> + type: object
>>>> + additionalProperties: true
>>>> +
>>>> + properties:
>>>> + compatible:
>>>> + enum:
>>>> + - fsl,imx8qxp-dc-framegen0
>>>> + - fsl,imx8qxp-dc-framegen1
>>>> +
>>>> + "^gammacor@[0-9a-f]+$":
>>>> + type: object
>>>> + additionalProperties: true
>>>> +
>>>> + properties:
>>>> + compatible:
>>>> + enum:
>>>> + - fsl,imx8qxp-dc-gammacor0
>>>> + - fsl,imx8qxp-dc-gammacor1
>>>> +
>>>> + "^matrix@[0-9a-f]+$":
>>>> + type: object
>>>> + additionalProperties: true
>>>> +
>>>> + properties:
>>>> + compatible:
>>>> + enum:
>>>> + - fsl,imx8qxp-dc-matrix0
>>>> + - fsl,imx8qxp-dc-matrix1
>>>> +
>>>> + "^signature@[0-9a-f]+$":
>>>> + type: object
>>>> + additionalProperties: true
>>>> +
>>>> + properties:
>>>> + compatible:
>>>> + enum:
>>>> + - fsl,imx8qxp-dc-signature0
>>>> + - fsl,imx8qxp-dc-signature1
>>>> +
>>>> + "^tcon@[0-9a-f]+$":
>>>> + type: object
>>>> + additionalProperties: true
>>>> +
>>>> + properties:
>>>> + compatible:
>>>> + enum:
>>>> + - fsl,imx8qxp-dc-tcon0
>>>> + - fsl,imx8qxp-dc-tcon1
>>>> +
>>>> +required:
>>>> + - compatible
>>>> + - reg
>>>> + - reg-names
>>>> + - interrupts
>>>> + - interrupt-names
>>>> + - power-domains
>>>> + - "#address-cells"
>>>> + - "#size-cells"
>>>> + - ranges
>>>> +
>>>> +allOf:
>>>> + - if:
>>>> + properties:
>>>> + compatible:
>>>> + contains:
>>>> + const: fsl,imx8qxp-dc-display-engine0
>>>> + then:
>>>> + patternProperties:
>>>> + "^dither@[0-9a-f]+$":
>>>> + properties:
>>>> + compatible:
>>>> + const: fsl,imx8qxp-dc-dither0
>>>> +
>>>> + "^framegen@[0-9a-f]+$":
>>>> + properties:
>>>> + compatible:
>>>> + const: fsl,imx8qxp-dc-framegen0
>>>> +
>>>> + "^gammacor@[0-9a-f]+$":
>>>> + properties:
>>>> + compatible:
>>>> + const: fsl,imx8qxp-dc-gammacor0
>>>> +
>>>> + "^matrix@[0-9a-f]+$":
>>>> + properties:
>>>> + compatible:
>>>> + const: fsl,imx8qxp-dc-matrix0
>>>> +
>>>> + "^signature@[0-9a-f]+$":
>>>> + properties:
>>>> + compatible:
>>>> + const: fsl,imx8qxp-dc-signature0
>>>> +
>>>> + "^tcon@[0-9a-f]+$":
>>>> + properties:
>>>> + compatible:
>>>> + const: fsl,imx8qxp-dc-tcon0
>>>> + else:
>>>> + patternProperties:
>>>> + "^dither@[0-9a-f]+$":
>>>> + properties:
>>>> + compatible:
>>>> + const: fsl,imx8qxp-dc-dither1
>>>> +
>>>> + "^framegen@[0-9a-f]+$":
>>>> + properties:
>>>> + compatible:
>>>> + const: fsl,imx8qxp-dc-framegen1
>>>> +
>>>> + "^gammacor@[0-9a-f]+$":
>>>> + properties:
>>>> + compatible:
>>>> + const: fsl,imx8qxp-dc-gammacor1
>>>> +
>>>> + "^matrix@[0-9a-f]+$":
>>>> + properties:
>>>> + compatible:
>>>> + const: fsl,imx8qxp-dc-matrix1
>>>> +
>>>> + "^signature@[0-9a-f]+$":
>>>> + properties:
>>>> + compatible:
>>>> + const: fsl,imx8qxp-dc-signature1
>>>> +
>>>> + "^tcon@[0-9a-f]+$":
>>>> + properties:
>>>> + compatible:
>>>> + const: fsl,imx8qxp-dc-tcon1
>>>> +
>>>> +additionalProperties: false
>>>> +
>>>> +examples:
>>>> + - |
>>>> + #include <dt-bindings/clock/imx8-lpcg.h>
>>>> + #include <dt-bindings/firmware/imx/rsrc.h>
>>>> +
>>>> + display-engine at 5618b400 {
>>>> + compatible = "fsl,imx8qxp-dc-display-engine0";
>>>> + reg = <0x5618b400 0x14>, <0x5618b800 0x1c00>;
>>>> + reg-names = "top", "cfg";
>>>> + interrupt-parent = <&dc0_intc>;
>>>> + interrupts = <15>, <16>, <17>;
>>>> + interrupt-names = "shdload", "framecomplete", "seqcomplete";
>>>> + power-domains = <&pd IMX_SC_R_DC_0_PLL_0>;
>>>> + #address-cells = <1>;
>>>> + #size-cells = <1>;
>>>> + ranges;
>>>> +
>>>> + framegen at 5618b800 {
>>>> + compatible = "fsl,imx8qxp-dc-framegen0";
>>>> + reg = <0x5618b800 0x98>;
>>>> + clocks = <&dc0_disp_lpcg IMX_LPCG_CLK_0>;
>>>> + interrupt-parent = <&dc0_intc>;
>>>> + interrupts = <18>, <19>, <20>, <21>, <41>, <42>, <43>, <44>;
>>>> + interrupt-names = "int0", "int1", "int2", "int3",
>>>> + "primsync_on", "primsync_off",
>>>> + "secsync_on", "secsync_off";
>>>> + };
>>>> +
>>>> + tcon at 5618c800 {
>>>> + compatible = "fsl,imx8qxp-dc-tcon0";
>>>> + reg = <0x5618c800 0x588>;
>>>> +
>>>> + port {
>>>> + dc0_disp0_dc0_pixel_combiner_ch0: endpoint {
>>>> + remote-endpoint = <&dc0_pixel_combiner_ch0_dc0_disp0>;
>>>> + };
>>>> + };
>>>> + };
>>>> + };
>>>> --
>>>> 2.34.1
>>>>
>>>
>>
>> --
>> Regards,
>> Liu Ying
>
>
>
--
Regards,
Liu Ying
More information about the linux-phy
mailing list