Lines Matching +full:rng +full:-

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()
86 *data = ioread32(priv->iobase + RNGDATA); in amd_rng_read()
95 static int amd_rng_init(struct hwrng *rng) in amd_rng_init() argument
97 struct amd768_priv *priv = (struct amd768_priv *)rng->priv; in amd_rng_init()
100 pci_read_config_byte(priv->pcidev, 0x40, &rnen); in amd_rng_init()
101 rnen |= BIT(7); /* RNG on */ in amd_rng_init()
102 pci_write_config_byte(priv->pcidev, 0x40, rnen); in amd_rng_init()
104 pci_read_config_byte(priv->pcidev, 0x41, &rnen); in amd_rng_init()
106 pci_write_config_byte(priv->pcidev, 0x41, rnen); in amd_rng_init()
111 static void amd_rng_cleanup(struct hwrng *rng) in amd_rng_cleanup() argument
113 struct amd768_priv *priv = (struct amd768_priv *)rng->priv; in amd_rng_cleanup()
116 pci_read_config_byte(priv->pcidev, 0x40, &rnen); in amd_rng_cleanup()
117 rnen &= ~BIT(7); /* RNG off */ in amd_rng_cleanup()
118 pci_write_config_byte(priv->pcidev, 0x40, rnen); in amd_rng_cleanup()
142 return -ENODEV; in amd_rng_mod_init()
153 err = -EIO; in amd_rng_mod_init()
159 err = -ENOMEM; in amd_rng_mod_init()
164 dev_err(&pdev->dev, DRV_NAME " region 0x%x already in use!\n", in amd_rng_mod_init()
166 err = -EBUSY; in amd_rng_mod_init()
170 priv->iobase = ioport_map(pmbase + PMBASE_OFFSET, PMBASE_SIZE); in amd_rng_mod_init()
171 if (!priv->iobase) { in amd_rng_mod_init()
173 err = -EINVAL; in amd_rng_mod_init()
178 priv->pmbase = pmbase; in amd_rng_mod_init()
179 priv->pcidev = pdev; in amd_rng_mod_init()
190 ioport_unmap(priv->iobase); in amd_rng_mod_init()
208 ioport_unmap(priv->iobase); in amd_rng_mod_exit()
210 release_region(priv->pmbase + PMBASE_OFFSET, PMBASE_SIZE); in amd_rng_mod_exit()
212 pci_dev_put(priv->pcidev); in amd_rng_mod_exit()
221 MODULE_DESCRIPTION("H/W RNG driver for AMD chipsets");