mbox series

[v9,0/7] Add SPAcc Crypto Driver

Message ID 20240930093054.215809-1-pavitrakumarm@vayavyalabs.com (mailing list archive)
Headers show
Series Add SPAcc Crypto Driver | expand

Message

Pavitrakumar Managutte Sept. 30, 2024, 9:30 a.m. UTC
Add the driver for SPAcc(Security Protocol Accelerator), which is a             
crypto acceleration IP from Synopsys. The SPAcc supports multiple ciphers,      
hashes and AEAD algorithms with various modes. The driver currently supports    
below                                                                           
                                                                                
AEAD:                                                                           
- ccm(sm4)                                                                      
- ccm(aes)                                                                      
- gcm(sm4)                                                                      
- gcm(aes)                                                                      
- rfc7539(chacha20,poly1305)                                                    
                                                                                
cipher:                                                                         
- cbc(sm4)                                                                      
- ecb(sm4)                                                                      
- ctr(sm4)                                                                      
- xts(sm4)                                                                      
- cts(cbc(sm4))                                                                 
- cbc(aes)                                                                      
- ecb(aes)                                                                      
- xts(aes)                                                                      
- cts(cbc(aes))                                                                 
- ctr(aes)                                                                      
- chacha20                                                                      
- ecb(des)                                                                      
- cbc(des)                                                                      
- ecb(des3_ede)                                                                 
- cbc(des3_ede)                                                                 
                                                                                
hash:                                                                           
- cmac(aes)                                                                     
- xcbc(aes)                                                                     
- cmac(sm4)                                                                     
- xcbc(sm4)                                                                     
- hmac(md5)                                                                     
- md5                                                                           
- hmac(sha1)                                                                    
- sha1                                                                          
- sha224
- sha256                                                                        
- sha384                                                                        
- sha512                                                                        
- hmac(sha224)                                                                  
- hmac(sha256)                                                                  
- hmac(sha384)                                                                  
- hmac(sha512)                                                                  
- sha3-224                                                                      
- sha3-256                                                                      
- sha3-384                                                                      
- sha3-512                                                                      
- hmac(sm3)                                                                     
- sm3                                                                           
- michael_mic                                              

Pavitrakumar M (7):
  Add SPAcc Skcipher support
  Add SPAcc AUTODETECT Support
  Add SPAcc ahash support
  Add SPAcc AEAD support
  Add SPAcc Kconfig and Makefile
  Add SPAcc compilation in crypto
  dt-bindings: crypto: Document support for SPAcc

changelog:
  v8 -> v9 changes:
    - Driver instance limited to one
    - Removed platfor_get_resource() and replaced with
      devm_platform_get_and_ioremap_resource()
    - vspacc-index renamed to vspacc-id
    - Used Kernel helpers for endian conversions.
    - Added vendor prefix (snps,) for custom properties
    - Added Co-developed tags for all the commits.
    - Removed clock-names from the DT properties.
  Link to v8: https://lore.kernel.org/linux-crypto/CALxtO0kMa0LLUzZOFFuH0bkUW-814=gbFouV3um6KSMHdGT=9A@mail.gmail.com/
              https://lore.kernel.org/all/20240905150910.239832-1-pavitrakumarm@vayavyalabs.com/T/#m793bbbae55d54e51f79578c8f1a8313493920555

  v7 -> v8 changes:
    - Added DT bindings for Documentation
    - Platform driver APIs updated.

 .../bindings/crypto/snps,dwc-spacc.yaml       |   71 +
 drivers/crypto/Kconfig                        |    1 +
 drivers/crypto/Makefile                       |    1 +
 drivers/crypto/dwc-spacc/Kconfig              |   94 +
 drivers/crypto/dwc-spacc/Makefile             |   16 +
 drivers/crypto/dwc-spacc/spacc_aead.c         | 1245 ++++++++
 drivers/crypto/dwc-spacc/spacc_ahash.c        |  916 ++++++
 drivers/crypto/dwc-spacc/spacc_core.c         | 2514 +++++++++++++++++
 drivers/crypto/dwc-spacc/spacc_core.h         |  819 ++++++
 drivers/crypto/dwc-spacc/spacc_device.c       |  296 ++
 drivers/crypto/dwc-spacc/spacc_device.h       |  228 ++
 drivers/crypto/dwc-spacc/spacc_hal.c          |  359 +++
 drivers/crypto/dwc-spacc/spacc_hal.h          |  114 +
 drivers/crypto/dwc-spacc/spacc_interrupt.c    |  317 +++
 drivers/crypto/dwc-spacc/spacc_manager.c      |  658 +++++
 drivers/crypto/dwc-spacc/spacc_skcipher.c     |  720 +++++
 16 files changed, 8369 insertions(+)
 create mode 100644 Documentation/devicetree/bindings/crypto/snps,dwc-spacc.yaml
 create mode 100644 drivers/crypto/dwc-spacc/Kconfig
 create mode 100644 drivers/crypto/dwc-spacc/Makefile
 create mode 100755 drivers/crypto/dwc-spacc/spacc_aead.c
 create mode 100644 drivers/crypto/dwc-spacc/spacc_ahash.c
 create mode 100644 drivers/crypto/dwc-spacc/spacc_core.c
 create mode 100644 drivers/crypto/dwc-spacc/spacc_core.h
 create mode 100644 drivers/crypto/dwc-spacc/spacc_device.c
 create mode 100644 drivers/crypto/dwc-spacc/spacc_device.h
 create mode 100644 drivers/crypto/dwc-spacc/spacc_hal.c
 create mode 100644 drivers/crypto/dwc-spacc/spacc_hal.h
 create mode 100644 drivers/crypto/dwc-spacc/spacc_interrupt.c
 create mode 100644 drivers/crypto/dwc-spacc/spacc_manager.c
 create mode 100644 drivers/crypto/dwc-spacc/spacc_skcipher.c


base-commit: ce212d2afca47acd366a2e74c76fe82c31f785ab