2020-03-25 05:51:04

by Hadar Gat

[permalink] [raw]
Subject: [PATCH v6 1/3] dt-bindings: add device tree binding for Arm CryptoCell trng engine

The Arm CryptoCell is a hardware security engine. This patch adds DT
bindings for its TRNG (True Random Number Generator) engine.

Signed-off-by: Hadar Gat <[email protected]>
---
.../devicetree/bindings/rng/arm-cctrng.yaml | 55 ++++++++++++++++++++++
1 file changed, 55 insertions(+)
create mode 100644 Documentation/devicetree/bindings/rng/arm-cctrng.yaml

diff --git a/Documentation/devicetree/bindings/rng/arm-cctrng.yaml b/Documentation/devicetree/bindings/rng/arm-cctrng.yaml
new file mode 100644
index 0000000..7f70e4b
--- /dev/null
+++ b/Documentation/devicetree/bindings/rng/arm-cctrng.yaml
@@ -0,0 +1,55 @@
+# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
+%YAML 1.2
+---
+$id: http://devicetree.org/schemas/rng/arm-cctrng.yaml#
+$schema: http://devicetree.org/meta-schemas/core.yaml#
+
+title: Arm TrustZone CryptoCell TRNG engine
+
+maintainers:
+ - Hadar Gat <[email protected]>
+
+description: |+
+ Arm TrustZone CryptoCell TRNG (True Random Number Generator) engine.
+
+properties:
+ compatible:
+ enum:
+ - arm,cryptocell-713-trng
+ - arm,cryptocell-703-trng
+
+ interrupts:
+ maxItems: 1
+
+ reg:
+ maxItems: 1
+
+ arm,rosc-ratio:
+ description:
+ Arm TrustZone CryptoCell TRNG engine has 4 ring oscillators.
+ Sampling ratio values for these 4 ring oscillators. (from calibration)
+ allOf:
+ - $ref: /schemas/types.yaml#/definitions/uint32-array
+ - items:
+ minItems: 4
+ maxItems: 4
+
+ clocks:
+ maxItems: 1
+
+required:
+ - compatible
+ - interrupts
+ - reg
+ - arm,rosc-ratio
+
+additionalProperties: false
+
+examples:
+ - |
+ arm_cctrng: rng@60000000 {
+ compatible = "arm,cryptocell-713-trng";
+ interrupts = <0 29 4>;
+ reg = <0x60000000 0x10000>;
+ arm,rosc-ratio = <5000 1000 500 0>;
+ };
--
2.7.4


2020-03-26 21:05:35

by Hadar Gat

[permalink] [raw]
Subject: RE: [PATCH v6 1/3] dt-bindings: add device tree binding for Arm CryptoCell trng engine

Hi Rob,

>
> On Wed, Mar 25, 2020 at 07:41:09AM +0200, Hadar Gat wrote:
> > The Arm CryptoCell is a hardware security engine. This patch adds DT
> > bindings for its TRNG (True Random Number Generator) engine.
> >
> > Signed-off-by: Hadar Gat <[email protected]>
> > ---
> > .../devicetree/bindings/rng/arm-cctrng.yaml | 55
> ++++++++++++++++++++++
> > 1 file changed, 55 insertions(+)
> > create mode 100644
> > Documentation/devicetree/bindings/rng/arm-cctrng.yaml
> >
> > diff --git a/Documentation/devicetree/bindings/rng/arm-cctrng.yaml
> > b/Documentation/devicetree/bindings/rng/arm-cctrng.yaml
> > new file mode 100644
> > index 0000000..7f70e4b
> > --- /dev/null
> > +++ b/Documentation/devicetree/bindings/rng/arm-cctrng.yaml
> > @@ -0,0 +1,55 @@
> > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) %YAML 1.2
> > +---
> > +$id: http://devicetree.org/schemas/rng/arm-cctrng.yaml#
> > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > +
> > +title: Arm TrustZone CryptoCell TRNG engine
> > +
> > +maintainers:
> > + - Hadar Gat <[email protected]>
> > +
> > +description: |+
> > + Arm TrustZone CryptoCell TRNG (True Random Number Generator)
> engine.
> > +
> > +properties:
> > + compatible:
> > + enum:
> > + - arm,cryptocell-713-trng
> > + - arm,cryptocell-703-trng
> > +
> > + interrupts:
> > + maxItems: 1
> > +
> > + reg:
> > + maxItems: 1
> > +
> > + arm,rosc-ratio:
> > + description:
> > + Arm TrustZone CryptoCell TRNG engine has 4 ring oscillators.
> > + Sampling ratio values for these 4 ring oscillators. (from calibration)
> > + allOf:
> > + - $ref: /schemas/types.yaml#/definitions/uint32-array
> > + - items:
> > + minItems: 4
> > + maxItems: 4
>
> Aren't there some constraints on the values?
>
> If not, then just this is enough:
>
> - maxItems: 4
>
The constraint is just on the array size and not on the values.
The array is of 4 elements for the CryptoCell 4 ring oscillators.
Isn't 'minitems:' is about the array min size? Isn't it the way to block less than 4 items? This is what I want to do.
I'm a bit confused if it is required or not..

