dri-devel.lists.freedesktop.org archive mirror
 help / color / mirror / Atom feed
* [PATCH v1 0/4] dt-bindings: DT Schema variants of atmel lcdc, hlcdc
@ 2020-04-12 18:20 Sam Ravnborg
  2020-04-12 18:20 ` [PATCH v1 1/4] dt-bindings: display: convert atmel-hlcdc to DT Schema Sam Ravnborg
                   ` (3 more replies)
  0 siblings, 4 replies; 14+ messages in thread
From: Sam Ravnborg @ 2020-04-12 18:20 UTC (permalink / raw)
  To: devicetree, Rob Herring, dri-devel
  Cc: Alexandre Belloni, Boris Brezillon, Nicolas Ferre, Hans Verkuil,
	Mauro Carvalho Chehab, linux-media

The following four patches update the bindings for Atmel
LCDC, HLCDC display controllers to DT Schema.

The bindings were re-written in DT Schema format,
and examples adjusted/updated to fit.

This patch-set introduces a new endpoint property in video-interfaces
used to tell if red and blue wiring is reversed.
Red and blue wires are reversed as the LCDC IP natively supports BGR
whereas most SW expects RGB. With the wires reversed the SW thinks
the IP supports RGB.
See more details in the changelog of the patch.

The Atmel lcdc binding deprecate a lot of properties in other
to update it to an up-to-date binding. There are no users of the
updated binding, thats something I work on.

Note a big difference between LCDC and HLCDC.
LCDC has all in one binding (interrupts, pwm, display controller).
HLCDC has individual sub-nodes for the PWM and the display contoller.

When posting an update on the old atmel,lcdc.txt file the feedback
was back then that we did not want the split like done for hlcdc.
And it makes for a simpler binding in this way - so feedback looks right.

Despite that Microchip has purchased Atmel, the atmel name is kept.
Also the files are placed in a directory named atmel/.

Feedback welcome!

	Sam

Sam Ravnborg (4):
      dt-bindings: display: convert atmel-hlcdc to DT Schema
      dt-bindings: display: convert atmel lcdc to DT Schema
      dt-bindings: media: add wiring property to video-interfaces
      dt-bindings: display: add port support to atmel lcdc

 .../devicetree/bindings/display/atmel,lcdc.txt     |  88 --------
 .../devicetree/bindings/display/atmel/hlcdc-dc.txt |  75 -------
 .../bindings/display/atmel/hlcdc-dc.yaml           | 102 +++++++++
 .../devicetree/bindings/display/atmel/lcdc.yaml    | 229 +++++++++++++++++++++
 .../devicetree/bindings/media/video-interfaces.txt |   3 +
 .../devicetree/bindings/mfd/atmel-hlcdc.txt        |  55 -----
 .../devicetree/bindings/mfd/atmel-hlcdc.yaml       |  78 +++++++
 .../devicetree/bindings/pwm/atmel-hlcdc-pwm.txt    |  29 ---
 .../devicetree/bindings/pwm/atmel-hlcdc-pwm.yaml   |  39 ++++
 9 files changed, 451 insertions(+), 247 deletions(-)


_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* [PATCH v1 1/4] dt-bindings: display: convert atmel-hlcdc to DT Schema
  2020-04-12 18:20 [PATCH v1 0/4] dt-bindings: DT Schema variants of atmel lcdc, hlcdc Sam Ravnborg
@ 2020-04-12 18:20 ` Sam Ravnborg
  2020-04-14  8:28   ` Maxime Ripard
  2020-04-12 18:20 ` [PATCH v1 2/4] dt-bindings: display: convert atmel lcdc " Sam Ravnborg
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 14+ messages in thread
From: Sam Ravnborg @ 2020-04-12 18:20 UTC (permalink / raw)
  To: devicetree, Rob Herring, dri-devel
  Cc: Alexandre Belloni, Boris Brezillon, Nicolas Ferre, Hans Verkuil,
	Mauro Carvalho Chehab, Sam Ravnborg, linux-media

atmel hlcdc is a MFD devide with two sub-devices:
- PWM
- Display controller

Add binding files for each device:

 - mfd/atmel-hlcdc - this is overall device
 - pwm/atmel-hlcdc-pwm - the pwm part, used for backlight
 - display/atmel/hlcdc-dc - the display controller

The hlcdc IP is present in several different chips from microchip
(former Atmel). The individual chips has independent compatibles in
the mfd binding, to allow for chip specific configuration.

As the conversion is a full re-write there was no tie to the original
license, and the standard license for bindings is used.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Cc: Boris Brezillon <bbrezillon@kernel.org>
---
 .../bindings/display/atmel/hlcdc-dc.txt       |  75 -------------
 .../bindings/display/atmel/hlcdc-dc.yaml      | 102 ++++++++++++++++++
 .../devicetree/bindings/mfd/atmel-hlcdc.txt   |  55 ----------
 .../devicetree/bindings/mfd/atmel-hlcdc.yaml  |  78 ++++++++++++++
 .../bindings/pwm/atmel-hlcdc-pwm.txt          |  29 -----
 .../bindings/pwm/atmel-hlcdc-pwm.yaml         |  39 +++++++
 6 files changed, 219 insertions(+), 159 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/display/atmel/hlcdc-dc.txt
 create mode 100644 Documentation/devicetree/bindings/display/atmel/hlcdc-dc.yaml
 delete mode 100644 Documentation/devicetree/bindings/mfd/atmel-hlcdc.txt
 create mode 100644 Documentation/devicetree/bindings/mfd/atmel-hlcdc.yaml
 delete mode 100644 Documentation/devicetree/bindings/pwm/atmel-hlcdc-pwm.txt
 create mode 100644 Documentation/devicetree/bindings/pwm/atmel-hlcdc-pwm.yaml

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 0398aec488ac..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 reprensentation (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>;
-				};
-			};
-		};
-	};
diff --git a/Documentation/devicetree/bindings/display/atmel/hlcdc-dc.yaml b/Documentation/devicetree/bindings/display/atmel/hlcdc-dc.yaml
new file mode 100644
index 000000000000..7eb6266a25a2
--- /dev/null
+++ b/Documentation/devicetree/bindings/display/atmel/hlcdc-dc.yaml
@@ -0,0 +1,102 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/atmel/hlcdc-dc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Atmel HLCDC (High LCD Controller) display controller
+
+maintainers:
+  - Sam Ravnborg <sam@ravnborg.org>
+  - Boris Brezillon <bbrezillon@kernel.org>
+
+description: |
+  The Atmel HLCDC Display Controller is subdevice of the HLCDC MFD device.
+  See ../../mfd/atmel-hlcdc.yaml for more details.
+
+properties:
+  compatible:
+    const: atmel,hlcdc-display-controller
+
+  "#address-cells":
+    const: 1
+  "#size-cells":
+    const: 0
+
+required:
+  - compatible
+  - "#address-cells"
+  - "#size-cells"
+
+patternProperties:
+  "^port@[0-9]$":
+    type: object
+    description: |
+      A port node with endpoint definitions as defined in
+      ../../media/video-interfaces.txt
+
+    properties:
+      "#address-cells":
+        const: 1
+
+      "#size-cells":
+        const: 0
+
+      reg:
+        maxItems: 1
+        description: The virtual number of the port
+
+    patternProperties:
+      "^endpoint(@[0-9])$":
+        type: object
+
+        properties:
+          reg:
+            maxItems: 1
+            description: The virtual number of the endpoint
+
+          bus-width:
+            enum: [12, 16, 18, 24]
+            description:
+              Any endpoint node may specify a desired video interface
+              according to ../../media/video-interfaces.txt, specifically
+              Recognized values are <12>, <16>, <18> and <24>, and
+              override any output mode selection heuristic, forcing
+              "rgb444", "rgb565", "rgb666" and "rgb888" respectively.
+
+          remote-endpoint:
+            $ref: /schemas/types.yaml#/definitions/phandle
+            description:
+              phandle to the panel node
+
+        required:
+          - reg
+
+    required:
+      - "#address-cells"
+      - "#size-cells"
+      - reg
+
+additionalProperties: false
+
+examples:
+  - |
+    hlcdc-display-controller {
+        compatible = "atmel,hlcdc-display-controller";
+        #address-cells = <1>;
+        #size-cells = <0>;
+
+        port@0 {
+            #address-cells = <1>;
+            #size-cells = <0>;
+            reg = <0>;
+
+            endpoint@0 {
+                reg = <0>;
+                bus-width = <16>;
+                remote-endpoint = <&panel_input>;
+            };
+        };
+    };
+
+...
diff --git a/Documentation/devicetree/bindings/mfd/atmel-hlcdc.txt b/Documentation/devicetree/bindings/mfd/atmel-hlcdc.txt
deleted file mode 100644
index 5f8880cc757e..000000000000
--- a/Documentation/devicetree/bindings/mfd/atmel-hlcdc.txt
+++ /dev/null
@@ -1,55 +0,0 @@
-Device-Tree bindings for Atmel's HLCDC (High LCD Controller) MFD driver
-
-Required properties:
- - compatible: value should be one of the following:
-   "atmel,at91sam9n12-hlcdc"
-   "atmel,at91sam9x5-hlcdc"
-   "atmel,sama5d2-hlcdc"
-   "atmel,sama5d3-hlcdc"
-   "atmel,sama5d4-hlcdc"
-   "microchip,sam9x60-hlcdc"
- - reg: base address and size of the HLCDC device registers.
- - clock-names: the name of the 3 clocks requested by the HLCDC device.
-   Should contain "periph_clk", "sys_clk" and "slow_clk".
- - clocks: should contain the 3 clocks requested by the HLCDC device.
- - interrupts: should contain the description of the HLCDC interrupt line
-
-The HLCDC IP exposes two subdevices:
- - a PWM chip: see ../pwm/atmel-hlcdc-pwm.txt
- - a Display Controller: see ../display/atmel/hlcdc-dc.txt
-
-Example:
-
-	hlcdc: hlcdc@f0030000 {
-		compatible = "atmel,sama5d3-hlcdc";
-		reg = <0xf0030000 0x2000>;
-		clocks = <&lcdc_clk>, <&lcdck>, <&clk32k>;
-		clock-names = "periph_clk","sys_clk", "slow_clk";
-		interrupts = <36 IRQ_TYPE_LEVEL_HIGH 0>;
-
-		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>;
-		};
-	};
diff --git a/Documentation/devicetree/bindings/mfd/atmel-hlcdc.yaml b/Documentation/devicetree/bindings/mfd/atmel-hlcdc.yaml
new file mode 100644
index 000000000000..cad14fa173a1
--- /dev/null
+++ b/Documentation/devicetree/bindings/mfd/atmel-hlcdc.yaml
@@ -0,0 +1,78 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/mfd/atmel-hlcdc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Device-Tree bindings for Atmel's HLCDC (High LCD Controller)
+
+maintainers:
+  - Sam Ravnborg <sam@ravnborg.org>
+  - Boris Brezillon <bbrezillon@kernel.org>
+
+properties:
+  compatible:
+    enum:
+      - atmel,at91sam9n12-hlcdc
+      - atmel,at91sam9x5-hlcdc
+      - atmel,sama5d2-hlcdc
+      - atmel,sama5d3-hlcdc
+      - atmel,sama5d4-hlcdc
+      - microchip,sam9x60-hlcdc
+
+  reg:
+    maxItems: 1
+
+  clocks:
+    maxItems: 3
+
+  clock-names:
+    maxItems: 3
+    items:
+      - const: periph_clk
+      - const: sys_clk
+      - const: slow_clk
+
+  interrupts:
+    description: The HLCDC interrupt line
+    maxItems: 1
+
+  hlcdc_pwm:
+    type: object
+    description: |
+      PWM controller - used for backlight.
+      See ../pwm/atmel-hlcdc-pwm.yaml for details
+
+  hlcdc-display-controller:
+    type: object
+    description: |
+      LCD display controller
+      See ../display/atmel/hlcdc-dc.yaml for details
+
+required:
+  - compatible
+  - reg
+  - clocks
+  - interrupts
+
+additionalProperties: false
+
+examples:
+  - |
+    #include <dt-bindings/interrupt-controller/irq.h>
+
+    hlcdc {
+        compatible = "atmel,sama5d3-hlcdc";
+        reg = <0xf0030000 0x2000>;
+        clocks = <&lcdc_clk>, <&lcdck>, <&clk32k>;
+        clock-names = "periph_clk","sys_clk", "slow_clk";
+        interrupts = <36 IRQ_TYPE_LEVEL_HIGH 0>;
+
+        hlcdc-display-controller {
+        };
+
+        hlcdc_pwm {
+        };
+    };
+
+...
diff --git a/Documentation/devicetree/bindings/pwm/atmel-hlcdc-pwm.txt b/Documentation/devicetree/bindings/pwm/atmel-hlcdc-pwm.txt
deleted file mode 100644
index afa501bf7f94..000000000000
--- a/Documentation/devicetree/bindings/pwm/atmel-hlcdc-pwm.txt
+++ /dev/null
@@ -1,29 +0,0 @@
-Device-Tree bindings for Atmel's HLCDC (High-end LCD Controller) PWM driver
-
-The Atmel HLCDC PWM is subdevice of the HLCDC MFD device.
-See ../mfd/atmel-hlcdc.txt for more details.
-
-Required properties:
- - compatible: value should be one of the following:
-   "atmel,hlcdc-pwm"
- - pinctr-names: the pin control state names. Should contain "default".
- - pinctrl-0: should contain the pinctrl states described by pinctrl
-   default.
- - #pwm-cells: should be set to 3. This PWM chip use the default 3 cells
-   bindings defined in pwm.yaml in this directory.
-
-Example:
-
-	hlcdc: hlcdc@f0030000 {
-		compatible = "atmel,sama5d3-hlcdc";
-		reg = <0xf0030000 0x2000>;
-		clocks = <&lcdc_clk>, <&lcdck>, <&clk32k>;
-		clock-names = "periph_clk","sys_clk", "slow_clk";
-
-		hlcdc_pwm: hlcdc-pwm {
-			compatible = "atmel,hlcdc-pwm";
-			pinctrl-names = "default";
-			pinctrl-0 = <&pinctrl_lcd_pwm>;
-			#pwm-cells = <3>;
-		};
-	};
diff --git a/Documentation/devicetree/bindings/pwm/atmel-hlcdc-pwm.yaml b/Documentation/devicetree/bindings/pwm/atmel-hlcdc-pwm.yaml
new file mode 100644
index 000000000000..70d063b48260
--- /dev/null
+++ b/Documentation/devicetree/bindings/pwm/atmel-hlcdc-pwm.yaml
@@ -0,0 +1,39 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/pwm/atmel-hlcdc-pwm.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Device-Tree bindings for Atmel's HLCDC (High-end LCD Controller) PWM
+
+maintainers:
+  - Sam Ravnborg <sam@ravnborg.org>
+  - Boris Brezillon <bbrezillon@kernel.org>
+
+description: |
+  The Atmel HLCDC PWM is subdevice of the HLCDC MFD device.
+  See ../mfd/atmel-hlcdc.txt for more details.
+
+properties:
+  compatible:
+    const: atmel,hlcdc-pwm
+
+  "#pwm-cells":
+    const: 3
+    description:
+      This PWM chip use the default 3 cells bindings defined in pwm.yaml.
+
+required:
+  - compatible
+  - "#pwm-cells"
+
+additionalProperties: false
+
+examples:
+  - |
+    hlcdc_pwm {
+        compatible = "atmel,hlcdc-pwm";
+        #pwm-cells = <3>;
+    };
+
+...
-- 
2.20.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH v1 2/4] dt-bindings: display: convert atmel lcdc to DT Schema
  2020-04-12 18:20 [PATCH v1 0/4] dt-bindings: DT Schema variants of atmel lcdc, hlcdc Sam Ravnborg
  2020-04-12 18:20 ` [PATCH v1 1/4] dt-bindings: display: convert atmel-hlcdc to DT Schema Sam Ravnborg
