2022-02-18 15:02:09

by Shubhrajyoti Datta

[permalink] [raw]
Subject: [PATCH v3] dt-bindings: mailbox: zynqmp_ipi: convert to yaml

Convert the ipi doc to yaml.

Signed-off-by: Shubhrajyoti Datta <[email protected]>
---
v2:
Fix the warnings reported by Rob
v3:
Run dtbs_check

.../mailbox/xlnx,zynqmp-ipi-mailbox.txt | 127 ------------------
.../mailbox/xlnx,zynqmp-ipi-mailbox.yaml | 126 +++++++++++++++++
2 files changed, 126 insertions(+), 127 deletions(-)
delete mode 100644 Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi-mailbox.txt
create mode 100644 Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi-mailbox.yaml

diff --git a/Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi-mailbox.txt b/Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi-mailbox.txt
deleted file mode 100644
index ad76edccf881..000000000000
--- a/Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi-mailbox.txt
+++ /dev/null
@@ -1,127 +0,0 @@
-Xilinx IPI Mailbox Controller
-========================================
-
-The Xilinx IPI(Inter Processor Interrupt) mailbox controller is to manage
-messaging between two Xilinx Zynq UltraScale+ MPSoC IPI agents. Each IPI
-agent owns registers used for notification and buffers for message.
-
- +-------------------------------------+
- | Xilinx ZynqMP IPI Controller |
- +-------------------------------------+
- +--------------------------------------------------+
-ATF | |
- | |
- | |
- +--------------------------+ |
- | |
- | |
- +--------------------------------------------------+
- +------------------------------------------+
- | +----------------+ +----------------+ |
-Hardware | | IPI Agent | | IPI Buffers | |
- | | Registers | | | |
- | | | | | |
- | +----------------+ +----------------+ |
- | |
- | Xilinx IPI Agent Block |
- +------------------------------------------+
-
-
-Controller Device Node:
-===========================
-Required properties:
---------------------
-IPI agent node:
-- compatible: Shall be: "xlnx,zynqmp-ipi-mailbox"
-- interrupt-parent: Phandle for the interrupt controller
-- interrupts: Interrupt information corresponding to the
- interrupt-names property.
-- xlnx,ipi-id: local Xilinx IPI agent ID
-- #address-cells: number of address cells of internal IPI mailbox nodes
-- #size-cells: number of size cells of internal IPI mailbox nodes
-
-Internal IPI mailbox node:
-- reg: IPI buffers address ranges
-- reg-names: Names of the reg resources. It should have:
- * local_request_region
- - IPI request msg buffer written by local and read
- by remote
- * local_response_region
- - IPI response msg buffer written by local and read
- by remote
- * remote_request_region
- - IPI request msg buffer written by remote and read
- by local
- * remote_response_region
- - IPI response msg buffer written by remote and read
- by local
-- #mbox-cells: Shall be 1. It contains:
- * tx(0) or rx(1) channel
-- xlnx,ipi-id: remote Xilinx IPI agent ID of which the mailbox is
- connected to.
-
-Optional properties:
---------------------
-- method: The method of accessing the IPI agent registers.
- Permitted values are: "smc" and "hvc". Default is
- "smc".
-
-Client Device Node:
-===========================
-Required properties:
---------------------
-- mboxes: Standard property to specify a mailbox
- (See ./mailbox.txt)
-- mbox-names: List of identifier strings for each mailbox
- channel.
-
-Example:
-===========================
- zynqmp_ipi {
- compatible = "xlnx,zynqmp-ipi-mailbox";
- interrupt-parent = <&gic>;
- interrupts = <0 29 4>;
- xlnx,ipi-id = <0>;
- #address-cells = <1>;
- #size-cells = <1>;
- ranges;
-
- /* APU<->RPU0 IPI mailbox controller */
- ipi_mailbox_rpu0: mailbox@ff990400 {
- reg = <0xff990400 0x20>,
- <0xff990420 0x20>,
- <0xff990080 0x20>,
- <0xff9900a0 0x20>;
- reg-names = "local_request_region",
- "local_response_region",
- "remote_request_region",
- "remote_response_region";
- #mbox-cells = <1>;
- xlnx,ipi-id = <1>;
- };
- /* APU<->RPU1 IPI mailbox controller */
- ipi_mailbox_rpu1: mailbox@ff990440 {
- reg = <0xff990440 0x20>,
- <0xff990460 0x20>,
- <0xff990280 0x20>,
- <0xff9902a0 0x20>;
- reg-names = "local_request_region",
- "local_response_region",
- "remote_request_region",
- "remote_response_region";
- #mbox-cells = <1>;
- xlnx,ipi-id = <2>;
- };
- };
- rpu0 {
- ...
- mboxes = <&ipi_mailbox_rpu0 0>,
- <&ipi_mailbox_rpu0 1>;
- mbox-names = "tx", "rx";
- };
- rpu1 {
- ...
- mboxes = <&ipi_mailbox_rpu1 0>,
- <&ipi_mailbox_rpu1 1>;
- mbox-names = "tx", "rx";
- };
diff --git a/Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi-mailbox.yaml b/Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi-mailbox.yaml
new file mode 100644
index 000000000000..6d65448ae838
--- /dev/null
+++ b/Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi-mailbox.yaml
@@ -0,0 +1,126 @@
+# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: "http://devicetree.org/schemas/mailbox/xlnx,zynqmp-ipi-mailbox.yaml#"
+$schema: "http://devicetree.org/meta-schemas/core.yaml#"
+
+title: Xilinx IPI(Inter Processor Interrupt) mailbox controller
+
+description: |
+ The Xilinx IPI(Inter Processor Interrupt) mailbox controller is to manage
+ messaging between two Xilinx Zynq UltraScale+ MPSoC IPI agents. Each IPI
+ agent owns registers used for notification and buffers for message.
+
+ +-------------------------------------+
+ | Xilinx ZynqMP IPI Controller |
+ +-------------------------------------+
+ +--------------------------------------------------+
+ TF-A | |
+ | |
+ | |
+ +--------------------------+ |
+ | |
+ | |
+ +--------------------------------------------------+
+ +------------------------------------------+
+ | +----------------+ +----------------+ |
+ Hardware | | IPI Agent | | IPI Buffers | |
+ | | Registers | | | |
+ | | | | | |
+ | +----------------+ +----------------+ |
+ | |
+ | Xilinx IPI Agent Block |
+ +------------------------------------------+
+
+maintainers:
+ - Shubhrajyoti Datta <[email protected]>
+
+properties:
+ compatible:
+ const: xlnx,zynqmp-ipi-mailbox
+
+ method:
+ description: |
+ The method of calling the PM-API firmware layer.
+ Permitted values are.
+ - "smc" : SMC #0, following the SMCCC
+ - "hvc" : HVC #0, following the SMCCC
+ Default is smc.
+
+ '#address-cells':
+ const: 2
+
+ '#size-cells':
+ const: 2
+
+ xlnx,ipi-id:
+ allOf:
+ - $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ Remote Xilinx IPI agent ID of which the mailbox is connected to.
+
+ interrupts:
+ maxItems: 1
+
+ child-node:
+ description: Internal ipi mailbox node
+ type: object # DT nodes are json objects
+ properties:
+ xlnx,ipi-id:
+ allOf:
+ - $ref: /schemas/types.yaml#/definitions/uint32
+ description:
+ Remote Xilinx IPI agent ID of which the mailbox is connected to.
+
+ "#mbox-cells":
+ const: 1
+ description:
+ It contains tx(0) or rx(1) channel IPI id number.
+
+ reg:
+ maxItems: 4
+
+ reg-names:
+ items:
+ - const: local_request_region
+ - const: local_response_region
+ - const: remote_request_region
+ - const: remote_response_region
+
+required:
+ - compatible
+ - interrupts
+ - '#address-cells'
+ - '#size-cells'
+
+additionalProperties: true
+
+examples:
+ - |
+ zynqmp_ipi {
+ compatible = "xlnx,zynqmp-ipi-mailbox";
+ interrupts = <0 29 4>;
+ xlnx,ipi-id = <0>;
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ ipi_mailbox_rpu0: mailbox@ff9905c0 {
+ reg = <0x0 0xff9905c0 0x0 0x20>,
+ <0x0 0xff9905e0 0x0 0x20>,
+ <0x0 0xff990e80 0x0 0x20>,
+ <0x0 0xff990ea0 0x0 0x20>;
+ reg-names = "local_request_region",
+ "local_response_region",
+ "remote_request_region",
+ "remote_response_region";
+ #mbox-cells = <1>;
+ xlnx,ipi-id = <4>;
+ };
+ };
+
+ rpu0 {
+ mboxes = <&ipi_mailbox_rpu0 0>,
+ <&ipi_mailbox_rpu0 1>;
+ mbox-names = "tx", "rx";
+ };
+...
--
2.17.1


