Lines Matching refs:otp
36 static int mxs_ocotp_wait(struct mxs_ocotp *otp)
42 status = readl(otp->base);
61 struct mxs_ocotp *otp = context;
65 ret = clk_enable(otp->clk);
69 writel(BM_OCOTP_CTRL_ERROR, otp->base + STMP_OFFSET_REG_CLR);
71 ret = mxs_ocotp_wait(otp);
76 writel(BM_OCOTP_CTRL_RD_BANK_OPEN, otp->base + STMP_OFFSET_REG_SET);
81 ret = mxs_ocotp_wait(otp);
90 *buf++ = readl(otp->base + offset);
99 writel(BM_OCOTP_CTRL_RD_BANK_OPEN, otp->base + STMP_OFFSET_REG_CLR);
102 clk_disable(otp->clk);
142 struct mxs_ocotp *otp;
150 otp = devm_kzalloc(dev, sizeof(*otp), GFP_KERNEL);
151 if (!otp)
154 otp->base = devm_platform_ioremap_resource(pdev, 0);
155 if (IS_ERR(otp->base))
156 return PTR_ERR(otp->base);
158 otp->clk = devm_clk_get(&pdev->dev, NULL);
159 if (IS_ERR(otp->clk))
160 return PTR_ERR(otp->clk);
162 ret = clk_prepare(otp->clk);
168 ret = devm_add_action_or_reset(&pdev->dev, mxs_ocotp_action, otp->clk);
175 ocotp_config.priv = otp;
177 otp->nvmem = devm_nvmem_register(dev, &ocotp_config);
178 if (IS_ERR(otp->nvmem))
179 return PTR_ERR(otp->nvmem);
181 platform_set_drvdata(pdev, otp);