Add dt-bindings for Synopsys DesignWare MIPI DSI Host and VPG (Video
Pattern Generator) support in the IPK display subsystem.
The Synopsys DesignWare IPK display video pipeline is composed by a DSI
controller (snps,dw-ipk-dsi) and a VPG (snps,dw-ipk-vpg) as DPI
stimulus. Typically is used the Raspberry Pi
(raspberrypi,7inch-touchscreen-panel) as DSI panel that requires a
I2C controller (snps,designware-i2c).
Reported-by: Rob Herring <[email protected]>
Cc: David Airlie <[email protected]>
Cc: Daniel Vetter <[email protected]>
Cc: Rob Herring <[email protected]>
Cc: Mark Rutland <[email protected]>
Cc: Gustavo Pimentel <[email protected]>
Cc: Joao Pinto <[email protected]>
Signed-off-by: Angelo Ribeiro <[email protected]>
---
.../bindings/display/snps,dw-ipk-dsi.yaml | 162 +++++++++++++++++++++
.../bindings/display/snps,dw-ipk-vpg.yaml | 75 ++++++++++
2 files changed, 237 insertions(+)
create mode 100644 Documentation/devicetree/bindings/display/snps,dw-ipk-dsi.yaml
create mode 100644 Documentation/devicetree/bindings/display/snps,dw-ipk-vpg.yaml
diff --git a/Documentation/devicetree/bindings/display/snps,dw-ipk-dsi.yaml b/Documentation/devicetree/bindings/display/snps,dw-ipk-dsi.yaml
new file mode 100644
index 0000000..92b313c
--- /dev/null
+++ b/Documentation/devicetree/bindings/display/snps,dw-ipk-dsi.yaml
@@ -0,0 +1,162 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/snps,dw-ipk-dsi.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Synopsys DesignWare IPK specific extensions for the Synopsys DSI host
+ controller.
+
+maintainers:
+ - Angelo Ribeiro <[email protected]>
+
+description:
+ The Synopsys DesignWare IPK DSI controller uses the Synopsys DesignWare MIPI
+ DSI host controller.
+ For more info please refer to
+ Documentation/devicetree/bindings/display/bridge/dw_mipi_dsi.txt.
+
+properties:
+ compatible:
+ const: snps,dw-ipk-dsi
+
+ reg:
+ minItems: 2
+ items:
+ - description: DW MIPI DSI Host registers
+ - description: DW Phy registers
+
+ reg-names:
+ items:
+ - const: dsi
+ - const: phy
+
+ clocks:
+ minItems: 2
+ maxItems: 3
+ items:
+ - description: Peripheral clock
+ - description: PLL clock
+ - description: Pixel clock
+
+ clock-names:
+ items:
+ - const: pclk
+ - const: ref
+ - const: px_clk
+
+ resets:
+ minItems: 1
+ items:
+ - description: APB reset line
+
+ reset-names:
+ items:
+ - const: apb
+
+ ports:
+ type: object
+ description:
+ A port node as defined in
+ Documentation/devicetree/bindings/media/video-interfaces.txt and
+ Documentation/devicetree/bindings/graph.txt.
+ properties:
+ port@0:
+ type: object
+ description:
+ Input endpoint of the controller, connects to a DPI source.
+
+ port@1:
+ type: object
+ description:
+ Output endpoint of the controller, connects to a panel or a bridge
+ input port.
+
+patternProperties:
+ "^(panel|panel-dsi)@[0-9]$":
+ type: object
+ description:
+ A node containing the panel or bridge description as defined in
+ Documentation/devicetree/bindings/display/mipi-dsi-bus.txt.
+ properties:
+ port:
+ type: object
+ description:
+ Panel or bridge port node connected to the DSI output port (port@1).
+
+ "#address-cells":
+ const: 1
+
+ "#size-cells":
+ const: 0
+
+required:
+ - "#address-cells"
+ - "#size-cells"
+ - compatible
+ - reg
+ - reg-names
+ - clocks
+ - clock-names
+ - reset
+ - reset-names
+ - ports
+
+additionalProperties: false
+
+examples:
+ - |
+ dsi1: dw-ipk-dsi@0x02000 {
+ compatible = "snps,dw-ipk-dsi";
+ reg = <0x02000 0xfff>, <0x05000 0xfff>;
+ reg-names = "dsi", "phy";
+ clocks = <&apb_clk>, <&pll_clk>;
+ clock-names = "pclk", "ref";
+ resets = <&ipk_rst 1>;
+ reset-names = "apb";
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ ports {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port@0 {
+ reg = <0>;
+ dsi1_in: endpoint@0 {
+ remote-endpoint = <&vbridge_out>;
+ };
+ };
+
+ port@1 {
+ reg = <1>;
+ dsi_out_port: endpoint {
+ remote-endpoint = <&panel_dsi_port>;
+ };
+ };
+ };
+ };
+
+ i2c@0x01000 {
+ compatible = "snps,designware-i2c";
+ reg = <0x01000 0x100>;
+ clock-frequency = <400000>;
+ clocks = <&i2cclk>;
+ interrupts = <0>;
+ resets = <&ipk_rst 0>;
+ reset-names = "i2c";
+
+ lcd@45 {
+ compatible = "raspberrypi,7inch-touchscreen-panel";
+ reg = <0x45>;
+
+ port {
+ panel_dsi_port: endpoint {
+ remote-endpoint = <&dsi_out_port>;
+ };
+ };
+ };
+ };
+
+...
diff --git a/Documentation/devicetree/bindings/display/snps,dw-ipk-vpg.yaml b/Documentation/devicetree/bindings/display/snps,dw-ipk-vpg.yaml
new file mode 100644
index 0000000..b74b02e
--- /dev/null
+++ b/Documentation/devicetree/bindings/display/snps,dw-ipk-vpg.yaml
@@ -0,0 +1,75 @@
+# SPDX-License-Identifier: GPL-2.0
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/display/snps,dw-ipk-vpg.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Synopsys DesignWare Video Pattern Generator (VPG) for MIPI DSI HOST
+
+maintainers:
+ - Angelo Ribeiro <[email protected]>
+
+properties:
+ compatible:
+ const: snps,dw-ipk-vpg
+
+ reg:
+ minItems: 2
+ items:
+ - description: Video Pattern Generator registers
+ - description: Clock generator (MMCM) registers
+
+ reg-names:
+ items:
+ - const: vpg
+ - const: mmcm
+
+ resets:
+ minItems: 2
+ items:
+ - description: The VPG reset line
+ - description: The MMCM reset line
+
+ reset-names:
+ items:
+ - const: vpg
+ - const: mmcm
+
+ port:
+ type: object
+ description:
+ Video port for DPI output.
+ The VPG has one video port for internal DPI stimulus over the MIPI
+ DSI host controller.
+
+required:
+ - compatible
+ - reg
+ - reg-names
+ - resets
+ - reset-names
+ - port
+
+additionalProperties: false
+
+examples:
+ - |
+ dsi_vpg: dw-dsi-vpg@0x03000 {
+ compatible = "snps,dw-ipk-vpg";
+ reg = <0x03000 0xfff>, <0x07000 0xfff>;
+ reg-names = "vpg", "mmcm";
+ resets = <&ipk_rst 2>, <&ipk_rst 3>;
+ reset-names = "vpg", "mmcm";
+ status = "okay";
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ port {
+ vpg_out: endpoint {
+ remote-endpoint = <&dsi1_in>;
+ };
+ };
+ };
+
+...
--
2.7.4
On Mon, 6 Apr 2020 15:24:11 +0200, Angelo Ribeiro wrote:
> Add dt-bindings for Synopsys DesignWare MIPI DSI Host and VPG (Video
> Pattern Generator) support in the IPK display subsystem.
>
> The Synopsys DesignWare IPK display video pipeline is composed by a DSI
> controller (snps,dw-ipk-dsi) and a VPG (snps,dw-ipk-vpg) as DPI
> stimulus. Typically is used the Raspberry Pi
> (raspberrypi,7inch-touchscreen-panel) as DSI panel that requires a
> I2C controller (snps,designware-i2c).
>
> Reported-by: Rob Herring <[email protected]>
> Cc: David Airlie <[email protected]>
> Cc: Daniel Vetter <[email protected]>
> Cc: Rob Herring <[email protected]>
> Cc: Mark Rutland <[email protected]>
> Cc: Gustavo Pimentel <[email protected]>
> Cc: Joao Pinto <[email protected]>
> Signed-off-by: Angelo Ribeiro <[email protected]>
> ---
> .../bindings/display/snps,dw-ipk-dsi.yaml | 162 +++++++++++++++++++++
> .../bindings/display/snps,dw-ipk-vpg.yaml | 75 ++++++++++
> 2 files changed, 237 insertions(+)
> create mode 100644 Documentation/devicetree/bindings/display/snps,dw-ipk-dsi.yaml
> create mode 100644 Documentation/devicetree/bindings/display/snps,dw-ipk-vpg.yaml
>
My bot found errors running 'make dt_binding_check' on your patch:
Documentation/devicetree/bindings/display/snps,dw-ipk-dsi.example.dts:60.17-30: Warning (reg_format): /example-0/i2c@0x01000/lcd@45:reg: property has invalid length (4 bytes) (#address-cells == 2, #size-cells == 1)
Documentation/devicetree/bindings/display/snps,dw-ipk-dsi.example.dt.yaml: Warning (pci_device_bus_num): Failed prerequisite 'reg_format'
Documentation/devicetree/bindings/display/snps,dw-ipk-dsi.example.dts:49.21-68.11: Warning (i2c_bus_bridge): /example-0/i2c@0x01000: incorrect #address-cells for I2C bus
Documentation/devicetree/bindings/display/snps,dw-ipk-dsi.example.dts:49.21-68.11: Warning (i2c_bus_bridge): /example-0/i2c@0x01000: incorrect #size-cells for I2C bus
Documentation/devicetree/bindings/display/snps,dw-ipk-dsi.example.dt.yaml: Warning (i2c_bus_reg): Failed prerequisite 'reg_format'
Documentation/devicetree/bindings/display/snps,dw-ipk-dsi.example.dt.yaml: Warning (i2c_bus_reg): Failed prerequisite 'i2c_bus_bridge'
Documentation/devicetree/bindings/display/snps,dw-ipk-dsi.example.dt.yaml: Warning (spi_bus_reg): Failed prerequisite 'reg_format'
Documentation/devicetree/bindings/display/snps,dw-ipk-dsi.example.dts:58.20-67.15: Warning (avoid_default_addr_size): /example-0/i2c@0x01000/lcd@45: Relying on default #address-cells value
Documentation/devicetree/bindings/display/snps,dw-ipk-dsi.example.dts:58.20-67.15: Warning (avoid_default_addr_size): /example-0/i2c@0x01000/lcd@45: Relying on default #size-cells value
/builds/robherring/linux-dt-review/Documentation/devicetree/bindings/display/snps,dw-ipk-vpg.example.dt.yaml: example-0: 'dw-dsi-vpg@0x03000' does not match any of the regexes: '.*-names$', '.*-supply$', '^#.*-cells$', '^#[a-zA-Z0-9,+\\-._]{0,63}$', '^[a-zA-Z][a-zA-Z0-9,+\\-._]{0,63}$', '^[a-zA-Z][a-zA-Z0-9,+\\-._]{0,63}@[0-9a-fA-F]+(,[0-9a-fA-F]+)*$', '^__.*__$', 'pinctrl-[0-9]+'
/builds/robherring/linux-dt-review/Documentation/devicetree/bindings/display/snps,dw-ipk-vpg.example.dt.yaml: dw-dsi-vpg@0x03000: '#address-cells', '#size-cells' do not match any of the regexes: 'pinctrl-[0-9]+'
/builds/robherring/linux-dt-review/Documentation/devicetree/bindings/display/snps,dw-ipk-dsi.example.dt.yaml: example-0: 'dw-ipk-dsi@0x02000', 'i2c@0x01000' do not match any of the regexes: '.*-names$', '.*-supply$', '^#.*-cells$', '^#[a-zA-Z0-9,+\\-._]{0,63}$', '^[a-zA-Z][a-zA-Z0-9,+\\-._]{0,63}$', '^[a-zA-Z][a-zA-Z0-9,+\\-._]{0,63}@[0-9a-fA-F]+(,[0-9a-fA-F]+)*$', '^__.*__$', 'pinctrl-[0-9]+'
/builds/robherring/linux-dt-review/Documentation/devicetree/bindings/display/snps,dw-ipk-dsi.example.dt.yaml: dw-ipk-dsi@0x02000: clock-names: ['pclk', 'ref'] is too short
/builds/robherring/linux-dt-review/Documentation/devicetree/bindings/display/snps,dw-ipk-dsi.example.dt.yaml: dw-ipk-dsi@0x02000: 'reset' is a required property
See https://patchwork.ozlabs.org/patch/1266879
If you already ran 'make dt_binding_check' and didn't see the above
error(s), then make sure dt-schema is up to date:
pip3 install git+https://github.com/devicetree-org/dt-schema.git@master --upgrade
Please check and re-submit.