Lines Matching refs:otpc

28 #define MCHP_OTPC_NAME			"mchp-otpc"
57 static struct mchp_otpc_packet *mchp_otpc_id_to_packet(struct mchp_otpc *otpc,
62 if (id >= otpc->npackets)
65 list_for_each_entry(packet, &otpc->packets, list) {
73 static int mchp_otpc_prepare_read(struct mchp_otpc *otpc,
79 tmp = readl_relaxed(otpc->base + MCHP_OTPC_MR);
82 writel_relaxed(tmp, otpc->base + MCHP_OTPC_MR);
85 tmp = readl_relaxed(otpc->base + MCHP_OTPC_CR);
87 writel_relaxed(tmp, otpc->base + MCHP_OTPC_CR);
91 10000, 2000, false, otpc->base + MCHP_OTPC_SR);
149 struct mchp_otpc *otpc = priv;
162 packet = mchp_otpc_id_to_packet(otpc, off / 4);
168 ret = mchp_otpc_prepare_read(otpc, offset);
173 *buf++ = readl_relaxed(otpc->base + MCHP_OTPC_HR);
181 writel_relaxed(0UL, otpc->base + MCHP_OTPC_AR);
183 *buf++ = readl_relaxed(otpc->base + MCHP_OTPC_DR);
193 static int mchp_otpc_init_packets_list(struct mchp_otpc *otpc, u32 *size)
199 INIT_LIST_HEAD(&otpc->packets);
203 ret = mchp_otpc_prepare_read(otpc, word_pos);
207 word = readl_relaxed(otpc->base + MCHP_OTPC_HR);
212 packet = devm_kzalloc(otpc->dev, sizeof(*packet), GFP_KERNEL);
219 list_add_tail(&packet->list, &otpc->packets);
229 otpc->npackets = npackets;
246 struct mchp_otpc *otpc;
250 otpc = devm_kzalloc(&pdev->dev, sizeof(*otpc), GFP_KERNEL);
251 if (!otpc)
254 otpc->base = devm_platform_ioremap_resource(pdev, 0);
255 if (IS_ERR(otpc->base))
256 return PTR_ERR(otpc->base);
258 otpc->dev = &pdev->dev;
259 ret = mchp_otpc_init_packets_list(otpc, &size);
263 mchp_nvmem_config.dev = otpc->dev;
265 mchp_nvmem_config.priv = otpc;
272 { .compatible = "microchip,sama7g5-otpc", },