diff mbox series

dt-bindings: display: ssd1307fb: Convert to json-schema

Message ID 20210518075131.1463091-1-geert@linux-m68k.org (mailing list archive)
State New, archived
Headers show
Series dt-bindings: display: ssd1307fb: Convert to json-schema | expand

Commit Message

Geert Uytterhoeven May 18, 2021, 7:51 a.m. UTC
Convert the Solomon SSD1307 Framebuffer Device Tree binding
documentation to json-schema.

Fix the spelling of the "pwms" property.
Document default values.
Make properties with default values not required.

Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
---
I have listed Maxime as the maintainer, as he wrote the original driver
and bindings.  Maxime: Please scream if this is inappropriate ;-)
---
 .../bindings/display/solomon,ssd1307fb.yaml   | 166 ++++++++++++++++++
 .../devicetree/bindings/display/ssd1307fb.txt |  60 -------
 2 files changed, 166 insertions(+), 60 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/display/solomon,ssd1307fb.yaml
 delete mode 100644 Documentation/devicetree/bindings/display/ssd1307fb.txt

Comments

Maxime Ripard May 18, 2021, 2:33 p.m. UTC | #1
Hi

On Tue, May 18, 2021 at 09:51:31AM +0200, Geert Uytterhoeven wrote:
> Convert the Solomon SSD1307 Framebuffer Device Tree binding
> documentation to json-schema.
> 
> Fix the spelling of the "pwms" property.
> Document default values.
> Make properties with default values not required.
> 
> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
> ---
> I have listed Maxime as the maintainer, as he wrote the original driver
> and bindings.  Maxime: Please scream if this is inappropriate ;-)

Fine by me :)

> ---
>  .../bindings/display/solomon,ssd1307fb.yaml   | 166 ++++++++++++++++++
>  .../devicetree/bindings/display/ssd1307fb.txt |  60 -------
>  2 files changed, 166 insertions(+), 60 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/display/solomon,ssd1307fb.yaml
>  delete mode 100644 Documentation/devicetree/bindings/display/ssd1307fb.txt
> 
> diff --git a/Documentation/devicetree/bindings/display/solomon,ssd1307fb.yaml b/Documentation/devicetree/bindings/display/solomon,ssd1307fb.yaml
> new file mode 100644
> index 0000000000000000..bd632d86a4f814a0
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/display/solomon,ssd1307fb.yaml
> @@ -0,0 +1,166 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/display/solomon,ssd1307fb.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: Solomon SSD1307 OLED Controller Framebuffer
> +
> +maintainers:
> +  - Maxime Ripard <mripard@kernel.org>
> +
> +properties:
> +  compatible:
> +    enum:
> +      - solomon,ssd1305fb-i2c
> +      - solomon,ssd1306fb-i2c
> +      - solomon,ssd1307fb-i2c
> +      - solomon,ssd1309fb-i2c
> +
> +  reg:
> +    maxItems: 1
> +
> +  pwms:
> +    maxItems: 1
> +
> +  reset-gpios:
> +    maxItems: 1
> +
> +  vbat-supply:
> +    description: The supply for VBAT
> +
> +  solomon,height:
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    default: 16
> +    description:
> +      Height in pixel of the screen driven by the controller
> +
> +  solomon,width:
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    default: 96
> +    description:
> +      Width in pixel of the screen driven by the controller
> +
> +  solomon,page-offset:
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    default: 1
> +    description:
> +      Offset of pages (band of 8 pixels) that the screen is mapped to
> +
> +  solomon,segment-no-remap:
> +    type: boolean
> +    description:
> +      Display needs normal (non-inverted) data column to segment mapping
> +
> +  solomon,col-offset:
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    default: 0
> +    description:
> +      Offset of columns (COL/SEG) that the screen is mapped to
> +
> +  solomon,com-seq:
> +    type: boolean
> +    description:
> +      Display uses sequential COM pin configuration
> +
> +  solomon,com-lrremap:
> +    type: boolean
> +    description:
> +      Display uses left-right COM pin remap
> +
> +  solomon,com-invdir:
> +    type: boolean
> +    description:
> +      Display uses inverted COM pin scan direction
> +
> +  solomon,com-offset:
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    default: 0
> +    description:
> +      Number of the COM pin wired to the first display line
> +
> +  solomon,prechargep1:
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    default: 2
> +    description:
> +      Length of deselect period (phase 1) in clock cycles
> +
> +  solomon,prechargep2:
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    default: 2
> +    description:
> +      Length of precharge period (phase 2) in clock cycles.  This needs to be
> +      the higher, the higher the capacitance of the OLED's pixels is.
> +
> +  solomon,dclk-div:
> +    $ref: /schemas/types.yaml#/definitions/uint32
> +    minimum: 1
> +    maximum: 16
> +    description:
> +      Clock divisor. The default value is controller-dependent.

