Lines Matching +full:iproc +full:- +full:rng200
14 * DESCRIPTION: The Broadcom iProc RNG200 Driver
110 status = ioread32(priv->base + RNG_INT_STATUS_OFFSET); in iproc_rng200_read()
115 return max - num_remaining; in iproc_rng200_read()
117 iproc_rng200_restart(priv->base); in iproc_rng200_read()
122 if ((ioread32(priv->base + RNG_FIFO_COUNT_OFFSET) & in iproc_rng200_read()
127 *(uint32_t *)buf = ioread32(priv->base + in iproc_rng200_read()
130 num_remaining -= sizeof(uint32_t); in iproc_rng200_read()
133 uint32_t rnd_number = ioread32(priv->base + in iproc_rng200_read()
145 return max - num_remaining; in iproc_rng200_read()
152 return max - num_remaining; in iproc_rng200_read()
161 val = ioread32(priv->base + RNG_CTRL_OFFSET); in iproc_rng200_init()
164 iowrite32(val, priv->base + RNG_CTRL_OFFSET); in iproc_rng200_init()
175 val = ioread32(priv->base + RNG_CTRL_OFFSET); in iproc_rng200_cleanup()
178 iowrite32(val, priv->base + RNG_CTRL_OFFSET); in iproc_rng200_cleanup()
184 struct device *dev = &pdev->dev; in iproc_rng200_probe()
189 return -ENOMEM; in iproc_rng200_probe()
192 priv->base = devm_platform_ioremap_resource(pdev, 0); in iproc_rng200_probe()
193 if (IS_ERR(priv->base)) { in iproc_rng200_probe()
195 return PTR_ERR(priv->base); in iproc_rng200_probe()
200 priv->rng.name = "iproc-rng200"; in iproc_rng200_probe()
201 priv->rng.read = iproc_rng200_read; in iproc_rng200_probe()
202 priv->rng.init = iproc_rng200_init; in iproc_rng200_probe()
203 priv->rng.cleanup = iproc_rng200_cleanup; in iproc_rng200_probe()
206 ret = devm_hwrng_register(dev, &priv->rng); in iproc_rng200_probe()
221 iproc_rng200_cleanup(&priv->rng); in iproc_rng200_suspend()
230 iproc_rng200_init(&priv->rng); in iproc_rng200_resume()
240 { .compatible = "brcm,bcm2711-rng200", },
241 { .compatible = "brcm,bcm7211-rng200", },
242 { .compatible = "brcm,bcm7278-rng200", },
243 { .compatible = "brcm,iproc-rng200", },
250 .name = "iproc-rng200",
259 MODULE_DESCRIPTION("iProc RNG200 Random Number Generator driver");