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);
424 struct hifmc_host *host;
427 host = devm_kzalloc(dev, sizeof(*host), GFP_KERNEL);
428 if (!host)
431 platform_set_drvdata(pdev, host);
432 host->dev = dev;
434 host->regbase = devm_platform_ioremap_resource_byname(pdev, "control");
435 if (IS_ERR(host->regbase))
436 return PTR_ERR(host->regbase);
438 host->iobase = devm_platform_ioremap_resource_byname(pdev, "memory");
439 if (IS_ERR(host->iobase))
440 return PTR_ERR(host->iobase);
442 host->clk = devm_clk_get(dev, NULL);
443 if (IS_ERR(host->clk))
444 return PTR_ERR(host->clk);
452 host->buffer = dmam_alloc_coherent(dev, HIFMC_DMA_MAX_LEN,
453 &host->dma_buffer, GFP_KERNEL);
454 if (!host->buffer)
457 ret = clk_prepare_enable(host->clk);
461 mutex_init(&host->lock);
462 hisi_spi_nor_init(host);
463 ret = hisi_spi_nor_register_all(host);
465 mutex_destroy(&host->lock);
467 clk_disable_unprepare(host->clk);
473 struct hifmc_host *host = platform_get_drvdata(pdev);
475 hisi_spi_nor_unregister_all(host);
476 mutex_destroy(&host->lock);