[PATCH v7 0/4] Add SPAcc Crypto Driver

Pavitrakumar Managutte posted 4 patches 2 months, 1 week ago
.../bindings/crypto/snps,dwc-spacc.yaml       |   50 +
drivers/crypto/Kconfig                        |    1 +
drivers/crypto/Makefile                       |    1 +
drivers/crypto/dwc-spacc/Kconfig              |   80 +
drivers/crypto/dwc-spacc/Makefile             |    8 +
drivers/crypto/dwc-spacc/spacc_ahash.c        |  980 +++++++
drivers/crypto/dwc-spacc/spacc_core.c         | 2394 +++++++++++++++++
drivers/crypto/dwc-spacc/spacc_core.h         |  830 ++++++
drivers/crypto/dwc-spacc/spacc_device.c       |  283 ++
drivers/crypto/dwc-spacc/spacc_device.h       |  233 ++
drivers/crypto/dwc-spacc/spacc_hal.c          |  374 +++
drivers/crypto/dwc-spacc/spacc_hal.h          |  114 +
drivers/crypto/dwc-spacc/spacc_interrupt.c    |  328 +++
drivers/crypto/dwc-spacc/spacc_manager.c      |  613 +++++
14 files changed, 6289 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 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
[PATCH v7 0/4] Add SPAcc Crypto Driver
Posted by Pavitrakumar Managutte 2 months, 1 week ago
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                                                                           
                                                                                
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 Managutte (4):
  dt-bindings: crypto: Document support for SPAcc
  Add SPAcc ahash support
  Add SPAcc AUTODETECT Support
  Add SPAcc Kconfig and Makefile

changelog:
  v1->v2 changes:
    - Added local_bh_disable() and local_bh_enable() for the below calls.
      a. for ciphers skcipher_request_complete()
      b. for aead aead_request_complete()
      c. for hash ahash_request_complete()
    - dt-bindings updates
      a. removed snps,vspacc-priority and made it into config option
      b. renamed snps,spacc-wdtimer to snps,spacc-internal-counter
      c. Added description to all properties
    - Updated corresponding dt-binding changes to code 

  v2->v3 changes:
    - cra_init and cra_exit replaced with init_tfm and exit_tfm for hashes.
    - removed mutex_lock/unlock for spacc_skcipher_fallback call
    - dt-bindings updates
     a. updated SOC related information
     b. renamed compatible string as per SOC
   - Updated corresponding dt-binding changes to code 

  v3->v4 changes:
   - removed snps,vspacc-id from the dt-bindings 
   - removed mutex_lock from ciphers
   - replaced magic numbers with macros
   - removed sw_fb variable from struct mode_tab and associated code from the
     hashes
   - polling code is replaced by wait_event_interruptible

  v4->v5 changes:
   - Updated to register with the crypto-engine
   - Used semaphore to manage SPAcc device hardware context pool
   - This patchset supports Hashes only 
   - Dropping the support for Ciphers and AEADs in this patchset 
   - Added Reviewed-by tag on the Device tree patch since it was reviewed on 
     v4 patch by Krzysztof Kozlowski and Rob Herring (Arm)

  v5->v6 changes:
   - Removed CRYPTO_DEV_SPACC_CIPHER and CRYPTO_DEV_SPACC_AEAD Kconfig options,
     since the cipher and aead support is not part of this patchset
   - Dropped spacc_skcipher.o and spacc_aead.o from Makefile to fix build errors
     reported by kernel test robot
   - Added Reported-by and Closes tags as suggested

  v6->v7 changes:
   - Fixed build error reported by Kernel test robot
   - Added Reported-by and Closes tags as suggested

 .../bindings/crypto/snps,dwc-spacc.yaml       |   50 +
 drivers/crypto/Kconfig                        |    1 +
 drivers/crypto/Makefile                       |    1 +
 drivers/crypto/dwc-spacc/Kconfig              |   80 +
 drivers/crypto/dwc-spacc/Makefile             |    8 +
 drivers/crypto/dwc-spacc/spacc_ahash.c        |  980 +++++++
 drivers/crypto/dwc-spacc/spacc_core.c         | 2394 +++++++++++++++++
 drivers/crypto/dwc-spacc/spacc_core.h         |  830 ++++++
 drivers/crypto/dwc-spacc/spacc_device.c       |  283 ++
 drivers/crypto/dwc-spacc/spacc_device.h       |  233 ++
 drivers/crypto/dwc-spacc/spacc_hal.c          |  374 +++
 drivers/crypto/dwc-spacc/spacc_hal.h          |  114 +
 drivers/crypto/dwc-spacc/spacc_interrupt.c    |  328 +++
 drivers/crypto/dwc-spacc/spacc_manager.c      |  613 +++++
 14 files changed, 6289 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 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