@ 2020-04-12 18:20 ` Sam Ravnborg
  2020-04-14  8:30   ` Maxime Ripard
  2020-04-12 18:20 ` [PATCH v1 3/4] dt-bindings: media: add wiring property to video-interfaces Sam Ravnborg
  2020-04-12 18:20 ` [PATCH v1 4/4] dt-bindings: display: add port support to atmel lcdc Sam Ravnborg
  3 siblings, 1 reply; 14+ messages in thread
From: Sam Ravnborg @ 2020-04-12 18:20 UTC (permalink / raw)
  To: devicetree, Rob Herring, dri-devel
  Cc: Alexandre Belloni, Boris Brezillon, Nicolas Ferre, Hans Verkuil,
	Mauro Carvalho Chehab, Sam Ravnborg, linux-media

Add a new binding file to describe the bindings
for the Atmel LCDC IP.
This replaces the old txt based binding.

The binding file describes the current binding,
including properties to specify register values etc.
The binding will be updated in a follow-up patch,
the current binding describes the actual situation.

This new binding file replaces the old .txt based
binding which is deleted.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
---
 .../bindings/display/atmel,lcdc.txt           |  88 -----------
 .../bindings/display/atmel/lcdc.yaml          | 137 ++++++++++++++++++
 2 files changed, 137 insertions(+), 88 deletions(-)
 delete mode 100644 Documentation/devicetree/bindings/display/atmel,lcdc.txt
 create mode 100644 Documentation/devicetree/bindings/display/atmel/lcdc.yaml

diff --git a/Documentation/devicetree/bindings/display/atmel,lcdc.txt b/Documentation/devicetree/bindings/display/atmel,lcdc.txt
deleted file mode 100644
index acb5a0132127..000000000000
--- a/Documentation/devicetree/bindings/display/atmel,lcdc.txt
+++ /dev/null
@@ -1,88 +0,0 @@
-Atmel LCDC Framebuffer
------------------------------------------------------
-
-Required properties:
-- compatible :
-	"atmel,at91sam9261-lcdc" , 
-	"atmel,at91sam9263-lcdc" ,
-	"atmel,at91sam9g10-lcdc" ,
-	"atmel,at91sam9g45-lcdc" ,
-	"atmel,at91sam9g45es-lcdc" ,
-	"atmel,at91sam9rl-lcdc" ,
-	"atmel,at32ap-lcdc"
-- reg : Should contain 1 register ranges(address and length).
-	Can contain an additional register range(address and length)
-	for fixed framebuffer memory. Useful for dedicated memories.
-- interrupts : framebuffer controller interrupt
-- display: a phandle pointing to the display node
-
-Required nodes:
-- display: a display node is required to initialize the lcd panel
-	This should be in the board dts.
-- default-mode: a videomode within the display with timing parameters
-	as specified below.
-
-Optional properties:
-- lcd-supply: Regulator for LCD supply voltage.
-
-Example:
-
-	fb0: fb@00500000 {
-		compatible = "atmel,at91sam9g45-lcdc";
-		reg = <0x00500000 0x1000>;
-		interrupts = <23 3 0>;
-		pinctrl-names = "default";
-		pinctrl-0 = <&pinctrl_fb>;
-		display = <&display0>;
-		#address-cells = <1>;
-		#size-cells = <1>;
-
-	};
-
-Example for fixed framebuffer memory:
-
-	fb0: fb@00500000 {
-		compatible = "atmel,at91sam9263-lcdc";
-		reg = <0x00700000 0x1000 0x70000000 0x200000>;
-		[...]
-	};
-
-Atmel LCDC Display
------------------------------------------------------
-Required properties (as per of_videomode_helper):
-
- - atmel,dmacon: dma controller configuration
- - atmel,lcdcon2: lcd controller configuration
- - atmel,guard-time: lcd guard time (Delay in frame periods)
- - bits-per-pixel: lcd panel bit-depth.
-
-Optional properties (as per of_videomode_helper):
- - atmel,lcdcon-backlight: enable backlight
- - atmel,lcdcon-backlight-inverted: invert backlight PWM polarity
- - atmel,lcd-wiring-mode: lcd wiring mode "RGB" or "BRG"
- - atmel,power-control-gpio: gpio to power on or off the LCD (as many as needed)
-
-Example:
-	display0: display {
-		bits-per-pixel = <32>;
-		atmel,lcdcon-backlight;
-		atmel,dmacon = <0x1>;
-		atmel,lcdcon2 = <0x80008002>;
-		atmel,guard-time = <9>;
-		atmel,lcd-wiring-mode = <1>;
-
-		display-timings {
-			native-mode = <&timing0>;
-			timing0: timing0 {
-				clock-frequency = <9000000>;
-				hactive = <480>;
-				vactive = <272>;
-				hback-porch = <1>;
-				hfront-porch = <1>;
-				vback-porch = <40>;
-				vfront-porch = <1>;
-				hsync-len = <45>;
-				vsync-len = <1>;
-			};
-		};
-	};
diff --git a/Documentation/devicetree/bindings/display/atmel/lcdc.yaml b/Documentation/devicetree/bindings/display/atmel/lcdc.yaml
new file mode 100644
index 000000000000..7dcb9a4d5902
--- /dev/null
+++ b/Documentation/devicetree/bindings/display/atmel/lcdc.yaml
@@ -0,0 +1,137 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/atmel/lcdc.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Atmel LCDC (LCD Controller) display controller with PWM
+
+maintainers:
+  - Sam Ravnborg <sam@ravnborg.org>
+
+description: |
+  The Atmel LCDC Display Controller is display controller that
+  includes a PWM for backlight/contrast.
+
+properties:
+  compatible:
+    enum:
+      - atmel,at91sam9261-lcdc
+      - atmel,at91sam9263-lcdc
+      - atmel,at91sam9g10-lcdc
+      - atmel,at91sam9g45-lcdc
+      - atmel,at91sam9g45es-lcdc
+      - atmel,at91sam9g46-lcdc
+      - atmel,at91sam9m10-lcdc
+      - atmel,at91sam9m11-lcdc
+      - atmel,at91sam9rl-lcdc
+
+  "#address-cells":
+    const: 1
+  "#size-cells":
+    const: 0
+
+  reg:
+    description: |
+      Contains 1 register range (address and length).
+      Can contain an additional register range (address and length)
+      for fixed framebuffer memory
+
+  interrupts:
+    maxItems: 1
+
+  lcd-supply:
+    description: Regulator for LCD supply voltage.
+
+  display:
+    $ref: /schemas/types.yaml#/definitions/phandle
+    description: phandle to display node
+
+patternProperties:
+  "^display[0-9]$":
+    type: object
+    description: |
+      Display node is required to initialize the lcd panel.
+      This should be in the board dts
+
+    properties:
+            
+      atmel,dmacon:
+        $ref: /schemas/types.yaml#/definitions/uint32
+        description: DMA controller configuration
+
+      atmel,lcdcon2:
+        $ref: /schemas/types.yaml#/definitions/uint32
+        description: LCD controller configuration
+
+      atmel,guard-time:
+        $ref: /schemas/types.yaml#/definitions/uint32
+        description: LCD guard time (Delay in frame periods)
+
+      bits-per-pixel:
+        $ref: /schemas/types.yaml#/definitions/uint32
+        description: LCD panel bit-depth.
+
+      atmel,lcdcon-backlight:
+        type: boolean
+        description: Enable backlight
+
+      atmel,lcdcon-backlight-inverted:
+        type: boolean
+        description: Invert backlight PWM polarity
+
+      atmel,lcd-wiring-mode:
+        enum:
+          - RGB
+          - BGR
+        description: LCD wiring mode
+
+      atmel,power-control-gpio:
+        description: gpio to power on or off the LCD
+
+      display-timings:
+        type: object
+        description: |
+          display-timings node as described in ../display-timings.yaml
+
+    required:
+      - atmel,dmacon
+      - atmel,lcdcon2
+      - atmel,guard-time
+      - bits-per-pixel
+      - display-timings
+
+required:
+  - compatible
+  - reg
+
+examples:
+  - |
+    fb {
+        compatible = "atmel,at91sam9263-lcdc";
+        reg = <0x00700000 0x1000>;
+        interrupts = <23 3 0>;
+        #address-cells = <1>;
+        #size-cells = <0>;
+    };
+
+  - |
+    fb {
+        compatible = "atmel,at91sam9263-lcdc";
+        reg = <0x00700000 0x1000 0x70000000 0x200000>;
+        display = <&display0>;
+
+        display0 {
+            bits-per-pixel = <32>;
+            atmel,lcdcon-backlight;
+            atmel,dmacon = <0x1>;
+            atmel,lcdcon2 = <0x80008002>;
+            atmel,guard-time = <9>;
+            atmel,lcd-wiring-mode = "BGR";
+
+            display-timings {
+            };
+        };
+    };
+
+...
-- 
2.20.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH v1 3/4] dt-bindings: media: add wiring property to video-interfaces
  2020-04-12 18:20 [PATCH v1 0/4] dt-bindings: DT Schema variants of atmel lcdc, hlcdc Sam Ravnborg
  2020-04-12 18:20 ` [PATCH v1 1/4] dt-bindings: display: convert atmel-hlcdc to DT Schema Sam Ravnborg
  2020-04-12 18:20 ` [PATCH v1 2/4] dt-bindings: display: convert atmel lcdc " Sam Ravnborg
