mbox series

[v6,00/11] crypto: add sun8i-ce driver for Allwinner crypto engine

Message ID 20191023200513.22630-1-clabbe.montjoie@gmail.com (mailing list archive)
Headers show
Series crypto: add sun8i-ce driver for Allwinner crypto engine | expand

Message

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

This patch serie adds support for the Allwinner crypto engine.
The Crypto Engine is the third generation of Allwinner cryptogaphic offloader.
The first generation is the Security System already handled by the
sun4i-ss driver.
The second is named also Security System and is present on A80 and A83T
SoCs, originaly this driver supported it also, but supporting both IP bringing
too much complexity and another driver (sun8i-ss) will came for it.

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

This serie is tested with CRYPTO_MANAGER_EXTRA_TESTS
and tested on:
sun50i-a64-bananapi-m64
sun50i-a64-pine64-plus
sun50i-h5-libretech-all-h3-cc
sun50i-h6-pine-h64
sun8i-h2-plus-libretech-all-h3-cc
sun8i-h2-plus-orangepi-r1
sun8i-h2-plus-orangepi-zero
sun8i-h3-libretech-all-h3-cc
sun8i-h3-orangepi-pc
sun8i-r40-bananapi-m2-ultra

DT and defconfig will go thru the mripard tree

Regards

Changes since v5:
- fixed uninitialized err in sun8i_ce_allocate_chanlist (reported by lkp@intel.com/dan.carpenter@oracle.com)

Changes since v4:
- fixed some typos in kconfig
- made sun8i_ce_pm_ops static
- Use devm_platform_ioremap_resource

Changes since v3:
- removed need of reset-names
- made reset mandatory

Changes since v2:
- changed additionalproperties
- splited fallbacks functions out of sun8i_ce_cipher()
- changed variant "model" to "has_t_dlen_in_bytes"
- splited sun8i_ce_register_algs/sun8i_ce_get_clks out of sun8i_ce_probe()

Changes since v1:
- Add sun4i-ss to allwinner directory
- Cleaned variant structure
- Renamed clock name from ahb to bus (and mbus to ram)
- Fixed DT bindings problem reported by mripard
- Cleaned unneeded status = ""  in R40 DT
- Removed old unnecessary interrupt_names in A64 DT
- Added arm64 defconfig
- Added support for PM functions
- Splitted probe functions
- Reworked clock settings
- made reset mandatory

