Lines Matching refs:pmci
133 static u32 pmci_get_write_space(struct m10bmc_pmci_device *pmci)
142 false, pmci->base + M10BMC_N6000_FLASH_CTRL);
151 struct m10bmc_pmci_device *pmci = container_of(m10bmc, struct m10bmc_pmci_device, m10bmc);
155 blk_size = min(pmci_get_write_space(pmci), size);
165 pmci_write_fifo(pmci->base + M10BMC_N6000_FLASH_FIFO,
177 pmci_write_fifo(pmci->base + M10BMC_N6000_FLASH_FIFO, &tmp, 1);
185 struct m10bmc_pmci_device *pmci = container_of(m10bmc, struct m10bmc_pmci_device, m10bmc);
197 writel(addr + offset, pmci->base + M10BMC_N6000_FLASH_ADDR);
200 pmci->base + M10BMC_N6000_FLASH_CTRL);
202 ret = readl_poll_timeout((pmci->base + M10BMC_N6000_FLASH_CTRL), val,
210 pmci_read_fifo(pmci->base + M10BMC_N6000_FLASH_FIFO,
219 writel(0, pmci->base + M10BMC_N6000_FLASH_CTRL);
226 pmci_read_fifo(pmci->base + M10BMC_N6000_FLASH_FIFO, &tmp, 1);
229 writel(0, pmci->base + M10BMC_N6000_FLASH_CTRL);
256 struct m10bmc_pmci_device *pmci = container_of(m10bmc, struct m10bmc_pmci_device, m10bmc);
259 mutex_lock(&pmci->flash_mutex);
260 if (pmci->flash_busy) {
275 mutex_unlock(&pmci->flash_mutex);
283 struct m10bmc_pmci_device *pmci = container_of(m10bmc, struct m10bmc_pmci_device, m10bmc);
286 mutex_lock(&pmci->flash_mutex);
287 WARN_ON_ONCE(!pmci->flash_busy);
290 mutex_unlock(&pmci->flash_mutex);
297 struct m10bmc_pmci_device *pmci = container_of(m10bmc, struct m10bmc_pmci_device, m10bmc);
300 mutex_lock(&pmci->flash_mutex);
301 if (pmci->flash_busy) {
306 pmci->flash_busy = true;
309 mutex_unlock(&pmci->flash_mutex);
315 struct m10bmc_pmci_device *pmci = container_of(m10bmc, struct m10bmc_pmci_device, m10bmc);
317 mutex_lock(&pmci->flash_mutex);
318 WARN_ON_ONCE(!pmci->flash_busy);
319 pmci->flash_busy = false;
320 mutex_unlock(&pmci->flash_mutex);
384 struct m10bmc_pmci_device *pmci;
388 pmci = devm_kzalloc(dev, sizeof(*pmci), GFP_KERNEL);
389 if (!pmci)
392 pmci->m10bmc.flash_bulk_ops = &m10bmc_pmci_flash_bulk_ops;
393 pmci->m10bmc.dev = dev;
395 pmci->base = devm_ioremap_resource(dev, &ddev->mmio_res);
396 if (IS_ERR(pmci->base))
397 return PTR_ERR(pmci->base);
403 mutex_init(&pmci->flash_mutex);
405 ctx->base = pmci->base + M10BMC_N6000_INDIRECT_BASE;
408 pmci->m10bmc.regmap = devm_regmap_init(dev, NULL, ctx, &m10bmc_pmci_regmap_config);
410 if (IS_ERR(pmci->m10bmc.regmap)) {
411 ret = PTR_ERR(pmci->m10bmc.regmap);
415 ret = m10bmc_dev_init(&pmci->m10bmc, &m10bmc_pmci_n6000);
421 mutex_destroy(&pmci->flash_mutex);
428 struct m10bmc_pmci_device *pmci = container_of(m10bmc, struct m10bmc_pmci_device, m10bmc);
430 mutex_destroy(&pmci->flash_mutex);