Message ID | 20190705164221.4462-2-robh@kernel.org (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | Conversion of panel bindings to DT schema | expand |
Hi Rob, On Fri, Jul 5, 2019 at 6:46 PM Rob Herring <robh@kernel.org> wrote: > Convert the common panel bindings to DT schema consolidating scattered > definitions to a single schema file. > > The 'simple-panel' binding just a collection of properties and not a > complete binding itself. All of the 'simple-panel' properties are > covered by the panel-common.txt binding with the exception of the > 'no-hpd' property, so add that to the schema. > > As there are lots of references to simple-panel.txt, just keep the file > with a reference to common.yaml for now until all the bindings are > converted. > > Cc: Thierry Reding <thierry.reding@gmail.com> > Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > Cc: dri-devel@lists.freedesktop.org > Acked-by: Sam Ravnborg <sam@ravnborg.org> > Reviewed-by: Maxime Ripard <maxime.ripard@bootlin.com> > Reviewed-by: Thierry Reding <treding@nvidia.com> > Signed-off-by: Rob Herring <robh@kernel.org> This is now commit 821a1f7171aeea5e ("dt-bindings: display: Convert common panel bindings to DT schema"). > --- /dev/null > +++ b/Documentation/devicetree/bindings/display/panel/panel-common.yaml > + backlight: > + $ref: /schemas/types.yaml#/definitions/phandle > + description: > + For panels whose backlight is controlled by an external backlight > + controller, this property contains a phandle that references the > + controller. This paragraph seems to apply to all nodes named "backlight", causing e.g. (for ARCH=arm mach_shmobile_defconfig) "make dtbs_check DT_SCHEMA_FILES=Documentation/devicetree/bindings/display/panel/panel-common.yaml" to start complaining: arch/arm/boot/dts/r8a7740-armadillo800eva.dt.yaml: backlight: {'compatible': ['pwm-backlight'], 'pwms': [[40, 2, 33333, 1]], 'brightness-levels': [[0, 1, 2, 4, 8, 16, 32, 64, 128, 255]], 'default-brightness-level': [[9]], 'pinctrl-0': [[41]], 'pinctrl-names': ['default'], 'power-supply': [[42]], 'enable-gpios': [[15, 61, 0]]} is not of type 'array' arch/arm/boot/dts/r8a7740-armadillo800eva.dt.yaml: backlight: {'groups': ['tpu0_to2_1'], 'function': ['tpu0'], 'phandle': [[41]]} is not of type 'array' Do you know what's wrong? Thanks! Gr{oetje,eeting}s, Geert
On Fri, Oct 25, 2019 at 8:07 AM Geert Uytterhoeven <geert@linux-m68k.org> wrote: > > Hi Rob, > > On Fri, Jul 5, 2019 at 6:46 PM Rob Herring <robh@kernel.org> wrote: > > Convert the common panel bindings to DT schema consolidating scattered > > definitions to a single schema file. > > > > The 'simple-panel' binding just a collection of properties and not a > > complete binding itself. All of the 'simple-panel' properties are > > covered by the panel-common.txt binding with the exception of the > > 'no-hpd' property, so add that to the schema. > > > > As there are lots of references to simple-panel.txt, just keep the file > > with a reference to common.yaml for now until all the bindings are > > converted. > > > > Cc: Thierry Reding <thierry.reding@gmail.com> > > Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > > Cc: dri-devel@lists.freedesktop.org > > Acked-by: Sam Ravnborg <sam@ravnborg.org> > > Reviewed-by: Maxime Ripard <maxime.ripard@bootlin.com> > > Reviewed-by: Thierry Reding <treding@nvidia.com> > > Signed-off-by: Rob Herring <robh@kernel.org> > > This is now commit 821a1f7171aeea5e ("dt-bindings: display: Convert > common panel bindings to DT schema"). > > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/display/panel/panel-common.yaml > > > + backlight: > > + $ref: /schemas/types.yaml#/definitions/phandle > > + description: > > + For panels whose backlight is controlled by an external backlight > > + controller, this property contains a phandle that references the > > + controller. > > This paragraph seems to apply to all nodes named "backlight", causing > e.g. (for ARCH=arm mach_shmobile_defconfig) "make dtbs_check > DT_SCHEMA_FILES=Documentation/devicetree/bindings/display/panel/panel-common.yaml" > to start complaining: > > arch/arm/boot/dts/r8a7740-armadillo800eva.dt.yaml: backlight: > {'compatible': ['pwm-backlight'], 'pwms': [[40, 2, 33333, 1]], > 'brightness-levels': [[0, 1, 2, 4, 8, 16, 32, 64, 128, 255]], > 'default-brightness-level': [[9]], 'pinctrl-0': [[41]], > 'pinctrl-names': ['default'], 'power-supply': [[42]], 'enable-gpios': > [[15, 61, 0]]} is not of type 'array' > arch/arm/boot/dts/r8a7740-armadillo800eva.dt.yaml: backlight: > {'groups': ['tpu0_to2_1'], 'function': ['tpu0'], 'phandle': [[41]]} is > not of type 'array' > > Do you know what's wrong? I'm not seeing that. What does .../bindings/processed-schema.yaml look like? Rob
Hi Rob, On Fri, Oct 25, 2019 at 4:25 PM Rob Herring <robh@kernel.org> wrote: > On Fri, Oct 25, 2019 at 8:07 AM Geert Uytterhoeven <geert@linux-m68k.org> wrote: > > On Fri, Jul 5, 2019 at 6:46 PM Rob Herring <robh@kernel.org> wrote: > > > Convert the common panel bindings to DT schema consolidating scattered > > > definitions to a single schema file. > > > > > > The 'simple-panel' binding just a collection of properties and not a > > > complete binding itself. All of the 'simple-panel' properties are > > > covered by the panel-common.txt binding with the exception of the > > > 'no-hpd' property, so add that to the schema. > > > > > > As there are lots of references to simple-panel.txt, just keep the file > > > with a reference to common.yaml for now until all the bindings are > > > converted. > > > > > > Cc: Thierry Reding <thierry.reding@gmail.com> > > > Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > > > Cc: dri-devel@lists.freedesktop.org > > > Acked-by: Sam Ravnborg <sam@ravnborg.org> > > > Reviewed-by: Maxime Ripard <maxime.ripard@bootlin.com> > > > Reviewed-by: Thierry Reding <treding@nvidia.com> > > > Signed-off-by: Rob Herring <robh@kernel.org> > > > > This is now commit 821a1f7171aeea5e ("dt-bindings: display: Convert > > common panel bindings to DT schema"). > > > > > --- /dev/null > > > +++ b/Documentation/devicetree/bindings/display/panel/panel-common.yaml > > > > > + backlight: > > > + $ref: /schemas/types.yaml#/definitions/phandle > > > + description: > > > + For panels whose backlight is controlled by an external backlight > > > + controller, this property contains a phandle that references the > > > + controller. > > > > This paragraph seems to apply to all nodes named "backlight", causing > > e.g. (for ARCH=arm mach_shmobile_defconfig) "make dtbs_check > > DT_SCHEMA_FILES=Documentation/devicetree/bindings/display/panel/panel-common.yaml" > > to start complaining: > > > > arch/arm/boot/dts/r8a7740-armadillo800eva.dt.yaml: backlight: > > {'compatible': ['pwm-backlight'], 'pwms': [[40, 2, 33333, 1]], > > 'brightness-levels': [[0, 1, 2, 4, 8, 16, 32, 64, 128, 255]], > > 'default-brightness-level': [[9]], 'pinctrl-0': [[41]], > > 'pinctrl-names': ['default'], 'power-supply': [[42]], 'enable-gpios': > > [[15, 61, 0]]} is not of type 'array' > > arch/arm/boot/dts/r8a7740-armadillo800eva.dt.yaml: backlight: > > {'groups': ['tpu0_to2_1'], 'function': ['tpu0'], 'phandle': [[41]]} is > > not of type 'array' > > > > Do you know what's wrong? > > I'm not seeing that. What does .../bindings/processed-schema.yaml look like? I see it with both next-20191015 and v5.4-rc4. - $filename: /scratch/geert/linux/linux-next/Documentation/devicetree/bindings/display/panel/panel-common.yaml $id: http://devicetree.org/schemas/display/panel/panel-common.yaml# $schema: http://devicetree.org/meta-schemas/core.yaml# dependencies: height-mm: [width-mm] width-mm: [height-mm] patternProperties: {'pinctrl-[0-9]+': true} properties: $nodename: true backlight: {$ref: /schemas/types.yaml#/definitions/phandle} ddc-i2c-bus: {$ref: /schemas/types.yaml#/definitions/phandle} enable-gpios: {maxItems: 1, minItems: 1} height-mm: {} label: {} no-hpd: {type: boolean} panel-timing: {type: object} phandle: true pinctrl-names: true port: {type: object} ports: {type: object} power-supply: {} reset-gpios: {maxItems: 1, minItems: 1} rotation: allOf: - {$ref: /schemas/types.yaml#/definitions/uint32} - additionalItems: false items: additionalItems: false items: enum: [0, 90, 180, 270] maxItems: 1 minItems: 1 type: array maxItems: 1 minItems: 1 type: array status: true width-mm: {} select: properties: {$nodename: true} required: [$nodename] title: Common Properties for Display Panels Gr{oetje,eeting}s, Geert
On Fri, Oct 25, 2019 at 9:39 AM Geert Uytterhoeven <geert@linux-m68k.org> wrote: > > Hi Rob, > > On Fri, Oct 25, 2019 at 4:25 PM Rob Herring <robh@kernel.org> wrote: > > On Fri, Oct 25, 2019 at 8:07 AM Geert Uytterhoeven <geert@linux-m68k.org> wrote: > > > On Fri, Jul 5, 2019 at 6:46 PM Rob Herring <robh@kernel.org> wrote: > > > > Convert the common panel bindings to DT schema consolidating scattered > > > > definitions to a single schema file. > > > > > > > > The 'simple-panel' binding just a collection of properties and not a > > > > complete binding itself. All of the 'simple-panel' properties are > > > > covered by the panel-common.txt binding with the exception of the > > > > 'no-hpd' property, so add that to the schema. > > > > > > > > As there are lots of references to simple-panel.txt, just keep the file > > > > with a reference to common.yaml for now until all the bindings are > > > > converted. > > > > > > > > Cc: Thierry Reding <thierry.reding@gmail.com> > > > > Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com> > > > > Cc: dri-devel@lists.freedesktop.org > > > > Acked-by: Sam Ravnborg <sam@ravnborg.org> > > > > Reviewed-by: Maxime Ripard <maxime.ripard@bootlin.com> > > > > Reviewed-by: Thierry Reding <treding@nvidia.com> > > > > Signed-off-by: Rob Herring <robh@kernel.org> > > > > > > This is now commit 821a1f7171aeea5e ("dt-bindings: display: Convert > > > common panel bindings to DT schema"). > > > > > > > --- /dev/null > > > > +++ b/Documentation/devicetree/bindings/display/panel/panel-common.yaml > > > > > > > + backlight: > > > > + $ref: /schemas/types.yaml#/definitions/phandle > > > > + description: > > > > + For panels whose backlight is controlled by an external backlight > > > > + controller, this property contains a phandle that references the > > > > + controller. > > > > > > This paragraph seems to apply to all nodes named "backlight", causing > > > e.g. (for ARCH=arm mach_shmobile_defconfig) "make dtbs_check > > > DT_SCHEMA_FILES=Documentation/devicetree/bindings/display/panel/panel-common.yaml" > > > to start complaining: > > > > > > arch/arm/boot/dts/r8a7740-armadillo800eva.dt.yaml: backlight: > > > {'compatible': ['pwm-backlight'], 'pwms': [[40, 2, 33333, 1]], > > > 'brightness-levels': [[0, 1, 2, 4, 8, 16, 32, 64, 128, 255]], > > > 'default-brightness-level': [[9]], 'pinctrl-0': [[41]], > > > 'pinctrl-names': ['default'], 'power-supply': [[42]], 'enable-gpios': > > > [[15, 61, 0]]} is not of type 'array' > > > arch/arm/boot/dts/r8a7740-armadillo800eva.dt.yaml: backlight: > > > {'groups': ['tpu0_to2_1'], 'function': ['tpu0'], 'phandle': [[41]]} is > > > not of type 'array' > > > > > > Do you know what's wrong? > > > > I'm not seeing that. What does .../bindings/processed-schema.yaml look like? > > I see it with both next-20191015 and v5.4-rc4. > > - $filename: /scratch/geert/linux/linux-next/Documentation/devicetree/bindings/display/panel/panel-common.yaml > $id: http://devicetree.org/schemas/display/panel/panel-common.yaml# > $schema: http://devicetree.org/meta-schemas/core.yaml# > dependencies: > height-mm: [width-mm] > width-mm: [height-mm] > patternProperties: {'pinctrl-[0-9]+': true} > properties: > $nodename: true > backlight: {$ref: /schemas/types.yaml#/definitions/phandle} > ddc-i2c-bus: {$ref: /schemas/types.yaml#/definitions/phandle} > enable-gpios: {maxItems: 1, minItems: 1} > height-mm: {} > label: {} > no-hpd: {type: boolean} > panel-timing: {type: object} > phandle: true > pinctrl-names: true > port: {type: object} > ports: {type: object} > power-supply: {} > reset-gpios: {maxItems: 1, minItems: 1} > rotation: > allOf: > - {$ref: /schemas/types.yaml#/definitions/uint32} > - additionalItems: false > items: > additionalItems: false > items: > enum: [0, 90, 180, 270] > maxItems: 1 > minItems: 1 > type: array > maxItems: 1 > minItems: 1 > type: array > status: true > width-mm: {} > select: > properties: {$nodename: true} > required: [$nodename] The problem is this causing the schema to be applied to every node. Update dtschema repo. This was fixed some time ago. Rob
diff --git a/Documentation/devicetree/bindings/display/panel/arm,versatile-tft-panel.txt b/Documentation/devicetree/bindings/display/panel/arm,versatile-tft-panel.txt index 248141c3c7e3..0601a9e34703 100644 --- a/Documentation/devicetree/bindings/display/panel/arm,versatile-tft-panel.txt +++ b/Documentation/devicetree/bindings/display/panel/arm,versatile-tft-panel.txt @@ -10,7 +10,7 @@ Required properties: - compatible: should be "arm,versatile-tft-panel" Required subnodes: -- port: see display/panel/panel-common.txt, graph.txt +- port: see display/panel/panel-common.yaml, graph.txt Example: diff --git a/Documentation/devicetree/bindings/display/panel/panel-common.txt b/Documentation/devicetree/bindings/display/panel/panel-common.txt deleted file mode 100644 index 5d2519af4bb5..000000000000 --- a/Documentation/devicetree/bindings/display/panel/panel-common.txt +++ /dev/null @@ -1,101 +0,0 @@ -Common Properties for Display Panel -=================================== - -This document defines device tree properties common to several classes of -display panels. It doesn't constitue a device tree binding specification by -itself but is meant to be referenced by device tree bindings. - -When referenced from panel device tree bindings the properties defined in this -document are defined as follows. The panel device tree bindings are -responsible for defining whether each property is required or optional. - - -Descriptive Properties ----------------------- - -- width-mm, -- height-mm: The width-mm and height-mm specify the width and height of the - physical area where images are displayed. These properties are expressed in - millimeters and rounded to the closest unit. - -- label: The label property specifies a symbolic name for the panel as a - string suitable for use by humans. It typically contains a name inscribed on - the system (e.g. as an affixed label) or specified in the system's - documentation (e.g. in the user's manual). - - If no such name exists, and unless the property is mandatory according to - device tree bindings, it shall rather be omitted than constructed of - non-descriptive information. For instance an LCD panel in a system that - contains a single panel shall not be labelled "LCD" if that name is not - inscribed on the system or used in a descriptive fashion in system - documentation. - - -Display Timings ---------------- - -- panel-timing: Most display panels are restricted to a single resolution and - require specific display timings. The panel-timing subnode expresses those - timings as specified in the timing subnode section of the display timing - bindings defined in - Documentation/devicetree/bindings/display/panel/display-timing.txt. - - -Connectivity ------------- - -- ports: Panels receive video data through one or multiple connections. While - the nature of those connections is specific to the panel type, the - connectivity is expressed in a standard fashion using ports as specified in - the device graph bindings defined in - Documentation/devicetree/bindings/graph.txt. - -- ddc-i2c-bus: Some panels expose EDID information through an I2C-compatible - bus such as DDC2 or E-DDC. For such panels the ddc-i2c-bus contains a - phandle to the system I2C controller connected to that bus. - - -Control I/Os ------------- - -Many display panels can be controlled through pins driven by GPIOs. The nature -and timing of those control signals are device-specific and left for panel -device tree bindings to specify. The following GPIO specifiers can however be -used for panels that implement compatible control signals. - -- enable-gpios: Specifier for a GPIO connected to the panel enable control - signal. The enable signal is active high and enables operation of the panel. - This property can also be used for panels implementing an active low power - down signal, which is a negated version of the enable signal. Active low - enable signals (or active high power down signals) can be supported by - inverting the GPIO specifier polarity flag. - - Note that the enable signal control panel operation only and must not be - confused with a backlight enable signal. - -- reset-gpios: Specifier for a GPIO coonnected to the panel reset control - signal. The reset signal is active low and resets the panel internal logic - while active. Active high reset signals can be supported by inverting the - GPIO specifier polarity flag. - -Power ------ - -- power-supply: display panels require power to be supplied. While several - panels need more than one power supply with panel-specific constraints - governing the order and timings of the power supplies, in many cases a single - power supply is sufficient, either because the panel has a single power rail, - or because all its power rails can be driven by the same supply. In that case - the power-supply property specifies the supply powering the panel as a phandle - to a regulator. - -Backlight ---------- - -Most display panels include a backlight. Some of them also include a backlight -controller exposed through a control bus such as I2C or DSI. Others expose -backlight control through GPIO, PWM or other signals connected to an external -backlight controller. - -- backlight: For panels whose backlight is controlled by an external backlight - controller, this property contains a phandle that references the controller. diff --git a/Documentation/devicetree/bindings/display/panel/panel-common.yaml b/Documentation/devicetree/bindings/display/panel/panel-common.yaml new file mode 100644 index 000000000000..ef8d8cdfcede --- /dev/null +++ b/Documentation/devicetree/bindings/display/panel/panel-common.yaml @@ -0,0 +1,149 @@ +# SPDX-License-Identifier: GPL-2.0 +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/display/panel/panel-common.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Common Properties for Display Panels + +maintainers: + - Thierry Reding <thierry.reding@gmail.com> + - Laurent Pinchart <laurent.pinchart+renesas@ideasonboard.com> + +description: | + This document defines device tree properties common to several classes of + display panels. It doesn't constitue a device tree binding specification by + itself but is meant to be referenced by device tree bindings. + + When referenced from panel device tree bindings the properties defined in this + document are defined as follows. The panel device tree bindings are + responsible for defining whether each property is required or optional. + +properties: + # Descriptive Properties + width-mm: + description: + Specifies the width of the physical area where images are displayed. This + property is expressed in millimeters and rounded to the closest unit. + + height-mm: + description: + Specifies the height of the physical area where images are displayed. This + property is expressed in millimeters and rounded to the closest unit. + + label: + description: | + The label property specifies a symbolic name for the panel as a + string suitable for use by humans. It typically contains a name inscribed + on the system (e.g. as an affixed label) or specified in the system's + documentation (e.g. in the user's manual). + + If no such name exists, and unless the property is mandatory according to + device tree bindings, it shall rather be omitted than constructed of + non-descriptive information. For instance an LCD panel in a system that + contains a single panel shall not be labelled "LCD" if that name is not + inscribed on the system or used in a descriptive fashion in system + documentation. + + rotation: + description: + Display rotation in degrees counter clockwise (0,90,180,270) + allOf: + - $ref: /schemas/types.yaml#/definitions/uint32 + - enum: [ 0, 90, 180, 270 ] + + # Display Timings + panel-timing: + type: object + description: + Most display panels are restricted to a single resolution and + require specific display timings. The panel-timing subnode expresses those + timings as specified in the timing subnode section of the display timing + bindings defined in + Documentation/devicetree/bindings/display/panel/display-timing.txt. + + # Connectivity + port: + type: object + + ports: + type: object + description: + Panels receive video data through one or multiple connections. While + the nature of those connections is specific to the panel type, the + connectivity is expressed in a standard fashion using ports as specified + in the device graph bindings defined in + Documentation/devicetree/bindings/graph.txt. + + ddc-i2c-bus: + $ref: /schemas/types.yaml#/definitions/phandle + description: + Some panels expose EDID information through an I2C-compatible + bus such as DDC2 or E-DDC. For such panels the ddc-i2c-bus contains a + phandle to the system I2C controller connected to that bus. + + no-hpd: + type: boolean + description: + This panel is supposed to communicate that it's ready via HPD + (hot plug detect) signal, but the signal isn't hooked up so we should + hardcode the max delay from the panel spec when powering up the panel. + + # Control I/Os + + # Many display panels can be controlled through pins driven by GPIOs. The nature + # and timing of those control signals are device-specific and left for panel + # device tree bindings to specify. The following GPIO specifiers can however be + # used for panels that implement compatible control signals. + + enable-gpios: + maxItems: 1 + description: | + Specifier for a GPIO connected to the panel enable control signal. The + enable signal is active high and enables operation of the panel. This + property can also be used for panels implementing an active low power down + signal, which is a negated version of the enable signal. Active low enable + signals (or active high power down signals) can be supported by inverting + the GPIO specifier polarity flag. + + Note that the enable signal control panel operation only and must not be + confused with a backlight enable signal. + + reset-gpios: + maxItems: 1 + description: + Specifier for a GPIO connected to the panel reset control signal. + The reset signal is active low and resets the panel internal logic + while active. Active high reset signals can be supported by inverting the + GPIO specifier polarity flag. + + # Power + power-supply: + description: + Display panels require power to be supplied. While several panels need + more than one power supply with panel-specific constraints governing the + order and timings of the power supplies, in many cases a single power + supply is sufficient, either because the panel has a single power rail, or + because all its power rails can be driven by the same supply. In that case + the power-supply property specifies the supply powering the panel as a + phandle to a regulator. + + # Backlight + + # Most display panels include a backlight. Some of them also include a backlight + # controller exposed through a control bus such as I2C or DSI. Others expose + # backlight control through GPIO, PWM or other signals connected to an external + # backlight controller. + + backlight: + $ref: /schemas/types.yaml#/definitions/phandle + description: + For panels whose backlight is controlled by an external backlight + controller, this property contains a phandle that references the + controller. + +dependencies: + width-mm: [ height-mm ] + height-mm: [ width-mm ] + +... diff --git a/Documentation/devicetree/bindings/display/panel/panel.txt b/Documentation/devicetree/bindings/display/panel/panel.txt deleted file mode 100644 index e2e6867852b8..000000000000 --- a/Documentation/devicetree/bindings/display/panel/panel.txt +++ /dev/null @@ -1,4 +0,0 @@ -Common display properties -------------------------- - -- rotation: Display rotation in degrees counter clockwise (0,90,180,270) diff --git a/Documentation/devicetree/bindings/display/panel/simple-panel.txt b/Documentation/devicetree/bindings/display/panel/simple-panel.txt index b2b872c710f2..e11208fb7da8 100644 --- a/Documentation/devicetree/bindings/display/panel/simple-panel.txt +++ b/Documentation/devicetree/bindings/display/panel/simple-panel.txt @@ -1,28 +1 @@ -Simple display panel -==================== - -panel node ----------- - -Required properties: -- power-supply: See panel-common.txt - -Optional properties: -- ddc-i2c-bus: phandle of an I2C controller used for DDC EDID probing -- enable-gpios: GPIO pin to enable or disable the panel -- backlight: phandle of the backlight device attached to the panel -- no-hpd: This panel is supposed to communicate that it's ready via HPD - (hot plug detect) signal, but the signal isn't hooked up so we should - hardcode the max delay from the panel spec when powering up the panel. - -Example: - - panel: panel { - compatible = "cptt,claa101wb01"; - ddc-i2c-bus = <&panelddc>; - - power-supply = <&vdd_pnl_reg>; - enable-gpios = <&gpio 90 0>; - - backlight = <&backlight>; - }; +See panel-common.yaml in this directory.