mbox series

[v2,0/4] crypto: add sun8i-ss driver for Allwinner Security System

Message ID 20191023201016.26195-1-clabbe.montjoie@gmail.com
Headers show
Series crypto: add sun8i-ss driver for Allwinner Security System | expand

Message

Corentin Labbe Oct. 23, 2019, 8:10 p.m. UTC
Hello

This patch serie adds support for the second version of Allwinner Security System.
The first generation of the Security System is already handled by the sun4i-ss driver.
Due to major change, the first driver cannot handle the second one.
This new Security System is present on A80 and A83T SoCs.

For the moment, the driver support only DES3/AES in ECB/CBC mode.
Patchs for CTR/CTS, RSA and RNGs will came later.

This serie is tested with CRYPTO_MANAGER_EXTRA_TESTS
and tested on:
sun8i-a83t-bananapi-m3
sun9i-a80-cubieboard4

This serie is based on top of the "crypto: add sun8i-ce driver for
Allwinner crypto engine" serie.

Regards

Changes since v1:
- fixed uninitialized err in sun8i_ss_allocate_chanlist
- Added missing commit description on DT Documentation patch

Corentin Labbe (4):
  crypto: Add Allwinner sun8i-ss cryptographic offloader
  dt-bindings: crypto: Add DT bindings documentation for sun8i-ss
    Security System
  ARM: dts: sun8i: a83t: Add Security System node
  ARM: dts: sun9i: a80: Add Security System node

 .../bindings/crypto/allwinner,sun8i-ss.yaml   |  64 ++
 arch/arm/boot/dts/sun8i-a83t.dtsi             |  10 +
 arch/arm/boot/dts/sun9i-a80.dtsi              |  10 +
 drivers/crypto/allwinner/Kconfig              |  28 +
 drivers/crypto/allwinner/Makefile             |   1 +
 drivers/crypto/allwinner/sun8i-ss/Makefile    |   2 +
 .../allwinner/sun8i-ss/sun8i-ss-cipher.c      | 438 ++++++++++++
 .../crypto/allwinner/sun8i-ss/sun8i-ss-core.c | 642 ++++++++++++++++++
 drivers/crypto/allwinner/sun8i-ss/sun8i-ss.h  | 218 ++++++
 9 files changed, 1413 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/crypto/allwinner,sun8i-ss.yaml
 create mode 100644 drivers/crypto/allwinner/sun8i-ss/Makefile
 create mode 100644 drivers/crypto/allwinner/sun8i-ss/sun8i-ss-cipher.c
 create mode 100644 drivers/crypto/allwinner/sun8i-ss/sun8i-ss-core.c
 create mode 100644 drivers/crypto/allwinner/sun8i-ss/sun8i-ss.h

-- 
2.21.0

Comments

Corentin Labbe Oct. 24, 2019, 9:31 a.m. UTC | #1
On Thu, Oct 24, 2019 at 08:50:05AM +0200, Maxime Ripard wrote:
> Hi,

> 

> On Wed, Oct 23, 2019 at 10:10:14PM +0200, Corentin Labbe wrote:

> > This patch adds documentation for Device-Tree bindings of the

> > Security System cryptographic offloader driver.

> >

> > Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>

> > ---

> >  .../bindings/crypto/allwinner,sun8i-ss.yaml   | 64 +++++++++++++++++++

> >  1 file changed, 64 insertions(+)

> >  create mode 100644 Documentation/devicetree/bindings/crypto/allwinner,sun8i-ss.yaml

> >

> > diff --git a/Documentation/devicetree/bindings/crypto/allwinner,sun8i-ss.yaml b/Documentation/devicetree/bindings/crypto/allwinner,sun8i-ss.yaml

> > new file mode 100644

> > index 000000000000..99b7736975bc

> > --- /dev/null

> > +++ b/Documentation/devicetree/bindings/crypto/allwinner,sun8i-ss.yaml

> > @@ -0,0 +1,64 @@

> > +# SPDX-License-Identifier: GPL-2.0

> > +%YAML 1.2

> > +---

> > +$id: http://devicetree.org/schemas/crypto/allwinner,sun8i-ss.yaml#

> > +$schema: http://devicetree.org/meta-schemas/core.yaml#

> > +

> > +title: Allwinner Security System v2 driver

> > +

> > +maintainers:

> > +  - Corentin Labbe <corentin.labbe@gmail.com>

