Lines Matching +full:meson +full:- +full:rng
1 // SPDX-License-Identifier: GPL-2.0 OR BSD-3-Clause
22 struct hwrng rng; member
26 static int meson_rng_read(struct hwrng *rng, void *buf, size_t max, bool wait) in meson_rng_read() argument
29 container_of(rng, struct meson_rng_data, rng); in meson_rng_read()
31 *(u32 *)buf = readl_relaxed(data->base + RNG_DATA); in meson_rng_read()
43 struct device *dev = &pdev->dev; in meson_rng_probe()
49 return -ENOMEM; in meson_rng_probe()
51 data->pdev = pdev; in meson_rng_probe()
53 data->base = devm_platform_ioremap_resource(pdev, 0); in meson_rng_probe()
54 if (IS_ERR(data->base)) in meson_rng_probe()
55 return PTR_ERR(data->base); in meson_rng_probe()
57 data->core_clk = devm_clk_get(dev, "core"); in meson_rng_probe()
58 if (IS_ERR(data->core_clk)) in meson_rng_probe()
59 data->core_clk = NULL; in meson_rng_probe()
61 if (data->core_clk) { in meson_rng_probe()
62 ret = clk_prepare_enable(data->core_clk); in meson_rng_probe()
66 data->core_clk); in meson_rng_probe()
71 data->rng.name = pdev->name; in meson_rng_probe()
72 data->rng.read = meson_rng_read; in meson_rng_probe()
76 return devm_hwrng_register(dev, &data->rng); in meson_rng_probe()
80 { .compatible = "amlogic,meson-rng", },
88 .name = "meson-rng",
95 MODULE_DESCRIPTION("Meson H/W Random Number Generator driver");