2022-02-24 20:35:40

by Rob Herring

[permalink] [raw]
Subject: Re: [PATCH v3] dt-bindings: mailbox: zynqmp_ipi: convert to yaml

On Fri, Feb 18, 2022 at 06:28:08PM +0530, Shubhrajyoti Datta wrote:
> Convert the ipi doc to yaml.
>
> Signed-off-by: Shubhrajyoti Datta <[email protected]>
> ---
> v2:
> Fix the warnings reported by Rob
> v3:
> Run dtbs_check
>
> .../mailbox/xlnx,zynqmp-ipi-mailbox.txt | 127 ------------------
> .../mailbox/xlnx,zynqmp-ipi-mailbox.yaml | 126 +++++++++++++++++
> 2 files changed, 126 insertions(+), 127 deletions(-)
> delete mode 100644 Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi-mailbox.txt
> create mode 100644 Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi-mailbox.yaml
>
> diff --git a/Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi-mailbox.txt b/Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi-mailbox.txt
> deleted file mode 100644
> index ad76edccf881..000000000000
> --- a/Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi-mailbox.txt
> +++ /dev/null
> @@ -1,127 +0,0 @@
> -Xilinx IPI Mailbox Controller
> -========================================
> -
> -The Xilinx IPI(Inter Processor Interrupt) mailbox controller is to manage
> -messaging between two Xilinx Zynq UltraScale+ MPSoC IPI agents. Each IPI
> -agent owns registers used for notification and buffers for message.
> -
> - +-------------------------------------+
> - | Xilinx ZynqMP IPI Controller |
> - +-------------------------------------+
> - +--------------------------------------------------+
> -ATF | |
> - | |
> - | |
> - +--------------------------+ |
> - | |
> - | |
> - +--------------------------------------------------+
> - +------------------------------------------+
> - | +----------------+ +----------------+ |
> -Hardware | | IPI Agent | | IPI Buffers | |
> - | | Registers | | | |
> - | | | | | |
> - | +----------------+ +----------------+ |
> - | |
> - | Xilinx IPI Agent Block |
> - +------------------------------------------+
> -
> -
> -Controller Device Node:
> -===========================
> -Required properties:
> ---------------------
> -IPI agent node:
> -- compatible: Shall be: "xlnx,zynqmp-ipi-mailbox"
> -- interrupt-parent: Phandle for the interrupt controller
> -- interrupts: Interrupt information corresponding to the
> - interrupt-names property.
> -- xlnx,ipi-id: local Xilinx IPI agent ID
> -- #address-cells: number of address cells of internal IPI mailbox nodes
> -- #size-cells: number of size cells of internal IPI mailbox nodes
> -
> -Internal IPI mailbox node:
> -- reg: IPI buffers address ranges
> -- reg-names: Names of the reg resources. It should have:
> - * local_request_region
> - - IPI request msg buffer written by local and read
> - by remote
> - * local_response_region
> - - IPI response msg buffer written by local and read
> - by remote
> - * remote_request_region
> - - IPI request msg buffer written by remote and read
> - by local
> - * remote_response_region
> - - IPI response msg buffer written by remote and read
> - by local
> -- #mbox-cells: Shall be 1. It contains:
> - * tx(0) or rx(1) channel
> -- xlnx,ipi-id: remote Xilinx IPI agent ID of which the mailbox is
> - connected to.
> -
> -Optional properties:
> ---------------------
> -- method: The method of accessing the IPI agent registers.
> - Permitted values are: "smc" and "hvc". Default is
> - "smc".
> -
> -Client Device Node:
> -===========================
> -Required properties:
> ---------------------
> -- mboxes: Standard property to specify a mailbox
> - (See ./mailbox.txt)
> -- mbox-names: List of identifier strings for each mailbox
> - channel.
> -
> -Example:
> -===========================
> - zynqmp_ipi {
> - compatible = "xlnx,zynqmp-ipi-mailbox";
> - interrupt-parent = <&gic>;
> - interrupts = <0 29 4>;
> - xlnx,ipi-id = <0>;
> - #address-cells = <1>;
> - #size-cells = <1>;
> - ranges;
> -
> - /* APU<->RPU0 IPI mailbox controller */
> - ipi_mailbox_rpu0: mailbox@ff990400 {
> - reg = <0xff990400 0x20>,
> - <0xff990420 0x20>,
> - <0xff990080 0x20>,
> - <0xff9900a0 0x20>;
> - reg-names = "local_request_region",
> - "local_response_region",
> - "remote_request_region",
> - "remote_response_region";
> - #mbox-cells = <1>;
> - xlnx,ipi-id = <1>;
> - };
> - /* APU<->RPU1 IPI mailbox controller */
> - ipi_mailbox_rpu1: mailbox@ff990440 {
> - reg = <0xff990440 0x20>,
> - <0xff990460 0x20>,
> - <0xff990280 0x20>,
> - <0xff9902a0 0x20>;
> - reg-names = "local_request_region",
> - "local_response_region",
> - "remote_request_region",
> - "remote_response_region";
> - #mbox-cells = <1>;
> - xlnx,ipi-id = <2>;
> - };
> - };
> - rpu0 {
> - ...
> - mboxes = <&ipi_mailbox_rpu0 0>,
> - <&ipi_mailbox_rpu0 1>;
> - mbox-names = "tx", "rx";
> - };
> - rpu1 {
> - ...
> - mboxes = <&ipi_mailbox_rpu1 0>,
> - <&ipi_mailbox_rpu1 1>;
> - mbox-names = "tx", "rx";
> - };
> diff --git a/Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi-mailbox.yaml b/Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi-mailbox.yaml
> new file mode 100644
> index 000000000000..6d65448ae838
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/mailbox/xlnx,zynqmp-ipi-mailbox.yaml
> @@ -0,0 +1,126 @@
> +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
> +%YAML 1.2
> +---
> +$id: "http://devicetree.org/schemas/mailbox/xlnx,zynqmp-ipi-mailbox.yaml#"
> +$schema: "http://devicetree.org/meta-schemas/core.yaml#"
> +
> +title: Xilinx IPI(Inter Processor Interrupt) mailbox controller
> +
> +description: |
> + The Xilinx IPI(Inter Processor Interrupt) mailbox controller is to manage
> + messaging between two Xilinx Zynq UltraScale+ MPSoC IPI agents. Each IPI
> + agent owns registers used for notification and buffers for message.
> +
> + +-------------------------------------+
> + | Xilinx ZynqMP IPI Controller |
> + +-------------------------------------+
> + +--------------------------------------------------+
> + TF-A | |
> + | |
> + | |
> + +--------------------------+ |
> + | |
> + | |
> + +--------------------------------------------------+