> > +

> > +properties:

> > +  compatible:

> > +    enum:

> > +      - allwinner,sun8i-a83t-crypto

> > +      - allwinner,sun9i-a80-crypto

> > +

> > +  reg:

> > +    maxItems: 1

> > +

> > +  interrupts:

> > +    maxItems: 1

> > +

> > +  clocks:

> > +    items:

> > +      - description: Bus clock

> > +      - description: Module clock

> > +

> > +  clock-names:

> > +    items:

> > +      - const: bus

> > +      - const: mod

> > +

> > +  resets:

> > +    maxItems: 1

> 

> The A83t at least has a reset line, so please make a condition to have

> it required.

> 


Hello

The A80 have one also, so I need to set minItems: 1
But setting both minItems: 1 and maxItems:1 lead to a check failure:
properties:resets: {'minItems': 1, 'maxItems': 1} is not valid under any of the given schemas

How to do that ?

Furthermore, I try to do that for interrupts and reg, since they are also mandatory and same failure.

> > +  reset-names:

> > +    const: bus

> 

> You don't need reset-names at all in that binding.


Fixed

Thanks
Maxime Ripard Oct. 24, 2019, 6:24 p.m. UTC | #2
On Thu, Oct 24, 2019 at 11:31:18AM +0200, Corentin Labbe wrote:
> On Thu, Oct 24, 2019 at 08:50:05AM +0200, Maxime Ripard wrote:

> > Hi,

> >

> > On Wed, Oct 23, 2019 at 10:10:14PM +0200, Corentin Labbe wrote:

> > > This patch adds documentation for Device-Tree bindings of the

> > > Security System cryptographic offloader driver.

> > >

> > > Signed-off-by: Corentin Labbe <clabbe.montjoie@gmail.com>

> > > ---

> > >  .../bindings/crypto/allwinner,sun8i-ss.yaml   | 64 +++++++++++++++++++

> > >  1 file changed, 64 insertions(+)

> > >  create mode 100644 Documentation/devicetree/bindings/crypto/allwinner,sun8i-ss.yaml

> > >

> > > diff --git a/Documentation/devicetree/bindings/crypto/allwinner,sun8i-ss.yaml b/Documentation/devicetree/bindings/crypto/allwinner,sun8i-ss.yaml

> > > new file mode 100644

> > > index 000000000000..99b7736975bc

> > > --- /dev/null

> > > +++ b/Documentation/devicetree/bindings/crypto/allwinner,sun8i-ss.yaml

> > > @@ -0,0 +1,64 @@

> > > +# SPDX-License-Identifier: GPL-2.0

> > > +%YAML 1.2

> > > +---

> > > +$id: http://devicetree.org/schemas/crypto/allwinner,sun8i-ss.yaml#

> > > +$schema: http://devicetree.org/meta-schemas/core.yaml#

> > > +

> > > +title: Allwinner Security System v2 driver

> > > +

> > > +maintainers:

> > > +  - Corentin Labbe <corentin.labbe@gmail.com>

> > > +

> > > +properties:

> > > +  compatible:

> > > +    enum:

> > > +      - allwinner,sun8i-a83t-crypto

> > > +      - allwinner,sun9i-a80-crypto

> > > +

> > > +  reg:

> > > +    maxItems: 1

> > > +

> > > +  interrupts:

> > > +    maxItems: 1

> > > +

> > > +  clocks:

> > > +    items:

> > > +      - description: Bus clock

> > > +      - description: Module clock

> > > +

> > > +  clock-names:

> > > +    items:

> > > +      - const: bus

> > > +      - const: mod

> > > +

> > > +  resets:

> > > +    maxItems: 1

> >

> > The A83t at least has a reset line, so please make a condition to have

> > it required.

> >

>

> Hello

>

> The A80 have one also, so I need to set minItems: 1

> But setting both minItems: 1 and maxItems:1 lead to a check failure:

>

> properties:resets: {'minItems': 1, 'maxItems': 1} is not valid under

> any of the given schemas

>

> How to do that ?


IIRC the meta-schema prevent having both because the tooling will
insert it for you.

It doesn't really matter at this level though. maxItems alone will
make sure that there's a single element, and the schemas in the tools
will make sure that the type for resets is correct.

What you'd need here though would be to add resets to the list of
required properties, otherwise it will only be checked against if the
property is there.