@ 2020-04-12 18:20 ` Sam Ravnborg
  2020-04-14 19:40   ` Rob Herring
  2020-04-12 18:20 ` [PATCH v1 4/4] dt-bindings: display: add port support to atmel lcdc Sam Ravnborg
  3 siblings, 1 reply; 14+ messages in thread
From: Sam Ravnborg @ 2020-04-12 18:20 UTC (permalink / raw)
  To: devicetree, Rob Herring, dri-devel
  Cc: Alexandre Belloni, Boris Brezillon, Nicolas Ferre, Hans Verkuil,
	Mauro Carvalho Chehab, Sam Ravnborg, linux-media

The wiring property is used to describe the wiring between
the connector and the panel. The property can be used when the
wiring is used to change the mode from for example
BGR to RGB. The first users are the at91sam9 family where
such a wiring trick is sometimes used.
The possilbe values are so far limited to what is required
by the at91sam9 family, but using "text" allows us to extend
this in the future.

There exists similar properties today:
 - display/tilcdc/tilcdc.txt: blue-and-red-wiring
 - display/atmel,lcdc.txt: atmel,lcd-wiring-mode

Neither of the above are defined as endpoint properties.

The new property "wiring" has a more general name and
is defined as an endpoint property.
It will replace atmel,lcd-wiring-mode and may replace
blue-and-red-wiring.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
Cc: Rob Herring <robh@kernel.org>
Cc: Hans Verkuil <hverkuil@xs4all.nl>
Cc: linux-media@vger.kernel.org
---
 Documentation/devicetree/bindings/media/video-interfaces.txt | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/Documentation/devicetree/bindings/media/video-interfaces.txt b/Documentation/devicetree/bindings/media/video-interfaces.txt
index f884ada0bffc..c3bb87c5c9a9 100644
--- a/Documentation/devicetree/bindings/media/video-interfaces.txt
+++ b/Documentation/devicetree/bindings/media/video-interfaces.txt
@@ -141,6 +141,9 @@ Optional endpoint properties
 - link-frequencies: Allowed data bus frequencies. For MIPI CSI-2, for
   instance, this is the actual frequency of the bus, not bits per clock per
   lane value. An array of 64-bit unsigned integers.
+- wiring: Wiring of data lines to display.
+  "straight" - normal wiring.
+  "red-blue-reversed" - red and blue lines reversed.
 - lane-polarities: an array of polarities of the lanes starting from the clock
   lane and followed by the data lanes in the same order as in data-lanes.
   Valid values are 0 (normal) and 1 (inverted). The length of the array
-- 
2.20.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* [PATCH v1 4/4] dt-bindings: display: add port support to atmel lcdc
  2020-04-12 18:20 [PATCH v1 0/4] dt-bindings: DT Schema variants of atmel lcdc, hlcdc Sam Ravnborg
                   ` (2 preceding siblings ...)
  2020-04-12 18:20 ` [PATCH v1 3/4] dt-bindings: media: add wiring property to video-interfaces Sam Ravnborg
@ 2020-04-12 18:20 ` Sam Ravnborg
  2020-04-14 19:10   ` Rob Herring
  3 siblings, 1 reply; 14+ messages in thread
From: Sam Ravnborg @ 2020-04-12 18:20 UTC (permalink / raw)
  To: devicetree, Rob Herring, dri-devel
  Cc: Alexandre Belloni, Boris Brezillon, Nicolas Ferre, Hans Verkuil,
	Mauro Carvalho Chehab, Sam Ravnborg, linux-media

Update the Atmel LCDC binding to include:
- pwm. Used for backlight
- endpoints using port node
  Used for handle to panel
- Added wiring property that is used to describe
  the wiring between the LCDC and the panel

Existing properties that should not be used in new
bindings are deprecated.

Updated example to include the updated way to specify panel etc.

Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
---
 .../bindings/display/atmel/lcdc.yaml          | 94 ++++++++++++++++++-
 1 file changed, 93 insertions(+), 1 deletion(-)

diff --git a/Documentation/devicetree/bindings/display/atmel/lcdc.yaml b/Documentation/devicetree/bindings/display/atmel/lcdc.yaml
index 7dcb9a4d5902..b5c2628f7805 100644
--- a/Documentation/devicetree/bindings/display/atmel/lcdc.yaml
+++ b/Documentation/devicetree/bindings/display/atmel/lcdc.yaml
@@ -28,6 +28,7 @@ properties:
 
   "#address-cells":
     const: 1
+
   "#size-cells":
     const: 0
 
@@ -43,13 +44,84 @@ properties:
   lcd-supply:
     description: Regulator for LCD supply voltage.
 
+  "#pwm-cells":
+    description:
+      This PWM chip use the default 3 cells bindings
+      defined in ../../pwm/pwm.yaml.
+    const: 3
+
+  clocks:
+    maxItems: 2
+
+  clock-names:
+    maxItems: 2
+    items:
+      - const: lcdc_clk
+      - const: hclk
+
+  port@0:
+    type: object
+    description: Endpoints of the display controller
+
+    properties:
+
+      reg:
+        const: 0
+
+      "#address-cells":
+        const: 1
+
+      "#size-cells":
+        const: 0
+
+      endpoint@0:
+        type: object
+        description: endpoint node that include phandle to panel
+
+        properties:
+
+          reg:
+            const: 0
+
+          wiring:
+            enum:
+              - straight
+              - red-blue-reversed
+            description: |
+              The LCDC is based on a blue-green-red configuration but to adapt
+              to SW only supporting red-green-blue the data lines for red and blue
+              may be reversed.
+              See details in: http://ww1.microchip.com/downloads/en/AppNotes/doc6300.pdf
+              "straight" - default value. Data lines are not reversed, uses BGR
+              "red-blue-reversed" - red and green are reversed, uses RGB
+
+          remote-endpoint:
+            $ref: /schemas/types.yaml#/definitions/phandle
+            description:
+              phandle to the panel node
+
+        required:
+          - reg
+          - remote-endpoint
+
+        additionalProperties: false
+
+    required:
+      - "#address-cells"
+      - "#size-cells"
+      - reg
+
+    additionalProperties: false
+
   display:
     $ref: /schemas/types.yaml#/definitions/phandle
+    deprecated: true
     description: phandle to display node
 
 patternProperties:
   "^display[0-9]$":
     type: object
+    deprecated: true
     description: |
       Display node is required to initialize the lcd panel.
       This should be in the board dts
@@ -107,12 +179,32 @@ required:
 
 examples:
   - |
+    #include <dt-bindings/clock/at91.h>
+    #include <dt-bindings/interrupt-controller/irq.h>
+
     fb {
         compatible = "atmel,at91sam9263-lcdc";
         reg = <0x00700000 0x1000>;
-        interrupts = <23 3 0>;
+        interrupts = <26 IRQ_TYPE_LEVEL_HIGH 3>;
+        clocks = <&pmc PMC_TYPE_PERIPHERAL 26>, <&pmc PMC_TYPE_PERIPHERAL 26>;
+        clock-names = "lcdc_clk", "hclk";
+
+        /* pwm for backlight */
+        #pwm-cells = <3>;
+
         #address-cells = <1>;
         #size-cells = <0>;
+
+        port@0 {
+            reg = <0>;
+            #address-cells = <1>;
+            #size-cells = <0>;
+            endpoint@0 {
+                reg = <0>;
+                wiring = "red-blue-reversed";
+                remote-endpoint = <&panel_input>;
+            };
+        };
     };
 
   - |
-- 
2.20.1

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply related	[flat|nested] 14+ messages in thread

* Re: [PATCH v1 1/4] dt-bindings: display: convert atmel-hlcdc to DT Schema
  2020-04-12 18:20 ` [PATCH v1 1/4] dt-bindings: display: convert atmel-hlcdc to DT Schema Sam Ravnborg