base-commit: c0d36727bf39bb16ef0a67ed608e279535ebf0da
-- 
2.25.1
Re: [PATCH v7 0/4] Add SPAcc Crypto Driver
Posted by T Pratham 2 months, 1 week ago
Hi
On 07/10/25 12:20, Pavitrakumar Managutte wrote:
> 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                                                                           
>                                                                                 
> 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 Managutte (4):
>   dt-bindings: crypto: Document support for SPAcc
>   Add SPAcc ahash support
>   Add SPAcc AUTODETECT Support
>   Add SPAcc Kconfig and Makefile

Use appropriate subject prefixes in commits. For crypto drivers, it is "crypto: <org/chip/soc> - <your commit header>". You can find the correct prefixes with `git log --oneline -- DIRECTORY_OR_FILE` on the directory your patch is touching.

> 
> changelog:
>   v1->v2 changes:
>     - Added local_bh_disable() and local_bh_enable() for the below calls.
>       a. for ciphers skcipher_request_complete()
>       b. for aead aead_request_complete()
>       c. for hash ahash_request_complete()
>     - dt-bindings updates
>       a. removed snps,vspacc-priority and made it into config option
>       b. renamed snps,spacc-wdtimer to snps,spacc-internal-counter
>       c. Added description to all properties
>     - Updated corresponding dt-binding changes to code 
> 
>   v2->v3 changes:
>     - cra_init and cra_exit replaced with init_tfm and exit_tfm for hashes.
>     - removed mutex_lock/unlock for spacc_skcipher_fallback call
>     - dt-bindings updates
>      a. updated SOC related information
>      b. renamed compatible string as per SOC
>    - Updated corresponding dt-binding changes to code 
> 
>   v3->v4 changes:
>    - removed snps,vspacc-id from the dt-bindings 
>    - removed mutex_lock from ciphers
>    - replaced magic numbers with macros
>    - removed sw_fb variable from struct mode_tab and associated code from the
>      hashes
>    - polling code is replaced by wait_event_interruptible
> 
>   v4->v5 changes:
>    - Updated to register with the crypto-engine
>    - Used semaphore to manage SPAcc device hardware context pool
>    - This patchset supports Hashes only 
>    - Dropping the support for Ciphers and AEADs in this patchset 
>    - Added Reviewed-by tag on the Device tree patch since it was reviewed on 
>      v4 patch by Krzysztof Kozlowski and Rob Herring (Arm)
> 
>   v5->v6 changes:
>    - Removed CRYPTO_DEV_SPACC_CIPHER and CRYPTO_DEV_SPACC_AEAD Kconfig options,
>      since the cipher and aead support is not part of this patchset
>    - Dropped spacc_skcipher.o and spacc_aead.o from Makefile to fix build errors
>      reported by kernel test robot
>    - Added Reported-by and Closes tags as suggested
> 
>   v6->v7 changes:
>    - Fixed build error reported by Kernel test robot
>    - Added Reported-by and Closes tags as suggested
> 
>  .../bindings/crypto/snps,dwc-spacc.yaml       |   50 +
>  drivers/crypto/Kconfig                        |    1 +
>  drivers/crypto/Makefile                       |    1 +
>  drivers/crypto/dwc-spacc/Kconfig              |   80 +
>  drivers/crypto/dwc-spacc/Makefile             |    8 +
>  drivers/crypto/dwc-spacc/spacc_ahash.c        |  980 +++++++
>  drivers/crypto/dwc-spacc/spacc_core.c         | 2394 +++++++++++++++++
>  drivers/crypto/dwc-spacc/spacc_core.h         |  830 ++++++
>  drivers/crypto/dwc-spacc/spacc_device.c       |  283 ++
>  drivers/crypto/dwc-spacc/spacc_device.h       |  233 ++
>  drivers/crypto/dwc-spacc/spacc_hal.c          |  374 +++
>  drivers/crypto/dwc-spacc/spacc_hal.h          |  114 +
>  drivers/crypto/dwc-spacc/spacc_interrupt.c    |  328 +++
>  drivers/crypto/dwc-spacc/spacc_manager.c      |  613 +++++
>  14 files changed, 6289 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 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
> 
> 
> base-commit: c0d36727bf39bb16ef0a67ed608e279535ebf0da


