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

From: Rob Herring
Date: Tue Feb 11 2020 - 13:40:01 EST


On Sun, Feb 9, 2020 at 3:34 AM Hadar Gat <Hadar.Gat@xxxxxxx> 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@xxxxxxx>
> > > ---
> > > .../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@xxxxxxx>
> > > +
> > > +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