Lines Matching refs:master
284 static int spi_qup_prep_sg(struct spi_master *master, struct spi_transfer *xfer, in spi_qup_prep_sg() argument
288 struct spi_qup *qup = spi_master_get_devdata(master); in spi_qup_prep_sg()
297 chan = master->dma_tx; in spi_qup_prep_sg()
301 chan = master->dma_rx; in spi_qup_prep_sg()
318 static void spi_qup_dma_terminate(struct spi_master *master, in spi_qup_dma_terminate() argument
322 dmaengine_terminate_all(master->dma_tx); in spi_qup_dma_terminate()
324 dmaengine_terminate_all(master->dma_rx); in spi_qup_dma_terminate()
327 static int spi_qup_do_dma(struct spi_master *master, struct spi_transfer *xfer) in spi_qup_do_dma() argument
338 ret = spi_qup_prep_sg(master, xfer, DMA_DEV_TO_MEM, rx_done); in spi_qup_do_dma()
342 dma_async_issue_pending(master->dma_rx); in spi_qup_do_dma()
346 ret = spi_qup_prep_sg(master, xfer, DMA_MEM_TO_DEV, tx_done); in spi_qup_do_dma()
350 dma_async_issue_pending(master->dma_tx); in spi_qup_do_dma()
356 static int spi_qup_do_pio(struct spi_master *master, struct spi_transfer *xfer) in spi_qup_do_pio() argument
358 struct spi_qup *qup = spi_master_get_devdata(master); in spi_qup_do_pio()
447 spi_qup_get_mode(struct spi_master *master, struct spi_transfer *xfer) in spi_qup_get_mode() argument
449 struct spi_qup *qup = spi_master_get_devdata(master); in spi_qup_get_mode()
472 struct spi_qup *controller = spi_master_get_devdata(spi->master); in spi_qup_io_config()
494 mode = spi_qup_get_mode(spi->master, xfer); in spi_qup_io_config()
611 static int spi_qup_transfer_one(struct spi_master *master, in spi_qup_transfer_one() argument
615 struct spi_qup *controller = spi_master_get_devdata(master); in spi_qup_transfer_one()
637 ret = spi_qup_do_dma(master, xfer); in spi_qup_transfer_one()
639 ret = spi_qup_do_pio(master, xfer); in spi_qup_transfer_one()
661 spi_qup_dma_terminate(master, xfer); in spi_qup_transfer_one()
666 static bool spi_qup_can_dma(struct spi_master *master, struct spi_device *spi, in spi_qup_can_dma() argument
669 struct spi_qup *qup = spi_master_get_devdata(master); in spi_qup_can_dma()
676 IS_ERR_OR_NULL(master->dma_rx) || in spi_qup_can_dma()
681 IS_ERR_OR_NULL(master->dma_tx) || in spi_qup_can_dma()
685 mode = spi_qup_get_mode(master, xfer); in spi_qup_can_dma()
694 static void spi_qup_release_dma(struct spi_master *master) in spi_qup_release_dma() argument
696 if (!IS_ERR_OR_NULL(master->dma_rx)) in spi_qup_release_dma()
697 dma_release_channel(master->dma_rx); in spi_qup_release_dma()
698 if (!IS_ERR_OR_NULL(master->dma_tx)) in spi_qup_release_dma()
699 dma_release_channel(master->dma_tx); in spi_qup_release_dma()
702 static int spi_qup_init_dma(struct spi_master *master, resource_size_t base) in spi_qup_init_dma() argument
704 struct spi_qup *spi = spi_master_get_devdata(master); in spi_qup_init_dma()
711 master->dma_rx = dma_request_slave_channel_reason(dev, "rx"); in spi_qup_init_dma()
712 if (IS_ERR(master->dma_rx)) in spi_qup_init_dma()
713 return PTR_ERR(master->dma_rx); in spi_qup_init_dma()
715 master->dma_tx = dma_request_slave_channel_reason(dev, "tx"); in spi_qup_init_dma()
716 if (IS_ERR(master->dma_tx)) { in spi_qup_init_dma()
717 ret = PTR_ERR(master->dma_tx); in spi_qup_init_dma()
732 ret = dmaengine_slave_config(master->dma_rx, rx_conf); in spi_qup_init_dma()
738 ret = dmaengine_slave_config(master->dma_tx, tx_conf); in spi_qup_init_dma()
747 dma_release_channel(master->dma_tx); in spi_qup_init_dma()
749 dma_release_channel(master->dma_rx); in spi_qup_init_dma()
755 struct spi_master *master; in spi_qup_probe() local
804 master = spi_alloc_master(dev, sizeof(struct spi_qup)); in spi_qup_probe()
805 if (!master) { in spi_qup_probe()
815 master->num_chipselect = SPI_NUM_CHIPSELECTS; in spi_qup_probe()
817 master->num_chipselect = num_cs; in spi_qup_probe()
819 master->bus_num = pdev->id; in spi_qup_probe()
820 master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH | SPI_LOOP; in spi_qup_probe()
821 master->bits_per_word_mask = SPI_BPW_RANGE_MASK(4, 32); in spi_qup_probe()
822 master->max_speed_hz = max_freq; in spi_qup_probe()
823 master->transfer_one = spi_qup_transfer_one; in spi_qup_probe()
824 master->dev.of_node = pdev->dev.of_node; in spi_qup_probe()
825 master->auto_runtime_pm = true; in spi_qup_probe()
826 master->dma_alignment = dma_get_cache_alignment(); in spi_qup_probe()
827 master->max_dma_len = SPI_MAX_DMA_XFER; in spi_qup_probe()
829 platform_set_drvdata(pdev, master); in spi_qup_probe()
831 controller = spi_master_get_devdata(master); in spi_qup_probe()
839 ret = spi_qup_init_dma(master, res->start); in spi_qup_probe()
843 master->can_dma = spi_qup_can_dma; in spi_qup_probe()
912 ret = devm_spi_register_master(dev, master); in spi_qup_probe()
921 spi_qup_release_dma(master); in spi_qup_probe()
925 spi_master_put(master); in spi_qup_probe()
932 struct spi_master *master = dev_get_drvdata(device); in spi_qup_pm_suspend_runtime() local
933 struct spi_qup *controller = spi_master_get_devdata(master); in spi_qup_pm_suspend_runtime()
945 struct spi_master *master = dev_get_drvdata(device); in spi_qup_pm_resume_runtime() local
946 struct spi_qup *controller = spi_master_get_devdata(master); in spi_qup_pm_resume_runtime()
960 struct spi_master *master = dev_get_drvdata(device); in spi_qup_suspend() local
961 struct spi_qup *controller = spi_master_get_devdata(master); in spi_qup_suspend()
964 ret = spi_master_suspend(master); in spi_qup_suspend()
979 struct spi_master *master = dev_get_drvdata(device); in spi_qup_resume() local
980 struct spi_qup *controller = spi_master_get_devdata(master); in spi_qup_resume()
995 return spi_master_resume(master); in spi_qup_resume()
1001 struct spi_master *master = dev_get_drvdata(&pdev->dev); in spi_qup_remove() local
1002 struct spi_qup *controller = spi_master_get_devdata(master); in spi_qup_remove()
1013 spi_qup_release_dma(master); in spi_qup_remove()