On Wed, Oct 2, 2019 at 10:17 AM Benjamin Gaignard <benjamin.gaignard@xxxxxx> wrote: > > Convert the STM32 display binding to DT schema format using json-schema. > Split the original bindings in two yaml files: > - one for display controller (ltdc) > - one for DSI controller > > Signed-off-by: Benjamin Gaignard <benjamin.gaignard@xxxxxx> > --- > .../devicetree/bindings/display/st,stm32-dsi.yaml | 130 +++++++++++++++++++ > .../devicetree/bindings/display/st,stm32-ltdc.txt | 144 --------------------- > .../devicetree/bindings/display/st,stm32-ltdc.yaml | 82 ++++++++++++ > 3 files changed, 212 insertions(+), 144 deletions(-) > create mode 100644 Documentation/devicetree/bindings/display/st,stm32-dsi.yaml > delete mode 100644 Documentation/devicetree/bindings/display/st,stm32-ltdc.txt > create mode 100644 Documentation/devicetree/bindings/display/st,stm32-ltdc.yaml > > diff --git a/Documentation/devicetree/bindings/display/st,stm32-dsi.yaml b/Documentation/devicetree/bindings/display/st,stm32-dsi.yaml > new file mode 100644 > index 000000000000..8143cf6f0ce7 > --- /dev/null > +++ b/Documentation/devicetree/bindings/display/st,stm32-dsi.yaml > @@ -0,0 +1,130 @@ > +# SPDX-License-Identifier: GPL-2.0 If all the authors are ST, can you relicense to (GPL-2.0-only OR BSD-2-Clause). > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/display/st,stm32-dsi.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: STMicroelectronics STM32 DSI host controller > + > +maintainers: > + - Philippe Cornu <philippe.cornu@xxxxxx> > + - Yannick Fertre <yannick.fertre@xxxxxx> > + > +properties: > + "#address-cells": true > + "#size-cells": true > + > + compatible: > + const: st,stm32-dsi > + > + reg: > + maxItems: 1 > + > + clocks: > + items: > + - description: Module Clock > + - description: DSI bus clock > + - description: Pixel clock > + minItems: 2 > + maxItems: 3 > + > + clock-names: > + items: > + - const: pclk > + - const: ref > + - const: px_clk > + minItems: 2 > + maxItems: 3 > + > + resets: > + maxItems: 1 > + > + reset-names: > + items: > + - const: apb > + > + phy-dsi-supply: > + maxItems: 1 > + description: > + Phandle of the regulator that provides the supply voltage. > + > + ports: > + type: object > + description: > + A node containing DSI input & output port nodes with endpoint > + definitions as documented in > + Documentation/devicetree/bindings/media/video-interfaces.txt > + Documentation/devicetree/bindings/graph.txt > + > + port: This needs to be under 'properties' under 'ports'. And you need to have 'port@0' and 'port@1' instead. > + type: object > + description: > + "A port node with endpoint definitions as defined in > + Documentation/devicetree/bindings/media/video-interfaces.txt. > + port@0: DSI input port node, connected to the ltdc rgb output port. > + port@1: DSI output port node, connected to a panel or a bridge input port" > + > +required: > + - "#address-cells" > + - "#size-cells" > + - compatible > + - reg > + - clocks > + - clock-names > + - resets > + - ports Add an 'additionalProperties: false' here. > + > +examples: > + - | > + #include <dt-bindings/interrupt-controller/arm-gic.h> > + #include <dt-bindings/clock/stm32mp1-clks.h> > + #include <dt-bindings/reset/stm32mp1-resets.h> > + #include <dt-bindings/gpio/gpio.h> > + dsi: dsi@5a000000 { > + compatible = "st,stm32-dsi"; > + reg = <0x5a000000 0x800>; > + clocks = <&rcc DSI_K>, <&clk_hse>, <&rcc DSI_PX>; > + clock-names = "pclk", "ref", "px_clk"; > + resets = <&rcc DSI_R>; > + reset-names = "apb"; > + phy-dsi-supply = <®18>; > + > + #address-cells = <1>; > + #size-cells = <0>; > + > + ports { > + #address-cells = <1>; > + #size-cells = <0>; > + > + port@0 { > + reg = <0>; > + dsi_in: endpoint { > + remote-endpoint = <<dc_ep1_out>; > + }; > + }; > + > + port@1 { > + reg = <1>; > + dsi_out: endpoint { > + remote-endpoint = <&panel_in>; > + }; > + }; > + }; > + > + panel { Not documented. > + compatible = "orisetech,otm8009a"; > + reg = <0>; > + reset-gpios = <&gpioe 4 GPIO_ACTIVE_LOW>; > + power-supply = <&v3v3>; > + > + port { > + panel_in: endpoint { > + remote-endpoint = <&dsi_out>; > + }; > + }; > + }; > + }; > + > +... > + > + [...] > diff --git a/Documentation/devicetree/bindings/display/st,stm32-ltdc.yaml b/Documentation/devicetree/bindings/display/st,stm32-ltdc.yaml > new file mode 100644 > index 000000000000..5d01c83234a3 > --- /dev/null > +++ b/Documentation/devicetree/bindings/display/st,stm32-ltdc.yaml > @@ -0,0 +1,82 @@ > +# SPDX-License-Identifier: GPL-2.0 > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/display/st,stm32-ltdc.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: STMicroelectronics STM32 lcd-tft display controller > + > +maintainers: > + - Philippe Cornu <philippe.cornu@xxxxxx> > + - Yannick Fertre <yannick.fertre@xxxxxx> > + > +properties: > + compatible: > + const: st,stm32-ltdc > + > + reg: > + maxItems: 1 > + > + interrupts: > + minItems: 2 > + maxItems: 2 > + > + clocks: > + items: > + - description: Module Clock Just 'maxItems: 1' is sufficient with a single entry. > + > + clock-names: > + items: > + - const: lcd > + > + pinctrl-names: true > + > + resets: > + maxItems: 1 Inconsistent indenting. > + > + port: > + type: object > + description: > + "Video port for DPI RGB output. > + ltdc has one video port with up to 2 endpoints: > + - for external dpi rgb panel or bridge, using gpios. > + - for internal dpi input of the MIPI DSI host controller. > + Note: These 2 endpoints cannot be activated simultaneously. > + Please refer to the bindings defined in > + Documentation/devicetree/bindings/media/video-interfaces.txt." > + > +patternProperties: > + "^pinctrl-[0-9]+$": true No need for this, it gets added automatically. > + > +required: > + - compatible > + - reg > + - interrupts > + - clocks > + - clock-names > + - resets > + - port Add an 'additionalProperties: false' here. > + > +examples: > + - | > + #include <dt-bindings/interrupt-controller/arm-gic.h> > + #include <dt-bindings/clock/stm32mp1-clks.h> > + #include <dt-bindings/reset/stm32mp1-resets.h> > + ltdc: display-controller@40016800 { > + compatible = "st,stm32-ltdc"; > + reg = <0x5a001000 0x400>; > + interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>, > + <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>; > + clocks = <&rcc LTDC_PX>; > + clock-names = "lcd"; > + resets = <&rcc LTDC_R>; > + > + port { > + ltdc_out_dsi: endpoint { > + remote-endpoint = <&dsi_in>; > + }; > + }; > + }; > + > +... > + > -- > 2.15.0 >