@ 2020-04-14  8:28   ` Maxime Ripard
  2020-04-15 16:39     ` Sam Ravnborg
  0 siblings, 1 reply; 14+ messages in thread
From: Maxime Ripard @ 2020-04-14  8:28 UTC (permalink / raw)
  To: Sam Ravnborg
  Cc: devicetree, Alexandre Belloni, Boris Brezillon, Nicolas Ferre,
	dri-devel, Hans Verkuil, Mauro Carvalho Chehab, linux-media


[-- Attachment #1.1: Type: text/plain, Size: 4474 bytes --]

Hi Sam,

On Sun, Apr 12, 2020 at 08:20:09PM +0200, Sam Ravnborg wrote:
> diff --git a/Documentation/devicetree/bindings/display/atmel/hlcdc-dc.yaml b/Documentation/devicetree/bindings/display/atmel/hlcdc-dc.yaml
> new file mode 100644
> index 000000000000..7eb6266a25a2
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/display/atmel/hlcdc-dc.yaml
> @@ -0,0 +1,102 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/display/atmel/hlcdc-dc.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Atmel HLCDC (High LCD Controller) display controller
> +
> +maintainers:
> +  - Sam Ravnborg <sam@ravnborg.org>
> +  - Boris Brezillon <bbrezillon@kernel.org>
> +
> +description: |
> +  The Atmel HLCDC Display Controller is subdevice of the HLCDC MFD device.
> +  See ../../mfd/atmel-hlcdc.yaml for more details.
> +
> +properties:
> +  compatible:
> +    const: atmel,hlcdc-display-controller
> +
> +  "#address-cells":
> +    const: 1
> +  "#size-cells":
> +    const: 0
> +
> +required:
> +  - compatible
> +  - "#address-cells"
> +  - "#size-cells"
> +
> +patternProperties:
> +  "^port@[0-9]$":
> +    type: object
> +    description: |
> +      A port node with endpoint definitions as defined in
> +      ../../media/video-interfaces.txt
> +
> +    properties:
> +      "#address-cells":
> +        const: 1
> +
> +      "#size-cells":
> +        const: 0
> +
> +      reg:
> +        maxItems: 1
> +        description: The virtual number of the port
> +
> +    patternProperties:
> +      "^endpoint(@[0-9])$":

I guess you meant ^endpoint(@[0-9])?$ instead?

> +        type: object
> +
> +        properties:
> +          reg:
> +            maxItems: 1
> +            description: The virtual number of the endpoint
> +
> +          bus-width:
> +            enum: [12, 16, 18, 24]
> +            description:
> +              Any endpoint node may specify a desired video interface
> +              according to ../../media/video-interfaces.txt, specifically
> +              Recognized values are <12>, <16>, <18> and <24>, and
> +              override any output mode selection heuristic, forcing
> +              "rgb444", "rgb565", "rgb666" and "rgb888" respectively.
> +
> +          remote-endpoint:
> +            $ref: /schemas/types.yaml#/definitions/phandle
> +            description:
> +              phandle to the panel node
> +
> +        required:
> +          - reg

And if so, reg depends on whether the unit-address is set or not, so
you can't really enforce that.

> diff --git a/Documentation/devicetree/bindings/mfd/atmel-hlcdc.yaml b/Documentation/devicetree/bindings/mfd/atmel-hlcdc.yaml
> new file mode 100644
> index 000000000000..cad14fa173a1
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/mfd/atmel-hlcdc.yaml
> @@ -0,0 +1,78 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/mfd/atmel-hlcdc.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Device-Tree bindings for Atmel's HLCDC (High LCD Controller)
> +
> +maintainers:
> +  - Sam Ravnborg <sam@ravnborg.org>
> +  - Boris Brezillon <bbrezillon@kernel.org>
> +
> +properties:
> +  compatible:
> +    enum:
> +      - atmel,at91sam9n12-hlcdc
> +      - atmel,at91sam9x5-hlcdc
> +      - atmel,sama5d2-hlcdc
> +      - atmel,sama5d3-hlcdc
> +      - atmel,sama5d4-hlcdc
> +      - microchip,sam9x60-hlcdc
> +
> +  reg:
> +    maxItems: 1
> +
> +  clocks:
> +    maxItems: 3

Having descirptions of what those clocks are would be nice.

> +  clock-names:
> +    maxItems: 3
> +    items:
> +      - const: periph_clk
> +      - const: sys_clk
> +      - const: slow_clk
> +
> +  interrupts:
> +    description: The HLCDC interrupt line
> +    maxItems: 1
> +
> +  hlcdc_pwm:
> +    type: object
> +    description: |
> +      PWM controller - used for backlight.
> +      See ../pwm/atmel-hlcdc-pwm.yaml for details
> +
> +  hlcdc-display-controller:
> +    type: object
> +    description: |
> +      LCD display controller
> +      See ../display/atmel/hlcdc-dc.yaml for details

I guess you could include those two schemas to make sure that it's
valid? Otherwise, if you have an hlcdc-display-controller (or pwm)
node without a compatible, it will not be checked here, and will not
be checked by the hlcdc-dc.yaml schemas either since it matches on the
compatible.

Maxime

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v1 2/4] dt-bindings: display: convert atmel lcdc to DT Schema
  2020-04-12 18:20 ` [PATCH v1 2/4] dt-bindings: display: convert atmel lcdc " Sam Ravnborg
@ 2020-04-14  8:30   ` Maxime Ripard
  2020-04-15 16:44     ` Sam Ravnborg
  0 siblings, 1 reply; 14+ messages in thread
From: Maxime Ripard @ 2020-04-14  8:30 UTC (permalink / raw)
  To: Sam Ravnborg
  Cc: devicetree, Alexandre Belloni, Boris Brezillon, Nicolas Ferre,
	dri-devel, Hans Verkuil, Mauro Carvalho Chehab, linux-media


[-- Attachment #1.1: Type: text/plain, Size: 6329 bytes --]

On Sun, Apr 12, 2020 at 08:20:10PM +0200, Sam Ravnborg wrote:
> Add a new binding file to describe the bindings
> for the Atmel LCDC IP.
> This replaces the old txt based binding.
>
> The binding file describes the current binding,
> including properties to specify register values etc.
> The binding will be updated in a follow-up patch,
> the current binding describes the actual situation.
>
> This new binding file replaces the old .txt based
> binding which is deleted.
>
> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
> ---
>  .../bindings/display/atmel,lcdc.txt           |  88 -----------
>  .../bindings/display/atmel/lcdc.yaml          | 137 ++++++++++++++++++
>  2 files changed, 137 insertions(+), 88 deletions(-)
>  delete mode 100644 Documentation/devicetree/bindings/display/atmel,lcdc.txt
>  create mode 100644 Documentation/devicetree/bindings/display/atmel/lcdc.yaml
>
> diff --git a/Documentation/devicetree/bindings/display/atmel,lcdc.txt b/Documentation/devicetree/bindings/display/atmel,lcdc.txt
> deleted file mode 100644
> index acb5a0132127..000000000000
> --- a/Documentation/devicetree/bindings/display/atmel,lcdc.txt
> +++ /dev/null
> @@ -1,88 +0,0 @@
> -Atmel LCDC Framebuffer
> ------------------------------------------------------
> -
> -Required properties:
> -- compatible :
> -	"atmel,at91sam9261-lcdc" ,
> -	"atmel,at91sam9263-lcdc" ,
> -	"atmel,at91sam9g10-lcdc" ,
> -	"atmel,at91sam9g45-lcdc" ,
> -	"atmel,at91sam9g45es-lcdc" ,
> -	"atmel,at91sam9rl-lcdc" ,
> -	"atmel,at32ap-lcdc"
> -- reg : Should contain 1 register ranges(address and length).
> -	Can contain an additional register range(address and length)
> -	for fixed framebuffer memory. Useful for dedicated memories.
> -- interrupts : framebuffer controller interrupt
> -- display: a phandle pointing to the display node
> -
> -Required nodes:
> -- display: a display node is required to initialize the lcd panel
> -	This should be in the board dts.
> -- default-mode: a videomode within the display with timing parameters
> -	as specified below.
> -
> -Optional properties:
> -- lcd-supply: Regulator for LCD supply voltage.
> -
> -Example:
> -
> -	fb0: fb@00500000 {
> -		compatible = "atmel,at91sam9g45-lcdc";
> -		reg = <0x00500000 0x1000>;
> -		interrupts = <23 3 0>;
> -		pinctrl-names = "default";
> -		pinctrl-0 = <&pinctrl_fb>;
> -		display = <&display0>;
> -		#address-cells = <1>;
> -		#size-cells = <1>;
> -
> -	};
> -
> -Example for fixed framebuffer memory:
> -
> -	fb0: fb@00500000 {
> -		compatible = "atmel,at91sam9263-lcdc";
> -		reg = <0x00700000 0x1000 0x70000000 0x200000>;
> -		[...]
> -	};
> -
> -Atmel LCDC Display
> ------------------------------------------------------
> -Required properties (as per of_videomode_helper):
> -
> - - atmel,dmacon: dma controller configuration
> - - atmel,lcdcon2: lcd controller configuration
> - - atmel,guard-time: lcd guard time (Delay in frame periods)
> - - bits-per-pixel: lcd panel bit-depth.
> -
> -Optional properties (as per of_videomode_helper):
> - - atmel,lcdcon-backlight: enable backlight
> - - atmel,lcdcon-backlight-inverted: invert backlight PWM polarity
> - - atmel,lcd-wiring-mode: lcd wiring mode "RGB" or "BRG"
> - - atmel,power-control-gpio: gpio to power on or off the LCD (as many as needed)
> -
> -Example:
> -	display0: display {
> -		bits-per-pixel = <32>;
> -		atmel,lcdcon-backlight;
> -		atmel,dmacon = <0x1>;
> -		atmel,lcdcon2 = <0x80008002>;
> -		atmel,guard-time = <9>;
> -		atmel,lcd-wiring-mode = <1>;
> -
> -		display-timings {
> -			native-mode = <&timing0>;
> -			timing0: timing0 {
> -				clock-frequency = <9000000>;
> -				hactive = <480>;
> -				vactive = <272>;
> -				hback-porch = <1>;
> -				hfront-porch = <1>;
> -				vback-porch = <40>;
> -				vfront-porch = <1>;
> -				hsync-len = <45>;
> -				vsync-len = <1>;
> -			};
> -		};
> -	};
> diff --git a/Documentation/devicetree/bindings/display/atmel/lcdc.yaml b/Documentation/devicetree/bindings/display/atmel/lcdc.yaml
> new file mode 100644
> index 000000000000..7dcb9a4d5902
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/display/atmel/lcdc.yaml
> @@ -0,0 +1,137 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/display/atmel/lcdc.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Atmel LCDC (LCD Controller) display controller with PWM
> +
> +maintainers:
> +  - Sam Ravnborg <sam@ravnborg.org>
> +
> +description: |
> +  The Atmel LCDC Display Controller is display controller that
> +  includes a PWM for backlight/contrast.
> +
> +properties:
> +  compatible:
> +    enum:
> +      - atmel,at91sam9261-lcdc
> +      - atmel,at91sam9263-lcdc
> +      - atmel,at91sam9g10-lcdc
> +      - atmel,at91sam9g45-lcdc
> +      - atmel,at91sam9g45es-lcdc
> +      - atmel,at91sam9g46-lcdc
> +      - atmel,at91sam9m10-lcdc
> +      - atmel,at91sam9m11-lcdc
> +      - atmel,at91sam9rl-lcdc
> +
> +  "#address-cells":
> +    const: 1
> +  "#size-cells":
> +    const: 0
> +
> +  reg:
> +    description: |
> +      Contains 1 register range (address and length).
> +      Can contain an additional register range (address and length)
> +      for fixed framebuffer memory

So, minItems: 1 , maxItems: 2?

> +  interrupts:
> +    maxItems: 1
> +
> +  lcd-supply:
> +    description: Regulator for LCD supply voltage.
> +
> +  display:
> +    $ref: /schemas/types.yaml#/definitions/phandle
> +    description: phandle to display node
> +
> +patternProperties:
> +  "^display[0-9]$":
> +    type: object
> +    description: |
> +      Display node is required to initialize the lcd panel.
> +      This should be in the board dts
> +
> +    properties:
> +
> +      atmel,dmacon:
> +        $ref: /schemas/types.yaml#/definitions/uint32
> +        description: DMA controller configuration
> +
> +      atmel,lcdcon2:
> +        $ref: /schemas/types.yaml#/definitions/uint32
> +        description: LCD controller configuration
> +
> +      atmel,guard-time:
> +        $ref: /schemas/types.yaml#/definitions/uint32
> +        description: LCD guard time (Delay in frame periods)
> +
> +      bits-per-pixel:
> +        $ref: /schemas/types.yaml#/definitions/uint32
> +        description: LCD panel bit-depth.

Those properties aren't documented anywhere?

Maxime

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v1 4/4] dt-bindings: display: add port support to atmel lcdc
  2020-04-12 18:20 ` [PATCH v1 4/4] dt-bindings: display: add port support to atmel lcdc Sam Ravnborg