> > +
> > + clocks:
> > + maxItems: 1
> > +
> > +required:
> > + - compatible
> > + - interrupts
> > + - reg
> > + - arm,rosc-ratio
> > +
> > +additionalProperties: false
> > +
> > +examples:
> > + - |
> > + arm_cctrng: rng@60000000 {
> > + compatible = "arm,cryptocell-713-trng";
> > + interrupts = <0 29 4>;
> > + reg = <0x60000000 0x10000>;
> > + arm,rosc-ratio = <5000 1000 500 0>;
> > + };
> > --
> > 2.7.4
> >

Thanks,
Hadar

2020-03-27 03:05:00

by Rob Herring

[permalink] [raw]
Subject: Re: [PATCH v6 1/3] dt-bindings: add device tree binding for Arm CryptoCell trng engine

On Thu, Mar 26, 2020 at 3:05 PM Hadar Gat <[email protected]> wrote:
>
> Hi Rob,
>
> >
> > On Wed, Mar 25, 2020 at 07:41:09AM +0200, Hadar Gat wrote:
> > > The Arm CryptoCell is a hardware security engine. This patch adds DT
> > > bindings for its TRNG (True Random Number Generator) engine.
> > >
> > > Signed-off-by: Hadar Gat <[email protected]>
> > > ---
> > > .../devicetree/bindings/rng/arm-cctrng.yaml | 55
> > ++++++++++++++++++++++
> > > 1 file changed, 55 insertions(+)
> > > create mode 100644
> > > Documentation/devicetree/bindings/rng/arm-cctrng.yaml
> > >
> > > diff --git a/Documentation/devicetree/bindings/rng/arm-cctrng.yaml
> > > b/Documentation/devicetree/bindings/rng/arm-cctrng.yaml
> > > new file mode 100644
> > > index 0000000..7f70e4b
> > > --- /dev/null
> > > +++ b/Documentation/devicetree/bindings/rng/arm-cctrng.yaml
> > > @@ -0,0 +1,55 @@
> > > +# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) %YAML 1.2
> > > +---
> > > +$id: http://devicetree.org/schemas/rng/arm-cctrng.yaml#
> > > +$schema: http://devicetree.org/meta-schemas/core.yaml#
> > > +
> > > +title: Arm TrustZone CryptoCell TRNG engine
> > > +
> > > +maintainers:
> > > + - Hadar Gat <[email protected]>
> > > +
> > > +description: |+
> > > + Arm TrustZone CryptoCell TRNG (True Random Number Generator)
> > engine.
> > > +
> > > +properties:
> > > + compatible:
> > > + enum:
> > > + - arm,cryptocell-713-trng
> > > + - arm,cryptocell-703-trng
> > > +
> > > + interrupts:
> > > + maxItems: 1
> > > +
> > > + reg:
> > > + maxItems: 1
> > > +
> > > + arm,rosc-ratio:
> > > + description:
> > > + Arm TrustZone CryptoCell TRNG engine has 4 ring oscillators.
> > > + Sampling ratio values for these 4 ring oscillators. (from calibration)
> > > + allOf:
> > > + - $ref: /schemas/types.yaml#/definitions/uint32-array
> > > + - items:
> > > + minItems: 4
> > > + maxItems: 4
> >
> > Aren't there some constraints on the values?
> >
> > If not, then just this is enough:
> >
> > - maxItems: 4
> >
> The constraint is just on the array size and not on the values.
> The array is of 4 elements for the CryptoCell 4 ring oscillators.
> Isn't 'minitems:' is about the array min size? Isn't it the way to block less than 4 items? This is what I want to do.
> I'm a bit confused if it is required or not..

Essentially, we always require bounds on the array size, so if you
only specify one of minItems or maxItems it's implied to be a fixed
size. IOW, you only have to specify both if you have a variable number
of items. Also, note that an 'items' list implies the exact size. Both
of these are not the default behavior for json-schema.

Hope that helps.

Rob