I guess we could document the default using an if / else statement?
Looks good otherwise :)

Maxime
Geert Uytterhoeven May 18, 2021, 2:49 p.m. UTC | #2
Hi Maxime,

On Tue, May 18, 2021 at 4:33 PM Maxime Ripard <maxime@cerno.tech> wrote:
> On Tue, May 18, 2021 at 09:51:31AM +0200, Geert Uytterhoeven wrote:
> > Convert the Solomon SSD1307 Framebuffer Device Tree binding
> > documentation to json-schema.
> >
> > Fix the spelling of the "pwms" property.
> > Document default values.
> > Make properties with default values not required.
> >
> > Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
> > ---
> > I have listed Maxime as the maintainer, as he wrote the original driver
> > and bindings.  Maxime: Please scream if this is inappropriate ;-)
>
> Fine by me :)

Thanks!

> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/display/solomon,ssd1307fb.yaml

> > +  solomon,dclk-div:
> > +    $ref: /schemas/types.yaml#/definitions/uint32
> > +    minimum: 1
> > +    maximum: 16
> > +    description:
> > +      Clock divisor. The default value is controller-dependent.
>
> I guess we could document the default using an if / else statement?

While clk-div has only two different defaults, dclk-frq has different
defaults for each of the 4 variants supported.

Do you think it's worthwhile doing that? All upstream DTS files lack
these properties, thus use the default values.

> Looks good otherwise :)

Thanks!

Gr{oetje,eeting}s,

                        Geert
Rob Herring May 19, 2021, 9:33 p.m. UTC | #3
On Tue, 18 May 2021 09:51:31 +0200, Geert Uytterhoeven wrote:
> Convert the Solomon SSD1307 Framebuffer Device Tree binding
> documentation to json-schema.
> 
> Fix the spelling of the "pwms" property.
> Document default values.
> Make properties with default values not required.
> 
> Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
> ---
> I have listed Maxime as the maintainer, as he wrote the original driver
> and bindings.  Maxime: Please scream if this is inappropriate ;-)
> ---
>  .../bindings/display/solomon,ssd1307fb.yaml   | 166 ++++++++++++++++++
>  .../devicetree/bindings/display/ssd1307fb.txt |  60 -------
>  2 files changed, 166 insertions(+), 60 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/display/solomon,ssd1307fb.yaml
>  delete mode 100644 Documentation/devicetree/bindings/display/ssd1307fb.txt
> 

Reviewed-by: Rob Herring <robh@kernel.org>
Maxime Ripard May 24, 2021, 11:48 a.m. UTC | #4
Hi

On Tue, May 18, 2021 at 04:49:45PM +0200, Geert Uytterhoeven wrote:
> On Tue, May 18, 2021 at 4:33 PM Maxime Ripard <maxime@cerno.tech> wrote:
> > On Tue, May 18, 2021 at 09:51:31AM +0200, Geert Uytterhoeven wrote:
> > > Convert the Solomon SSD1307 Framebuffer Device Tree binding
> > > documentation to json-schema.
> > >
> > > Fix the spelling of the "pwms" property.
> > > Document default values.
> > > Make properties with default values not required.
> > >
> > > Signed-off-by: Geert Uytterhoeven <geert@linux-m68k.org>
> > > ---
> > > I have listed Maxime as the maintainer, as he wrote the original driver
> > > and bindings.  Maxime: Please scream if this is inappropriate ;-)
> >
> > Fine by me :)
> 
> Thanks!
> 
> > > --- /dev/null
> > > +++ b/Documentation/devicetree/bindings/display/solomon,ssd1307fb.yaml
> 
> > > +  solomon,dclk-div:
> > > +    $ref: /schemas/types.yaml#/definitions/uint32
> > > +    minimum: 1
> > > +    maximum: 16
> > > +    description:
> > > +      Clock divisor. The default value is controller-dependent.
> >
> > I guess we could document the default using an if / else statement?
> 
> While clk-div has only two different defaults, dclk-frq has different
> defaults for each of the 4 variants supported.
> 
> Do you think it's worthwhile doing that? All upstream DTS files lack
> these properties, thus use the default values.