@ 2020-04-14 19:10   ` Rob Herring
  0 siblings, 0 replies; 14+ messages in thread
From: Rob Herring @ 2020-04-14 19:10 UTC (permalink / raw)
  To: Sam Ravnborg
  Cc: devicetree, Alexandre Belloni, Boris Brezillon, Nicolas Ferre,
	dri-devel, Hans Verkuil, Mauro Carvalho Chehab, linux-media

On Sun, Apr 12, 2020 at 08:20:12PM +0200, Sam Ravnborg wrote:
> Update the Atmel LCDC binding to include:
> - pwm. Used for backlight
> - endpoints using port node
>   Used for handle to panel
> - Added wiring property that is used to describe
>   the wiring between the LCDC and the panel
> 
> Existing properties that should not be used in new
> bindings are deprecated.
> 
> Updated example to include the updated way to specify panel etc.
> 
> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
> ---
>  .../bindings/display/atmel/lcdc.yaml          | 94 ++++++++++++++++++-
>  1 file changed, 93 insertions(+), 1 deletion(-)
> 
> diff --git a/Documentation/devicetree/bindings/display/atmel/lcdc.yaml b/Documentation/devicetree/bindings/display/atmel/lcdc.yaml
> index 7dcb9a4d5902..b5c2628f7805 100644
> --- a/Documentation/devicetree/bindings/display/atmel/lcdc.yaml
> +++ b/Documentation/devicetree/bindings/display/atmel/lcdc.yaml
> @@ -28,6 +28,7 @@ properties:
>  
>    "#address-cells":
>      const: 1
> +
>    "#size-cells":
>      const: 0
>  
> @@ -43,13 +44,84 @@ properties:
>    lcd-supply:
>      description: Regulator for LCD supply voltage.
>  
> +  "#pwm-cells":
> +    description:
> +      This PWM chip use the default 3 cells bindings
> +      defined in ../../pwm/pwm.yaml.
> +    const: 3
> +
> +  clocks:
> +    maxItems: 2
> +
> +  clock-names:
> +    maxItems: 2
> +    items:
> +      - const: lcdc_clk
> +      - const: hclk
> +
> +  port@0:

Just 'port' if there's only 1.

> +    type: object
> +    description: Endpoints of the display controller
> +
> +    properties:
> +
> +      reg:
> +        const: 0
> +
> +      "#address-cells":
> +        const: 1
> +
> +      "#size-cells":
> +        const: 0
> +
> +      endpoint@0:

Just 'endpoint' if there's only 1.

> +        type: object
> +        description: endpoint node that include phandle to panel
> +
> +        properties:
> +
> +          reg:
> +            const: 0
> +
> +          wiring:
> +            enum:
> +              - straight
> +              - red-blue-reversed
> +            description: |
> +              The LCDC is based on a blue-green-red configuration but to adapt
> +              to SW only supporting red-green-blue the data lines for red and blue
> +              may be reversed.
> +              See details in: http://ww1.microchip.com/downloads/en/AppNotes/doc6300.pdf
> +              "straight" - default value. Data lines are not reversed, uses BGR
> +              "red-blue-reversed" - red and green are reversed, uses RGB
> +
> +          remote-endpoint:
> +            $ref: /schemas/types.yaml#/definitions/phandle
> +            description:
> +              phandle to the panel node
> +
> +        required:
> +          - reg
> +          - remote-endpoint
> +
> +        additionalProperties: false
> +
> +    required:
> +      - "#address-cells"
> +      - "#size-cells"
> +      - reg
> +
> +    additionalProperties: false
> +
>    display:
>      $ref: /schemas/types.yaml#/definitions/phandle
> +    deprecated: true
>      description: phandle to display node
>  
>  patternProperties:
>    "^display[0-9]$":
>      type: object
> +    deprecated: true
>      description: |
>        Display node is required to initialize the lcd panel.
>        This should be in the board dts
> @@ -107,12 +179,32 @@ required:
>  
>  examples:
>    - |
> +    #include <dt-bindings/clock/at91.h>
> +    #include <dt-bindings/interrupt-controller/irq.h>
> +
>      fb {
>          compatible = "atmel,at91sam9263-lcdc";
>          reg = <0x00700000 0x1000>;
> -        interrupts = <23 3 0>;
> +        interrupts = <26 IRQ_TYPE_LEVEL_HIGH 3>;
> +        clocks = <&pmc PMC_TYPE_PERIPHERAL 26>, <&pmc PMC_TYPE_PERIPHERAL 26>;
> +        clock-names = "lcdc_clk", "hclk";
> +
> +        /* pwm for backlight */
> +        #pwm-cells = <3>;
> +
>          #address-cells = <1>;
>          #size-cells = <0>;
> +
> +        port@0 {
> +            reg = <0>;
> +            #address-cells = <1>;
> +            #size-cells = <0>;
> +            endpoint@0 {
> +                reg = <0>;
> +                wiring = "red-blue-reversed";
> +                remote-endpoint = <&panel_input>;
> +            };
> +        };
>      };
>  
>    - |
> -- 
> 2.20.1
> 
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v1 3/4] dt-bindings: media: add wiring property to video-interfaces
  2020-04-12 18:20 ` [PATCH v1 3/4] dt-bindings: media: add wiring property to video-interfaces Sam Ravnborg
@ 2020-04-14 19:40   ` Rob Herring
  2020-04-15 16:45     ` Sam Ravnborg
  0 siblings, 1 reply; 14+ messages in thread
From: Rob Herring @ 2020-04-14 19:40 UTC (permalink / raw)
  To: Sam Ravnborg
  Cc: devicetree, Alexandre Belloni, Boris Brezillon, Nicolas Ferre,
	dri-devel, Hans Verkuil, Mauro Carvalho Chehab, linux-media

On Sun, Apr 12, 2020 at 08:20:11PM +0200, Sam Ravnborg wrote:
> The wiring property is used to describe the wiring between
> the connector and the panel. The property can be used when the
> wiring is used to change the mode from for example
> BGR to RGB. The first users are the at91sam9 family where
> such a wiring trick is sometimes used.
> The possilbe values are so far limited to what is required
> by the at91sam9 family, but using "text" allows us to extend
> this in the future.
> 
> There exists similar properties today:
>  - display/tilcdc/tilcdc.txt: blue-and-red-wiring
>  - display/atmel,lcdc.txt: atmel,lcd-wiring-mode
> 
> Neither of the above are defined as endpoint properties.
> 
> The new property "wiring" has a more general name and
> is defined as an endpoint property.
> It will replace atmel,lcd-wiring-mode and may replace
> blue-and-red-wiring.
> 
> Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
> Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
> Cc: Rob Herring <robh@kernel.org>
> Cc: Hans Verkuil <hverkuil@xs4all.nl>
> Cc: linux-media@vger.kernel.org
> ---
>  Documentation/devicetree/bindings/media/video-interfaces.txt | 3 +++
>  1 file changed, 3 insertions(+)
> 
> diff --git a/Documentation/devicetree/bindings/media/video-interfaces.txt b/Documentation/devicetree/bindings/media/video-interfaces.txt
> index f884ada0bffc..c3bb87c5c9a9 100644
> --- a/Documentation/devicetree/bindings/media/video-interfaces.txt
> +++ b/Documentation/devicetree/bindings/media/video-interfaces.txt
> @@ -141,6 +141,9 @@ Optional endpoint properties
>  - link-frequencies: Allowed data bus frequencies. For MIPI CSI-2, for
>    instance, this is the actual frequency of the bus, not bits per clock per
>    lane value. An array of 64-bit unsigned integers.
> +- wiring: Wiring of data lines to display.
> +  "straight" - normal wiring.

Don't really need a property to express this...

> +  "red-blue-reversed" - red and blue lines reversed.

For a common property, I think this needs to be looked at in terms of 
formats and some of the format negotiation work Boris was doing.

