Lines Matching refs:controller
98 struct spi_controller *controller; member
238 static bool spi_imx_can_dma(struct spi_controller *controller, struct spi_device *spi, in spi_imx_can_dma() argument
241 struct spi_imx_data *spi_imx = spi_controller_get_devdata(controller); in spi_imx_can_dma()
243 if (!use_dma || controller->fallback) in spi_imx_can_dma()
246 if (!controller->dma_rx) in spi_imx_can_dma()
540 return spi->controller->unused_native_cs; in mx51_ecspi_channel()
1259 static int spi_imx_dma_configure(struct spi_controller *controller) in spi_imx_dma_configure() argument
1264 struct spi_imx_data *spi_imx = spi_controller_get_devdata(controller); in spi_imx_dma_configure()
1284 ret = dmaengine_slave_config(controller->dma_tx, &tx); in spi_imx_dma_configure()
1294 ret = dmaengine_slave_config(controller->dma_rx, &rx); in spi_imx_dma_configure()
1306 struct spi_imx_data *spi_imx = spi_controller_get_devdata(spi->controller); in spi_imx_setupxfer()
1355 if (spi_imx_can_dma(spi_imx->controller, spi, t)) in spi_imx_setupxfer()
1361 || (t->tx_buf == spi->controller->dummy_tx)); in spi_imx_setupxfer()
1376 struct spi_controller *controller = spi_imx->controller; in spi_imx_sdma_exit() local
1378 if (controller->dma_rx) { in spi_imx_sdma_exit()
1379 dma_release_channel(controller->dma_rx); in spi_imx_sdma_exit()
1380 controller->dma_rx = NULL; in spi_imx_sdma_exit()
1383 if (controller->dma_tx) { in spi_imx_sdma_exit()
1384 dma_release_channel(controller->dma_tx); in spi_imx_sdma_exit()
1385 controller->dma_tx = NULL; in spi_imx_sdma_exit()
1390 struct spi_controller *controller) in spi_imx_sdma_init() argument
1397 controller->dma_tx = dma_request_chan(dev, "tx"); in spi_imx_sdma_init()
1398 if (IS_ERR(controller->dma_tx)) { in spi_imx_sdma_init()
1399 ret = PTR_ERR(controller->dma_tx); in spi_imx_sdma_init()
1401 controller->dma_tx = NULL; in spi_imx_sdma_init()
1406 controller->dma_rx = dma_request_chan(dev, "rx"); in spi_imx_sdma_init()
1407 if (IS_ERR(controller->dma_rx)) { in spi_imx_sdma_init()
1408 ret = PTR_ERR(controller->dma_rx); in spi_imx_sdma_init()
1410 controller->dma_rx = NULL; in spi_imx_sdma_init()
1416 controller->can_dma = spi_imx_can_dma; in spi_imx_sdma_init()
1417 controller->max_dma_len = MAX_SDMA_BD_BYTES; in spi_imx_sdma_init()
1418 spi_imx->controller->flags = SPI_CONTROLLER_MUST_RX | in spi_imx_sdma_init()
1461 struct spi_controller *controller = spi_imx->controller; in spi_imx_dma_transfer() local
1479 ret = spi_imx_dma_configure(controller); in spi_imx_dma_transfer()
1494 desc_rx = dmaengine_prep_slave_sg(controller->dma_rx, in spi_imx_dma_transfer()
1506 dma_async_issue_pending(controller->dma_rx); in spi_imx_dma_transfer()
1508 desc_tx = dmaengine_prep_slave_sg(controller->dma_tx, in spi_imx_dma_transfer()
1512 dmaengine_terminate_all(controller->dma_tx); in spi_imx_dma_transfer()
1513 dmaengine_terminate_all(controller->dma_rx); in spi_imx_dma_transfer()
1521 dma_async_issue_pending(controller->dma_tx); in spi_imx_dma_transfer()
1530 dmaengine_terminate_all(controller->dma_tx); in spi_imx_dma_transfer()
1531 dmaengine_terminate_all(controller->dma_rx); in spi_imx_dma_transfer()
1538 dev_err(&controller->dev, "I/O Error in DMA RX\n"); in spi_imx_dma_transfer()
1540 dmaengine_terminate_all(controller->dma_rx); in spi_imx_dma_transfer()
1554 struct spi_imx_data *spi_imx = spi_controller_get_devdata(spi->controller); in spi_imx_pio_transfer()
1586 struct spi_imx_data *spi_imx = spi_controller_get_devdata(spi->controller); in spi_imx_poll_transfer()
1634 struct spi_imx_data *spi_imx = spi_controller_get_devdata(spi->controller); in spi_imx_pio_transfer_target()
1694 static int spi_imx_transfer_one(struct spi_controller *controller, in spi_imx_transfer_one() argument
1699 struct spi_imx_data *spi_imx = spi_controller_get_devdata(spi->controller); in spi_imx_transfer_one()
1738 spi_imx_prepare_message(struct spi_controller *controller, struct spi_message *msg) in spi_imx_prepare_message() argument
1740 struct spi_imx_data *spi_imx = spi_controller_get_devdata(controller); in spi_imx_prepare_message()
1758 spi_imx_unprepare_message(struct spi_controller *controller, struct spi_message *msg) in spi_imx_unprepare_message() argument
1760 struct spi_imx_data *spi_imx = spi_controller_get_devdata(controller); in spi_imx_unprepare_message()
1766 static int spi_imx_target_abort(struct spi_controller *controller) in spi_imx_target_abort() argument
1768 struct spi_imx_data *spi_imx = spi_controller_get_devdata(controller); in spi_imx_target_abort()
1779 struct spi_controller *controller; in spi_imx_probe() local
1791 controller = spi_alloc_target(&pdev->dev, in spi_imx_probe()
1794 controller = spi_alloc_host(&pdev->dev, in spi_imx_probe()
1796 if (!controller) in spi_imx_probe()
1805 platform_set_drvdata(pdev, controller); in spi_imx_probe()
1807 controller->bits_per_word_mask = SPI_BPW_RANGE_MASK(1, 32); in spi_imx_probe()
1808 controller->bus_num = np ? -1 : pdev->id; in spi_imx_probe()
1809 controller->use_gpio_descriptors = true; in spi_imx_probe()
1811 spi_imx = spi_controller_get_devdata(controller); in spi_imx_probe()
1812 spi_imx->controller = controller; in spi_imx_probe()
1825 controller->num_chipselect = val; in spi_imx_probe()
1827 controller->num_chipselect = 3; in spi_imx_probe()
1829 controller->transfer_one = spi_imx_transfer_one; in spi_imx_probe()
1830 controller->setup = spi_imx_setup; in spi_imx_probe()
1831 controller->prepare_message = spi_imx_prepare_message; in spi_imx_probe()
1832 controller->unprepare_message = spi_imx_unprepare_message; in spi_imx_probe()
1833 controller->target_abort = spi_imx_target_abort; in spi_imx_probe()
1834 controller->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH | SPI_NO_CS | in spi_imx_probe()
1839 controller->mode_bits |= SPI_LOOP | SPI_READY; in spi_imx_probe()
1842 controller->mode_bits |= SPI_RX_CPHA_FLIP; in spi_imx_probe()
1851 controller->mode_bits |= SPI_CS_WORD; in spi_imx_probe()
1854 controller->max_native_cs = 4; in spi_imx_probe()
1855 controller->flags |= SPI_CONTROLLER_GPIO_SS; in spi_imx_probe()
1914 ret = spi_imx_sdma_init(&pdev->dev, spi_imx, controller); in spi_imx_probe()
1927 controller->dev.of_node = pdev->dev.of_node; in spi_imx_probe()
1928 ret = spi_register_controller(controller); in spi_imx_probe()
1950 spi_controller_put(controller); in spi_imx_probe()
1957 struct spi_controller *controller = platform_get_drvdata(pdev); in spi_imx_remove() local
1958 struct spi_imx_data *spi_imx = spi_controller_get_devdata(controller); in spi_imx_remove()
1961 spi_unregister_controller(controller); in spi_imx_remove()
1978 struct spi_controller *controller = dev_get_drvdata(dev); in spi_imx_runtime_resume() local
1982 spi_imx = spi_controller_get_devdata(controller); in spi_imx_runtime_resume()
1999 struct spi_controller *controller = dev_get_drvdata(dev); in spi_imx_runtime_suspend() local
2002 spi_imx = spi_controller_get_devdata(controller); in spi_imx_runtime_suspend()