Corentin Labbe (11):
  crypto: Add allwinner subdirectory
  crypto: Add Allwinner sun8i-ce Crypto Engine
  dt-bindings: crypto: Add DT bindings documentation for sun8i-ce Crypto
    Engine
  ARM: dts: sun8i: R40: add crypto engine node
  ARM: dts: sun8i: H3: Add Crypto Engine node
  ARM64: dts: allwinner: sun50i: Add Crypto Engine node on A64
  ARM64: dts: allwinner: sun50i: Add crypto engine node on H5
  ARM64: dts: allwinner: sun50i: Add Crypto Engine node on H6
  sunxi_defconfig: add new Allwinner crypto options
  arm64: defconfig: add new Allwinner crypto options
  crypto: sun4i-ss: Move to Allwinner directory

 .../bindings/crypto/allwinner,sun8i-ce.yaml   |  88 +++
 MAINTAINERS                                   |   4 +-
 arch/arm/boot/dts/sun8i-h3.dtsi               |   9 +
 arch/arm/boot/dts/sun8i-r40.dtsi              |   9 +
 arch/arm/configs/sunxi_defconfig              |   2 +
 arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi |   9 +
 arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi  |   9 +
 arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi  |   9 +
 arch/arm64/configs/defconfig                  |   2 +
 drivers/crypto/Kconfig                        |  28 +-
 drivers/crypto/Makefile                       |   2 +-
 drivers/crypto/allwinner/Kconfig              |  60 ++
 drivers/crypto/allwinner/Makefile             |   2 +
 .../{sunxi-ss => allwinner/sun4i-ss}/Makefile |   0
 .../sun4i-ss}/sun4i-ss-cipher.c               |   0
 .../sun4i-ss}/sun4i-ss-core.c                 |   0
 .../sun4i-ss}/sun4i-ss-hash.c                 |   0
 .../sun4i-ss}/sun4i-ss-prng.c                 |   0
 .../sun4i-ss}/sun4i-ss.h                      |   0
 drivers/crypto/allwinner/sun8i-ce/Makefile    |   2 +
 .../allwinner/sun8i-ce/sun8i-ce-cipher.c      | 434 +++++++++++
 .../crypto/allwinner/sun8i-ce/sun8i-ce-core.c | 676 ++++++++++++++++++
 drivers/crypto/allwinner/sun8i-ce/sun8i-ce.h  | 254 +++++++
 23 files changed, 1570 insertions(+), 29 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/crypto/allwinner,sun8i-ce.yaml
 create mode 100644 drivers/crypto/allwinner/Kconfig
 create mode 100644 drivers/crypto/allwinner/Makefile
 rename drivers/crypto/{sunxi-ss => allwinner/sun4i-ss}/Makefile (100%)
 rename drivers/crypto/{sunxi-ss => allwinner/sun4i-ss}/sun4i-ss-cipher.c (100%)
 rename drivers/crypto/{sunxi-ss => allwinner/sun4i-ss}/sun4i-ss-core.c (100%)
 rename drivers/crypto/{sunxi-ss => allwinner/sun4i-ss}/sun4i-ss-hash.c (100%)
 rename drivers/crypto/{sunxi-ss => allwinner/sun4i-ss}/sun4i-ss-prng.c (100%)
 rename drivers/crypto/{sunxi-ss => allwinner/sun4i-ss}/sun4i-ss.h (100%)
 create mode 100644 drivers/crypto/allwinner/sun8i-ce/Makefile
 create mode 100644 drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c
 create mode 100644 drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c
 create mode 100644 drivers/crypto/allwinner/sun8i-ce/sun8i-ce.h

Comments

