Lines Matching refs:mdata

98 static void mtk_spi_slave_disable_dma(struct mtk_spi_slave *mdata)
102 reg_val = readl(mdata->base + SPIS_DMA_CFG_REG);
105 writel(reg_val, mdata->base + SPIS_DMA_CFG_REG);
108 static void mtk_spi_slave_disable_xfer(struct mtk_spi_slave *mdata)
112 reg_val = readl(mdata->base + SPIS_CFG_REG);
115 writel(reg_val, mdata->base + SPIS_CFG_REG);
118 static int mtk_spi_slave_wait_for_completion(struct mtk_spi_slave *mdata)
120 if (wait_for_completion_interruptible(&mdata->xfer_done) ||
121 mdata->slave_aborted) {
122 dev_err(mdata->dev, "interrupted\n");
132 struct mtk_spi_slave *mdata = spi_controller_get_devdata(ctlr);
140 reg_val = readl(mdata->base + SPIS_CFG_REG);
157 writel(reg_val, mdata->base + SPIS_CFG_REG);
166 struct mtk_spi_slave *mdata = spi_controller_get_devdata(ctlr);
169 writel(SPIS_SOFT_RST, mdata->base + SPIS_SOFT_RST_REG);
171 reg_val = readl(mdata->base + SPIS_CFG_REG);
176 writel(reg_val, mdata->base + SPIS_CFG_REG);
180 iowrite32_rep(mdata->base + SPIS_TX_DATA_REG,
187 writel(reg_val, mdata->base + SPIS_TX_DATA_REG);
190 ret = mtk_spi_slave_wait_for_completion(mdata);
192 mtk_spi_slave_disable_xfer(mdata);
193 writel(SPIS_SOFT_RST, mdata->base + SPIS_SOFT_RST_REG);
203 struct mtk_spi_slave *mdata = spi_controller_get_devdata(ctlr);
204 struct device *dev = mdata->dev;
207 writel(SPIS_SOFT_RST, mdata->base + SPIS_SOFT_RST_REG);
232 writel(xfer->tx_dma, mdata->base + SPIS_TX_SRC_REG);
233 writel(xfer->rx_dma, mdata->base + SPIS_RX_DST_REG);
235 writel(SPIS_DMA_ADDR_EN, mdata->base + SPIS_SOFT_RST_REG);
238 reg_val = readl(mdata->base + SPIS_CFG_REG);
243 writel(reg_val, mdata->base + SPIS_CFG_REG);
248 writel(reg_val, mdata->base + SPIS_DMA_CFG_REG);
250 reg_val = readl(mdata->base + SPIS_DMA_CFG_REG);
256 writel(reg_val, mdata->base + SPIS_DMA_CFG_REG);
258 ret = mtk_spi_slave_wait_for_completion(mdata);
275 mtk_spi_slave_disable_dma(mdata);
276 mtk_spi_slave_disable_xfer(mdata);
277 writel(SPIS_SOFT_RST, mdata->base + SPIS_SOFT_RST_REG);
286 struct mtk_spi_slave *mdata = spi_controller_get_devdata(ctlr);
288 reinit_completion(&mdata->xfer_done);
289 mdata->slave_aborted = false;
290 mdata->cur_transfer = xfer;
292 if (xfer->len > mdata->dev_comp->max_fifo_size)
300 struct mtk_spi_slave *mdata = spi_controller_get_devdata(spi->controller);
305 writel(reg_val, mdata->base + SPIS_IRQ_EN_REG);
309 writel(reg_val, mdata->base + SPIS_IRQ_MASK_REG);
311 mtk_spi_slave_disable_dma(mdata);
312 mtk_spi_slave_disable_xfer(mdata);
319 struct mtk_spi_slave *mdata = spi_controller_get_devdata(ctlr);
321 mdata->slave_aborted = true;
322 complete(&mdata->xfer_done);
330 struct mtk_spi_slave *mdata = spi_controller_get_devdata(ctlr);
331 struct spi_transfer *trans = mdata->cur_transfer;
334 int_status = readl(mdata->base + SPIS_IRQ_ST_REG);
335 writel(int_status, mdata->base + SPIS_IRQ_CLR_REG);
343 writel(SPIS_SOFT_RST, mdata->base + SPIS_SOFT_RST_REG);
346 dma_unmap_single(mdata->dev, trans->tx_dma,
349 dma_unmap_single(mdata->dev, trans->rx_dma,
352 mtk_spi_slave_disable_dma(mdata);
353 mtk_spi_slave_disable_xfer(mdata);
361 ioread32_rep(mdata->base + SPIS_RX_DATA_REG,
365 reg_val = readl(mdata->base + SPIS_RX_DATA_REG);
370 mtk_spi_slave_disable_xfer(mdata);
378 mdata->cur_transfer = NULL;
379 complete(&mdata->xfer_done);
387 struct mtk_spi_slave *mdata;
391 ctlr = spi_alloc_slave(&pdev->dev, sizeof(*mdata));
413 mdata = spi_controller_get_devdata(ctlr);
414 mdata->dev_comp = of_id->data;
416 if (mdata->dev_comp->must_rx)
421 init_completion(&mdata->xfer_done);
422 mdata->dev = &pdev->dev;
423 mdata->base = devm_platform_ioremap_resource(pdev, 0);
424 if (IS_ERR(mdata->base)) {
425 ret = PTR_ERR(mdata->base);
442 mdata->spi_clk = devm_clk_get(&pdev->dev, "spi");
443 if (IS_ERR(mdata->spi_clk)) {
444 ret = PTR_ERR(mdata->spi_clk);
449 ret = clk_prepare_enable(mdata->spi_clk);
461 clk_disable_unprepare(mdata->spi_clk);
465 clk_disable_unprepare(mdata->spi_clk);
486 struct mtk_spi_slave *mdata = spi_controller_get_devdata(ctlr);
494 clk_disable_unprepare(mdata->spi_clk);
502 struct mtk_spi_slave *mdata = spi_controller_get_devdata(ctlr);
506 ret = clk_prepare_enable(mdata->spi_clk);
515 clk_disable_unprepare(mdata->spi_clk);
525 struct mtk_spi_slave *mdata = spi_controller_get_devdata(ctlr);
527 clk_disable_unprepare(mdata->spi_clk);
535 struct mtk_spi_slave *mdata = spi_controller_get_devdata(ctlr);
538 ret = clk_prepare_enable(mdata->spi_clk);