[PATCH v5 1/5] dt-bindings: display: add bindings for MIPI DBI compatible SPI panels
Rob Herring
robh at kernel.org
Thu Feb 24 18:41:09 UTC 2022
On Thu, Feb 24, 2022 at 04:27:04PM +0100, Noralf Trønnes wrote:
> Add binding for MIPI DBI compatible SPI panels.
>
> v5:
> - Add sainsmart18 to compatible items (Rob)
> - Expand write-only description (Sam)
>
> v4:
> - There should only be two compatible (Maxime)
> - s/panel-dbi-spi/panel-mipi-dbi-spi/in compatible
>
> v3:
> - Move properties to Device Tree (Maxime)
> - Use contains for compatible (Maxime)
> - Add backlight property to example
> - Flesh out description
>
> v2:
> - Fix path for panel-common.yaml
> - Use unevaluatedProperties
> - Drop properties which are in the allOf section
> - Drop model property (Rob)
>
> Acked-by: Maxime Ripard <maxime at cerno.tech>
> Acked-by: Sam Ravnborg <sam at ravnborg.org>
> Signed-off-by: Noralf Trønnes <noralf at tronnes.org>
> ---
> .../display/panel/panel-mipi-dbi-spi.yaml | 127 ++++++++++++++++++
> 1 file changed, 127 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/display/panel/panel-mipi-dbi-spi.yaml
>
> diff --git a/Documentation/devicetree/bindings/display/panel/panel-mipi-dbi-spi.yaml b/Documentation/devicetree/bindings/display/panel/panel-mipi-dbi-spi.yaml
> new file mode 100644
> index 000000000000..a054f65435ce
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/display/panel/panel-mipi-dbi-spi.yaml
> @@ -0,0 +1,127 @@
> +# SPDX-License-Identifier: (GPL-2.0-only or BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: http://devicetree.org/schemas/display/panel/panel-mipi-dbi-spi.yaml#
> +$schema: http://devicetree.org/meta-schemas/core.yaml#
> +
> +title: MIPI DBI SPI Panel
> +
> +maintainers:
> + - Noralf Trønnes <noralf at tronnes.org>
> +
> +description: |
> + This binding is for display panels using a MIPI DBI compatible controller
> + in SPI mode.
> +
> + The MIPI Alliance Standard for Display Bus Interface defines the electrical
> + and logical interfaces for display controllers historically used in mobile
> + phones. The standard defines 4 display architecture types and this binding is
> + for type 1 which has full frame memory. There are 3 interface types in the
> + standard and type C is the serial interface.
> +
> + The standard defines the following interface signals for type C:
> + - Power:
> + - Vdd: Power supply for display module
> + - Vddi: Logic level supply for interface signals
> + Combined into one in this binding called: power-supply
> + - Interface:
> + - CSx: Chip select
> + - SCL: Serial clock
> + - Dout: Serial out
> + - Din: Serial in
> + - SDA: Bidrectional in/out
> + - D/CX: Data/command selection, high=data, low=command
> + Called dc-gpios in this binding.
> + - RESX: Reset when low
> + Called reset-gpios in this binding.
> +
> + The type C interface has 3 options:
> +
> + - Option 1: 9-bit mode and D/CX as the 9th bit
> + | Command | the next command or following data |
> + |<0><D7><D6><D5><D4><D3><D2><D1><D0>|<D/CX><D7><D6><D5><D4><D3><D2><D1><D0>|
> +
> + - Option 2: 16-bit mode and D/CX as a 9th bit
> + | Command or data |
> + |<X><X><X><X><X><X><X><D/CX><D7><D6><D5><D4><D3><D2><D1><D0>|
> +
> + - Option 3: 8-bit mode and D/CX as a separate interface line
> + | Command or data |
> + |<D7><D6><D5><D4><D3><D2><D1><D0>|
> +
> + The panel resolution is specified using the panel-timing node properties
> + hactive (width) and vactive (height). The other mandatory panel-timing
> + properties should be set to zero except clock-frequency which can be
> + optionally set to inform about the actual pixel clock frequency.
> +
> + If the panel is wired to the controller at an offset specify this using
> + hback-porch (x-offset) and vback-porch (y-offset).
> +
> +allOf:
> + - $ref: panel-common.yaml#
> + - $ref: /schemas/spi/spi-peripheral-props.yaml#
> +
> +properties:
> + compatible:
> + items:
> + - enum:
> + - sainsmart18
> + - const: panel-mipi-dbi-spi
> +
> + write-only:
> + type: boolean
> + description:
> + Controller is not readable (ie. Din (MISO on the SPI interface) is not
> + wired up).
> +
> + dc-gpios:
> + maxItems: 1
> + description: |
> + Controller data/command selection (D/CX) in 4-line SPI mode.
> + If not set, the controller is in 3-line SPI mode.
> +
> +required:
> + - compatible
> + - reg
> + - panel-timing
> +
> +unevaluatedProperties: false
> +
> +examples:
> + - |
> + #include <dt-bindings/gpio/gpio.h>
> +
> + spi {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + display at 0{
> + compatible = "sainsmart18", "panel-mipi-dbi-spi";
> + reg = <0>;
> + spi-max-frequency = <40000000>;
> +
> + dc-gpios = <&gpio 24 GPIO_ACTIVE_HIGH>;
> + reset-gpios = <&gpio 25 GPIO_ACTIVE_HIGH>;
> + write-only;
> +
> + backlight = <&backlight>;
> +
> + width-mm = <35>;
> + height-mm = <28>;
> +
> + panel-timing {
> + hactive = <160>;
The indentation is inconsistent here. I'd suggest using 4 spaces for
each level.
With that and yamllint fix,
Reviewed-by: Rob Herring <robh at kernel.org>
> + vactive = <128>;
> + hback-porch = <0>;
> + vback-porch = <0>;
> +
> + clock-frequency = <0>;
> + hfront-porch = <0>;
> + hsync-len = <0>;
> + vfront-porch = <0>;
> + vsync-len = <0>;
0 doesn't make much sense here.
If most of this is n/a and just populated to satisfy the schema, we
should probably make all these optional. Anyway, that's a separate
issue to address.
Rob
More information about the dri-devel
mailing list