Lines Matching refs:controller
174 static bool fsl_lpspi_can_dma(struct spi_controller *controller,
180 if (!controller->dma_rx)
197 static int lpspi_prepare_xfer_hardware(struct spi_controller *controller)
200 spi_controller_get_devdata(controller);
212 static int lpspi_unprepare_xfer_hardware(struct spi_controller *controller)
215 spi_controller_get_devdata(controller);
331 static int fsl_lpspi_dma_configure(struct spi_controller *controller)
337 spi_controller_get_devdata(controller);
357 ret = dmaengine_slave_config(controller->dma_tx, &tx);
368 ret = dmaengine_slave_config(controller->dma_rx, &rx);
411 static int fsl_lpspi_setup_transfer(struct spi_controller *controller,
416 spi_controller_get_devdata(spi->controller);
451 if (fsl_lpspi_can_dma(controller, spi, t))
459 static int fsl_lpspi_slave_abort(struct spi_controller *controller)
462 spi_controller_get_devdata(controller);
475 static int fsl_lpspi_wait_for_completion(struct spi_controller *controller)
478 spi_controller_get_devdata(controller);
545 static int fsl_lpspi_dma_transfer(struct spi_controller *controller,
555 ret = fsl_lpspi_dma_configure(controller);
559 desc_rx = dmaengine_prep_slave_sg(controller->dma_rx,
569 dma_async_issue_pending(controller->dma_rx);
571 desc_tx = dmaengine_prep_slave_sg(controller->dma_tx,
575 dmaengine_terminate_all(controller->dma_tx);
583 dma_async_issue_pending(controller->dma_tx);
596 dmaengine_terminate_all(controller->dma_tx);
597 dmaengine_terminate_all(controller->dma_rx);
606 dmaengine_terminate_all(controller->dma_tx);
607 dmaengine_terminate_all(controller->dma_rx);
616 dmaengine_terminate_all(controller->dma_tx);
617 dmaengine_terminate_all(controller->dma_rx);
626 dmaengine_terminate_all(controller->dma_tx);
627 dmaengine_terminate_all(controller->dma_rx);
638 static void fsl_lpspi_dma_exit(struct spi_controller *controller)
640 if (controller->dma_rx) {
641 dma_release_channel(controller->dma_rx);
642 controller->dma_rx = NULL;
645 if (controller->dma_tx) {
646 dma_release_channel(controller->dma_tx);
647 controller->dma_tx = NULL;
653 struct spi_controller *controller)
658 controller->dma_tx = dma_request_chan(dev, "tx");
659 if (IS_ERR(controller->dma_tx)) {
660 ret = PTR_ERR(controller->dma_tx);
662 controller->dma_tx = NULL;
667 controller->dma_rx = dma_request_chan(dev, "rx");
668 if (IS_ERR(controller->dma_rx)) {
669 ret = PTR_ERR(controller->dma_rx);
671 controller->dma_rx = NULL;
677 controller->can_dma = fsl_lpspi_can_dma;
678 controller->max_dma_len = FSL_LPSPI_MAX_EDMA_BYTES;
682 fsl_lpspi_dma_exit(controller);
686 static int fsl_lpspi_pio_transfer(struct spi_controller *controller,
690 spi_controller_get_devdata(controller);
702 ret = fsl_lpspi_wait_for_completion(controller);
711 static int fsl_lpspi_transfer_one(struct spi_controller *controller,
716 spi_controller_get_devdata(controller);
720 ret = fsl_lpspi_setup_transfer(controller, spi, t);
728 ret = fsl_lpspi_dma_transfer(controller, fsl_lpspi, t);
730 ret = fsl_lpspi_pio_transfer(controller, t);
772 struct spi_controller *controller = dev_get_drvdata(dev);
776 fsl_lpspi = spi_controller_get_devdata(controller);
793 struct spi_controller *controller = dev_get_drvdata(dev);
796 fsl_lpspi = spi_controller_get_devdata(controller);
819 struct spi_controller *controller;
827 controller = spi_alloc_slave(&pdev->dev,
830 controller = spi_alloc_master(&pdev->dev,
833 if (!controller)
836 platform_set_drvdata(pdev, controller);
838 fsl_lpspi = spi_controller_get_devdata(controller);
844 controller->bits_per_word_mask = SPI_BPW_RANGE_MASK(8, 32);
845 controller->transfer_one = fsl_lpspi_transfer_one;
846 controller->prepare_transfer_hardware = lpspi_prepare_xfer_hardware;
847 controller->unprepare_transfer_hardware = lpspi_unprepare_xfer_hardware;
848 controller->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH;
849 controller->flags = SPI_MASTER_MUST_RX | SPI_MASTER_MUST_TX;
850 controller->dev.of_node = pdev->dev.of_node;
851 controller->bus_num = pdev->id;
852 controller->slave_abort = fsl_lpspi_slave_abort;
854 controller->use_gpio_descriptors = true;
906 ret = fsl_lpspi_dma_init(&pdev->dev, fsl_lpspi, controller);
918 ret = devm_spi_register_controller(&pdev->dev, controller);
934 spi_controller_put(controller);
941 struct spi_controller *controller = platform_get_drvdata(pdev);
943 spi_controller_get_devdata(controller);