Herbert Xu Nov. 1, 2019, 6:09 a.m. UTC | #1
On Wed, Oct 23, 2019 at 10:05:02PM +0200, Corentin Labbe wrote:
> Hello
> 
> This patch serie adds support for the Allwinner crypto engine.
> The Crypto Engine is the third generation of Allwinner cryptogaphic offloader.
> The first generation is the Security System already handled by the
> sun4i-ss driver.
> The second is named also Security System and is present on A80 and A83T
> SoCs, originaly this driver supported it also, but supporting both IP bringing
> too much complexity and another driver (sun8i-ss) will came for it.
> 
> For the moment, the driver support only DES3/AES in ECB/CBC mode.
> Patchs for CTR/CTS/XTS, RSA and RNGs will came later.
> 
> This serie is tested with CRYPTO_MANAGER_EXTRA_TESTS
> and tested on:
> sun50i-a64-bananapi-m64
> sun50i-a64-pine64-plus
> sun50i-h5-libretech-all-h3-cc
> sun50i-h6-pine-h64
> sun8i-h2-plus-libretech-all-h3-cc
> sun8i-h2-plus-orangepi-r1
> sun8i-h2-plus-orangepi-zero
> sun8i-h3-libretech-all-h3-cc
> sun8i-h3-orangepi-pc
> sun8i-r40-bananapi-m2-ultra
> 
> DT and defconfig will go thru the mripard tree
> 
> Regards
> 
> Changes since v5:
> - fixed uninitialized err in sun8i_ce_allocate_chanlist (reported by lkp@intel.com/dan.carpenter@oracle.com)
> 
> Changes since v4:
> - fixed some typos in kconfig
> - made sun8i_ce_pm_ops static
> - Use devm_platform_ioremap_resource
> 
> Changes since v3:
> - removed need of reset-names
> - made reset mandatory
> 
> Changes since v2:
> - changed additionalproperties
> - splited fallbacks functions out of sun8i_ce_cipher()
> - changed variant "model" to "has_t_dlen_in_bytes"
> - splited sun8i_ce_register_algs/sun8i_ce_get_clks out of sun8i_ce_probe()
> 
> Changes since v1:
> - Add sun4i-ss to allwinner directory
> - Cleaned variant structure
> - Renamed clock name from ahb to bus (and mbus to ram)
> - Fixed DT bindings problem reported by mripard
> - Cleaned unneeded status = ""  in R40 DT
> - Removed old unnecessary interrupt_names in A64 DT
> - Added arm64 defconfig
> - Added support for PM functions
> - Splitted probe functions
> - Reworked clock settings
> - made reset mandatory
> 
> Corentin Labbe (11):
>   crypto: Add allwinner subdirectory
>   crypto: Add Allwinner sun8i-ce Crypto Engine
>   dt-bindings: crypto: Add DT bindings documentation for sun8i-ce Crypto
>     Engine
>   ARM: dts: sun8i: R40: add crypto engine node
>   ARM: dts: sun8i: H3: Add Crypto Engine node
>   ARM64: dts: allwinner: sun50i: Add Crypto Engine node on A64
>   ARM64: dts: allwinner: sun50i: Add crypto engine node on H5
>   ARM64: dts: allwinner: sun50i: Add Crypto Engine node on H6
>   sunxi_defconfig: add new Allwinner crypto options
>   arm64: defconfig: add new Allwinner crypto options
>   crypto: sun4i-ss: Move to Allwinner directory
> 
>  .../bindings/crypto/allwinner,sun8i-ce.yaml   |  88 +++
>  MAINTAINERS                                   |   4 +-
>  arch/arm/boot/dts/sun8i-h3.dtsi               |   9 +
>  arch/arm/boot/dts/sun8i-r40.dtsi              |   9 +
>  arch/arm/configs/sunxi_defconfig              |   2 +
>  arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi |   9 +
>  arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi  |   9 +
>  arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi  |   9 +
>  arch/arm64/configs/defconfig                  |   2 +
>  drivers/crypto/Kconfig                        |  28 +-
>  drivers/crypto/Makefile                       |   2 +-
>  drivers/crypto/allwinner/Kconfig              |  60 ++
>  drivers/crypto/allwinner/Makefile             |   2 +
>  .../{sunxi-ss => allwinner/sun4i-ss}/Makefile |   0
>  .../sun4i-ss}/sun4i-ss-cipher.c               |   0
>  .../sun4i-ss}/sun4i-ss-core.c                 |   0
>  .../sun4i-ss}/sun4i-ss-hash.c                 |   0
>  .../sun4i-ss}/sun4i-ss-prng.c                 |   0
>  .../sun4i-ss}/sun4i-ss.h                      |   0
>  drivers/crypto/allwinner/sun8i-ce/Makefile    |   2 +
>  .../allwinner/sun8i-ce/sun8i-ce-cipher.c      | 434 +++++++++++
>  .../crypto/allwinner/sun8i-ce/sun8i-ce-core.c | 676 ++++++++++++++++++
>  drivers/crypto/allwinner/sun8i-ce/sun8i-ce.h  | 254 +++++++
>  23 files changed, 1570 insertions(+), 29 deletions(-)
>  create mode 100644 Documentation/devicetree/bindings/crypto/allwinner,sun8i-ce.yaml
>  create mode 100644 drivers/crypto/allwinner/Kconfig
>  create mode 100644 drivers/crypto/allwinner/Makefile
>  rename drivers/crypto/{sunxi-ss => allwinner/sun4i-ss}/Makefile (100%)
>  rename drivers/crypto/{sunxi-ss => allwinner/sun4i-ss}/sun4i-ss-cipher.c (100%)
>  rename drivers/crypto/{sunxi-ss => allwinner/sun4i-ss}/sun4i-ss-core.c (100%)
>  rename drivers/crypto/{sunxi-ss => allwinner/sun4i-ss}/sun4i-ss-hash.c (100%)
>  rename drivers/crypto/{sunxi-ss => allwinner/sun4i-ss}/sun4i-ss-prng.c (100%)
>  rename drivers/crypto/{sunxi-ss => allwinner/sun4i-ss}/sun4i-ss.h (100%)
>  create mode 100644 drivers/crypto/allwinner/sun8i-ce/Makefile
>  create mode 100644 drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c
>  create mode 100644 drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c
>  create mode 100644 drivers/crypto/allwinner/sun8i-ce/sun8i-ce.h

