Lines Matching refs:mcspi
157 struct omap2_mcspi *mcspi = spi_master_get_devdata(master); in mcspi_write_reg() local
159 writel_relaxed(val, mcspi->base + idx); in mcspi_write_reg()
164 struct omap2_mcspi *mcspi = spi_master_get_devdata(master); in mcspi_read_reg() local
166 return readl_relaxed(mcspi->base + idx); in mcspi_read_reg()
248 struct omap2_mcspi *mcspi = spi_master_get_devdata(spi->master); in omap2_mcspi_set_cs() local
259 int err = pm_runtime_get_sync(mcspi->dev); in omap2_mcspi_set_cs()
261 dev_err(mcspi->dev, "failed to get sync: %d\n", err); in omap2_mcspi_set_cs()
274 pm_runtime_mark_last_busy(mcspi->dev); in omap2_mcspi_set_cs()
275 pm_runtime_put_autosuspend(mcspi->dev); in omap2_mcspi_set_cs()
281 struct omap2_mcspi *mcspi = spi_master_get_devdata(master); in omap2_mcspi_set_master_mode() local
282 struct omap2_mcspi_regs *ctx = &mcspi->ctx; in omap2_mcspi_set_master_mode()
302 struct omap2_mcspi *mcspi; in omap2_mcspi_set_fifo() local
307 mcspi = spi_master_get_devdata(master); in omap2_mcspi_set_fifo()
340 mcspi->fifo_depth = fifo_depth; in omap2_mcspi_set_fifo()
353 mcspi->fifo_depth = 0; in omap2_mcspi_set_fifo()
356 static void omap2_mcspi_restore_ctx(struct omap2_mcspi *mcspi) in omap2_mcspi_restore_ctx() argument
358 struct spi_master *spi_cntrl = mcspi->master; in omap2_mcspi_restore_ctx()
359 struct omap2_mcspi_regs *ctx = &mcspi->ctx; in omap2_mcspi_restore_ctx()
390 struct omap2_mcspi *mcspi = spi_master_get_devdata(spi->master); in omap2_mcspi_rx_callback() local
391 struct omap2_mcspi_dma *mcspi_dma = &mcspi->dma_channels[spi->chip_select]; in omap2_mcspi_rx_callback()
402 struct omap2_mcspi *mcspi = spi_master_get_devdata(spi->master); in omap2_mcspi_tx_callback() local
403 struct omap2_mcspi_dma *mcspi_dma = &mcspi->dma_channels[spi->chip_select]; in omap2_mcspi_tx_callback()
415 struct omap2_mcspi *mcspi; in omap2_mcspi_tx_dma() local
419 mcspi = spi_master_get_devdata(spi->master); in omap2_mcspi_tx_dma()
420 mcspi_dma = &mcspi->dma_channels[spi->chip_select]; in omap2_mcspi_tx_dma()
453 struct omap2_mcspi *mcspi; in omap2_mcspi_rx_dma() local
460 mcspi = spi_master_get_devdata(spi->master); in omap2_mcspi_rx_dma()
461 mcspi_dma = &mcspi->dma_channels[spi->chip_select]; in omap2_mcspi_rx_dma()
465 if (mcspi->fifo_depth == 0) in omap2_mcspi_rx_dma()
484 if ((l & OMAP2_MCSPI_CHCONF_TURBO) && mcspi->fifo_depth == 0) in omap2_mcspi_rx_dma()
507 dma_unmap_single(mcspi->dev, xfer->rx_dma, count, in omap2_mcspi_rx_dma()
510 if (mcspi->fifo_depth > 0) in omap2_mcspi_rx_dma()
561 struct omap2_mcspi *mcspi; in omap2_mcspi_txrx_dma() local
576 mcspi = spi_master_get_devdata(spi->master); in omap2_mcspi_txrx_dma()
577 mcspi_dma = &mcspi->dma_channels[spi->chip_select]; in omap2_mcspi_txrx_dma()
595 if (mcspi->fifo_depth > 0) { in omap2_mcspi_txrx_dma()
596 if (count > mcspi->fifo_depth) in omap2_mcspi_txrx_dma()
597 burst = mcspi->fifo_depth / es; in omap2_mcspi_txrx_dma()
621 dma_unmap_single(mcspi->dev, xfer->tx_dma, xfer->len, in omap2_mcspi_txrx_dma()
624 if (mcspi->fifo_depth > 0) { in omap2_mcspi_txrx_dma()
625 irqstat_reg = mcspi->base + OMAP2_MCSPI_IRQSTATUS; in omap2_mcspi_txrx_dma()
631 mcspi_write_reg(mcspi->master, OMAP2_MCSPI_IRQSTATUS, in omap2_mcspi_txrx_dma()
638 if (mcspi->fifo_depth > 0) { in omap2_mcspi_txrx_dma()
661 struct omap2_mcspi *mcspi; in omap2_mcspi_txrx_pio() local
671 mcspi = spi_master_get_devdata(spi->master); in omap2_mcspi_txrx_pio()
867 struct omap2_mcspi *mcspi; in omap2_mcspi_setup_transfer() local
873 mcspi = spi_master_get_devdata(spi->master); in omap2_mcspi_setup_transfer()
874 spi_cntrl = mcspi->master; in omap2_mcspi_setup_transfer()
902 if (mcspi->pin_dir == MCSPI_PINDIR_D0_IN_D1_OUT) { in omap2_mcspi_setup_transfer()
964 struct omap2_mcspi *mcspi; in omap2_mcspi_request_dma() local
969 mcspi = spi_master_get_devdata(master); in omap2_mcspi_request_dma()
970 mcspi_dma = mcspi->dma_channels + spi->chip_select; in omap2_mcspi_request_dma()
1008 struct omap2_mcspi *mcspi = spi_master_get_devdata(spi->master); in omap2_mcspi_setup() local
1009 struct omap2_mcspi_regs *ctx = &mcspi->ctx; in omap2_mcspi_setup()
1013 mcspi_dma = &mcspi->dma_channels[spi->chip_select]; in omap2_mcspi_setup()
1019 cs->base = mcspi->base + spi->chip_select * 0x14; in omap2_mcspi_setup()
1020 cs->phys = mcspi->phys + spi->chip_select * 0x14; in omap2_mcspi_setup()
1045 ret = pm_runtime_get_sync(mcspi->dev); in omap2_mcspi_setup()
1050 pm_runtime_mark_last_busy(mcspi->dev); in omap2_mcspi_setup()
1051 pm_runtime_put_autosuspend(mcspi->dev); in omap2_mcspi_setup()
1058 struct omap2_mcspi *mcspi; in omap2_mcspi_cleanup() local
1062 mcspi = spi_master_get_devdata(spi->master); in omap2_mcspi_cleanup()
1073 mcspi_dma = &mcspi->dma_channels[spi->chip_select]; in omap2_mcspi_cleanup()
1089 static int omap2_mcspi_work_one(struct omap2_mcspi *mcspi, in omap2_mcspi_work_one() argument
1109 mcspi_dma = mcspi->dma_channels + spi->chip_select; in omap2_mcspi_work_one()
1140 chconf = mcspi->ctx.modulctrl; in omap2_mcspi_work_one()
1143 mcspi->ctx.modulctrl = in omap2_mcspi_work_one()
1192 if (mcspi->fifo_depth > 0) in omap2_mcspi_work_one()
1203 chconf = mcspi->ctx.modulctrl; in omap2_mcspi_work_one()
1206 mcspi->ctx.modulctrl = in omap2_mcspi_work_one()
1215 if (mcspi->fifo_depth > 0 && t) in omap2_mcspi_work_one()
1224 struct omap2_mcspi *mcspi = spi_master_get_devdata(master); in omap2_mcspi_prepare_message() local
1225 struct omap2_mcspi_regs *ctx = &mcspi->ctx; in omap2_mcspi_prepare_message()
1251 struct omap2_mcspi *mcspi; in omap2_mcspi_transfer_one() local
1257 mcspi = spi_master_get_devdata(master); in omap2_mcspi_transfer_one()
1258 mcspi_dma = mcspi->dma_channels + spi->chip_select; in omap2_mcspi_transfer_one()
1261 dev_dbg(mcspi->dev, "transfer: %d Hz, %d %s%s, %d bpw\n", in omap2_mcspi_transfer_one()
1274 t->tx_dma = dma_map_single(mcspi->dev, (void *) tx_buf, in omap2_mcspi_transfer_one()
1276 if (dma_mapping_error(mcspi->dev, t->tx_dma)) { in omap2_mcspi_transfer_one()
1277 dev_dbg(mcspi->dev, "dma %cX %d bytes error\n", in omap2_mcspi_transfer_one()
1283 t->rx_dma = dma_map_single(mcspi->dev, rx_buf, t->len, in omap2_mcspi_transfer_one()
1285 if (dma_mapping_error(mcspi->dev, t->rx_dma)) { in omap2_mcspi_transfer_one()
1286 dev_dbg(mcspi->dev, "dma %cX %d bytes error\n", in omap2_mcspi_transfer_one()
1289 dma_unmap_single(mcspi->dev, t->tx_dma, in omap2_mcspi_transfer_one()
1296 return omap2_mcspi_work_one(mcspi, spi, t); in omap2_mcspi_transfer_one()
1299 static int omap2_mcspi_master_setup(struct omap2_mcspi *mcspi) in omap2_mcspi_master_setup() argument
1301 struct spi_master *master = mcspi->master; in omap2_mcspi_master_setup()
1302 struct omap2_mcspi_regs *ctx = &mcspi->ctx; in omap2_mcspi_master_setup()
1305 ret = pm_runtime_get_sync(mcspi->dev); in omap2_mcspi_master_setup()
1314 pm_runtime_mark_last_busy(mcspi->dev); in omap2_mcspi_master_setup()
1315 pm_runtime_put_autosuspend(mcspi->dev); in omap2_mcspi_master_setup()
1321 struct omap2_mcspi *mcspi; in omap_mcspi_runtime_resume() local
1325 mcspi = spi_master_get_devdata(master); in omap_mcspi_runtime_resume()
1326 omap2_mcspi_restore_ctx(mcspi); in omap_mcspi_runtime_resume()
1356 struct omap2_mcspi *mcspi; in omap2_mcspi_probe() local
1364 master = spi_alloc_master(&pdev->dev, sizeof *mcspi); in omap2_mcspi_probe()
1385 mcspi = spi_master_get_devdata(master); in omap2_mcspi_probe()
1386 mcspi->master = master; in omap2_mcspi_probe()
1397 mcspi->pin_dir = MCSPI_PINDIR_D0_OUT_D1_IN; in omap2_mcspi_probe()
1403 mcspi->pin_dir = pdata->pin_dir; in omap2_mcspi_probe()
1415 mcspi->phys = r->start; in omap2_mcspi_probe()
1417 mcspi->base = devm_ioremap_resource(&pdev->dev, r); in omap2_mcspi_probe()
1418 if (IS_ERR(mcspi->base)) { in omap2_mcspi_probe()
1419 status = PTR_ERR(mcspi->base); in omap2_mcspi_probe()
1423 mcspi->dev = &pdev->dev; in omap2_mcspi_probe()
1425 INIT_LIST_HEAD(&mcspi->ctx.cs); in omap2_mcspi_probe()
1427 mcspi->dma_channels = devm_kcalloc(&pdev->dev, master->num_chipselect, in omap2_mcspi_probe()
1430 if (mcspi->dma_channels == NULL) { in omap2_mcspi_probe()
1436 char *dma_rx_ch_name = mcspi->dma_channels[i].dma_rx_ch_name; in omap2_mcspi_probe()
1437 char *dma_tx_ch_name = mcspi->dma_channels[i].dma_tx_ch_name; in omap2_mcspi_probe()
1453 mcspi->dma_channels[i].dma_rx_sync_dev = in omap2_mcspi_probe()
1469 mcspi->dma_channels[i].dma_tx_sync_dev = in omap2_mcspi_probe()
1481 status = omap2_mcspi_master_setup(mcspi); in omap2_mcspi_probe()
1501 struct omap2_mcspi *mcspi = spi_master_get_devdata(master); in omap2_mcspi_remove() local
1503 pm_runtime_put_sync(mcspi->dev); in omap2_mcspi_remove()
1521 struct omap2_mcspi *mcspi = spi_master_get_devdata(master); in omap2_mcspi_resume() local
1522 struct omap2_mcspi_regs *ctx = &mcspi->ctx; in omap2_mcspi_resume()
1525 pm_runtime_get_sync(mcspi->dev); in omap2_mcspi_resume()
1538 pm_runtime_mark_last_busy(mcspi->dev); in omap2_mcspi_resume()
1539 pm_runtime_put_autosuspend(mcspi->dev); in omap2_mcspi_resume()