Lines Matching refs:otp

47 static int mxs_ocotp_wait(struct mxs_ocotp *otp)  in mxs_ocotp_wait()  argument
53 status = readl(otp->base); in mxs_ocotp_wait()
72 struct mxs_ocotp *otp = context; in mxs_ocotp_read() local
77 ret = clk_enable(otp->clk); in mxs_ocotp_read()
81 writel(BM_OCOTP_CTRL_ERROR, otp->base + STMP_OFFSET_REG_CLR); in mxs_ocotp_read()
83 ret = mxs_ocotp_wait(otp); in mxs_ocotp_read()
88 writel(BM_OCOTP_CTRL_RD_BANK_OPEN, otp->base + STMP_OFFSET_REG_SET); in mxs_ocotp_read()
93 ret = mxs_ocotp_wait(otp); in mxs_ocotp_read()
102 *buf = readl(otp->base + offset); in mxs_ocotp_read()
112 writel(BM_OCOTP_CTRL_RD_BANK_OPEN, otp->base + STMP_OFFSET_REG_CLR); in mxs_ocotp_read()
115 clk_disable(otp->clk); in mxs_ocotp_read()
178 struct mxs_ocotp *otp; in mxs_ocotp_probe() local
189 otp = devm_kzalloc(dev, sizeof(*otp), GFP_KERNEL); in mxs_ocotp_probe()
190 if (!otp) in mxs_ocotp_probe()
194 otp->base = devm_ioremap_resource(dev, res); in mxs_ocotp_probe()
195 if (IS_ERR(otp->base)) in mxs_ocotp_probe()
196 return PTR_ERR(otp->base); in mxs_ocotp_probe()
198 otp->clk = devm_clk_get(&pdev->dev, NULL); in mxs_ocotp_probe()
199 if (IS_ERR(otp->clk)) in mxs_ocotp_probe()
200 return PTR_ERR(otp->clk); in mxs_ocotp_probe()
202 ret = clk_prepare(otp->clk); in mxs_ocotp_probe()
212 regmap = devm_regmap_init(dev, &mxs_ocotp_bus, otp, &mxs_ocotp_config); in mxs_ocotp_probe()
220 otp->nvmem = nvmem_register(&ocotp_config); in mxs_ocotp_probe()
221 if (IS_ERR(otp->nvmem)) { in mxs_ocotp_probe()
222 ret = PTR_ERR(otp->nvmem); in mxs_ocotp_probe()
226 platform_set_drvdata(pdev, otp); in mxs_ocotp_probe()
231 clk_unprepare(otp->clk); in mxs_ocotp_probe()
238 struct mxs_ocotp *otp = platform_get_drvdata(pdev); in mxs_ocotp_remove() local
240 clk_unprepare(otp->clk); in mxs_ocotp_remove()
242 return nvmem_unregister(otp->nvmem); in mxs_ocotp_remove()