-- 
Regards
T Pratham <t-pratham@ti.com>
Re: [PATCH v7 0/4] Add SPAcc Crypto Driver
Posted by Pavitrakumar Managutte 2 months ago
Hi Pratham,
  Thanks for those inputs. I will fix that.

Warm regards,
PK


On Fri, Oct 10, 2025 at 12:28 PM T Pratham <t-pratham@ti.com> wrote:
>
> Hi
> On 07/10/25 12:20, Pavitrakumar Managutte wrote:
> > 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
> >
> > 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 Managutte (4):
> >   dt-bindings: crypto: Document support for SPAcc
> >   Add SPAcc ahash support
> >   Add SPAcc AUTODETECT Support
> >   Add SPAcc Kconfig and Makefile
>
> Use appropriate subject prefixes in commits. For crypto drivers, it is "crypto: <org/chip/soc> - <your commit header>". You can find the correct prefixes with `git log --oneline -- DIRECTORY_OR_FILE` on the directory your patch is touching.
>
> >
> > changelog:
> >   v1->v2 changes:
> >     - Added local_bh_disable() and local_bh_enable() for the below calls.
> >       a. for ciphers skcipher_request_complete()
> >       b. for aead aead_request_complete()
> >       c. for hash ahash_request_complete()
> >     - dt-bindings updates
> >       a. removed snps,vspacc-priority and made it into config option
> >       b. renamed snps,spacc-wdtimer to snps,spacc-internal-counter
> >       c. Added description to all properties
> >     - Updated corresponding dt-binding changes to code
> >
> >   v2->v3 changes:
> >     - cra_init and cra_exit replaced with init_tfm and exit_tfm for hashes.
> >     - removed mutex_lock/unlock for spacc_skcipher_fallback call
> >     - dt-bindings updates
> >      a. updated SOC related information
> >      b. renamed compatible string as per SOC
> >    - Updated corresponding dt-binding changes to code
> >
> >   v3->v4 changes:
> >    - removed snps,vspacc-id from the dt-bindings
> >    - removed mutex_lock from ciphers
> >    - replaced magic numbers with macros
> >    - removed sw_fb variable from struct mode_tab and associated code from the
> >      hashes
> >    - polling code is replaced by wait_event_interruptible
> >
> >   v4->v5 changes:
> >    - Updated to register with the crypto-engine
> >    - Used semaphore to manage SPAcc device hardware context pool
> >    - This patchset supports Hashes only
> >    - Dropping the support for Ciphers and AEADs in this patchset
> >    - Added Reviewed-by tag on the Device tree patch since it was reviewed on
> >      v4 patch by Krzysztof Kozlowski and Rob Herring (Arm)
> >
> >   v5->v6 changes:
> >    - Removed CRYPTO_DEV_SPACC_CIPHER and CRYPTO_DEV_SPACC_AEAD Kconfig options,
> >      since the cipher and aead support is not part of this patchset
> >    - Dropped spacc_skcipher.o and spacc_aead.o from Makefile to fix build errors
> >      reported by kernel test robot
> >    - Added Reported-by and Closes tags as suggested
> >
> >   v6->v7 changes:
> >    - Fixed build error reported by Kernel test robot
> >    - Added Reported-by and Closes tags as suggested
> >
> >  .../bindings/crypto/snps,dwc-spacc.yaml       |   50 +
> >  drivers/crypto/Kconfig                        |    1 +
> >  drivers/crypto/Makefile                       |    1 +
> >  drivers/crypto/dwc-spacc/Kconfig              |   80 +
> >  drivers/crypto/dwc-spacc/Makefile             |    8 +
> >  drivers/crypto/dwc-spacc/spacc_ahash.c        |  980 +++++++
> >  drivers/crypto/dwc-spacc/spacc_core.c         | 2394 +++++++++++++++++
> >  drivers/crypto/dwc-spacc/spacc_core.h         |  830 ++++++
> >  drivers/crypto/dwc-spacc/spacc_device.c       |  283 ++
> >  drivers/crypto/dwc-spacc/spacc_device.h       |  233 ++
> >  drivers/crypto/dwc-spacc/spacc_hal.c          |  374 +++
> >  drivers/crypto/dwc-spacc/spacc_hal.h          |  114 +
> >  drivers/crypto/dwc-spacc/spacc_interrupt.c    |  328 +++
> >  drivers/crypto/dwc-spacc/spacc_manager.c      |  613 +++++
> >  14 files changed, 6289 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 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
> >
> >
> > base-commit: c0d36727bf39bb16ef0a67ed608e279535ebf0da
>
>
> --
> Regards
> T Pratham <t-pratham@ti.com>