Module Name: src Committed By: skrll Date: Sun Feb 9 09:09:49 UTC 2025
Modified Files: src/sys/arch/riscv/starfive: jh7110_trng.c Log Message: risc-v: JH7110 TRNG aprint_verbose the features and build conf registers To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/sys/arch/riscv/starfive/jh7110_trng.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/riscv/starfive/jh7110_trng.c diff -u src/sys/arch/riscv/starfive/jh7110_trng.c:1.1 src/sys/arch/riscv/starfive/jh7110_trng.c:1.2 --- src/sys/arch/riscv/starfive/jh7110_trng.c:1.1 Sat Feb 8 16:12:20 2025 +++ src/sys/arch/riscv/starfive/jh7110_trng.c Sun Feb 9 09:09:49 2025 @@ -1,4 +1,4 @@ -/* $NetBSD: jh7110_trng.c,v 1.1 2025/02/08 16:12:20 skrll Exp $ */ +/* $NetBSD: jh7110_trng.c,v 1.2 2025/02/09 09:09:49 skrll Exp $ */ /*- * Copyright (c) 2025 The NetBSD Foundation, Inc. @@ -30,7 +30,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: jh7110_trng.c,v 1.1 2025/02/08 16:12:20 skrll Exp $"); +__KERNEL_RCSID(0, "$NetBSD: jh7110_trng.c,v 1.2 2025/02/09 09:09:49 skrll Exp $"); #include <sys/param.h> @@ -75,7 +75,6 @@ struct jh7110_trng_softc { #define JH7110_TRNG_STAT 0x0004 #define JH7110_TRNG_STAT_SEEDED __BIT(9) -//XXXNH check #define JH7110_TRNG_MODE 0x0008 #define JH7110_TRNG_MODE_R256 __BIT(3) #define JH7110_TRNG_SMODE 0x000c @@ -92,6 +91,25 @@ struct jh7110_trng_softc { #define JH7110_TRNG_ISTATUS_AGE_ALARM __BIT(2) #define JH7110_TRNG_ISTATUS_SEED_DONE __BIT(1) #define JH7110_TRNG_ISTATUS_RAND_RDY __BIT(0) +#define JH7110_TRNG_FEATURES 0x001c +#define JH7110_TRNG_FEATURES_MM_RESET_STATE __BIT(3) +#define JH7110_TRNG_FEATURES_RAND_SEED_AVAIL __BIT(2) +#define JH7110_TRNG_FEATURES_MAX_RAND_LENGTH __BITS(1,0) + +#define JH7110_TRNG_FEATURES_BITS \ + "\177\020" /* New bitmask */ \ + "f\003\01mode reset state\0" /* bit 3 (1) */ \ + "=\x0" "test mode\0" \ + "=\x1" "mission mode\0" \ + "f\002\01ring oscillator\0" /* bit 2 (1) */ \ + "=\x0" "not preset\0" \ + "=\x1" "present\0" \ + "f\000\02max rand length\0" /* bits 0 .. 1 */ \ + "=\x0" "128-bit\0" \ + "=\x1" "256-bit\0" \ + "\0" + + #define JH7110_TRNG_DATA0 0x0020 #define JH7110_TRNG_DATA1 0x0024 #define JH7110_TRNG_DATA2 0x0028 @@ -101,6 +119,27 @@ struct jh7110_trng_softc { #define JH7110_TRNG_DATA6 0x0038 #define JH7110_TRNG_DATA7 0x003c +#define JH7110_TRNG_BCONF 0x0068 +#define JH7110_TRNG_BCONF_AUTO_RESEED_LOOPBACK __BIT(5) +#define JH7110_TRNG_BCONF_MODE_AFTER_RST __BIT(4) +#define JH7110_TRNG_BCONF_PRNG_LEN_AFTER_RST __BIT(3) +#define JH7110_TRNG_BCONF_MAX_PRNG_LEN __BIT(2) +#define JH7110_TRNG_BCONF_BITS \ + "\177\020" /* New bitmask */ \ + "f\005\01auto reseed loopback\0" /* bit 5 (1) */ \ + "=\x0" "not present\0" \ + "=\x1" "present\0" \ + "f\004\01mode after reset\0" /* bit 4 (1) */ \ + "=\x0" "test mode\0" \ + "=\x1" "mission mode\0" \ + "f\003\01PRNG after reset\0" /* bit 3 (1) */ \ + "=\x0" "not preset\0" \ + "=\x1" "present\0" \ + "f\002\01max PRNG length\0" /* bit 2 (1) */ \ + "=\x0" "128-bit\0" \ + "=\x1" "256-bit\0" \ + "\0" + #define RD4(sc, reg) \ bus_space_read_4((sc)->sc_bst, (sc)->sc_bsh, (reg)) @@ -332,6 +371,16 @@ jh7110_trng_attach(device_t parent, devi aprint_naive("\n"); aprint_normal(": JH7110 TRNG\n"); + char buf[256]; + + snprintb(buf, sizeof(buf), JH7110_TRNG_FEATURES_BITS, + RD4(sc, JH7110_TRNG_FEATURES)); + aprint_verbose_dev(sc->sc_dev, "Features : %s\n", buf); + + snprintb(buf, sizeof(buf), JH7110_TRNG_BCONF_BITS, + RD4(sc, JH7110_TRNG_BCONF)); + aprint_verbose_dev(sc->sc_dev, "Build config: %s\n", buf); + char intrstr[128]; if (!fdtbus_intr_str(phandle, 0, intrstr, sizeof(intrstr))) { aprint_error_dev(self, "failed to decode interrupt\n");