[PATCH 06/29] crypto: talitos - Introduce registration helper

From: Paul Louvel

Date: Thu May 28 2026 - 05:14:34 EST


Add talitos_register_common() that will be called in each respective
crypto implementation file.

Signed-off-by: Paul Louvel <paul.louvel@xxxxxxxxxxx>
---
drivers/crypto/talitos/talitos.c | 53 ++++++++++++++++++++++++++++++++++++++++
drivers/crypto/talitos/talitos.h | 3 +++
2 files changed, 56 insertions(+)

diff --git a/drivers/crypto/talitos/talitos.c b/drivers/crypto/talitos/talitos.c
index 3fc1069062da..869739dcc4d7 100644
--- a/drivers/crypto/talitos/talitos.c
+++ b/drivers/crypto/talitos/talitos.c
@@ -3095,6 +3095,59 @@ static void talitos_remove(struct platform_device *ofdev)
tasklet_kill(&priv->done_task[1]);
}

+static void talitos_alg_set_common(struct talitos_private *priv,
+ struct crypto_alg *alg, u32 custom_priority,
+ u32 type)
+{
+ alg->cra_module = THIS_MODULE;
+ if (custom_priority)
+ alg->cra_priority = custom_priority;
+ else
+ alg->cra_priority = TALITOS_CRA_PRIORITY;
+ if (has_ftr_sec1(priv) && type != CRYPTO_ALG_TYPE_AHASH)
+ alg->cra_alignmask = 3;
+ else
+ alg->cra_alignmask = 0;
+ alg->cra_ctxsize = sizeof(struct talitos_ctx);
+ alg->cra_flags |= CRYPTO_ALG_KERN_DRIVER_ONLY;
+}
+
+int talitos_register_common(struct device *dev,
+ struct talitos_alg_template *template)
+{
+ struct talitos_private *priv = dev_get_drvdata(dev);
+ struct talitos_crypto_alg *t_alg;
+ struct crypto_alg *alg;
+ int ret;
+
+ t_alg = devm_kzalloc(dev, sizeof(struct talitos_crypto_alg),
+ GFP_KERNEL);
+ if (!t_alg)
+ return -ENOMEM;
+
+ t_alg->algt = *template;
+
+ switch (t_alg->algt.type) {
+ default:
+ dev_err(dev, "unknown algorithm type %d\n", t_alg->algt.type);
+ devm_kfree(dev, t_alg);
+ return -EINVAL;
+ }
+
+ if (ret) {
+ dev_err(dev, "%s alg registration failed\n",
+ alg->cra_driver_name);
+ devm_kfree(dev, t_alg);
+ return 0;
+ }
+
+ t_alg->dev = dev;
+
+ list_add_tail(&t_alg->entry, &priv->alg_list);
+
+ return 0;
+}
+
static struct talitos_crypto_alg *talitos_alg_alloc(struct device *dev,
struct talitos_alg_template
*template)
diff --git a/drivers/crypto/talitos/talitos.h b/drivers/crypto/talitos/talitos.h
index 1f81d336dae8..afed9947f4c0 100644
--- a/drivers/crypto/talitos/talitos.h
+++ b/drivers/crypto/talitos/talitos.h
@@ -523,6 +523,9 @@ int talitos_init_common(struct talitos_ctx *ctx,
struct talitos_crypto_alg *talitos_alg);
void talitos_cra_exit(struct crypto_tfm *tfm);

+int talitos_register_common(struct device *dev,
+ struct talitos_alg_template *template);
+
/* Hardware RNG */

int talitos_register_rng(struct device *dev);

--
2.54.0