[PATCH 00/12] crypto: atmel - refactor common i2c support and add SHA256 ahash support

Lothar Rubusch l.rubusch at gmail.com
Tue May 12 15:43:37 PDT 2026


This series restructures the Atmel secure element drivers around a
shared atmel-i2c core and adds SHA256 ahash support for ATSHA204A and
ECC based devices.

The existing drivers duplicated substantial parts of the transport,
RNG, EEPROM and device management logic. This series consolidates the
common functionality into the shared i2c core and converts the client
drivers to capability based allocation.

The series also introduces per-device timing configuration through
match data, moves sanity checks and RNG handling into the core driver,
updates workqueue handling and cleans up internal constants and helper
definitions.

The final patch adds SHA256 ahash support using the hardware SHA engine
provided by the devices.

ATSHA204A devices require software-side SHA256 padding according to
FIPS 180-4, while newer ECC devices provide a dedicated SHA final
command and perform padding internally in hardware.

Supporting the SHA engine also requires changes to the command
transport path. SHA operations must execute as a strict uninterrupted
sequence consisting of SHA INIT, one or more SHA COMPUTE commands and,
for ECC devices, a terminating SHA FINAL command. The device loses its
internal SHA state if it enters sleep mode or if unrelated commands
are interleaved during the transaction.

To satisfy these hardware requirements, the send/receive path is split
into a low-level transfer helper and a higher-level wrapper managing
wakeup, sleep and locking. SHA operations keep the device awake and
hold the i2c lock for the full duration of the hashing transaction.

The series has been tested on ATSHA204A and ATECC508A devices.
Tests are ongoing/pending on ATECC608A and ATECC608B.
---
Lothar Rubusch (12):
  crypto: atmel - introduce shared I2C client management
  crypto: atmel - move capability-based client allocation into i2c core
  crypto: atmel - remove obsolete CONFIG_OF guard
  crypto: atmel - add per-device timing and match-data driven
    configuration
  crypto: atmel - move RNG support into common i2c core
  crypto: atmel - move EEPROM access support into common i2c core
  crypto: atmel - expose CONFIG zone through sysfs
  crypto: atmel - move device sanity check to core driver
  crypto: atmel - check client data in remove callbacks
  crypto: atmel - update workqueue flags and add flush on exit
  crypto: atmel - refactor and localize driver constants
  crypto: atmel - add SHA256 ahash support

 drivers/crypto/atmel-ecc.c     | 252 +++++++-----
 drivers/crypto/atmel-i2c.c     | 679 +++++++++++++++++++++++++++++----
 drivers/crypto/atmel-i2c.h     | 180 +++++----
 drivers/crypto/atmel-sha204a.c | 284 +++++++-------
 4 files changed, 1010 insertions(+), 385 deletions(-)

Signed-off-by: Lothar Rubusch <l.rubusch at gmail.com>

base-commit: f7dd32c5179d7755de18e21d5674b08f9e5cb180
-- 
2.53.0




More information about the linux-arm-kernel mailing list