Rob
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v1 1/4] dt-bindings: display: convert atmel-hlcdc to DT Schema
  2020-04-14  8:28   ` Maxime Ripard
@ 2020-04-15 16:39     ` Sam Ravnborg
  2020-04-16  7:28       ` Maxime Ripard
  0 siblings, 1 reply; 14+ messages in thread
From: Sam Ravnborg @ 2020-04-15 16:39 UTC (permalink / raw)
  To: Maxime Ripard
  Cc: devicetree, Alexandre Belloni, Boris Brezillon, Nicolas Ferre,
	dri-devel, Hans Verkuil, Mauro Carvalho Chehab, linux-media

Hi Maxime.

On Tue, Apr 14, 2020 at 10:28:03AM +0200, Maxime Ripard wrote:
> Hi Sam,
> 
> On Sun, Apr 12, 2020 at 08:20:09PM +0200, Sam Ravnborg wrote:
> > diff --git a/Documentation/devicetree/bindings/display/atmel/hlcdc-dc.yaml b/Documentation/devicetree/bindings/display/atmel/hlcdc-dc.yaml
> > new file mode 100644
> > index 000000000000..7eb6266a25a2
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/display/atmel/hlcdc-dc.yaml
> > @@ -0,0 +1,102 @@
> > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/display/atmel/hlcdc-dc.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: Atmel HLCDC (High LCD Controller) display controller
> > +
> > +maintainers:
> > +  - Sam Ravnborg <sam@ravnborg.org>
> > +  - Boris Brezillon <bbrezillon@kernel.org>
> > +
> > +description: |
> > +  The Atmel HLCDC Display Controller is subdevice of the HLCDC MFD device.
> > +  See ../../mfd/atmel-hlcdc.yaml for more details.
> > +
> > +properties:
> > +  compatible:
> > +    const: atmel,hlcdc-display-controller
> > +
> > +  "#address-cells":
> > +    const: 1
> > +  "#size-cells":
> > +    const: 0
> > +
> > +required:
> > +  - compatible
> > +  - "#address-cells"
> > +  - "#size-cells"
> > +
> > +patternProperties:
> > +  "^port@[0-9]$":
> > +    type: object
> > +    description: |
> > +      A port node with endpoint definitions as defined in
> > +      ../../media/video-interfaces.txt
> > +
> > +    properties:
> > +      "#address-cells":
> > +        const: 1
> > +
> > +      "#size-cells":
> > +        const: 0
> > +
> > +      reg:
> > +        maxItems: 1
> > +        description: The virtual number of the port
> > +
> > +    patternProperties:
> > +      "^endpoint(@[0-9])$":
> 
> I guess you meant ^endpoint(@[0-9])?$ instead?
I think "^endpoint@[0-9]$" will do the trick.
No need for endpoints with numbers higher than 9.


> 
> > +        type: object
> > +
> > +        properties:
> > +          reg:
> > +            maxItems: 1
> > +            description: The virtual number of the endpoint
> > +
> > +          bus-width:
> > +            enum: [12, 16, 18, 24]
> > +            description:
> > +              Any endpoint node may specify a desired video interface
> > +              according to ../../media/video-interfaces.txt, specifically
> > +              Recognized values are <12>, <16>, <18> and <24>, and
> > +              override any output mode selection heuristic, forcing
> > +              "rgb444", "rgb565", "rgb666" and "rgb888" respectively.
> > +
> > +          remote-endpoint:
> > +            $ref: /schemas/types.yaml#/definitions/phandle
> > +            description:
> > +              phandle to the panel node
> > +
> > +        required:
> > +          - reg
> 
> And if so, reg depends on whether the unit-address is set or not, so
> you can't really enforce that.
> 
> > diff --git a/Documentation/devicetree/bindings/mfd/atmel-hlcdc.yaml b/Documentation/devicetree/bindings/mfd/atmel-hlcdc.yaml
> > new file mode 100644
> > index 000000000000..cad14fa173a1
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/mfd/atmel-hlcdc.yaml
> > @@ -0,0 +1,78 @@
> > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/mfd/atmel-hlcdc.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: Device-Tree bindings for Atmel's HLCDC (High LCD Controller)
> > +
> > +maintainers:
> > +  - Sam Ravnborg <sam@ravnborg.org>
> > +  - Boris Brezillon <bbrezillon@kernel.org>
> > +
> > +properties:
> > +  compatible:
> > +    enum:
> > +      - atmel,at91sam9n12-hlcdc
> > +      - atmel,at91sam9x5-hlcdc
> > +      - atmel,sama5d2-hlcdc
> > +      - atmel,sama5d3-hlcdc
> > +      - atmel,sama5d4-hlcdc
> > +      - microchip,sam9x60-hlcdc
> > +
> > +  reg:
> > +    maxItems: 1
> > +
> > +  clocks:
> > +    maxItems: 3
> 
> Having descirptions of what those clocks are would be nice.
OK, will dig them up from the data sheet

> 
> > +  clock-names:
> > +    maxItems: 3
> > +    items:
> > +      - const: periph_clk
> > +      - const: sys_clk
> > +      - const: slow_clk
> > +
> > +  interrupts:
> > +    description: The HLCDC interrupt line
> > +    maxItems: 1
> > +
> > +  hlcdc_pwm:
> > +    type: object
> > +    description: |
> > +      PWM controller - used for backlight.
> > +      See ../pwm/atmel-hlcdc-pwm.yaml for details
> > +
> > +  hlcdc-display-controller:
> > +    type: object
> > +    description: |
> > +      LCD display controller
> > +      See ../display/atmel/hlcdc-dc.yaml for details
> 
> I guess you could include those two schemas to make sure that it's
> valid? Otherwise, if you have an hlcdc-display-controller (or pwm)
> node without a compatible, it will not be checked here, and will not
> be checked by the hlcdc-dc.yaml schemas either since it matches on the
> compatible.

Good point - will fix in v2.
Thanks for the feedback.

	Sam
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v1 2/4] dt-bindings: display: convert atmel lcdc to DT Schema
  2020-04-14  8:30   ` Maxime Ripard
@ 2020-04-15 16:44     ` Sam Ravnborg
  2020-04-16  7:31       ` Maxime Ripard
  0 siblings, 1 reply; 14+ messages in thread
From: Sam Ravnborg @ 2020-04-15 16:44 UTC (permalink / raw)
  To: Maxime Ripard
  Cc: devicetree, Alexandre Belloni, Boris Brezillon, Nicolas Ferre,
	dri-devel, Hans Verkuil, Mauro Carvalho Chehab, linux-media

Hi Maxime.

On Tue, Apr 14, 2020 at 10:30:10AM +0200, Maxime Ripard wrote:
> On Sun, Apr 12, 2020 at 08:20:10PM +0200, Sam Ravnborg wrote:
> > Add a new binding file to describe the bindings
> > for the Atmel LCDC IP.
> > This replaces the old txt based binding.
> >
> > The binding file describes the current binding,
> > including properties to specify register values etc.
> > The binding will be updated in a follow-up patch,
> > the current binding describes the actual situation.
> >
> > This new binding file replaces the old .txt based
> > binding which is deleted.
> >
> > Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
> > ---
> >  .../bindings/display/atmel,lcdc.txt           |  88 -----------
> >  .../bindings/display/atmel/lcdc.yaml          | 137 ++++++++++++++++++
> >  2 files changed, 137 insertions(+), 88 deletions(-)
> >  delete mode 100644 Documentation/devicetree/bindings/display/atmel,lcdc.txt
> >  create mode 100644 Documentation/devicetree/bindings/display/atmel/lcdc.yaml
> >
> > diff --git a/Documentation/devicetree/bindings/display/atmel,lcdc.txt b/Documentation/devicetree/bindings/display/atmel,lcdc.txt
> > deleted file mode 100644
> > index acb5a0132127..000000000000
> > --- a/Documentation/devicetree/bindings/display/atmel,lcdc.txt
> > +++ /dev/null
> > @@ -1,88 +0,0 @@
> > -Atmel LCDC Framebuffer
> > ------------------------------------------------------
> > -
> > -Required properties:
> > -- compatible :
> > -	"atmel,at91sam9261-lcdc" ,
> > -	"atmel,at91sam9263-lcdc" ,
> > -	"atmel,at91sam9g10-lcdc" ,
> > -	"atmel,at91sam9g45-lcdc" ,
> > -	"atmel,at91sam9g45es-lcdc" ,
> > -	"atmel,at91sam9rl-lcdc" ,
> > -	"atmel,at32ap-lcdc"
> > -- reg : Should contain 1 register ranges(address and length).
> > -	Can contain an additional register range(address and length)
> > -	for fixed framebuffer memory. Useful for dedicated memories.
> > -- interrupts : framebuffer controller interrupt
> > -- display: a phandle pointing to the display node
> > -
> > -Required nodes:
> > -- display: a display node is required to initialize the lcd panel
> > -	This should be in the board dts.
> > -- default-mode: a videomode within the display with timing parameters
> > -	as specified below.
> > -
> > -Optional properties:
> > -- lcd-supply: Regulator for LCD supply voltage.
> > -
> > -Example:
> > -
> > -	fb0: fb@00500000 {
> > -		compatible = "atmel,at91sam9g45-lcdc";
> > -		reg = <0x00500000 0x1000>;
> > -		interrupts = <23 3 0>;
> > -		pinctrl-names = "default";
> > -		pinctrl-0 = <&pinctrl_fb>;
> > -		display = <&display0>;
> > -		#address-cells = <1>;
> > -		#size-cells = <1>;
> > -
> > -	};
> > -
> > -Example for fixed framebuffer memory:
> > -
> > -	fb0: fb@00500000 {
> > -		compatible = "atmel,at91sam9263-lcdc";
> > -		reg = <0x00700000 0x1000 0x70000000 0x200000>;
> > -		[...]
> > -	};
> > -
> > -Atmel LCDC Display
> > ------------------------------------------------------
> > -Required properties (as per of_videomode_helper):
> > -
> > - - atmel,dmacon: dma controller configuration
> > - - atmel,lcdcon2: lcd controller configuration
> > - - atmel,guard-time: lcd guard time (Delay in frame periods)
> > - - bits-per-pixel: lcd panel bit-depth.
> > -
> > -Optional properties (as per of_videomode_helper):
> > - - atmel,lcdcon-backlight: enable backlight
> > - - atmel,lcdcon-backlight-inverted: invert backlight PWM polarity
> > - - atmel,lcd-wiring-mode: lcd wiring mode "RGB" or "BRG"
> > - - atmel,power-control-gpio: gpio to power on or off the LCD (as many as needed)
> > -
> > -Example:
> > -	display0: display {
> > -		bits-per-pixel = <32>;
> > -		atmel,lcdcon-backlight;
> > -		atmel,dmacon = <0x1>;
> > -		atmel,lcdcon2 = <0x80008002>;
> > -		atmel,guard-time = <9>;
> > -		atmel,lcd-wiring-mode = <1>;
> > -
> > -		display-timings {
> > -			native-mode = <&timing0>;
> > -			timing0: timing0 {
> > -				clock-frequency = <9000000>;
> > -				hactive = <480>;
> > -				vactive = <272>;
> > -				hback-porch = <1>;
> > -				hfront-porch = <1>;
> > -				vback-porch = <40>;
> > -				vfront-porch = <1>;
> > -				hsync-len = <45>;
> > -				vsync-len = <1>;
> > -			};
> > -		};
> > -	};
> > diff --git a/Documentation/devicetree/bindings/display/atmel/lcdc.yaml b/Documentation/devicetree/bindings/display/atmel/lcdc.yaml
> > new file mode 100644
> > index 000000000000..7dcb9a4d5902
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/display/atmel/lcdc.yaml
> > @@ -0,0 +1,137 @@
> > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > +%YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/display/atmel/lcdc.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: Atmel LCDC (LCD Controller) display controller with PWM
> > +
> > +maintainers:
> > +  - Sam Ravnborg <sam@ravnborg.org>
> > +
> > +description: |
> > +  The Atmel LCDC Display Controller is display controller that
> > +  includes a PWM for backlight/contrast.
> > +
> > +properties:
> > +  compatible:
> > +    enum:
> > +      - atmel,at91sam9261-lcdc
> > +      - atmel,at91sam9263-lcdc
> > +      - atmel,at91sam9g10-lcdc
> > +      - atmel,at91sam9g45-lcdc
> > +      - atmel,at91sam9g45es-lcdc
> > +      - atmel,at91sam9g46-lcdc
> > +      - atmel,at91sam9m10-lcdc
> > +      - atmel,at91sam9m11-lcdc
> > +      - atmel,at91sam9rl-lcdc
> > +
> > +  "#address-cells":
> > +    const: 1
> > +  "#size-cells":
> > +    const: 0
> > +
> > +  reg:
> > +    description: |
> > +      Contains 1 register range (address and length).
> > +      Can contain an additional register range (address and length)
> > +      for fixed framebuffer memory
> 
> So, minItems: 1 , maxItems: 2?
The syntax is either:
    
    reg = <0x00700000 0x1000>;

