/* * The register is 32 bits and gives 16 random bits (low half). * A subsequent read will delay the core for 400ns, so we just read * once and accept the very unlikely very small delay, even if wait==0.
*/
*(u16 *)data = __raw_readl(base + 8) & 0xffff; return 2;
}
/* we have at most one RNG per machine, granted */ staticstruct hwrng nmk_rng = {
.name = "nomadik",
.read = nmk_rng_read,
};
rng_clk = devm_clk_get_enabled(&dev->dev, NULL); if (IS_ERR(rng_clk)) return dev_err_probe(&dev->dev, PTR_ERR(rng_clk), "could not get rng clock\n");
ret = amba_request_regions(dev, dev->dev.init_name); if (ret) return ret;
ret = -ENOMEM;
base = devm_ioremap(&dev->dev, dev->res.start,
resource_size(&dev->res)); if (!base) goto out_release;
nmk_rng.priv = (unsignedlong)base;
ret = devm_hwrng_register(&dev->dev, &nmk_rng); if (ret) goto out_release; return 0;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.