Patches 1,2,11 applied.  Thanks.
Maxime Ripard Nov. 1, 2019, 9:02 a.m. UTC | #2
On Fri, Nov 01, 2019 at 02:09:14PM +0800, Herbert Xu wrote:
> On Wed, Oct 23, 2019 at 10:05:02PM +0200, Corentin Labbe wrote:
> > Hello
> >
> > This patch serie adds support for the Allwinner crypto engine.
> > The Crypto Engine is the third generation of Allwinner cryptogaphic offloader.
> > The first generation is the Security System already handled by the
> > sun4i-ss driver.
> > The second is named also Security System and is present on A80 and A83T
> > SoCs, originaly this driver supported it also, but supporting both IP bringing
> > too much complexity and another driver (sun8i-ss) will came for it.
> >
> > For the moment, the driver support only DES3/AES in ECB/CBC mode.
> > Patchs for CTR/CTS/XTS, RSA and RNGs will came later.
> >
> > This serie is tested with CRYPTO_MANAGER_EXTRA_TESTS
> > and tested on:
> > sun50i-a64-bananapi-m64
> > sun50i-a64-pine64-plus
> > sun50i-h5-libretech-all-h3-cc
> > sun50i-h6-pine-h64
> > sun8i-h2-plus-libretech-all-h3-cc
> > sun8i-h2-plus-orangepi-r1
> > sun8i-h2-plus-orangepi-zero
> > sun8i-h3-libretech-all-h3-cc
> > sun8i-h3-orangepi-pc
> > sun8i-r40-bananapi-m2-ultra
> >
> > DT and defconfig will go thru the mripard tree
> >
> > Regards
> >
> > Changes since v5:
> > - fixed uninitialized err in sun8i_ce_allocate_chanlist (reported by lkp@intel.com/dan.carpenter@oracle.com)
> >
> > Changes since v4:
> > - fixed some typos in kconfig
> > - made sun8i_ce_pm_ops static
> > - Use devm_platform_ioremap_resource
> >
> > Changes since v3:
> > - removed need of reset-names
> > - made reset mandatory
> >
> > Changes since v2:
> > - changed additionalproperties
> > - splited fallbacks functions out of sun8i_ce_cipher()
> > - changed variant "model" to "has_t_dlen_in_bytes"
> > - splited sun8i_ce_register_algs/sun8i_ce_get_clks out of sun8i_ce_probe()
> >
> > Changes since v1:
> > - Add sun4i-ss to allwinner directory
> > - Cleaned variant structure
> > - Renamed clock name from ahb to bus (and mbus to ram)
> > - Fixed DT bindings problem reported by mripard
> > - Cleaned unneeded status = ""  in R40 DT
> > - Removed old unnecessary interrupt_names in A64 DT
> > - Added arm64 defconfig
> > - Added support for PM functions
> > - Splitted probe functions
> > - Reworked clock settings
> > - made reset mandatory
> >
> > Corentin Labbe (11):
> >   crypto: Add allwinner subdirectory
> >   crypto: Add Allwinner sun8i-ce Crypto Engine
> >   dt-bindings: crypto: Add DT bindings documentation for sun8i-ce Crypto
> >     Engine
> >   ARM: dts: sun8i: R40: add crypto engine node
> >   ARM: dts: sun8i: H3: Add Crypto Engine node
> >   ARM64: dts: allwinner: sun50i: Add Crypto Engine node on A64
> >   ARM64: dts: allwinner: sun50i: Add crypto engine node on H5
> >   ARM64: dts: allwinner: sun50i: Add Crypto Engine node on H6
> >   sunxi_defconfig: add new Allwinner crypto options
> >   arm64: defconfig: add new Allwinner crypto options
> >   crypto: sun4i-ss: Move to Allwinner directory
> >
> >  .../bindings/crypto/allwinner,sun8i-ce.yaml   |  88 +++
> >  MAINTAINERS                                   |   4 +-
> >  arch/arm/boot/dts/sun8i-h3.dtsi               |   9 +
> >  arch/arm/boot/dts/sun8i-r40.dtsi              |   9 +
> >  arch/arm/configs/sunxi_defconfig              |   2 +
> >  arch/arm64/boot/dts/allwinner/sun50i-a64.dtsi |   9 +
> >  arch/arm64/boot/dts/allwinner/sun50i-h5.dtsi  |   9 +
> >  arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi  |   9 +
> >  arch/arm64/configs/defconfig                  |   2 +
> >  drivers/crypto/Kconfig                        |  28 +-
> >  drivers/crypto/Makefile                       |   2 +-
> >  drivers/crypto/allwinner/Kconfig              |  60 ++
> >  drivers/crypto/allwinner/Makefile             |   2 +
> >  .../{sunxi-ss => allwinner/sun4i-ss}/Makefile |   0
> >  .../sun4i-ss}/sun4i-ss-cipher.c               |   0
> >  .../sun4i-ss}/sun4i-ss-core.c                 |   0
> >  .../sun4i-ss}/sun4i-ss-hash.c                 |   0
> >  .../sun4i-ss}/sun4i-ss-prng.c                 |   0
> >  .../sun4i-ss}/sun4i-ss.h                      |   0
> >  drivers/crypto/allwinner/sun8i-ce/Makefile    |   2 +
> >  .../allwinner/sun8i-ce/sun8i-ce-cipher.c      | 434 +++++++++++
> >  .../crypto/allwinner/sun8i-ce/sun8i-ce-core.c | 676 ++++++++++++++++++
> >  drivers/crypto/allwinner/sun8i-ce/sun8i-ce.h  | 254 +++++++
> >  23 files changed, 1570 insertions(+), 29 deletions(-)
> >  create mode 100644 Documentation/devicetree/bindings/crypto/allwinner,sun8i-ce.yaml
> >  create mode 100644 drivers/crypto/allwinner/Kconfig
> >  create mode 100644 drivers/crypto/allwinner/Makefile
> >  rename drivers/crypto/{sunxi-ss => allwinner/sun4i-ss}/Makefile (100%)
> >  rename drivers/crypto/{sunxi-ss => allwinner/sun4i-ss}/sun4i-ss-cipher.c (100%)
> >  rename drivers/crypto/{sunxi-ss => allwinner/sun4i-ss}/sun4i-ss-core.c (100%)
> >  rename drivers/crypto/{sunxi-ss => allwinner/sun4i-ss}/sun4i-ss-hash.c (100%)
> >  rename drivers/crypto/{sunxi-ss => allwinner/sun4i-ss}/sun4i-ss-prng.c (100%)
> >  rename drivers/crypto/{sunxi-ss => allwinner/sun4i-ss}/sun4i-ss.h (100%)
> >  create mode 100644 drivers/crypto/allwinner/sun8i-ce/Makefile
> >  create mode 100644 drivers/crypto/allwinner/sun8i-ce/sun8i-ce-cipher.c
> >  create mode 100644 drivers/crypto/allwinner/sun8i-ce/sun8i-ce-core.c
> >  create mode 100644 drivers/crypto/allwinner/sun8i-ce/sun8i-ce.h
>
> Patches 1,2,11 applied.  Thanks.

Applied the rest, thanks!
Maxime