Doesn't look like this is formatted correctly.

> + +------------------------------------------+
> + | +----------------+ +----------------+ |
> + Hardware | | IPI Agent | | IPI Buffers | |
> + | | Registers | | | |
> + | | | | | |
> + | +----------------+ +----------------+ |
> + | |
> + | Xilinx IPI Agent Block |
> + +------------------------------------------+
> +
> +maintainers:
> + - Shubhrajyoti Datta <[email protected]>
> +
> +properties:
> + compatible:
> + const: xlnx,zynqmp-ipi-mailbox
> +
> + method:
> + description: |
> + The method of calling the PM-API firmware layer.

> + Permitted values are.
> + - "smc" : SMC #0, following the SMCCC
> + - "hvc" : HVC #0, following the SMCCC
> + Default is smc.

All this can be expressed as a schema.

> +
> + '#address-cells':
> + const: 2
> +
> + '#size-cells':
> + const: 2
> +
> + xlnx,ipi-id:
> + allOf:

Don't need allOf.

> + - $ref: /schemas/types.yaml#/definitions/uint32
> + description:
> + Remote Xilinx IPI agent ID of which the mailbox is connected to.
> +
> + interrupts:
> + maxItems: 1
> +
> + child-node:

You have a child node called 'child-node'?

> + description: Internal ipi mailbox node
> + type: object # DT nodes are json objects
> + properties:
> + xlnx,ipi-id:
> + allOf:

