diff mbox series

[1/3] dt-bindings: display: convert Atmel's HLCDC to DT schema

Message ID 20240110102535.246177-2-dharma.b@microchip.com (mailing list archive)
State New, archived
Headers show
Series Convert Microchip's HLCDC Text based DT bindings to JSON schema | expand

Commit Message

Dharma Balasubiramani Jan. 10, 2024, 10:25 a.m. UTC
Convert the existing DT binding to DT schema of the Atmel's HLCDC display
controller.

Signed-off-by: Dharma Balasubiramani <dharma.b@microchip.com>
---
 .../display/atmel/atmel,hlcdc-dc.yaml         | 133 ++++++++++++++++++
 .../bindings/display/atmel/hlcdc-dc.txt       |  75 ----------
 2 files changed, 133 insertions(+), 75 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/display/atmel/atmel,hlcdc-dc.yaml
 delete mode 100644 Documentation/devicetree/bindings/display/atmel/hlcdc-dc.txt

Comments

Dharma Balasubiramani Jan. 17, 2024, 1:58 a.m. UTC | #1
Hi Krzysztof,

On 10/01/24 4:09 pm, Krzysztof Kozlowski wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
> 
> On 10/01/2024 11:25, Dharma Balasubiramani wrote:
>> Convert the existing DT binding to DT schema of the Atmel's HLCDC display
>> controller.
>>
>> Signed-off-by: Dharma Balasubiramani <dharma.b@microchip.com>
>> ---
>>   .../display/atmel/atmel,hlcdc-dc.yaml         | 133 ++++++++++++++++++
>>   .../bindings/display/atmel/hlcdc-dc.txt       |  75 ----------
>>   2 files changed, 133 insertions(+), 75 deletions(-)
>>   create mode 100644 Documentation/devicetree/bindings/display/atmel/atmel,hlcdc-dc.yaml
>>   delete mode 100644 Documentation/devicetree/bindings/display/atmel/hlcdc-dc.txt
>>
>> diff --git a/Documentation/devicetree/bindings/display/atmel/atmel,hlcdc-dc.yaml b/Documentation/devicetree/bindings/display/atmel/atmel,hlcdc-dc.yaml
>> new file mode 100644
>> index 000000000000..49ef28646c48
>> --- /dev/null
>> +++ b/Documentation/devicetree/bindings/display/atmel/atmel,hlcdc-dc.yaml
>> @@ -0,0 +1,133 @@
>> +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
>> +# Copyright (C) 2024 Microchip Technology, Inc. and its subsidiaries
> 
> What about original copyrights from TXT file? Although conversion is
> quite independent, I could imagine some lawyer would call it a
> derivative work of original TXT.
> 
> If you decide to add explicit copyrights (which anyway I do not
> understand why), then please make it signed off by some of your lawyers
> to be sure that you really claim that, in respect of other people
> copyrights.
I omitted it in v2, but given the approval from Conor and Alexandre to 
include the copyrights, I will reintroduce it in v3.
> 
>> +%YAML 1.2
>> +---
>> +$id: http://devicetree.org/schemas/display/atmel/atmel,hlcdc-dc.yaml#
> 
> Filename like compatible
I modified it in v2.
> 
>> +$schema: http://devicetree.org/meta-schemas/core.yaml#
>> +
>> +title: Atmel's HLCDC (High LCD Controller) DRM driver
> 
> Driver as Linux driver? Not suitable for bindings, so please drop.
Done.
> 
>> +
>> +maintainers:
>> +  - Nicolas Ferre <nicolas.ferre@microchip.com>
>> +  - Alexandre Belloni <alexandre.belloni@bootlin.com>
>> +  - Claudiu Beznea <claudiu.beznea@tuxon.dev>
>> +
>> +description: |
>> +  Device-Tree bindings for Atmel's HLCDC DRM driver. The Atmel HLCDC Display
> 
> Drop entire first sentence and instead describe hardware.
Done.
> 
>> +  Controller is a subdevice of the HLCDC MFD device.
>> +  # See ../../mfd/atmel,hlcdc.yaml for more details.
> 
> Full paths please.
Considering that the MFD's YAML comes after this patch, I have decided 
to remove it here.
> 
>> +
>> +properties:
>> +  compatible:
>> +    const: atmel,hlcdc-display-controller
>> +
>> +  pinctrl-names:
>> +    const: default
>> +
>> +  pinctrl-0: true
> 
> Why do you need these two? Are they really required?
No, I removed it in v2.
> 
>> +
>> +  '#address-cells':
>> +    const: 1
>> +
>> +  '#size-cells':
>> +    const: 0
>> +
>> +  port@0:
>> +    $ref: /schemas/graph.yaml#/$defs/port-base
>> +    unevaluatedProperties: false
>> +    description:
>> +      Output endpoint of the controller, connecting the LCD panel signals.
>> +
>> +    properties:
>> +      '#address-cells':
>> +        const: 1
>> +
>> +      '#size-cells':
>> +        const: 0
>> +
>> +      reg:
>> +        maxItems: 1
>> +
>> +      endpoint:
>> +        $ref: /schemas/graph.yaml#/$defs/endpoint-base
> 
> Hm, why do you reference endpoint-base? This looks oddly different than
> all other bindings for such devices, so please explain why.
My apologies, it should be '$ref: /schemas/media/video-interfaces.yaml#' 
I will correct this in v3.
> 
>> +        unevaluatedProperties: false
>> +        description:
>> +          Endpoint connecting the LCD panel signals.
>> +
>> +        properties:
>> +          bus-width:
>> +            description: |
>> +              Any endpoint grandchild node may specify a desired video interface according to
>> +              ../../media/video-interfaces.yaml, specifically "bus-width" whose recognized
> 
> Drop redundant information. Don't you miss some $ref?
Sure, I will drop the description in v3.
> 
> 
>> +              values are <12>, <16>, <18> and <24>, and override any output mode selection
>> +              heuristic, forcing "rgb444","rgb565", "rgb666" and "rgb888" respectively.
>> +            enum: [ 12, 16, 18, 24 ]
>> +
>> +additionalProperties: false
> 
> This goes after required:
Done.
> 
>> +
>> +required:
>> +  - '#address-cells'
>> +  - '#size-cells'
>> +  - compatible
>> +  - pinctrl-names
>> +  - pinctrl-0
>> +  - port@0
>> +
>> +examples:
>> +  - |
>> +    #include <dt-bindings/clock/at91.h>
>> +    #include <dt-bindings/dma/at91.h>
>> +    #include <dt-bindings/interrupt-controller/arm-gic.h>
>> +    //Example 1
> 
> Drop
Sure.
> 
>> +    hlcdc: hlcdc@f0030000 {
> 
> Node names should be generic. See also an explanation and list of
> examples (not exhaustive) in DT specification:
> https://devicetree-specification.readthedocs.io/en/latest/chapter2-devicetree-basics.html#generic-names-recommendation
> 
> 
>> +      compatible = "atmel,sama5d3-hlcdc";
>> +      reg = <0xf0030000 0x2000>;
>> +      interrupts = <36 IRQ_TYPE_LEVEL_HIGH 0>;
>> +      clocks = <&lcdc_clk>, <&lcdck>, <&clk32k>;
>> +      clock-names = "periph_clk","sys_clk", "slow_clk";
> 
> This part does not look related... If this is part of other device,
> usually it is enough to have just one complete example.
Sure, I will have one complete example in mfd binding and drop the other 
example here.
> 
> Also, fix coding style - space after ,
Sure.
> 
>> +
>> +      hlcdc-display-controller {
>> +        compatible = "atmel,hlcdc-display-controller";
>> +        pinctrl-names = "default";
>> +        pinctrl-0 = <&pinctrl_lcd_base &pinctrl_lcd_rgb888>;
>> +        #address-cells = <1>;
>> +        #size-cells = <0>;
>> +
>> +        port@0 {
>> +          #address-cells = <1>;
>> +          #size-cells = <0>;
>> +          reg = <0>;
>> +
>> +          hlcdc_panel_output: endpoint@0 {
>> +            reg = <0>;
>> +            remote-endpoint = <&panel_input>;
>> +          };
>> +        };
>> +      };
>> +
>> +      hlcdc_pwm: hlcdc-pwm {
>> +        compatible = "atmel,hlcdc-pwm";
> 
> How is this related?
Not related here, thanks, removed it in v2.
> 
>> +        pinctrl-names = "default";
>> +        pinctrl-0 = <&pinctrl_lcd_pwm>;
>> +        #pwm-cells = <3>;
>> +      };
>> +    };
>> +  - |
>> +    //Example 2 With a video interface override to force rgb565
>> +    hlcdc-display-controller {
>> +      pinctrl-names = "default";
>> +      pinctrl-0 = <&pinctrl_lcd_base &pinctrl_lcd_rgb565>;
> 
> And how is this? Where is the compatible? Maybe just drop second
> example, what are the differences?
bus-width is the only property that is different between the examples, I 
will drop the example 2 in v3.
> 
> Are you sure your Microchip folks reviewed it before?
I acknowledge my oversight; I should have sought their review 
beforehand. I appreciate your understanding.
Dharma Balasubiramani Jan. 17, 2024, 2:01 a.m. UTC | #2
Hi Rob,
On 10/01/24 5:27 pm, Rob Herring wrote:
> EXTERNAL EMAIL: Do not click links or open attachments unless you know the content is safe
> 
> On Wed, 10 Jan 2024 15:55:33 +0530, Dharma Balasubiramani wrote:
>> Convert the existing DT binding to DT schema of the Atmel's HLCDC display
>> controller.
>>
>> Signed-off-by: Dharma Balasubiramani <dharma.b@microchip.com>
>> ---
>>   .../display/atmel/atmel,hlcdc-dc.yaml         | 133 ++++++++++++++++++
>>   .../bindings/display/atmel/hlcdc-dc.txt       |  75 ----------
>>   2 files changed, 133 insertions(+), 75 deletions(-)
>>   create mode 100644 Documentation/devicetree/bindings/display/atmel/atmel,hlcdc-dc.yaml
>>   delete mode 100644 Documentation/devicetree/bindings/display/atmel/hlcdc-dc.txt
>>
> 
> My bot found errors running 'make DT_CHECKER_FLAGS=-m dt_binding_check'
> on your patch (DT_CHECKER_FLAGS is new in v5.13):
> I conducted the tests after applying all three of them, so I didn't 
notice these errors. I have addressed this in v2. Thank you.
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/display/atmel/atmel,hlcdc-dc.yaml b/Documentation/devicetree/bindings/display/atmel/atmel,hlcdc-dc.yaml
new file mode 100644
index 000000000000..49ef28646c48
--- /dev/null
+++ b/Documentation/devicetree/bindings/display/atmel/atmel,hlcdc-dc.yaml
@@ -0,0 +1,133 @@ 
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+# Copyright (C) 2024 Microchip Technology, Inc. and its subsidiaries
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/atmel/atmel,hlcdc-dc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Atmel's HLCDC (High LCD Controller) DRM driver
+
+maintainers:
+  - Nicolas Ferre <nicolas.ferre@microchip.com>
+  - Alexandre Belloni <alexandre.belloni@bootlin.com>
+  - Claudiu Beznea <claudiu.beznea@tuxon.dev>
+
+description: |
+  Device-Tree bindings for Atmel's HLCDC DRM driver. The Atmel HLCDC Display
+  Controller is a subdevice of the HLCDC MFD device.
+  # See ../../mfd/atmel,hlcdc.yaml for more details.
+
+properties:
+  compatible:
+    const: atmel,hlcdc-display-controller
+
+  pinctrl-names:
+    const: default
+
+  pinctrl-0: true
+
+  '#address-cells':
+    const: 1
+
+  '#size-cells':
+    const: 0
+
+  port@0:
+    $ref: /schemas/graph.yaml#/$defs/port-base
+    unevaluatedProperties: false
+    description:
+      Output endpoint of the controller, connecting the LCD panel signals.
+
+    properties:
+      '#address-cells':
+        const: 1
+
+      '#size-cells':
+        const: 0
+
+      reg:
+        maxItems: 1
+
+      endpoint:
+        $ref: /schemas/graph.yaml#/$defs/endpoint-base
+        unevaluatedProperties: false
+        description:
+          Endpoint connecting the LCD panel signals.
+
+        properties:
+          bus-width:
+            description: |
+              Any endpoint grandchild node may specify a desired video interface according to
+              ../../media/video-interfaces.yaml, specifically "bus-width" whose recognized
+              values are <12>, <16>, <18> and <24>, and override any output mode selection
+              heuristic, forcing "rgb444","rgb565", "rgb666" and "rgb888" respectively.
+            enum: [ 12, 16, 18, 24 ]
+
+additionalProperties: false
+
+required:
+  - '#address-cells'
+  - '#size-cells'
+  - compatible
+  - pinctrl-names
+  - pinctrl-0
+  - port@0
+
+examples:
+  - |
+    #include <dt-bindings/clock/at91.h>
+    #include <dt-bindings/dma/at91.h>
+    #include <dt-bindings/interrupt-controller/arm-gic.h>
+    //Example 1
+    hlcdc: hlcdc@f0030000 {
+      compatible = "atmel,sama5d3-hlcdc";
+      reg = <0xf0030000 0x2000>;
+      interrupts = <36 IRQ_TYPE_LEVEL_HIGH 0>;
+      clocks = <&lcdc_clk>, <&lcdck>, <&clk32k>;
+      clock-names = "periph_clk","sys_clk", "slow_clk";
+
+      hlcdc-display-controller {
+        compatible = "atmel,hlcdc-display-controller";
+        pinctrl-names = "default";
+        pinctrl-0 = <&pinctrl_lcd_base &pinctrl_lcd_rgb888>;
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        port@0 {
+          #address-cells = <1>;
+          #size-cells = <0>;
+          reg = <0>;
+
+          hlcdc_panel_output: endpoint@0 {
+            reg = <0>;
+            remote-endpoint = <&panel_input>;
+          };
+        };
+      };
+
+      hlcdc_pwm: hlcdc-pwm {
+        compatible = "atmel,hlcdc-pwm";
+        pinctrl-names = "default";
+        pinctrl-0 = <&pinctrl_lcd_pwm>;
+        #pwm-cells = <3>;
+      };
+    };
+  - |
+    //Example 2 With a video interface override to force rgb565
+    hlcdc-display-controller {
+      pinctrl-names = "default";
+      pinctrl-0 = <&pinctrl_lcd_base &pinctrl_lcd_rgb565>;
+      #address-cells = <1>;
+      #size-cells = <0>;
+
+      port@0 {
+        #address-cells = <1>;
+        #size-cells = <0>;
+        reg = <0>;
+        hlcdc_panel_output2: endpoint@0 {
+          reg = <0>;
+          remote-endpoint = <&panel_input>;
+          bus-width = <16>;
+        };
+      };
+    };
diff --git a/Documentation/devicetree/bindings/display/atmel/hlcdc-dc.txt b/Documentation/devicetree/bindings/display/atmel/hlcdc-dc.txt
deleted file mode 100644
index 923aea25344c..000000000000
--- a/Documentation/devicetree/bindings/display/atmel/hlcdc-dc.txt
+++ /dev/null
@@ -1,75 +0,0 @@ 
-Device-Tree bindings for Atmel's HLCDC (High LCD Controller) DRM driver
-
-The Atmel HLCDC Display Controller is subdevice of the HLCDC MFD device.
-See ../../mfd/atmel-hlcdc.txt for more details.
-
-Required properties:
- - compatible: value should be "atmel,hlcdc-display-controller"
- - pinctrl-names: the pin control state names. Should contain "default".
- - pinctrl-0: should contain the default pinctrl states.
- - #address-cells: should be set to 1.
- - #size-cells: should be set to 0.
-
-Required children nodes:
- Children nodes are encoding available output ports and their connections
- to external devices using the OF graph representation (see ../graph.txt).
- At least one port node is required.
-
-Optional properties in grandchild nodes:
- Any endpoint grandchild node may specify a desired video interface
- according to ../../media/video-interfaces.txt, specifically
- - bus-width: recognized values are <12>, <16>, <18> and <24>, and
-   override any output mode selection heuristic, forcing "rgb444",
-   "rgb565", "rgb666" and "rgb888" respectively.
-
-Example:
-
-	hlcdc: hlcdc@f0030000 {
-		compatible = "atmel,sama5d3-hlcdc";
-		reg = <0xf0030000 0x2000>;
-		interrupts = <36 IRQ_TYPE_LEVEL_HIGH 0>;
-		clocks = <&lcdc_clk>, <&lcdck>, <&clk32k>;
-		clock-names = "periph_clk","sys_clk", "slow_clk";
-
-		hlcdc-display-controller {
-			compatible = "atmel,hlcdc-display-controller";
-			pinctrl-names = "default";
-			pinctrl-0 = <&pinctrl_lcd_base &pinctrl_lcd_rgb888>;
-			#address-cells = <1>;
-			#size-cells = <0>;
-
-			port@0 {
-				#address-cells = <1>;
-				#size-cells = <0>;
-				reg = <0>;
-
-				hlcdc_panel_output: endpoint@0 {
-					reg = <0>;
-					remote-endpoint = <&panel_input>;
-				};
-			};
-		};
-
-		hlcdc_pwm: hlcdc-pwm {
-			compatible = "atmel,hlcdc-pwm";
-			pinctrl-names = "default";
-			pinctrl-0 = <&pinctrl_lcd_pwm>;
-			#pwm-cells = <3>;
-		};
-	};
-
-Example 2: With a video interface override to force rgb565; as above
-but with these changes/additions:
-
-	&hlcdc {
-		hlcdc-display-controller {
-			pinctrl-names = "default";
-			pinctrl-0 = <&pinctrl_lcd_base &pinctrl_lcd_rgb565>;
-
-			port@0 {
-				hlcdc_panel_output: endpoint@0 {
-					bus-width = <16>;
-				};
-			};
-		};
-	};