Lines Matching defs:host
85 struct hifmc_host *host;
103 static inline int hisi_spi_nor_wait_op_finish(struct hifmc_host *host)
107 return readl_poll_timeout(host->regbase + FMC_INT, reg,
137 static void hisi_spi_nor_init(struct hifmc_host *host)
144 writel(reg, host->regbase + FMC_SPI_TIMING_CFG);
150 struct hifmc_host *host = priv->host;
153 mutex_lock(&host->lock);
155 ret = clk_set_rate(host->clk, priv->clkrate);
159 ret = clk_prepare_enable(host->clk);
166 mutex_unlock(&host->lock);
173 struct hifmc_host *host = priv->host;
175 clk_disable_unprepare(host->clk);
176 mutex_unlock(&host->lock);
183 struct hifmc_host *host = priv->host;
187 writel(reg, host->regbase + FMC_CMD);
190 writel(reg, host->regbase + FMC_DATA_NUM);
193 writel(reg, host->regbase + FMC_OP_CFG);
195 writel(0xff, host->regbase + FMC_INT_CLR);
197 writel(reg, host->regbase + FMC_OP);
199 return hisi_spi_nor_wait_op_finish(host);
206 struct hifmc_host *host = priv->host;
213 memcpy_fromio(buf, host->iobase, len);
221 struct hifmc_host *host = priv->host;
224 memcpy_toio(host->iobase, buf, len);
233 struct hifmc_host *host = priv->host;
237 reg = readl(host->regbase + FMC_CFG);
242 writel(reg, host->regbase + FMC_CFG);
244 writel(start_off, host->regbase + FMC_ADDRL);
245 writel(dma_buf, host->regbase + FMC_DMA_SADDR_D0);
246 writel(FMC_DMA_LEN_SET(len), host->regbase + FMC_DMA_LEN);
256 writel(reg, host->regbase + FMC_OP_CFG);
258 writel(0xff, host->regbase + FMC_INT_CLR);
263 writel(reg, host->regbase + FMC_OP_DMA);
265 return hisi_spi_nor_wait_op_finish(host);
272 struct hifmc_host *host = priv->host;
280 from + offset, host->dma_buffer, trans, FMC_OP_READ);
285 memcpy(read_buf + offset, host->buffer, trans);
295 struct hifmc_host *host = priv->host;
302 memcpy(host->buffer, write_buf + offset, trans);
304 to + offset, host->dma_buffer, trans, FMC_OP_WRITE);
327 struct hifmc_host *host)
336 struct device *dev = host->dev;
367 priv->host = host;
381 host->nor[host->num_chip] = nor;
382 host->num_chip++;
386 static void hisi_spi_nor_unregister_all(struct hifmc_host *host)
390 for (i = 0; i < host->num_chip; i++)
391 mtd_device_unregister(&host->nor[i]->mtd);
394 static int hisi_spi_nor_register_all(struct hifmc_host *host)
396 struct device *dev = host->dev;
401 ret = hisi_spi_nor_register(np, host);
407 if (host->num_chip == HIFMC_MAX_CHIP_NUM) {
417 hisi_spi_nor_unregister_all(host);
425 struct hifmc_host *host;
428 host = devm_kzalloc(dev, sizeof(*host), GFP_KERNEL);
429 if (!host)
432 platform_set_drvdata(pdev, host);
433 host->dev = dev;
436 host->regbase = devm_ioremap_resource(dev, res);
437 if (IS_ERR(host->regbase))
438 return PTR_ERR(host->regbase);
441 host->iobase = devm_ioremap_resource(dev, res);
442 if (IS_ERR(host->iobase))
443 return PTR_ERR(host->iobase);
445 host->clk = devm_clk_get(dev, NULL);
446 if (IS_ERR(host->clk))
447 return PTR_ERR(host->clk);
455 host->buffer = dmam_alloc_coherent(dev, HIFMC_DMA_MAX_LEN,
456 &host->dma_buffer, GFP_KERNEL);
457 if (!host->buffer)
460 ret = clk_prepare_enable(host->clk);
464 mutex_init(&host->lock);
465 hisi_spi_nor_init(host);
466 ret = hisi_spi_nor_register_all(host);
468 mutex_destroy(&host->lock);
470 clk_disable_unprepare(host->clk);
476 struct hifmc_host *host = platform_get_drvdata(pdev);
478 hisi_spi_nor_unregister_all(host);
479 mutex_destroy(&host->lock);