在 2025/4/6 下午5:05, Huacai Chen 写道:
Hi, Qunqin,

On Thu, Apr 3, 2025 at 10:46 AM Qunqin Zhao <zhaoqun...@loongson.cn> wrote:
Loongson's Random Number Generator is found inside Loongson security
engine.

Co-developed-by: Yinggang Gu <guyingg...@loongson.cn>
Signed-off-by: Yinggang Gu <guyingg...@loongson.cn>
Signed-off-by: Qunqin Zhao <zhaoqun...@loongson.cn>
Reviewed-by: Huacai Chen <chenhua...@loongson.cn>
---
v7: Change the lsrng_ prefix to loongson_rng_
v6: Replace all "ls6000se" with "loongson"
v2-v5: None

  drivers/crypto/Kconfig                 |   1 +
  drivers/crypto/Makefile                |   1 +
  drivers/crypto/loongson/Kconfig        |   6 +
  drivers/crypto/loongson/Makefile       |   2 +
  drivers/crypto/loongson/loongson-rng.c | 190 +++++++++++++++++++++++++
  5 files changed, 200 insertions(+)
  create mode 100644 drivers/crypto/loongson/Kconfig
  create mode 100644 drivers/crypto/loongson/Makefile
  create mode 100644 drivers/crypto/loongson/loongson-rng.c

diff --git a/drivers/crypto/Kconfig b/drivers/crypto/Kconfig
index 19ab145f9..567ed81b0 100644
--- a/drivers/crypto/Kconfig
+++ b/drivers/crypto/Kconfig
@@ -855,5 +855,6 @@ config CRYPTO_DEV_SA2UL

  source "drivers/crypto/aspeed/Kconfig"
  source "drivers/crypto/starfive/Kconfig"
+source "drivers/crypto/loongson/Kconfig"

  endif # CRYPTO_HW
diff --git a/drivers/crypto/Makefile b/drivers/crypto/Makefile
index fef18ffdb..643c3710b 100644
--- a/drivers/crypto/Makefile
+++ b/drivers/crypto/Makefile
@@ -50,3 +50,4 @@ obj-y += hisilicon/
  obj-$(CONFIG_CRYPTO_DEV_AMLOGIC_GXL) += amlogic/
  obj-y += intel/
  obj-y += starfive/
+obj-y += loongson/
diff --git a/drivers/crypto/loongson/Kconfig b/drivers/crypto/loongson/Kconfig
new file mode 100644
index 000000000..4368701ad
--- /dev/null
+++ b/drivers/crypto/loongson/Kconfig
@@ -0,0 +1,6 @@
+# SPDX-License-Identifier: GPL-2.0
+config CRYPTO_DEV_LOONGSON_RNG
+        tristate "Support for Loongson RNG Driver"
+        depends on MFD_LOONGSON_SE
+        help
+          Support for Loongson RNG Driver.
diff --git a/drivers/crypto/loongson/Makefile b/drivers/crypto/loongson/Makefile
new file mode 100644
index 000000000..b8b013c86
--- /dev/null
+++ b/drivers/crypto/loongson/Makefile
@@ -0,0 +1,2 @@
+# SPDX-License-Identifier: GPL-2.0
+obj-$(CONFIG_CRYPTO_DEV_LOONGSON_RNG)  += loongson-rng.o
diff --git a/drivers/crypto/loongson/loongson-rng.c 
b/drivers/crypto/loongson/loongson-rng.c
new file mode 100644
index 000000000..307014992
--- /dev/null
+++ b/drivers/crypto/loongson/loongson-rng.c
@@ -0,0 +1,190 @@
+// SPDX-License-Identifier: GPL-2.0
+/* Copyright (c) 2019 HiSilicon Limited. */
+/* Copyright (c) 2025 Loongson Technology Corporation Limited. */
+
+#include <linux/crypto.h>
+#include <linux/err.h>
+#include <linux/hw_random.h>
+#include <linux/io.h>
+#include <linux/iopoll.h>
+#include <linux/kernel.h>
+#include <linux/list.h>
+#include <linux/mfd/loongson-se.h>
+#include <linux/module.h>
+#include <linux/mutex.h>
+#include <linux/platform_device.h>
+#include <linux/random.h>
+#include <crypto/internal/rng.h>
+
+struct loongson_rng_list {
+       struct mutex lock;
+       struct list_head list;
+       int is_init;
+};
+
+struct lsrng {
+       bool is_used;
+       struct se_channel *se_ch;
+       struct list_head list;
+       struct completion rng_completion;
+};
Since there are other comments that should be addressed, you can
rename lsrng to loongson_rng to keep consistency.

OK, thanks

Qunqin.


Reply via email to