Lines Matching refs:mdata
81 static void mtk_spi_slave_disable_dma(struct mtk_spi_slave *mdata) in mtk_spi_slave_disable_dma() argument
85 reg_val = readl(mdata->base + SPIS_DMA_CFG_REG); in mtk_spi_slave_disable_dma()
88 writel(reg_val, mdata->base + SPIS_DMA_CFG_REG); in mtk_spi_slave_disable_dma()
91 static void mtk_spi_slave_disable_xfer(struct mtk_spi_slave *mdata) in mtk_spi_slave_disable_xfer() argument
95 reg_val = readl(mdata->base + SPIS_CFG_REG); in mtk_spi_slave_disable_xfer()
98 writel(reg_val, mdata->base + SPIS_CFG_REG); in mtk_spi_slave_disable_xfer()
101 static int mtk_spi_slave_wait_for_completion(struct mtk_spi_slave *mdata) in mtk_spi_slave_wait_for_completion() argument
103 if (wait_for_completion_interruptible(&mdata->xfer_done) || in mtk_spi_slave_wait_for_completion()
104 mdata->slave_aborted) { in mtk_spi_slave_wait_for_completion()
105 dev_err(mdata->dev, "interrupted\n"); in mtk_spi_slave_wait_for_completion()
115 struct mtk_spi_slave *mdata = spi_controller_get_devdata(ctlr); in mtk_spi_slave_prepare_message() local
123 reg_val = readl(mdata->base + SPIS_CFG_REG); in mtk_spi_slave_prepare_message()
140 writel(reg_val, mdata->base + SPIS_CFG_REG); in mtk_spi_slave_prepare_message()
149 struct mtk_spi_slave *mdata = spi_controller_get_devdata(ctlr); in mtk_spi_slave_fifo_transfer() local
152 writel(SPIS_SOFT_RST, mdata->base + SPIS_SOFT_RST_REG); in mtk_spi_slave_fifo_transfer()
154 reg_val = readl(mdata->base + SPIS_CFG_REG); in mtk_spi_slave_fifo_transfer()
159 writel(reg_val, mdata->base + SPIS_CFG_REG); in mtk_spi_slave_fifo_transfer()
163 iowrite32_rep(mdata->base + SPIS_TX_DATA_REG, in mtk_spi_slave_fifo_transfer()
170 writel(reg_val, mdata->base + SPIS_TX_DATA_REG); in mtk_spi_slave_fifo_transfer()
173 ret = mtk_spi_slave_wait_for_completion(mdata); in mtk_spi_slave_fifo_transfer()
175 mtk_spi_slave_disable_xfer(mdata); in mtk_spi_slave_fifo_transfer()
176 writel(SPIS_SOFT_RST, mdata->base + SPIS_SOFT_RST_REG); in mtk_spi_slave_fifo_transfer()
186 struct mtk_spi_slave *mdata = spi_controller_get_devdata(ctlr); in mtk_spi_slave_dma_transfer() local
187 struct device *dev = mdata->dev; in mtk_spi_slave_dma_transfer()
190 writel(SPIS_SOFT_RST, mdata->base + SPIS_SOFT_RST_REG); in mtk_spi_slave_dma_transfer()
215 writel(xfer->tx_dma, mdata->base + SPIS_TX_SRC_REG); in mtk_spi_slave_dma_transfer()
216 writel(xfer->rx_dma, mdata->base + SPIS_RX_DST_REG); in mtk_spi_slave_dma_transfer()
218 writel(SPIS_DMA_ADDR_EN, mdata->base + SPIS_SOFT_RST_REG); in mtk_spi_slave_dma_transfer()
221 reg_val = readl(mdata->base + SPIS_CFG_REG); in mtk_spi_slave_dma_transfer()
226 writel(reg_val, mdata->base + SPIS_CFG_REG); in mtk_spi_slave_dma_transfer()
231 writel(reg_val, mdata->base + SPIS_DMA_CFG_REG); in mtk_spi_slave_dma_transfer()
233 reg_val = readl(mdata->base + SPIS_DMA_CFG_REG); in mtk_spi_slave_dma_transfer()
239 writel(reg_val, mdata->base + SPIS_DMA_CFG_REG); in mtk_spi_slave_dma_transfer()
241 ret = mtk_spi_slave_wait_for_completion(mdata); in mtk_spi_slave_dma_transfer()
258 mtk_spi_slave_disable_dma(mdata); in mtk_spi_slave_dma_transfer()
259 mtk_spi_slave_disable_xfer(mdata); in mtk_spi_slave_dma_transfer()
260 writel(SPIS_SOFT_RST, mdata->base + SPIS_SOFT_RST_REG); in mtk_spi_slave_dma_transfer()
269 struct mtk_spi_slave *mdata = spi_controller_get_devdata(ctlr); in mtk_spi_slave_transfer_one() local
271 reinit_completion(&mdata->xfer_done); in mtk_spi_slave_transfer_one()
272 mdata->slave_aborted = false; in mtk_spi_slave_transfer_one()
273 mdata->cur_transfer = xfer; in mtk_spi_slave_transfer_one()
283 struct mtk_spi_slave *mdata = spi_controller_get_devdata(spi->master); in mtk_spi_slave_setup() local
288 writel(reg_val, mdata->base + SPIS_IRQ_EN_REG); in mtk_spi_slave_setup()
292 writel(reg_val, mdata->base + SPIS_IRQ_MASK_REG); in mtk_spi_slave_setup()
294 mtk_spi_slave_disable_dma(mdata); in mtk_spi_slave_setup()
295 mtk_spi_slave_disable_xfer(mdata); in mtk_spi_slave_setup()
302 struct mtk_spi_slave *mdata = spi_controller_get_devdata(ctlr); in mtk_slave_abort() local
304 mdata->slave_aborted = true; in mtk_slave_abort()
305 complete(&mdata->xfer_done); in mtk_slave_abort()
313 struct mtk_spi_slave *mdata = spi_controller_get_devdata(ctlr); in mtk_spi_slave_interrupt() local
314 struct spi_transfer *trans = mdata->cur_transfer; in mtk_spi_slave_interrupt()
317 int_status = readl(mdata->base + SPIS_IRQ_ST_REG); in mtk_spi_slave_interrupt()
318 writel(int_status, mdata->base + SPIS_IRQ_CLR_REG); in mtk_spi_slave_interrupt()
326 writel(SPIS_SOFT_RST, mdata->base + SPIS_SOFT_RST_REG); in mtk_spi_slave_interrupt()
329 dma_unmap_single(mdata->dev, trans->tx_dma, in mtk_spi_slave_interrupt()
332 dma_unmap_single(mdata->dev, trans->rx_dma, in mtk_spi_slave_interrupt()
335 mtk_spi_slave_disable_dma(mdata); in mtk_spi_slave_interrupt()
336 mtk_spi_slave_disable_xfer(mdata); in mtk_spi_slave_interrupt()
344 ioread32_rep(mdata->base + SPIS_RX_DATA_REG, in mtk_spi_slave_interrupt()
348 reg_val = readl(mdata->base + SPIS_RX_DATA_REG); in mtk_spi_slave_interrupt()
353 mtk_spi_slave_disable_xfer(mdata); in mtk_spi_slave_interrupt()
361 mdata->cur_transfer = NULL; in mtk_spi_slave_interrupt()
362 complete(&mdata->xfer_done); in mtk_spi_slave_interrupt()
370 struct mtk_spi_slave *mdata; in mtk_spi_slave_probe() local
374 ctlr = spi_alloc_slave(&pdev->dev, sizeof(*mdata)); in mtk_spi_slave_probe()
390 mdata = spi_controller_get_devdata(ctlr); in mtk_spi_slave_probe()
394 init_completion(&mdata->xfer_done); in mtk_spi_slave_probe()
403 mdata->dev = &pdev->dev; in mtk_spi_slave_probe()
405 mdata->base = devm_ioremap_resource(&pdev->dev, res); in mtk_spi_slave_probe()
406 if (IS_ERR(mdata->base)) { in mtk_spi_slave_probe()
407 ret = PTR_ERR(mdata->base); in mtk_spi_slave_probe()
424 mdata->spi_clk = devm_clk_get(&pdev->dev, "spi"); in mtk_spi_slave_probe()
425 if (IS_ERR(mdata->spi_clk)) { in mtk_spi_slave_probe()
426 ret = PTR_ERR(mdata->spi_clk); in mtk_spi_slave_probe()
431 ret = clk_prepare_enable(mdata->spi_clk); in mtk_spi_slave_probe()
443 clk_disable_unprepare(mdata->spi_clk); in mtk_spi_slave_probe()
447 clk_disable_unprepare(mdata->spi_clk); in mtk_spi_slave_probe()
470 struct mtk_spi_slave *mdata = spi_controller_get_devdata(ctlr); in mtk_spi_slave_suspend() local
478 clk_disable_unprepare(mdata->spi_clk); in mtk_spi_slave_suspend()
486 struct mtk_spi_slave *mdata = spi_controller_get_devdata(ctlr); in mtk_spi_slave_resume() local
490 ret = clk_prepare_enable(mdata->spi_clk); in mtk_spi_slave_resume()
499 clk_disable_unprepare(mdata->spi_clk); in mtk_spi_slave_resume()
509 struct mtk_spi_slave *mdata = spi_controller_get_devdata(ctlr); in mtk_spi_slave_runtime_suspend() local
511 clk_disable_unprepare(mdata->spi_clk); in mtk_spi_slave_runtime_suspend()
519 struct mtk_spi_slave *mdata = spi_controller_get_devdata(ctlr); in mtk_spi_slave_runtime_resume() local
522 ret = clk_prepare_enable(mdata->spi_clk); in mtk_spi_slave_runtime_resume()