Message ID | 20241216084817.373131-3-apatel@ventanamicro.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | Linux SBI MPXY and RPMI drivers | expand |
On Mon, 16 Dec 2024 14:18:11 +0530, Anup Patel wrote: > Add device tree bindings for the common RISC-V Platform Management > Interface (RPMI) shared memory transport as a mailbox controller. > > Signed-off-by: Anup Patel <apatel@ventanamicro.com> > --- > .../mailbox/riscv,rpmi-shmem-mbox.yaml | 135 ++++++++++++++++++ > 1 file changed, 135 insertions(+) > create mode 100644 Documentation/devicetree/bindings/mailbox/riscv,rpmi-shmem-mbox.yaml > My bot found errors running 'make dt_binding_check' on your patch: yamllint warnings/errors: ./Documentation/devicetree/bindings/mailbox/riscv,rpmi-shmem-mbox.yaml:33:9: [warning] wrong indentation: expected 10 but found 8 (indentation) ./Documentation/devicetree/bindings/mailbox/riscv,rpmi-shmem-mbox.yaml:39:9: [warning] wrong indentation: expected 10 but found 8 (indentation) ./Documentation/devicetree/bindings/mailbox/riscv,rpmi-shmem-mbox.yaml:46:9: [warning] wrong indentation: expected 10 but found 8 (indentation) ./Documentation/devicetree/bindings/mailbox/riscv,rpmi-shmem-mbox.yaml:52:9: [warning] wrong indentation: expected 10 but found 8 (indentation) dtschema/dtc warnings/errors: /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/mailbox/riscv,rpmi-shmem-mbox.yaml: properties:interrupts: 'anyOf' conditional failed, one must be fixed: 'minItems' is not one of ['maxItems', 'description', 'deprecated'] hint: Only "maxItems" is required for a single entry if there are no constraints defined for the values. 'minItems' is not one of ['description', 'deprecated', 'const', 'enum', 'minimum', 'maximum', 'multipleOf', 'default', '$ref', 'oneOf'] 'maxItems' is not one of ['description', 'deprecated', 'const', 'enum', 'minimum', 'maximum', 'multipleOf', 'default', '$ref', 'oneOf'] 1 is less than the minimum of 2 hint: Arrays must be described with a combination of minItems/maxItems/items hint: cell array properties must define how many entries and what the entries are when there is more than one entry. from schema $id: http://devicetree.org/meta-schemas/interrupts.yaml# /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/mailbox/riscv,rpmi-shmem-mbox.yaml: $id: Cannot determine base path from $id, relative path/filename doesn't match actual path or filename $id: http://devicetree.org/schemas/mailbox/riscv,sbi-mpxy-mbox.yaml file: /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/mailbox/riscv,rpmi-shmem-mbox.yaml /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/mailbox/riscv,rpmi-shmem-mbox.example.dtb: mailbox@10080000: reg: 'oneOf' conditional failed, one must be fixed: [[0, 268959744], [0, 65536], [0, 269025280], [0, 65536], [0, 269090816], [0, 4]] is too long from schema $id: http://devicetree.org/schemas/mailbox/riscv,sbi-mpxy-mbox.yaml# /builds/robherring/dt-review-ci/linux/Documentation/devicetree/bindings/mailbox/riscv,rpmi-shmem-mbox.example.dtb: mailbox@10001000: reg: 'oneOf' conditional failed, one must be fixed: [[0, 268439552], [0, 2048], [0, 268441600], [0, 2048], [0, 268443648], [0, 2048], [0, 268445696], [0, 2048], [0, 268447744], [0, 4]] is too long from schema $id: http://devicetree.org/schemas/mailbox/riscv,sbi-mpxy-mbox.yaml# doc reference errors (make refcheckdocs): See https://patchwork.ozlabs.org/project/devicetree-bindings/patch/20241216084817.373131-3-apatel@ventanamicro.com The base for the series is generally the latest rc1. A different dependency should be noted in *this* patch. If you already ran 'make dt_binding_check' and didn't see the above error(s), then make sure 'yamllint' is installed and dt-schema is up to date: pip3 install dtschema --upgrade Please check and re-submit after running the above command yourself. Note that DT_SCHEMA_FILES can be set to your schema file to speed up checking your schema. However, it must be unset to test all examples with your schema.
On Mon, Dec 16, 2024 at 02:18:11PM +0530, Anup Patel wrote: > Add device tree bindings for the common RISC-V Platform Management > Interface (RPMI) shared memory transport as a mailbox controller. > > Signed-off-by: Anup Patel <apatel@ventanamicro.com> > --- > .../mailbox/riscv,rpmi-shmem-mbox.yaml | 135 ++++++++++++++++++ > 1 file changed, 135 insertions(+) > create mode 100644 Documentation/devicetree/bindings/mailbox/riscv,rpmi-shmem-mbox.yaml > > diff --git a/Documentation/devicetree/bindings/mailbox/riscv,rpmi-shmem-mbox.yaml b/Documentation/devicetree/bindings/mailbox/riscv,rpmi-shmem-mbox.yaml > new file mode 100644 > index 000000000000..8d713ba7ffc7 > --- /dev/null > +++ b/Documentation/devicetree/bindings/mailbox/riscv,rpmi-shmem-mbox.yaml > @@ -0,0 +1,135 @@ > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > +%YAML 1.2 > +--- > +$id: http://devicetree.org/schemas/mailbox/riscv,sbi-mpxy-mbox.yaml# > +$schema: http://devicetree.org/meta-schemas/core.yaml# > + > +title: RISC-V Platform Management Interface (RPMI) shared memory mailbox > + > +maintainers: > + - Anup Patel <anup@brainfault.org> > + > +description: | > + The RISC-V Platform Management Interface (RPMI) [1] defines a common shared > + memory based RPMI transport. This RPMI shared memory transport integrates as > + mailbox controller in the SBI implementation or supervisor software whereas > + each RPMI service group is mailbox client in the SBI implementation and > + supervisor software. > + > + =========================================== > + References > + =========================================== > + > + [1] RISC-V Platform Management Interface (RPMI) > + https://github.com/riscv-non-isa/riscv-rpmi/releases > + > +properties: > + compatible: > + const: riscv,rpmi-shmem-mbox > + > + reg: > + oneOf: > + - items: > + - description: A2P request queue base address > + - description: P2A acknowledgment queue base address > + - description: P2A request queue base address > + - description: A2P acknowledgment queue base address > + - description: A2P doorbell address > + - items: > + - description: A2P request queue base address > + - description: P2A acknowledgment queue base address > + - description: A2P doorbell address > + > + reg-names: > + oneOf: > + - items: > + - const: a2p-req > + - const: p2a-ack > + - const: p2a-req > + - const: a2p-ack > + - const: db-reg > + - items: > + - const: a2p-req > + - const: p2a-ack > + - const: db-reg > + > + interrupts: > + minItems: 1 > + maxItems: 1 > + description: > + The RPMI shared memory transport supports wired interrupt specified by > + this property as the P2A doorbell. > + > + msi-parent: > + description: > + The RPMI shared memory transport supports MSI as P2A doorbell and this > + property specifies the target MSI controller. > + > + riscv,slot-size: > + $ref: /schemas/types.yaml#/definitions/uint32 > + minimum: 64 > + description: > + Power-of-2 RPMI slot size of the RPMI shared memory transport. > + > + riscv,db-mask: > + $ref: /schemas/types.yaml#/definitions/uint32 > + description: > + Update only the register bits of doorbell defined by the mask (32 bit). For an untested RFC, the bindings here look mostly fine. I'd suggest renaming "db" to "doorbell" in properties etc, since we can easily afford the extra characters. Please make sure to actually test the bindings next time around, looks like all 3 bindings produced warnings. General comments like not needing to provide minItems: 1 when maxItems is also 1, and not needing a | unless you have formatting to preserve. > + If this property is not present then mask is assumed to be 0xffffffff. Also, things like this should be handled with a `default: 0xffffffff`, rather than describing it in text. I'll give the !rfc bindings a proper review when they appear, but before that I'll give the code here a go too - thanks for sending the patches. Cheers, Conor.
On Tue, Dec 17, 2024 at 12:19 AM Conor Dooley <conor@kernel.org> wrote: > > On Mon, Dec 16, 2024 at 02:18:11PM +0530, Anup Patel wrote: > > Add device tree bindings for the common RISC-V Platform Management > > Interface (RPMI) shared memory transport as a mailbox controller. > > > > Signed-off-by: Anup Patel <apatel@ventanamicro.com> > > --- > > .../mailbox/riscv,rpmi-shmem-mbox.yaml | 135 ++++++++++++++++++ > > 1 file changed, 135 insertions(+) > > create mode 100644 Documentation/devicetree/bindings/mailbox/riscv,rpmi-shmem-mbox.yaml > > > > diff --git a/Documentation/devicetree/bindings/mailbox/riscv,rpmi-shmem-mbox.yaml b/Documentation/devicetree/bindings/mailbox/riscv,rpmi-shmem-mbox.yaml > > new file mode 100644 > > index 000000000000..8d713ba7ffc7 > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/mailbox/riscv,rpmi-shmem-mbox.yaml > > @@ -0,0 +1,135 @@ > > +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) > > +%YAML 1.2 > > +--- > > +$id: http://devicetree.org/schemas/mailbox/riscv,sbi-mpxy-mbox.yaml# > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > + > > +title: RISC-V Platform Management Interface (RPMI) shared memory mailbox > > + > > +maintainers: > > + - Anup Patel <anup@brainfault.org> > > + > > +description: | > > + The RISC-V Platform Management Interface (RPMI) [1] defines a common shared > > + memory based RPMI transport. This RPMI shared memory transport integrates as > > + mailbox controller in the SBI implementation or supervisor software whereas > > + each RPMI service group is mailbox client in the SBI implementation and > > + supervisor software. > > + > > + =========================================== > > + References > > + =========================================== > > + > > + [1] RISC-V Platform Management Interface (RPMI) > > + https://github.com/riscv-non-isa/riscv-rpmi/releases > > + > > +properties: > > + compatible: > > + const: riscv,rpmi-shmem-mbox > > + > > + reg: > > + oneOf: > > + - items: > > + - description: A2P request queue base address > > + - description: P2A acknowledgment queue base address > > + - description: P2A request queue base address > > + - description: A2P acknowledgment queue base address > > + - description: A2P doorbell address > > + - items: > > + - description: A2P request queue base address > > + - description: P2A acknowledgment queue base address > > + - description: A2P doorbell address > > + > > + reg-names: > > + oneOf: > > + - items: > > + - const: a2p-req > > + - const: p2a-ack > > + - const: p2a-req > > + - const: a2p-ack > > + - const: db-reg > > + - items: > > + - const: a2p-req > > + - const: p2a-ack > > + - const: db-reg > > + > > + interrupts: > > + minItems: 1 > > + maxItems: 1 > > + description: > > + The RPMI shared memory transport supports wired interrupt specified by > > + this property as the P2A doorbell. > > + > > + msi-parent: > > + description: > > + The RPMI shared memory transport supports MSI as P2A doorbell and this > > + property specifies the target MSI controller. > > + > > + riscv,slot-size: > > + $ref: /schemas/types.yaml#/definitions/uint32 > > + minimum: 64 > > + description: > > + Power-of-2 RPMI slot size of the RPMI shared memory transport. > > + > > + riscv,db-mask: > > + $ref: /schemas/types.yaml#/definitions/uint32 > > + description: > > + Update only the register bits of doorbell defined by the mask (32 bit). > > For an untested RFC, the bindings here look mostly fine. I'd suggest > renaming "db" to "doorbell" in properties etc, since we can easily > afford the extra characters. Please make sure to actually test the > bindings next time around, looks like all 3 bindings produced warnings. Okay, I will fix these issues in the next revision. > > General comments like not needing to provide minItems: 1 when maxItems > is also 1, and not needing a | unless you have formatting to preserve. Okay, I will update. > > > + If this property is not present then mask is assumed to be 0xffffffff. > > Also, things like this should be handled with a `default: 0xffffffff`, > rather than describing it in text. Okay, I will update. > > I'll give the !rfc bindings a proper review when they appear, but before > that I'll give the code here a go too - thanks for sending the patches. > > Cheers, > Conor. Regards, Anup
diff --git a/Documentation/devicetree/bindings/mailbox/riscv,rpmi-shmem-mbox.yaml b/Documentation/devicetree/bindings/mailbox/riscv,rpmi-shmem-mbox.yaml new file mode 100644 index 000000000000..8d713ba7ffc7 --- /dev/null +++ b/Documentation/devicetree/bindings/mailbox/riscv,rpmi-shmem-mbox.yaml @@ -0,0 +1,135 @@ +# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/mailbox/riscv,sbi-mpxy-mbox.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: RISC-V Platform Management Interface (RPMI) shared memory mailbox + +maintainers: + - Anup Patel <anup@brainfault.org> + +description: | + The RISC-V Platform Management Interface (RPMI) [1] defines a common shared + memory based RPMI transport. This RPMI shared memory transport integrates as + mailbox controller in the SBI implementation or supervisor software whereas + each RPMI service group is mailbox client in the SBI implementation and + supervisor software. + + =========================================== + References + =========================================== + + [1] RISC-V Platform Management Interface (RPMI) + https://github.com/riscv-non-isa/riscv-rpmi/releases + +properties: + compatible: + const: riscv,rpmi-shmem-mbox + + reg: + oneOf: + - items: + - description: A2P request queue base address + - description: P2A acknowledgment queue base address + - description: P2A request queue base address + - description: A2P acknowledgment queue base address + - description: A2P doorbell address + - items: + - description: A2P request queue base address + - description: P2A acknowledgment queue base address + - description: A2P doorbell address + + reg-names: + oneOf: + - items: + - const: a2p-req + - const: p2a-ack + - const: p2a-req + - const: a2p-ack + - const: db-reg + - items: + - const: a2p-req + - const: p2a-ack + - const: db-reg + + interrupts: + minItems: 1 + maxItems: 1 + description: + The RPMI shared memory transport supports wired interrupt specified by + this property as the P2A doorbell. + + msi-parent: + description: + The RPMI shared memory transport supports MSI as P2A doorbell and this + property specifies the target MSI controller. + + riscv,slot-size: + $ref: /schemas/types.yaml#/definitions/uint32 + minimum: 64 + description: + Power-of-2 RPMI slot size of the RPMI shared memory transport. + + riscv,db-mask: + $ref: /schemas/types.yaml#/definitions/uint32 + description: + Update only the register bits of doorbell defined by the mask (32 bit). + If this property is not present then mask is assumed to be 0xffffffff. + + riscv,db-value: + $ref: /schemas/types.yaml#/definitions/uint32 + description: + Value written to the doorbell register bits (32-bit access) specified + by the riscv,db-mask property. If this property is not present then + value is assumed to be 0x1. + + "#mbox-cells": + const: 1 + description: + The first cell specifies RPMI service group ID. + +required: + - compatible + - reg + - reg-names + - riscv,slot-size + - "#mbox-cells" + +anyOf: + - required: + - interrupts + - required: + - msi-parent + +additionalProperties: false + +examples: + - | + // Example 1 (RPMI shared memory with only 2 queues): + mailbox@10080000 { + compatible = "riscv,rpmi-shmem-mbox"; + reg = <0x00 0x10080000 0x00 0x10000>, + <0x00 0x10090000 0x00 0x10000>, + <0x00 0x100a0000 0x00 0x4>; + reg-names = "a2p-req", "p2a-ack", "db-reg"; + msi-parent = <&imsic_mlevel>; + riscv,slot-size = <64>; + #mbox-cells = <1>; + }; + - | + // Example 2 (RPMI shared memory with only 4 queues): + mailbox@10001000 { + compatible = "riscv,rpmi-shmem-mbox"; + reg = <0x00 0x10001000 0x00 0x800>, + <0x00 0x10001800 0x00 0x800>, + <0x00 0x10002000 0x00 0x800>, + <0x00 0x10002800 0x00 0x800>, + <0x00 0x10003000 0x00 0x4>; + reg-names = "a2p-req", "p2a-ack", "db-reg"; + msi-parent = <&imsic_mlevel>; + riscv,slot-size = <64>; + riscv,db-mask = <0x00008000>; + riscv,db-value = <0x00008000>; + #mbox-cells = <1>; + };
Add device tree bindings for the common RISC-V Platform Management Interface (RPMI) shared memory transport as a mailbox controller. Signed-off-by: Anup Patel <apatel@ventanamicro.com> --- .../mailbox/riscv,rpmi-shmem-mbox.yaml | 135 ++++++++++++++++++ 1 file changed, 135 insertions(+) create mode 100644 Documentation/devicetree/bindings/mailbox/riscv,rpmi-shmem-mbox.yaml