Don't need allOf.

> + - $ref: /schemas/types.yaml#/definitions/uint32
> + description:
> + Remote Xilinx IPI agent ID of which the mailbox is connected to.
> +
> + "#mbox-cells":
> + const: 1
> + description:
> + It contains tx(0) or rx(1) channel IPI id number.
> +
> + reg:
> + maxItems: 4
> +
> + reg-names:
> + items:
> + - const: local_request_region
> + - const: local_response_region
> + - const: remote_request_region
> + - const: remote_response_region
> +
> +required:
> + - compatible
> + - interrupts
> + - '#address-cells'
> + - '#size-cells'
> +
> +additionalProperties: true

This is never correct to be true except for common, incomplete schemas.

> +
> +examples:
> + - |
> + zynqmp_ipi {
> + compatible = "xlnx,zynqmp-ipi-mailbox";
> + interrupts = <0 29 4>;
> + xlnx,ipi-id = <0>;
> + #address-cells = <2>;
> + #size-cells = <2>;

You dropped 'ranges'.

> +
> + ipi_mailbox_rpu0: mailbox@ff9905c0 {
> + reg = <0x0 0xff9905c0 0x0 0x20>,
> + <0x0 0xff9905e0 0x0 0x20>,
> + <0x0 0xff990e80 0x0 0x20>,
> + <0x0 0xff990ea0 0x0 0x20>;
> + reg-names = "local_request_region",
> + "local_response_region",
> + "remote_request_region",
> + "remote_response_region";
> + #mbox-cells = <1>;
> + xlnx,ipi-id = <4>;
> + };
> + };
> +
> + rpu0 {
> + mboxes = <&ipi_mailbox_rpu0 0>,
> + <&ipi_mailbox_rpu0 1>;
> + mbox-names = "tx", "rx";
> + };
> +...
> --
> 2.17.1
>
>