Hello!
This patchset expand the funcionality of the Amlogic
crypto driver by adding support for more SoC families:
AXG, G12A, G12B, SM1, A1, S4.
Also specify and enable crypto node in device tree
for reference Amlogic devices.
Tested on GXL, AXG, G12A/B, SM1, A1 and S4 devices via
custom tests [1] and tcrypt module.
---
Changes V1 -> V2 [2]:
- Rebased over linux-next.
- Adjusted device tree bindings description.
- A1 and S4 dts use their own compatible, which is a G12 fallback.
Changes V2 -> V3 [3]:
- Fix errors in dt-bindings and device tree.
- Add new field in platform data, which determines
whether clock controller should be used for crypto IP.
- Place back MODULE_DEVICE_TABLE.
- Correct commit messages.
Changes V3 -> V4 [4]:
- Update dt-bindings as per Krzysztof Kozlowski comments.
- Fix bisection: get rid of compiler errors in some patches.
Changes V4 -> V5 [5]:
- Tested on GXL board:
1. Fix panic detected by Corentin Labbe [6].
2. Disable hasher backend for GXL: in its current realization
is doesn't work. And there are no examples or docs in the
vendor SDK.
- Fix AES-CTR realization: legacy boards (gxl, g12, axg) requires
inversion of the keyiv at keys setup stage.
- A1 now uses its own compatible string.
- S4 uses A1 compatible as fallback.
- Code fixes based on comments Neil Atrmstrong and Rob Herring.
- Style fixes (set correct indentations)
Changes V5 -> V6 [7]:
- Fix DMA sync warning reported by Corentin Labbe [8].
- Remove CLK input from driver. Remove clk definition
and second interrput line from crypto node inside GXL dtsi.
Changes V6 -> V7 [9]:
- Fix dt-schema: power domain now required only for A1.
- Use crypto_skcipher_ctx_dma() helper for cipher instead of
____cacheline_aligned.
- Add import/export functions for hasher.
- Fix commit message for patch 17, acorrding to discussion [10].
Changes V7 -> V8 [11]:
- Test patchset with CONFIG_CRYPTO_MANAGER_EXTRA_TESTS: fix some bugs
in hasher logic.
- Use crypto crypto_ahash_ctx_dma in hasher code.
- Correct clock definition: clk81 is required for all SoC's.
- Add fixed-clock (clk81) definition for A1/S4.
- Add information (in commit messages) why different compatibles are used.
Changes V8 -> V9 [12]:
- Remove required field clk-names from dt-schema according to Rob Herring
recommendation [13].
- Fix commit order: all dt-bindings schema commits now located earlier
than any changes in device tree.
- Fix typos and add more clarifications in dt-schema patches.
Changes V9 -> V10 [14]:
- Rebased over linux-next (20241106).
- Remove patches with AES-CTR support. This was a dishonest implementation of CTR algo.
- Update commit headers in accordance with the accepted rules in each
of the subsystems.
- Moved adding power-domains (dt-bindings) in desired commit.
Links:
- [1] https://gist.github.com/mRrvz/3fb8943a7487ab7b943ec140706995e7
- [2] https://lore.kernel.org/all/20240110201216.18016-1-avromanov@salutedevices.com/
- [3] https://lore.kernel.org/all/20240123165831.970023-1-avromanov@salutedevices.com/
- [4] https://lore.kernel.org/all/20240205155521.1795552-1-avromanov@salutedevices.com/
- [5] https://lore.kernel.org/all/20240212135108.549755-1-avromanov@salutedevices.com/
- [6] https://lore.kernel.org/all/ZcsYaPIUrBSg8iXu@Red/
- [7] https://lore.kernel.org/all/20240301132936.621238-1-avromanov@salutedevices.com/
- [8] https://lore.kernel.org/all/Zf1BAlYtiwPOG-Os@Red/
- [9] https://lore.kernel.org/all/20240326153219.2915080-1-avromanov@salutedevices.com/
- [10] https://lore.kernel.org/all/20240329-dotted-illusive-9f0593805a05@wendy/
- [11] https://lore.kernel.org/all/20240411133832.2896463-1-avromanov@salutedevices.com/
- [12] https://lore.kernel.org/all/20240607141242.2616580-1-avromanov@salutedevices.com/
- [13] https://lore.kernel.org/all/20240610222827.GA3166929-robh@kernel.org/
- [14] https://lore.kernel.org/all/20240820145623.3500864-1-avromanov@salutedevices.com/
Alexey Romanov (22):
crypto: amlogic - Don't hardcode IRQ count
crypto: amlogic - Add platform data
crypto: amlogic - Remove clock input
crypto: amlogic - Add MMIO helpers
crypto: amlogic - Move get_engine_number()
crypto: amlogic - Drop status field from meson_flow
crypto: amlogic - Move algs definition and cipher API to cipher.c
crypto: amlogic - Cleanup defines
crypto: amlogic - Process more than MAXDESCS descriptors
crypto: amlogic - Avoid kzalloc in engine thread
crypto: amlogic - Introduce hasher
crypto: amlogic - Use fallback for 192-bit keys
crypto: amlogic - Add support for G12-series
crypto: amlogic - Add support for AXG-series
crypto: amlogic - Add support for A1-series
dt-bindings: crypto: amlogic,gxl-crypto: correct clk and interrupt
lines
dt-bindings: crypto: amlogic,gxl-crypto: support new SoC's
arm64: dts: amlogic: gxl: correct crypto node definition
arm64: dts: amlogic: a1: add crypto node
arm64: dts: amlogic: s4: add crypto node
arm64: dts: amlogic: g12: add crypto node
arm64: dts: amlogic: axg: add crypto node
.../bindings/crypto/amlogic,gxl-crypto.yaml | 32 +-
arch/arm64/boot/dts/amlogic/meson-a1.dtsi | 14 +
arch/arm64/boot/dts/amlogic/meson-axg.dtsi | 7 +
.../boot/dts/amlogic/meson-g12-common.dtsi | 7 +
arch/arm64/boot/dts/amlogic/meson-gxl.dtsi | 6 +-
arch/arm64/boot/dts/amlogic/meson-s4.dtsi | 13 +
drivers/crypto/amlogic/Makefile | 2 +-
drivers/crypto/amlogic/amlogic-gxl-cipher.c | 581 ++++++++++++------
drivers/crypto/amlogic/amlogic-gxl-core.c | 289 ++++-----
drivers/crypto/amlogic/amlogic-gxl-hasher.c | 507 +++++++++++++++
drivers/crypto/amlogic/amlogic-gxl.h | 113 +++-
11 files changed, 1209 insertions(+), 362 deletions(-)
create mode 100644 drivers/crypto/amlogic/amlogic-gxl-hasher.c
--
2.34.1