Message ID | 1580650021-8578-2-git-send-email-hadar.gat@arm.com (mailing list archive) |
---|---|
State | Superseded |
Delegated to: | Herbert Xu |
Headers | show |
Series | hw_random: introduce Arm CryptoCell TRNG driver | expand |
On Sun, Feb 02, 2020 at 03:26:59PM +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 <hadar.gat@arm.com> > --- > .../devicetree/bindings/rng/arm-cctrng.yaml | 51 ++++++++++++++++++++++ > 1 file changed, 51 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..fe9422e > --- /dev/null > +++ b/Documentation/devicetree/bindings/rng/arm-cctrng.yaml > @@ -0,0 +1,51 @@ > +# SPDX-License-Identifier: GPL-2.0 Dual license new bindings: (GPL-2.0-only 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 ZrustZone CryptoCell TRNG engine > + > +maintainers: > + - Hadar Gat <hadar.gat@arm.com> > + > +description: |+ > + Arm ZrustZone CryptoCell TRNG (True Random Number Generator) engine. > + > +properties: > + compatible: > + description: Should be "arm,cryptocell-7x3-trng" Drop. That's what the schema says. > + const: arm,cryptocell-7x3-trng Is 'x' a wildcard? We don't do wildcards unless you have other ways to get the specific version. > + > + interrupts: > + description: Interrupt number for the device. Drop. That's all 'interrupts'. > + maxItems: 1 > + > + reg: > + description: Base physical address of the engine and length of memory > + mapped region. Drop. > + maxItems: 1 > + > + rosc-ratio: > + description: Sampling ratio values from calibration for 4 ring oscillators. > + maxItems: 1 Is this an array? Needs a vendor prefix, a type ref and any constraints you can come up with. > + > + clocks: > + description: Reference to the crypto engine clock. How many clocks? > + > +required: > + - compatible > + - interrupts > + - reg > + - rosc-ratio > + > +additionalProperties: false > + > +examples: > + - | > + arm_cctrng: arm_cctrng@60000000 { rng@... > + compatible = "arm,cryptocell-7x3-trng"; > + interrupts = <0 29 4>; > + reg = <0x60000000 0x10000>; > + rosc-ratio = <5000 1000 500 0>; > + }; > -- > 2.7.4 >
Hi Rob, Thanks for remarks. Please see my answers. Hadar > On Sun, Feb 02, 2020 at 03:26:59PM +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 <hadar.gat@arm.com> > > --- > > .../devicetree/bindings/rng/arm-cctrng.yaml | 51 > ++++++++++++++++++++++ > > 1 file changed, 51 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..fe9422e > > --- /dev/null > > +++ b/Documentation/devicetree/bindings/rng/arm-cctrng.yaml > > @@ -0,0 +1,51 @@ > > +# SPDX-License-Identifier: GPL-2.0 > > Dual license new bindings: > > (GPL-2.0-only OR BSD-2-Clause) > Okay. > > +%YAML 1.2 > > +--- > > +$id: http://devicetree.org/schemas/rng/arm-cctrng.yaml# > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > + > > +title: Arm ZrustZone CryptoCell TRNG engine > > + > > +maintainers: > > + - Hadar Gat <hadar.gat@arm.com> > > + > > +description: |+ > > + Arm ZrustZone CryptoCell TRNG (True Random Number Generator) > engine. > > + > > +properties: > > + compatible: > > + description: Should be "arm,cryptocell-7x3-trng" > > Drop. That's what the schema says. > Okay. > > + const: arm,cryptocell-7x3-trng > > Is 'x' a wildcard? We don't do wildcards unless you have other ways to get the > specific version. > Kind of a wildcard. It stands for either 703 or 713. Should I fix this to the specific versions? OR, Since the specific version doesn't matter to the driver, should it changed? (checking out other rng drivers, I see this example in Samsung,exynos4.yaml: - samsung,exynos4-rng # for Exynos4210 and Exynos4412 ) > > + > > + interrupts: > > + description: Interrupt number for the device. > > Drop. That's all 'interrupts'. > Okay. > > + maxItems: 1 > > + > > + reg: > > + description: Base physical address of the engine and length of memory > > + mapped region. > > Drop. > Okay. > > + maxItems: 1 > > + > > + rosc-ratio: > > + description: Sampling ratio values from calibration for 4 ring oscillators. > > + maxItems: 1 > > Is this an array? > Yes, array of 4. (I'll mention in the description) > Needs a vendor prefix, a type ref and any constraints you can come up with. > Do you mean in the name? instead of "rosc-ratio"? I didn't find anything about it in the documentation or examples in other rng drivers.. > > + > > + clocks: > > + description: Reference to the crypto engine clock. > > How many clocks? > One clock. (I will change clocks --> clock) > > + > > +required: > > + - compatible > > + - interrupts > > + - reg > > + - rosc-ratio > > + > > +additionalProperties: false > > + > > +examples: > > + - | > > + arm_cctrng: arm_cctrng@60000000 { > > rng@... > Okay. > > + compatible = "arm,cryptocell-7x3-trng"; > > + interrupts = <0 29 4>; > > + reg = <0x60000000 0x10000>; > > + rosc-ratio = <5000 1000 500 0>; > > + }; > > -- > > 2.7.4 > >
On Sun, Feb 9, 2020 at 3:34 AM Hadar Gat <Hadar.Gat@arm.com> wrote: > > Hi Rob, > Thanks for remarks. > Please see my answers. > Hadar > > > On Sun, Feb 02, 2020 at 03:26:59PM +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 <hadar.gat@arm.com> > > > --- > > > .../devicetree/bindings/rng/arm-cctrng.yaml | 51 > > ++++++++++++++++++++++ > > > 1 file changed, 51 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..fe9422e > > > --- /dev/null > > > +++ b/Documentation/devicetree/bindings/rng/arm-cctrng.yaml > > > @@ -0,0 +1,51 @@ > > > +# SPDX-License-Identifier: GPL-2.0 > > > > Dual license new bindings: > > > > (GPL-2.0-only OR BSD-2-Clause) > > > Okay. > > > > +%YAML 1.2 > > > +--- > > > +$id: http://devicetree.org/schemas/rng/arm-cctrng.yaml# > > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > > + > > > +title: Arm ZrustZone CryptoCell TRNG engine > > > + > > > +maintainers: > > > + - Hadar Gat <hadar.gat@arm.com> > > > + > > > +description: |+ > > > + Arm ZrustZone CryptoCell TRNG (True Random Number Generator) > > engine. > > > + > > > +properties: > > > + compatible: > > > + description: Should be "arm,cryptocell-7x3-trng" > > > > Drop. That's what the schema says. > > > Okay. > > > > + const: arm,cryptocell-7x3-trng > > > > Is 'x' a wildcard? We don't do wildcards unless you have other ways to get the > > specific version. > > > Kind of a wildcard. It stands for either 703 or 713. > Should I fix this to the specific versions? > OR, > Since the specific version doesn't matter to the driver, should it changed? Maybe not now, but both will always have the same errata and features? 2 is not a large number, so just do 2. Of course, errata can vary by revision. Most Arm IP has version registers, so I assume that's true here. If not, we'd need per SoC implementation compatible strings here. > (checking out other rng drivers, I see this example in Samsung,exynos4.yaml: > - samsung,exynos4-rng # for Exynos4210 and Exynos4412 ) Well, there's lots of bad examples, and also, some Samsung bindings are declared to not be stable. > > > > + > > > + interrupts: > > > + description: Interrupt number for the device. > > > > Drop. That's all 'interrupts'. > > > Okay. > > > > + maxItems: 1 > > > + > > > + reg: > > > + description: Base physical address of the engine and length of memory > > > + mapped region. > > > > Drop. > > > Okay. > > > > + maxItems: 1 > > > + > > > + rosc-ratio: > > > + description: Sampling ratio values from calibration for 4 ring oscillators. > > > + maxItems: 1 > > > > Is this an array? > > > Yes, array of 4. (I'll mention in the description) Don't need a description as that's constraints the schema should express. > > Needs a vendor prefix, a type ref and any constraints you can come up with. > > > Do you mean in the name? instead of "rosc-ratio"? arm,rosc-ratio: allOf: - $ref: /schemas/types.yaml#/definitions/uint32-array maxItems: 4 > I didn't find anything about it in the documentation or examples in other rng drivers.. > > > > + > > > + clocks: > > > + description: Reference to the crypto engine clock. > > > > How many clocks? > > > One clock. (I will change clocks --> clock) No, the property name is always 'clocks'. You need just 'maxItems: 1' if there's a single clock. Rob
Thanks Rob for your clarifications. I surly learned more about .yaml schema. All fixes will be applied in the next patch version (v4). Hadar > On Sun, Feb 9, 2020 at 3:34 AM Hadar Gat <Hadar.Gat@arm.com> wrote: > > > > Hi Rob, > > Thanks for remarks. > > Please see my answers. > > Hadar > > > > > On Sun, Feb 02, 2020 at 03:26:59PM +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 <hadar.gat@arm.com> > > > > --- > > > > .../devicetree/bindings/rng/arm-cctrng.yaml | 51 > > > ++++++++++++++++++++++ > > > > 1 file changed, 51 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..fe9422e > > > > --- /dev/null > > > > +++ b/Documentation/devicetree/bindings/rng/arm-cctrng.yaml > > > > @@ -0,0 +1,51 @@ > > > > +# SPDX-License-Identifier: GPL-2.0 > > > > > > Dual license new bindings: > > > > > > (GPL-2.0-only OR BSD-2-Clause) > > > > > Okay. > > > > > > +%YAML 1.2 > > > > +--- > > > > +$id: http://devicetree.org/schemas/rng/arm-cctrng.yaml# > > > > +$schema: http://devicetree.org/meta-schemas/core.yaml# > > > > + > > > > +title: Arm ZrustZone CryptoCell TRNG engine > > > > + > > > > +maintainers: > > > > + - Hadar Gat <hadar.gat@arm.com> > > > > + > > > > +description: |+ > > > > + Arm ZrustZone CryptoCell TRNG (True Random Number Generator) > > > engine. > > > > + > > > > +properties: > > > > + compatible: > > > > + description: Should be "arm,cryptocell-7x3-trng" > > > > > > Drop. That's what the schema says. > > > > > Okay. > > > > > > + const: arm,cryptocell-7x3-trng > > > > > > Is 'x' a wildcard? We don't do wildcards unless you have other ways > > > to get the specific version. > > > > > Kind of a wildcard. It stands for either 703 or 713. > > Should I fix this to the specific versions? > > OR, > > Since the specific version doesn't matter to the driver, should it changed? > > Maybe not now, but both will always have the same errata and features? > 2 is not a large number, so just do 2. > > Of course, errata can vary by revision. Most Arm IP has version registers, so I > assume that's true here. If not, we'd need per SoC implementation > compatible strings here. > > > (checking out other rng drivers, I see this example in > Samsung,exynos4.yaml: > > - samsung,exynos4-rng # for Exynos4210 and Exynos4412 ) > > Well, there's lots of bad examples, and also, some Samsung bindings are > declared to not be stable. > > > > > > > + > > > > + interrupts: > > > > + description: Interrupt number for the device. > > > > > > Drop. That's all 'interrupts'. > > > > > Okay. > > > > > > + maxItems: 1 > > > > + > > > > + reg: > > > > + description: Base physical address of the engine and length of > memory > > > > + mapped region. > > > > > > Drop. > > > > > Okay. > > > > > > + maxItems: 1 > > > > + > > > > + rosc-ratio: > > > > + description: Sampling ratio values from calibration for 4 ring > oscillators. > > > > + maxItems: 1 > > > > > > Is this an array? > > > > > Yes, array of 4. (I'll mention in the description) > > Don't need a description as that's constraints the schema should express. > > > > Needs a vendor prefix, a type ref and any constraints you can come up > with. > > > > > Do you mean in the name? instead of "rosc-ratio"? > > arm,rosc-ratio: > allOf: > - $ref: /schemas/types.yaml#/definitions/uint32-array > maxItems: 4 > > > I didn't find anything about it in the documentation or examples in other > rng drivers.. > > > > > > + > > > > + clocks: > > > > + description: Reference to the crypto engine clock. > > > > > > How many clocks? > > > > > One clock. (I will change clocks --> clock) > > No, the property name is always 'clocks'. You need just 'maxItems: 1' > if there's a single clock. > > Rob
diff --git a/Documentation/devicetree/bindings/rng/arm-cctrng.yaml b/Documentation/devicetree/bindings/rng/arm-cctrng.yaml new file mode 100644 index 0000000..fe9422e --- /dev/null +++ b/Documentation/devicetree/bindings/rng/arm-cctrng.yaml @@ -0,0 +1,51 @@ +# SPDX-License-Identifier: GPL-2.0 +%YAML 1.2 +--- +$id: http://devicetree.org/schemas/rng/arm-cctrng.yaml# +$schema: http://devicetree.org/meta-schemas/core.yaml# + +title: Arm ZrustZone CryptoCell TRNG engine + +maintainers: + - Hadar Gat <hadar.gat@arm.com> + +description: |+ + Arm ZrustZone CryptoCell TRNG (True Random Number Generator) engine. + +properties: + compatible: + description: Should be "arm,cryptocell-7x3-trng" + const: arm,cryptocell-7x3-trng + + interrupts: + description: Interrupt number for the device. + maxItems: 1 + + reg: + description: Base physical address of the engine and length of memory + mapped region. + maxItems: 1 + + rosc-ratio: + description: Sampling ratio values from calibration for 4 ring oscillators. + maxItems: 1 + + clocks: + description: Reference to the crypto engine clock. + +required: + - compatible + - interrupts + - reg + - rosc-ratio + +additionalProperties: false + +examples: + - | + arm_cctrng: arm_cctrng@60000000 { + compatible = "arm,cryptocell-7x3-trng"; + interrupts = <0 29 4>; + reg = <0x60000000 0x10000>; + rosc-ratio = <5000 1000 500 0>; + };
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 <hadar.gat@arm.com> --- .../devicetree/bindings/rng/arm-cctrng.yaml | 51 ++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 Documentation/devicetree/bindings/rng/arm-cctrng.yaml