Lines Matching +full:pic32mzda +full:- +full:clk
1 // SPDX-License-Identifier: GPL-2.0-only
9 #include <linux/clk.h>
45 writel(TRNGEN | TRNGMOD, priv->base + RNGCON); in pic32_rng_init()
58 t = readl(priv->base + RNGRCNT) & RCNT_MASK; in pic32_rng_read()
61 *data = ((u64)readl(priv->base + RNGSEED2) << 32) + in pic32_rng_read()
62 readl(priv->base + RNGSEED1); in pic32_rng_read()
65 } while (wait && --timeout); in pic32_rng_read()
67 return -EIO; in pic32_rng_read()
74 writel(0, priv->base + RNGCON); in pic32_rng_cleanup()
80 struct clk *clk; in pic32_rng_probe() local
82 priv = devm_kzalloc(&pdev->dev, sizeof(*priv), GFP_KERNEL); in pic32_rng_probe()
84 return -ENOMEM; in pic32_rng_probe()
86 priv->base = devm_platform_ioremap_resource(pdev, 0); in pic32_rng_probe()
87 if (IS_ERR(priv->base)) in pic32_rng_probe()
88 return PTR_ERR(priv->base); in pic32_rng_probe()
90 clk = devm_clk_get_enabled(&pdev->dev, NULL); in pic32_rng_probe()
91 if (IS_ERR(clk)) in pic32_rng_probe()
92 return PTR_ERR(clk); in pic32_rng_probe()
94 priv->rng.name = pdev->name; in pic32_rng_probe()
95 priv->rng.init = pic32_rng_init; in pic32_rng_probe()
96 priv->rng.read = pic32_rng_read; in pic32_rng_probe()
97 priv->rng.cleanup = pic32_rng_cleanup; in pic32_rng_probe()
99 return devm_hwrng_register(&pdev->dev, &priv->rng); in pic32_rng_probe()
103 { .compatible = "microchip,pic32mzda-rng", },
111 .name = "pic32-rng",