or

    reg = <0x00700000 0x1000 0x70000000 0x200000>;

So always minItems: 1

> 
> > +  interrupts:
> > +    maxItems: 1
> > +
> > +  lcd-supply:
> > +    description: Regulator for LCD supply voltage.
> > +
> > +  display:
> > +    $ref: /schemas/types.yaml#/definitions/phandle
> > +    description: phandle to display node
> > +
> > +patternProperties:
> > +  "^display[0-9]$":
> > +    type: object
> > +    description: |
> > +      Display node is required to initialize the lcd panel.
> > +      This should be in the board dts
> > +
> > +    properties:
> > +
> > +      atmel,dmacon:
> > +        $ref: /schemas/types.yaml#/definitions/uint32
> > +        description: DMA controller configuration
> > +
> > +      atmel,lcdcon2:
> > +        $ref: /schemas/types.yaml#/definitions/uint32
> > +        description: LCD controller configuration
> > +
> > +      atmel,guard-time:
> > +        $ref: /schemas/types.yaml#/definitions/uint32
> > +        description: LCD guard time (Delay in frame periods)
> > +
> > +      bits-per-pixel:
> > +        $ref: /schemas/types.yaml#/definitions/uint32
> > +        description: LCD panel bit-depth.
> 
> Those properties aren't documented anywhere?
Not more than this and then by their use in the driver(s).

In the current patchset the node is deprecated in next patch.
I plan to do in two patches:
  - delete properites which is not used in kernel, barebox, u-boot)
  - Mark all the old properties deprecated

And for the soon-to-be deprecated properties we need no detailed
description.

	Sam
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v1 3/4] dt-bindings: media: add wiring property to video-interfaces
  2020-04-14 19:40   ` Rob Herring
@ 2020-04-15 16:45     ` Sam Ravnborg
  0 siblings, 0 replies; 14+ messages in thread
From: Sam Ravnborg @ 2020-04-15 16:45 UTC (permalink / raw)
  To: Rob Herring
  Cc: devicetree, Alexandre Belloni, Boris Brezillon, Nicolas Ferre,
	dri-devel, Hans Verkuil, Mauro Carvalho Chehab, linux-media

Hi Rob.

On Tue, Apr 14, 2020 at 02:40:54PM -0500, Rob Herring wrote:
> On Sun, Apr 12, 2020 at 08:20:11PM +0200, Sam Ravnborg wrote:
> > The wiring property is used to describe the wiring between
> > the connector and the panel. The property can be used when the
> > wiring is used to change the mode from for example
> > BGR to RGB. The first users are the at91sam9 family where
> > such a wiring trick is sometimes used.
> > The possilbe values are so far limited to what is required
> > by the at91sam9 family, but using "text" allows us to extend
> > this in the future.
> > 
> > There exists similar properties today:
> >  - display/tilcdc/tilcdc.txt: blue-and-red-wiring
> >  - display/atmel,lcdc.txt: atmel,lcd-wiring-mode
> > 
> > Neither of the above are defined as endpoint properties.
> > 
> > The new property "wiring" has a more general name and
> > is defined as an endpoint property.
> > It will replace atmel,lcd-wiring-mode and may replace
> > blue-and-red-wiring.
> > 
> > Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
> > Cc: Mauro Carvalho Chehab <mchehab@kernel.org>
> > Cc: Rob Herring <robh@kernel.org>
> > Cc: Hans Verkuil <hverkuil@xs4all.nl>
> > Cc: linux-media@vger.kernel.org
> > ---
> >  Documentation/devicetree/bindings/media/video-interfaces.txt | 3 +++
> >  1 file changed, 3 insertions(+)
> > 
> > diff --git a/Documentation/devicetree/bindings/media/video-interfaces.txt b/Documentation/devicetree/bindings/media/video-interfaces.txt
> > index f884ada0bffc..c3bb87c5c9a9 100644
> > --- a/Documentation/devicetree/bindings/media/video-interfaces.txt
> > +++ b/Documentation/devicetree/bindings/media/video-interfaces.txt
> > @@ -141,6 +141,9 @@ Optional endpoint properties
> >  - link-frequencies: Allowed data bus frequencies. For MIPI CSI-2, for
> >    instance, this is the actual frequency of the bus, not bits per clock per
> >    lane value. An array of 64-bit unsigned integers.
> > +- wiring: Wiring of data lines to display.
> > +  "straight" - normal wiring.
> 
> Don't really need a property to express this...
> 
> > +  "red-blue-reversed" - red and blue lines reversed.
> 
> For a common property, I think this needs to be looked at in terms of 
> formats and some of the format negotiation work Boris was doing.

OK, I will bite the bullet and try to understand this good enough
to come up with a proposal.
I will delay the conversion a bit, but we are in no hurry.

	Sam
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v1 1/4] dt-bindings: display: convert atmel-hlcdc to DT Schema
  2020-04-15 16:39     ` Sam Ravnborg
@ 2020-04-16  7:28       ` Maxime Ripard
  0 siblings, 0 replies; 14+ messages in thread
From: Maxime Ripard @ 2020-04-16  7:28 UTC (permalink / raw)
  To: Sam Ravnborg
  Cc: devicetree, Alexandre Belloni, Boris Brezillon, Nicolas Ferre,
	dri-devel, Hans Verkuil, Mauro Carvalho Chehab, linux-media


