/linux/drivers/gpu/drm/msm/registers/ |
H A D | rules-fd.xsd | 1 <?xml version="1.0" encoding="UTF-8"?> 4 xmlns:rng="http://nouveau.freedesktop.org/" 13 For specifications, see the file rules-ng-format.txt 14 in Nouveau CVS module 'rules-ng'. 20 <!-- Elements --> 22 <element name="database" type="rng:databaseType" /> 23 <element name="import" type="rng:importType" /> 24 <element name="copyright" type="rng:copyrightType" /> 25 <element name="domain" type="rng:domainType" /> 26 <element name="array" type="rng:arrayType" /> [all …]
|
/linux/drivers/char/hw_random/ |
H A D | Makefile | 1 # SPDX-License-Identifier: GPL-2.0 3 # Makefile for HW Random Number Generator (RNG) device drivers. 6 obj-$(CONFIG_HW_RANDOM) += rng-core.o 7 rng-core-y := core.o 8 obj-$(CONFIG_HW_RANDOM_TIMERIOMEM) += timeriomem-rng.o 9 obj-$(CONFIG_HW_RANDOM_INTEL) += intel-rng.o 10 obj-$(CONFIG_HW_RANDOM_AMD) += amd-rng.o 11 obj-$(CONFIG_HW_RANDOM_AIROHA) += airoha-trng.o 12 obj-$(CONFIG_HW_RANDOM_ATMEL) += atmel-rng.o 13 obj-$(CONFIG_HW_RANDOM_BA431) += ba431-rng.o [all …]
|
H A D | cavium-rng-vf.c | 1 // SPDX-License-Identifier: GPL-2.0 82 static int check_rng_health(struct cavium_rng *rng) in check_rng_health() argument 90 if (!rng->pf_regbase) in check_rng_health() 93 status = readq(rng->pf_regbase + HEALTH_STATUS_REG); in check_rng_health() 95 dev_err(&rng->pdev->dev, "HWRNG: Startup health test failed\n"); in check_rng_health() 96 return -EIO; in check_rng_health() 110 cur_err = (cycles * 1000000000) / rng->clock_rate; /* In nanosec */ in check_rng_health() 116 rng->prev_error = 0; in check_rng_health() 117 rng->prev_time = 0; in check_rng_health() 121 if (rng->prev_error) { in check_rng_health() [all …]
|
H A D | hisi-rng.c | 1 // SPDX-License-Identifier: GPL-2.0-only 23 #define to_hisi_rng(p) container_of(p, struct hisi_rng, rng) 31 struct hwrng rng; member 34 static int hisi_rng_init(struct hwrng *rng) in hisi_rng_init() argument 36 struct hisi_rng *hrng = to_hisi_rng(rng); in hisi_rng_init() 43 writel_relaxed(seed, hrng->base + RNG_SEED); in hisi_rng_init() 53 writel_relaxed(val, hrng->base + RNG_CTRL); in hisi_rng_init() 57 static void hisi_rng_cleanup(struct hwrng *rng) in hisi_rng_cleanup() argument 59 struct hisi_rng *hrng = to_hisi_rng(rng); in hisi_rng_cleanup() 61 writel_relaxed(0, hrng->base + RNG_CTRL); in hisi_rng_cleanup() [all …]
|
H A D | cavium-rng.c | 1 // SPDX-License-Identifier: GPL-2.0 22 /* Enable the RNG hardware and activate the VF */ 26 struct cavium_rng_pf *rng; in cavium_rng_probe() local 29 rng = devm_kzalloc(&pdev->dev, sizeof(*rng), GFP_KERNEL); in cavium_rng_probe() 30 if (!rng) in cavium_rng_probe() 31 return -ENOMEM; in cavium_rng_probe() 33 /*Map the RNG control */ in cavium_rng_probe() 34 rng->control_status = pcim_iomap(pdev, 0, 0); in cavium_rng_probe() 35 if (!rng->control_status) { in cavium_rng_probe() 36 dev_err(&pdev->dev, in cavium_rng_probe() [all …]
|
H A D | bcm2835-rng.c | 1 // SPDX-License-Identifier: GPL-2.0 3 * Copyright (c) 2010-2012 Broadcom. All rights reserved. 22 /* enable rng */ 31 struct hwrng rng; member 38 static inline struct bcm2835_rng_priv *to_rng_priv(struct hwrng *rng) in to_rng_priv() argument 40 return container_of(rng, struct bcm2835_rng_priv, rng); in to_rng_priv() 46 * peripheral registers for CPU-native byte order. in rng_readl() 49 return __raw_readl(priv->base + offset); in rng_readl() 51 return readl(priv->base + offset); in rng_readl() 58 __raw_writel(val, priv->base + offset); in rng_writel() [all …]
|
H A D | pic32-rng.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * PIC32 RNG driver 30 struct hwrng rng; member 40 static int pic32_rng_init(struct hwrng *rng) in pic32_rng_init() argument 42 struct pic32_rng *priv = container_of(rng, struct pic32_rng, rng); in pic32_rng_init() 45 writel(TRNGEN | TRNGMOD, priv->base + RNGCON); in pic32_rng_init() 49 static int pic32_rng_read(struct hwrng *rng, void *buf, size_t max, in pic32_rng_read() argument 52 struct pic32_rng *priv = container_of(rng, struct pic32_rng, rng); in pic32_rng_read() 58 t = readl(priv->base + RNGRCNT) & RCNT_MASK; in pic32_rng_read() 61 *data = ((u64)readl(priv->base + RNGSEED2) << 32) + in pic32_rng_read() [all …]
|
H A D | octeon-rng.c | 20 #include <asm/octeon/cvmx-rnm-defs.h> 28 static int octeon_rng_init(struct hwrng *rng) in octeon_rng_init() argument 31 struct octeon_rng *p = container_of(rng, struct octeon_rng, ops); in octeon_rng_init() 35 ctl.s.rng_en = 1; /* Enable the RNG hardware. */ in octeon_rng_init() 36 cvmx_write_csr((unsigned long)p->control_status, ctl.u64); in octeon_rng_init() 40 static void octeon_rng_cleanup(struct hwrng *rng) in octeon_rng_cleanup() argument 43 struct octeon_rng *p = container_of(rng, struct octeon_rng, ops); in octeon_rng_cleanup() 47 cvmx_write_csr((unsigned long)p->control_status, ctl.u64); in octeon_rng_cleanup() 50 static int octeon_rng_data_read(struct hwrng *rng, u32 *data) in octeon_rng_data_read() argument 52 struct octeon_rng *p = container_of(rng, struct octeon_rng, ops); in octeon_rng_data_read() [all …]
|
H A D | mxc-rnga.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 3 * RNG driver for Freescale RNGA 5 * Copyright 2008-2009 Freescale Semiconductor, Inc. All Rights Reserved. 11 * This driver is based on other RNG drivers. 56 struct hwrng rng; member 61 static int mxc_rnga_data_present(struct hwrng *rng, int wait) in mxc_rnga_data_present() argument 64 struct mxc_rng *mxc_rng = container_of(rng, struct mxc_rng, rng); in mxc_rnga_data_present() 67 /* how many random numbers are in FIFO? [0-16] */ in mxc_rnga_data_present() 68 int level = (__raw_readl(mxc_rng->mem + RNGA_STATUS) & in mxc_rnga_data_present() 77 static int mxc_rnga_data_read(struct hwrng *rng, u32 * data) in mxc_rnga_data_read() argument [all …]
|
H A D | iproc-rng200.c | 1 // SPDX-License-Identifier: GPL-2.0-only 42 struct hwrng rng; member 46 #define to_rng_priv(rng) container_of(rng, struct iproc_rng200_dev, rng) argument 70 /* Reset RNG and RBG */ in iproc_rng200_restart() 90 static int iproc_rng200_read(struct hwrng *rng, void *buf, size_t max, in iproc_rng200_read() argument 93 struct iproc_rng200_dev *priv = to_rng_priv(rng); in iproc_rng200_read() 105 /* Is RNG sane? If not, reset it. */ in iproc_rng200_read() 106 status = ioread32(priv->base + RNG_INT_STATUS_OFFSET); in iproc_rng200_read() 111 return max - num_remaining; in iproc_rng200_read() 113 iproc_rng200_restart(priv->base); in iproc_rng200_read() [all …]
|
H A D | pasemi-rng.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * Copyright (C) 2006-2007 PA Semi, Inc 7 * Driver for the PWRficient onchip rng 33 static int pasemi_rng_data_present(struct hwrng *rng, int wait) in pasemi_rng_data_present() argument 35 void __iomem *rng_regs = (void __iomem *)rng->priv; in pasemi_rng_data_present() 48 static int pasemi_rng_data_read(struct hwrng *rng, u32 *data) in pasemi_rng_data_read() argument 50 void __iomem *rng_regs = (void __iomem *)rng->priv; in pasemi_rng_data_read() 55 static int pasemi_rng_init(struct hwrng *rng) in pasemi_rng_init() argument 57 void __iomem *rng_regs = (void __iomem *)rng->priv; in pasemi_rng_init() 67 static void pasemi_rng_cleanup(struct hwrng *rng) in pasemi_rng_cleanup() argument [all …]
|
H A D | ingenic-trng.c | 1 // SPDX-License-Identifier: GPL-2.0 32 struct hwrng rng; member 35 static int ingenic_trng_init(struct hwrng *rng) in ingenic_trng_init() argument 37 struct ingenic_trng *trng = container_of(rng, struct ingenic_trng, rng); in ingenic_trng_init() 40 ctrl = readl(trng->base + TRNG_REG_CFG_OFFSET); in ingenic_trng_init() 42 writel(ctrl, trng->base + TRNG_REG_CFG_OFFSET); in ingenic_trng_init() 47 static void ingenic_trng_cleanup(struct hwrng *rng) in ingenic_trng_cleanup() argument 49 struct ingenic_trng *trng = container_of(rng, struct ingenic_trng, rng); in ingenic_trng_cleanup() 52 ctrl = readl(trng->base + TRNG_REG_CFG_OFFSET); in ingenic_trng_cleanup() 54 writel(ctrl, trng->base + TRNG_REG_CFG_OFFSET); in ingenic_trng_cleanup() [all …]
|
H A D | ba431-rng.c | 1 // SPDX-License-Identifier: GPL-2.0 42 struct hwrng rng; member 49 return ioread32(ba431->base + reg); in ba431_trng_read_reg() 55 iowrite32(val, ba431->base + reg); in ba431_trng_write_reg() 89 dev_err(ba431->dev, "reset failed (state: %d)\n", in ba431_trng_reset() 91 return -ETIMEDOUT; in ba431_trng_reset() 94 dev_info(ba431->dev, "reset done\n"); in ba431_trng_reset() 104 atomic_set(&ba431->reset_pending, 0); in ba431_trng_reset_work() 109 if (atomic_cmpxchg(&ba431->reset_pending, 0, 1)) in ba431_trng_schedule_reset() 112 schedule_work(&ba431->reset_work); in ba431_trng_schedule_reset() [all …]
|
H A D | meson-rng.c | 1 // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause 26 int (*read)(struct hwrng *rng, void *buf, size_t max, bool wait); 31 struct hwrng rng; member 35 static int meson_rng_read(struct hwrng *rng, void *buf, size_t max, bool wait) in meson_rng_read() argument 38 container_of(rng, struct meson_rng_data, rng); in meson_rng_read() 40 *(u32 *)buf = readl_relaxed(data->base + RNG_DATA); in meson_rng_read() 54 return -EBUSY; in meson_rng_wait_status() 59 static int meson_s4_rng_read(struct hwrng *rng, void *buf, size_t max, bool wait) in meson_s4_rng_read() argument 62 container_of(rng, struct meson_rng_data, rng); in meson_s4_rng_read() 64 void __iomem *cfg_addr = data->base + RNG_S4_CFG; in meson_s4_rng_read() [all …]
|
H A D | via-rng.c | 2 * RNG driver for VIA RNGs 8 * Hardware driver for the Intel/AMD/VIA Random Number Generators (RNG) 13 * Hardware driver for the AMD 768 Random Number Generator (RNG) 18 * Hardware driver for Intel i810 Random Number Generator (RNG) 71 * instead of the current u8-at-a-time. 87 static int via_rng_data_present(struct hwrng *rng, int wait) in via_rng_data_present() argument 89 char buf[16 + PADLOCK_ALIGNMENT - STACK_ALIGN] __attribute__ in via_rng_data_present() 95 /* We choose the recommended 1-byte-per-instruction RNG rate, in via_rng_data_present() 97 * values 2, 4, or 8 bytes-per-instruction yield greater in via_rng_data_present() 101 * change the ->n_bytes values in rng_vendor_ops[] tables. in via_rng_data_present() [all …]
|
H A D | amd-rng.c | 2 * RNG driver for AMD RNGs 8 * Hardware driver for the Intel/AMD/VIA Random Number Generators (RNG) 13 * Hardware driver for the AMD 768 Random Number Generator (RNG) 18 * Hardware driver for Intel i810 Random Number Generator (RNG) 34 #define DRV_NAME "AMD768-HWRNG" 62 static int amd_rng_read(struct hwrng *rng, void *buf, size_t max, bool wait) in amd_rng_read() argument 65 struct amd768_priv *priv = (struct amd768_priv *)rng->priv; in amd_rng_read() 71 * RNG data is available when RNGDONE is set to 1 in amd_rng_read() 76 if (ioread32(priv->iobase + RNGDONE) == 0) { in amd_rng_read() 80 if (timeout-- == 0) in amd_rng_read() [all …]
|
/linux/drivers/crypto/ |
H A D | qcom-rng.c | 1 // SPDX-License-Identifier: GPL-2.0 2 // Copyright (c) 2017-18 Linaro Limited 4 // Based on msm-rng.c and downstream driver 6 #include <crypto/internal/rng.h> 43 struct qcom_rng *rng; member 53 static int qcom_rng_read(struct qcom_rng *rng, u8 *data, unsigned int max) in qcom_rng_read() argument 61 ret = readl_poll_timeout(rng->base + PRNG_STATUS, val, in qcom_rng_read() 67 val = readl_relaxed(rng->base + PRNG_DATA_OUT); in qcom_rng_read() 69 return -EINVAL; in qcom_rng_read() 71 if ((max - currsize) >= WORD_SZ) { in qcom_rng_read() [all …]
|
/linux/arch/powerpc/platforms/powernv/ |
H A D | rng.c | 1 // SPDX-License-Identifier: GPL-2.0-or-later 6 #define pr_fmt(fmt) "powernv-rng: " fmt 32 static unsigned long rng_whiten(struct pnv_rng *rng, unsigned long val) in rng_whiten() argument 44 val ^= rng->mask; in rng_whiten() 47 rng->mask = (rng->mask << 1) | (parity & 1); in rng_whiten() 56 /* Using DARN with L=1 - 64-bit conditioned random number */ in pnv_get_random_darn() 73 return -ENODEV; in initialise_darn() 81 return -EIO; in initialise_darn() 86 struct pnv_rng *rng; in pnv_get_random_long() local 89 rng = get_cpu_var(pnv_rng); in pnv_get_random_long() [all …]
|
/linux/drivers/crypto/caam/ |
H A D | caamrng.c | 1 // SPDX-License-Identifier: GPL-2.0+ 3 * caam - Freescale FSL CAAM support for hw_random 6 * Copyright 2018-2019, 2023 NXP 15 #include <linux/dma-mapping.h> 36 /* rng per-device context */ 38 struct hwrng rng; member 54 return (struct caam_rng_ctx *)r->priv; in to_caam_rng_ctx() 63 *jctx->err = caam_jr_strstatus(jrdev, err); in caam_rng_done() 65 complete(jctx->done); in caam_rng_done() 78 print_hex_dump_debug("rng job desc@: ", DUMP_PREFIX_ADDRESS, in caam_init_desc() [all …]
|
/linux/Documentation/devicetree/bindings/rng/ |
H A D | mtk-rng.yaml | 1 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 3 --- 4 $id: http://devicetree.org/schemas/rng/mtk-rng.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 10 - Sean Wang <sean.wang@mediatek.com> 14 pattern: "^rng@[0-9a-f]+$" 18 - enum: 19 - mediatek,mt7623-rng 20 - items: 21 - enum: [all …]
|
H A D | brcm,bcm2835.yaml | 1 # SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause) 3 --- 4 $id: http://devicetree.org/schemas/rng/brcm,bcm2835.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 10 - Stefan Wahren <stefan.wahren@i2se.com> 11 - Florian Fainelli <f.fainelli@gmail.com> 12 - Herbert Xu <herbert@gondor.apana.org.au> 17 - brcm,bcm2835-rng 18 - brcm,bcm-nsp-rng 19 - brcm,bcm5301x-rng [all …]
|
H A D | ingenic,rng.yaml | 1 # SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) 3 --- 4 $id: http://devicetree.org/schemas/rng/ingenic,rng.yaml# 5 $schema: http://devicetree.org/meta-schemas/core.yaml# 7 title: RNG in Ingenic SoCs 10 - 周琰杰 (Zhou Yanjie) <zhouyanjie@wanyeetech.com> 18 - ingenic,jz4780-rng 19 - ingenic,x1000-rng 25 - compatible 26 - reg [all …]
|
/linux/include/linux/ |
H A D | hw_random.h | 4 Please read Documentation/admin-guide/hw_random.rst for details on use. 6 ---------------------------------------------------------- 20 * struct hwrng - Hardware Random Number Generator driver 21 * @name: Unique RNG name. 25 * on the RNG. If NULL, it is assumed that 27 * @data_read: Read data from the RNG device. 33 * @priv: Private data, for use by the RNG driver. 34 * @quality: Estimation of true entropy in RNG's bitstream 40 int (*init)(struct hwrng *rng); 41 void (*cleanup)(struct hwrng *rng); [all …]
|
/linux/drivers/crypto/amcc/ |
H A D | crypto4xx_trng.c | 1 // SPDX-License-Identifier: GPL-2.0-only 3 * Generic PowerPC 44x RNG driver 28 static int ppc4xx_trng_data_present(struct hwrng *rng, int wait) in ppc4xx_trng_data_present() argument 30 struct crypto4xx_device *dev = (void *)rng->priv; in ppc4xx_trng_data_present() 34 busy = (in_le32(dev->trng_base + PPC4XX_TRNG_STAT) & in ppc4xx_trng_data_present() 45 static int ppc4xx_trng_data_read(struct hwrng *rng, u32 *data) in ppc4xx_trng_data_read() argument 47 struct crypto4xx_device *dev = (void *)rng->priv; in ppc4xx_trng_data_read() 48 *data = in_le32(dev->trng_base + PPC4XX_TRNG_DATA); in ppc4xx_trng_data_read() 56 device_ctrl = readl(dev->ce_base + CRYPTO4XX_DEVICE_CTRL); in ppc4xx_trng_enable() 61 writel(device_ctrl, dev->ce_base + CRYPTO4XX_DEVICE_CTRL); in ppc4xx_trng_enable() [all …]
|
/linux/Documentation/admin-guide/ |
H A D | hw_random.rst | 10 a Random Number Generator (RNG). The software has two parts: 12 sysfs support, plus a hardware-specific driver that plugs 17 latest version of the "rng-tools" package from: 19 https://github.com/nhorman/rng-tools 30 the hardware RNG device. This data is NOT CHECKED by any 33 output if the hardware "has-data" flag is set, but nevertheless 34 a security-conscious person would run fitness tests on the 37 The rng-tools package uses such tests in "rngd", and lets you 44 "rng_available" attribute lists the hardware-specific drivers 47 RNG available, you may change the one used by writing a name from [all …]
|