Lines Matching refs:mxc_rng

54 struct mxc_rng {  struct
64 struct mxc_rng *mxc_rng = container_of(rng, struct mxc_rng, rng); in mxc_rnga_data_present() argument
68 int level = (__raw_readl(mxc_rng->mem + RNGA_STATUS) & in mxc_rnga_data_present()
81 struct mxc_rng *mxc_rng = container_of(rng, struct mxc_rng, rng); in mxc_rnga_data_read() local
84 *data = __raw_readl(mxc_rng->mem + RNGA_OUTPUT_FIFO); in mxc_rnga_data_read()
87 err = __raw_readl(mxc_rng->mem + RNGA_STATUS) & RNGA_STATUS_ERROR_INT; in mxc_rnga_data_read()
91 dev_dbg(mxc_rng->dev, "Error while reading random number!\n"); in mxc_rnga_data_read()
92 ctrl = __raw_readl(mxc_rng->mem + RNGA_CONTROL); in mxc_rnga_data_read()
94 mxc_rng->mem + RNGA_CONTROL); in mxc_rnga_data_read()
103 struct mxc_rng *mxc_rng = container_of(rng, struct mxc_rng, rng); in mxc_rnga_init() local
106 ctrl = __raw_readl(mxc_rng->mem + RNGA_CONTROL); in mxc_rnga_init()
107 __raw_writel(ctrl & ~RNGA_CONTROL_SLEEP, mxc_rng->mem + RNGA_CONTROL); in mxc_rnga_init()
110 osc = __raw_readl(mxc_rng->mem + RNGA_STATUS); in mxc_rnga_init()
112 dev_err(mxc_rng->dev, "RNGA Oscillator is dead!\n"); in mxc_rnga_init()
117 ctrl = __raw_readl(mxc_rng->mem + RNGA_CONTROL); in mxc_rnga_init()
118 __raw_writel(ctrl | RNGA_CONTROL_GO, mxc_rng->mem + RNGA_CONTROL); in mxc_rnga_init()
126 struct mxc_rng *mxc_rng = container_of(rng, struct mxc_rng, rng); in mxc_rnga_cleanup() local
128 ctrl = __raw_readl(mxc_rng->mem + RNGA_CONTROL); in mxc_rnga_cleanup()
131 __raw_writel(ctrl & ~RNGA_CONTROL_GO, mxc_rng->mem + RNGA_CONTROL); in mxc_rnga_cleanup()
137 struct mxc_rng *mxc_rng; in mxc_rnga_probe() local
139 mxc_rng = devm_kzalloc(&pdev->dev, sizeof(*mxc_rng), GFP_KERNEL); in mxc_rnga_probe()
140 if (!mxc_rng) in mxc_rnga_probe()
143 mxc_rng->dev = &pdev->dev; in mxc_rnga_probe()
144 mxc_rng->rng.name = "mxc-rnga"; in mxc_rnga_probe()
145 mxc_rng->rng.init = mxc_rnga_init; in mxc_rnga_probe()
146 mxc_rng->rng.cleanup = mxc_rnga_cleanup; in mxc_rnga_probe()
147 mxc_rng->rng.data_present = mxc_rnga_data_present; in mxc_rnga_probe()
148 mxc_rng->rng.data_read = mxc_rnga_data_read; in mxc_rnga_probe()
150 mxc_rng->clk = devm_clk_get(&pdev->dev, NULL); in mxc_rnga_probe()
151 if (IS_ERR(mxc_rng->clk)) { in mxc_rnga_probe()
153 return PTR_ERR(mxc_rng->clk); in mxc_rnga_probe()
156 err = clk_prepare_enable(mxc_rng->clk); in mxc_rnga_probe()
160 mxc_rng->mem = devm_platform_ioremap_resource(pdev, 0); in mxc_rnga_probe()
161 if (IS_ERR(mxc_rng->mem)) { in mxc_rnga_probe()
162 err = PTR_ERR(mxc_rng->mem); in mxc_rnga_probe()
166 err = hwrng_register(&mxc_rng->rng); in mxc_rnga_probe()
175 clk_disable_unprepare(mxc_rng->clk); in mxc_rnga_probe()
181 struct mxc_rng *mxc_rng = platform_get_drvdata(pdev); in mxc_rnga_remove() local
183 hwrng_unregister(&mxc_rng->rng); in mxc_rnga_remove()
185 clk_disable_unprepare(mxc_rng->clk); in mxc_rnga_remove()