I'd say it's even more important if everyone relies on it :)

Maxime
diff mbox series

Patch

diff --git a/Documentation/devicetree/bindings/display/solomon,ssd1307fb.yaml b/Documentation/devicetree/bindings/display/solomon,ssd1307fb.yaml
new file mode 100644
index 0000000000000000..bd632d86a4f814a0
--- /dev/null
+++ b/Documentation/devicetree/bindings/display/solomon,ssd1307fb.yaml
@@ -0,0 +1,166 @@ 
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/solomon,ssd1307fb.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Solomon SSD1307 OLED Controller Framebuffer
+
+maintainers:
+  - Maxime Ripard <mripard@kernel.org>
+
+properties:
+  compatible:
+    enum:
+      - solomon,ssd1305fb-i2c
+      - solomon,ssd1306fb-i2c
+      - solomon,ssd1307fb-i2c
+      - solomon,ssd1309fb-i2c
+
+  reg:
+    maxItems: 1
+
+  pwms:
+    maxItems: 1
+
+  reset-gpios:
+    maxItems: 1
+
+  vbat-supply:
+    description: The supply for VBAT
+
+  solomon,height:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    default: 16
+    description:
+      Height in pixel of the screen driven by the controller
+
+  solomon,width:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    default: 96
+    description:
+      Width in pixel of the screen driven by the controller
+
+  solomon,page-offset:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    default: 1
+    description:
+      Offset of pages (band of 8 pixels) that the screen is mapped to
+
+  solomon,segment-no-remap:
+    type: boolean
+    description:
+      Display needs normal (non-inverted) data column to segment mapping
+
+  solomon,col-offset:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    default: 0
+    description:
+      Offset of columns (COL/SEG) that the screen is mapped to
+
+  solomon,com-seq:
+    type: boolean
+    description:
+      Display uses sequential COM pin configuration
+
+  solomon,com-lrremap:
+    type: boolean
+    description:
+      Display uses left-right COM pin remap
+
+  solomon,com-invdir:
+    type: boolean
+    description:
+      Display uses inverted COM pin scan direction
+
+  solomon,com-offset:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    default: 0
+    description:
+      Number of the COM pin wired to the first display line
+
+  solomon,prechargep1:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    default: 2
+    description:
+      Length of deselect period (phase 1) in clock cycles
+
+  solomon,prechargep2:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    default: 2
+    description:
+      Length of precharge period (phase 2) in clock cycles.  This needs to be
+      the higher, the higher the capacitance of the OLED's pixels is.
+
+  solomon,dclk-div:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    minimum: 1
+    maximum: 16
+    description:
+      Clock divisor. The default value is controller-dependent.
+
+  solomon,dclk-frq:
+    $ref: /schemas/types.yaml#/definitions/uint32
+    minimum: 0
+    maximum: 15
+    description:
+      Clock frequency, higher value means higher frequency.
+      The default value is controller-dependent.
+
+  solomon,lookup-table:
+    $ref: /schemas/types.yaml#/definitions/uint8-array
+    maxItems: 4
+    description:
+      8 bit value array of current drive pulse widths for BANK0, and colors A,
+      B, and C. Each value in range of 31 to 63 for pulse widths of 32 to 64.
+      Color D is always width 64.
+
+  solomon,area-color-enable:
+    type: boolean
+    description:
+      Display uses color mode
+
+  solomon,low-power:
+    type: boolean
+    description:
+      Display runs in low power mode
+
+required:
+  - compatible
+  - reg
+
+if:
+  properties:
+    compatible:
+      contains:
+        const: solomon,ssd1307fb-i2c
+then:
+  required:
+    - pwms
+
+additionalProperties: false
+
+examples:
+  - |
+    i2c1 {
+            #address-cells = <1>;
+            #size-cells = <0>;
+
+            ssd1307: oled@3c {
+                    compatible = "solomon,ssd1307fb-i2c";
+                    reg = <0x3c>;
+                    pwms = <&pwm 4 3000>;
+                    reset-gpios = <&gpio2 7>;
+            };
+
+            ssd1306: oled@3d {
+                    compatible = "solomon,ssd1306fb-i2c";
+                    reg = <0x3c>;
+                    pwms = <&pwm 4 3000>;
+                    reset-gpios = <&gpio2 7>;
+                    solomon,com-lrremap;
+                    solomon,com-invdir;
+                    solomon,com-offset = <32>;
+                    solomon,lookup-table = /bits/ 8 <0x3f 0x3f 0x3f 0x3f>;
+            };
+    };
diff --git a/Documentation/devicetree/bindings/display/ssd1307fb.txt b/Documentation/devicetree/bindings/display/ssd1307fb.txt
deleted file mode 100644
index 2dcb6d12d1371536..0000000000000000
--- a/Documentation/devicetree/bindings/display/ssd1307fb.txt
+++ /dev/null
@@ -1,60 +0,0 @@ 
-* Solomon SSD1307 Framebuffer Driver
-
-Required properties:
-  - compatible: Should be "solomon,<chip>fb-<bus>". The only supported bus for
-    now is i2c, and the supported chips are ssd1305, ssd1306, ssd1307 and
-    ssd1309.
-  - reg: Should contain address of the controller on the I2C bus. Most likely
-         0x3c or 0x3d
-  - pwm: Should contain the pwm to use according to the OF device tree PWM
-         specification [0]. Only required for the ssd1307.
-  - solomon,height: Height in pixel of the screen driven by the controller
-  - solomon,width: Width in pixel of the screen driven by the controller
-  - solomon,page-offset: Offset of pages (band of 8 pixels) that the screen is
-    mapped to.
-
-Optional properties:
-  - reset-gpios: The GPIO used to reset the OLED display, if available. See
-                 Documentation/devicetree/bindings/gpio/gpio.txt for details.
-  - vbat-supply: The supply for VBAT
-  - solomon,segment-no-remap: Display needs normal (non-inverted) data column
-                              to segment mapping
-  - solomon,col-offset: Offset of columns (COL/SEG) that the screen is mapped to.
-  - solomon,com-seq: Display uses sequential COM pin configuration
-  - solomon,com-lrremap: Display uses left-right COM pin remap
-  - solomon,com-invdir: Display uses inverted COM pin scan direction
-  - solomon,com-offset: Number of the COM pin wired to the first display line
-  - solomon,prechargep1: Length of deselect period (phase 1) in clock cycles.
-  - solomon,prechargep2: Length of precharge period (phase 2) in clock cycles.
-                         This needs to be the higher, the higher the capacitance
-                         of the OLED's pixels is
-  - solomon,dclk-div: Clock divisor 1 to 16
-  - solomon,dclk-frq: Clock frequency 0 to 15, higher value means higher
-                      frequency
-  - solomon,lookup-table: 8 bit value array of current drive pulse widths for
-                          BANK0, and colors A, B, and C. Each value in range
-                          of 31 to 63 for pulse widths of 32 to 64. Color D
-                          is always width 64.
-  - solomon,area-color-enable: Display uses color mode
-  - solomon,low-power. Display runs in low power mode
-
-[0]: Documentation/devicetree/bindings/pwm/pwm.txt
-
-Examples:
-ssd1307: oled@3c {
-        compatible = "solomon,ssd1307fb-i2c";
-        reg = <0x3c>;
-        pwms = <&pwm 4 3000>;
-        reset-gpios = <&gpio2 7>;
-};
-
-ssd1306: oled@3c {
-        compatible = "solomon,ssd1306fb-i2c";
-        reg = <0x3c>;
-        pwms = <&pwm 4 3000>;
-        reset-gpios = <&gpio2 7>;
-        solomon,com-lrremap;
-        solomon,com-invdir;
-        solomon,com-offset = <32>;
-        solomon,lookup-table = /bits/ 8 <0x3f 0x3f 0x3f 0x3f>;
-};