[-- Attachment #1.1: Type: text/plain, Size: 2395 bytes --]

On Wed, Apr 15, 2020 at 06:39:56PM +0200, Sam Ravnborg wrote:
> Hi Maxime.
>
> On Tue, Apr 14, 2020 at 10:28:03AM +0200, Maxime Ripard wrote:
> > Hi Sam,
> >
> > On Sun, Apr 12, 2020 at 08:20:09PM +0200, Sam Ravnborg wrote:
> > > diff --git a/Documentation/devicetree/bindings/display/atmel/hlcdc-dc.yaml b/Documentation/devicetree/bindings/display/atmel/hlcdc-dc.yaml
> > > new file mode 100644
> > > index 000000000000..7eb6266a25a2
> > > --- /dev/null
> > > +++ b/Documentation/devicetree/bindings/display/atmel/hlcdc-dc.yaml
> > > @@ -0,0 +1,102 @@
> > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > > +%YAML 1.2
> > > +---
> > > +$id: http://devicetree.org/schemas/display/atmel/hlcdc-dc.yaml#
> > > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > > +
> > > +title: Atmel HLCDC (High LCD Controller) display controller
> > > +
> > > +maintainers:
> > > +  - Sam Ravnborg <sam@ravnborg.org>
> > > +  - Boris Brezillon <bbrezillon@kernel.org>
> > > +
> > > +description: |
> > > +  The Atmel HLCDC Display Controller is subdevice of the HLCDC MFD device.
> > > +  See ../../mfd/atmel-hlcdc.yaml for more details.
> > > +
> > > +properties:
> > > +  compatible:
> > > +    const: atmel,hlcdc-display-controller
> > > +
> > > +  "#address-cells":
> > > +    const: 1
> > > +  "#size-cells":
> > > +    const: 0
> > > +
> > > +required:
> > > +  - compatible
> > > +  - "#address-cells"
> > > +  - "#size-cells"
> > > +
> > > +patternProperties:
> > > +  "^port@[0-9]$":
> > > +    type: object
> > > +    description: |
> > > +      A port node with endpoint definitions as defined in
> > > +      ../../media/video-interfaces.txt
> > > +
> > > +    properties:
> > > +      "#address-cells":
> > > +        const: 1
> > > +
> > > +      "#size-cells":
> > > +        const: 0
> > > +
> > > +      reg:
> > > +        maxItems: 1
> > > +        description: The virtual number of the port
> > > +
> > > +    patternProperties:
> > > +      "^endpoint(@[0-9])$":
> >
> > I guess you meant ^endpoint(@[0-9])?$ instead?
>
> I think "^endpoint@[0-9]$" will do the trick.
> No need for endpoints with numbers higher than 9.

If you want to stick to pedantic DT, then if there's a single
endpoint, you should avoid reg and the unit-address, and this is
something that dtc will complain about (even though it's silenced in
Linux), so yeah, ? seems the way to go.

Maxime

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 14+ messages in thread

* Re: [PATCH v1 2/4] dt-bindings: display: convert atmel lcdc to DT Schema
  2020-04-15 16:44     ` Sam Ravnborg
@ 2020-04-16  7:31       ` Maxime Ripard
  0 siblings, 0 replies; 14+ messages in thread
From: Maxime Ripard @ 2020-04-16  7:31 UTC (permalink / raw)
  To: Sam Ravnborg
  Cc: devicetree, Alexandre Belloni, Boris Brezillon, Nicolas Ferre,
	dri-devel, Hans Verkuil, Mauro Carvalho Chehab, linux-media


[-- Attachment #1.1: Type: text/plain, Size: 7987 bytes --]

On Wed, Apr 15, 2020 at 06:44:27PM +0200, Sam Ravnborg wrote:
> Hi Maxime.
>
> On Tue, Apr 14, 2020 at 10:30:10AM +0200, Maxime Ripard wrote:
> > On Sun, Apr 12, 2020 at 08:20:10PM +0200, Sam Ravnborg wrote:
> > > Add a new binding file to describe the bindings
> > > for the Atmel LCDC IP.
> > > This replaces the old txt based binding.
> > >
> > > The binding file describes the current binding,
> > > including properties to specify register values etc.
> > > The binding will be updated in a follow-up patch,
> > > the current binding describes the actual situation.
> > >
> > > This new binding file replaces the old .txt based
> > > binding which is deleted.
> > >
> > > Signed-off-by: Sam Ravnborg <sam@ravnborg.org>
> > > ---
> > >  .../bindings/display/atmel,lcdc.txt           |  88 -----------
> > >  .../bindings/display/atmel/lcdc.yaml          | 137 ++++++++++++++++++
> > >  2 files changed, 137 insertions(+), 88 deletions(-)
> > >  delete mode 100644 Documentation/devicetree/bindings/display/atmel,lcdc.txt
> > >  create mode 100644 Documentation/devicetree/bindings/display/atmel/lcdc.yaml
> > >
> > > diff --git a/Documentation/devicetree/bindings/display/atmel,lcdc.txt b/Documentation/devicetree/bindings/display/atmel,lcdc.txt
> > > deleted file mode 100644
> > > index acb5a0132127..000000000000
> > > --- a/Documentation/devicetree/bindings/display/atmel,lcdc.txt
> > > +++ /dev/null
> > > @@ -1,88 +0,0 @@
> > > -Atmel LCDC Framebuffer
> > > ------------------------------------------------------
> > > -
> > > -Required properties:
> > > -- compatible :
> > > -	"atmel,at91sam9261-lcdc" ,
> > > -	"atmel,at91sam9263-lcdc" ,
> > > -	"atmel,at91sam9g10-lcdc" ,
> > > -	"atmel,at91sam9g45-lcdc" ,
> > > -	"atmel,at91sam9g45es-lcdc" ,
> > > -	"atmel,at91sam9rl-lcdc" ,
> > > -	"atmel,at32ap-lcdc"
> > > -- reg : Should contain 1 register ranges(address and length).
> > > -	Can contain an additional register range(address and length)
> > > -	for fixed framebuffer memory. Useful for dedicated memories.
> > > -- interrupts : framebuffer controller interrupt
> > > -- display: a phandle pointing to the display node
> > > -
> > > -Required nodes:
> > > -- display: a display node is required to initialize the lcd panel
> > > -	This should be in the board dts.
> > > -- default-mode: a videomode within the display with timing parameters
> > > -	as specified below.
> > > -
> > > -Optional properties:
> > > -- lcd-supply: Regulator for LCD supply voltage.
> > > -
> > > -Example:
> > > -
> > > -	fb0: fb@00500000 {
> > > -		compatible = "atmel,at91sam9g45-lcdc";
> > > -		reg = <0x00500000 0x1000>;
> > > -		interrupts = <23 3 0>;
> > > -		pinctrl-names = "default";
> > > -		pinctrl-0 = <&pinctrl_fb>;
> > > -		display = <&display0>;
> > > -		#address-cells = <1>;
> > > -		#size-cells = <1>;
> > > -
> > > -	};
> > > -
> > > -Example for fixed framebuffer memory:
> > > -
> > > -	fb0: fb@00500000 {
> > > -		compatible = "atmel,at91sam9263-lcdc";
> > > -		reg = <0x00700000 0x1000 0x70000000 0x200000>;
> > > -		[...]
> > > -	};
> > > -
> > > -Atmel LCDC Display
> > > ------------------------------------------------------
> > > -Required properties (as per of_videomode_helper):
> > > -
> > > - - atmel,dmacon: dma controller configuration
> > > - - atmel,lcdcon2: lcd controller configuration
> > > - - atmel,guard-time: lcd guard time (Delay in frame periods)
> > > - - bits-per-pixel: lcd panel bit-depth.
> > > -
> > > -Optional properties (as per of_videomode_helper):
> > > - - atmel,lcdcon-backlight: enable backlight
> > > - - atmel,lcdcon-backlight-inverted: invert backlight PWM polarity
> > > - - atmel,lcd-wiring-mode: lcd wiring mode "RGB" or "BRG"
> > > - - atmel,power-control-gpio: gpio to power on or off the LCD (as many as needed)
> > > -
> > > -Example:
> > > -	display0: display {
> > > -		bits-per-pixel = <32>;
> > > -		atmel,lcdcon-backlight;
> > > -		atmel,dmacon = <0x1>;
> > > -		atmel,lcdcon2 = <0x80008002>;
> > > -		atmel,guard-time = <9>;
> > > -		atmel,lcd-wiring-mode = <1>;
> > > -
> > > -		display-timings {
> > > -			native-mode = <&timing0>;
> > > -			timing0: timing0 {
> > > -				clock-frequency = <9000000>;
> > > -				hactive = <480>;
> > > -				vactive = <272>;
> > > -				hback-porch = <1>;
> > > -				hfront-porch = <1>;
> > > -				vback-porch = <40>;
> > > -				vfront-porch = <1>;
> > > -				hsync-len = <45>;
> > > -				vsync-len = <1>;
> > > -			};
> > > -		};
> > > -	};
> > > diff --git a/Documentation/devicetree/bindings/display/atmel/lcdc.yaml b/Documentation/devicetree/bindings/display/atmel/lcdc.yaml
> > > new file mode 100644
> > > index 000000000000..7dcb9a4d5902
> > > --- /dev/null
> > > +++ b/Documentation/devicetree/bindings/display/atmel/lcdc.yaml
> > > @@ -0,0 +1,137 @@
> > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> > > +%YAML 1.2
> > > +---
> > > +$id: http://devicetree.org/schemas/display/atmel/lcdc.yaml#
> > > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > > +
> > > +title: Atmel LCDC (LCD Controller) display controller with PWM
> > > +
> > > +maintainers:
> > > +  - Sam Ravnborg <sam@ravnborg.org>
> > > +
> > > +description: |
> > > +  The Atmel LCDC Display Controller is display controller that
> > > +  includes a PWM for backlight/contrast.
> > > +
> > > +properties:
> > > +  compatible:
> > > +    enum:
> > > +      - atmel,at91sam9261-lcdc
> > > +      - atmel,at91sam9263-lcdc
> > > +      - atmel,at91sam9g10-lcdc
> > > +      - atmel,at91sam9g45-lcdc
> > > +      - atmel,at91sam9g45es-lcdc
> > > +      - atmel,at91sam9g46-lcdc
> > > +      - atmel,at91sam9m10-lcdc
> > > +      - atmel,at91sam9m11-lcdc
> > > +      - atmel,at91sam9rl-lcdc
> > > +
> > > +  "#address-cells":
> > > +    const: 1
> > > +  "#size-cells":
> > > +    const: 0
> > > +
> > > +  reg:
> > > +    description: |
> > > +      Contains 1 register range (address and length).
> > > +      Can contain an additional register range (address and length)
> > > +      for fixed framebuffer memory
> >
> > So, minItems: 1 , maxItems: 2?
> The syntax is either:
>
>     reg = <0x00700000 0x1000>;
>
> or
>
>     reg = <0x00700000 0x1000 0x70000000 0x200000>;
>
> So always minItems: 1

Yeah, but <0x00700000 0x1000 0x70000000 0x200000 0x70000000 0x200000>;
would be invalid, right?

> >
> > > +  interrupts:
> > > +    maxItems: 1
> > > +
> > > +  lcd-supply:
> > > +    description: Regulator for LCD supply voltage.
> > > +
> > > +  display:
> > > +    $ref: /schemas/types.yaml#/definitions/phandle
> > > +    description: phandle to display node
> > > +
> > > +patternProperties:
> > > +  "^display[0-9]$":
> > > +    type: object
> > > +    description: |
> > > +      Display node is required to initialize the lcd panel.
> > > +      This should be in the board dts
> > > +
> > > +    properties:
> > > +
> > > +      atmel,dmacon:
> > > +        $ref: /schemas/types.yaml#/definitions/uint32
> > > +        description: DMA controller configuration
> > > +
> > > +      atmel,lcdcon2:
> > > +        $ref: /schemas/types.yaml#/definitions/uint32
> > > +        description: LCD controller configuration
> > > +
> > > +      atmel,guard-time:
> > > +        $ref: /schemas/types.yaml#/definitions/uint32
> > > +        description: LCD guard time (Delay in frame periods)
> > > +
> > > +      bits-per-pixel:
> > > +        $ref: /schemas/types.yaml#/definitions/uint32
> > > +        description: LCD panel bit-depth.
> >
> > Those properties aren't documented anywhere?
>
> Not more than this and then by their use in the driver(s).
>
> In the current patchset the node is deprecated in next patch.
> I plan to do in two patches:
>   - delete properites which is not used in kernel, barebox, u-boot)
>   - Mark all the old properties deprecated
>
> And for the soon-to-be deprecated properties we need no detailed
> description.

Even if they are going to be deprecated, and it never was done, it
seems to be a good occasion to document them properly.

Maxime

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

^ permalink raw reply	[flat|nested] 14+ messages in thread

end of thread, other threads:[~2020-04-17  7:00 UTC | newest]

Thread overview: 14+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-04-12 18:20 [PATCH v1 0/4] dt-bindings: DT Schema variants of atmel lcdc, hlcdc Sam Ravnborg
2020-04-12 18:20 ` [PATCH v1 1/4] dt-bindings: display: convert atmel-hlcdc to DT Schema Sam Ravnborg
2020-04-14  8:28   ` Maxime Ripard
2020-04-15 16:39     ` Sam Ravnborg
2020-04-16  7:28       ` Maxime Ripard
2020-04-12 18:20 ` [PATCH v1 2/4] dt-bindings: display: convert atmel lcdc " Sam Ravnborg
2020-04-14  8:30   ` Maxime Ripard
2020-04-15 16:44     ` Sam Ravnborg
2020-04-16  7:31       ` Maxime Ripard
2020-04-12 18:20 ` [PATCH v1 3/4] dt-bindings: media: add wiring property to video-interfaces Sam Ravnborg
2020-04-14 19:40   ` Rob Herring
2020-04-15 16:45     ` Sam Ravnborg
2020-04-12 18:20 ` [PATCH v1 4/4] dt-bindings: display: add port support to atmel lcdc Sam Ravnborg
2020-04-14 19:10   ` Rob Herring

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).