Lines Matching refs:controller
173 static bool fsl_lpspi_can_dma(struct spi_controller *controller,
179 if (!controller->dma_rx)
196 static int lpspi_prepare_xfer_hardware(struct spi_controller *controller)
199 spi_controller_get_devdata(controller);
211 static int lpspi_unprepare_xfer_hardware(struct spi_controller *controller)
214 spi_controller_get_devdata(controller);
336 static int fsl_lpspi_dma_configure(struct spi_controller *controller)
342 spi_controller_get_devdata(controller);
362 ret = dmaengine_slave_config(controller->dma_tx, &tx);
373 ret = dmaengine_slave_config(controller->dma_rx, &rx);
416 static int fsl_lpspi_setup_transfer(struct spi_controller *controller,
421 spi_controller_get_devdata(spi->controller);
456 if (fsl_lpspi_can_dma(controller, spi, t))
464 static int fsl_lpspi_target_abort(struct spi_controller *controller)
467 spi_controller_get_devdata(controller);
480 static int fsl_lpspi_wait_for_completion(struct spi_controller *controller)
483 spi_controller_get_devdata(controller);
550 static int fsl_lpspi_dma_transfer(struct spi_controller *controller,
560 ret = fsl_lpspi_dma_configure(controller);
564 desc_rx = dmaengine_prep_slave_sg(controller->dma_rx,
574 dma_async_issue_pending(controller->dma_rx);
576 desc_tx = dmaengine_prep_slave_sg(controller->dma_tx,
580 dmaengine_terminate_all(controller->dma_tx);
588 dma_async_issue_pending(controller->dma_tx);
601 dmaengine_terminate_all(controller->dma_tx);
602 dmaengine_terminate_all(controller->dma_rx);
611 dmaengine_terminate_all(controller->dma_tx);
612 dmaengine_terminate_all(controller->dma_rx);
621 dmaengine_terminate_all(controller->dma_tx);
622 dmaengine_terminate_all(controller->dma_rx);
631 dmaengine_terminate_all(controller->dma_tx);
632 dmaengine_terminate_all(controller->dma_rx);
643 static void fsl_lpspi_dma_exit(struct spi_controller *controller)
645 if (controller->dma_rx) {
646 dma_release_channel(controller->dma_rx);
647 controller->dma_rx = NULL;
650 if (controller->dma_tx) {
651 dma_release_channel(controller->dma_tx);
652 controller->dma_tx = NULL;
658 struct spi_controller *controller)
663 controller->dma_tx = dma_request_chan(dev, "tx");
664 if (IS_ERR(controller->dma_tx)) {
665 ret = PTR_ERR(controller->dma_tx);
667 controller->dma_tx = NULL;
672 controller->dma_rx = dma_request_chan(dev, "rx");
673 if (IS_ERR(controller->dma_rx)) {
674 ret = PTR_ERR(controller->dma_rx);
676 controller->dma_rx = NULL;
682 controller->can_dma = fsl_lpspi_can_dma;
683 controller->max_dma_len = FSL_LPSPI_MAX_EDMA_BYTES;
687 fsl_lpspi_dma_exit(controller);
691 static int fsl_lpspi_pio_transfer(struct spi_controller *controller,
695 spi_controller_get_devdata(controller);
707 ret = fsl_lpspi_wait_for_completion(controller);
716 static int fsl_lpspi_transfer_one(struct spi_controller *controller,
721 spi_controller_get_devdata(controller);
725 ret = fsl_lpspi_setup_transfer(controller, spi, t);
733 ret = fsl_lpspi_dma_transfer(controller, fsl_lpspi, t);
735 ret = fsl_lpspi_pio_transfer(controller, t);
777 struct spi_controller *controller = dev_get_drvdata(dev);
781 fsl_lpspi = spi_controller_get_devdata(controller);
798 struct spi_controller *controller = dev_get_drvdata(dev);
801 fsl_lpspi = spi_controller_get_devdata(controller);
824 struct spi_controller *controller;
833 controller = devm_spi_alloc_target(&pdev->dev,
836 controller = devm_spi_alloc_host(&pdev->dev,
839 if (!controller)
842 platform_set_drvdata(pdev, controller);
844 fsl_lpspi = spi_controller_get_devdata(controller);
906 controller->bits_per_word_mask = SPI_BPW_RANGE_MASK(8, 32);
907 controller->transfer_one = fsl_lpspi_transfer_one;
908 controller->prepare_transfer_hardware = lpspi_prepare_xfer_hardware;
909 controller->unprepare_transfer_hardware = lpspi_unprepare_xfer_hardware;
910 controller->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH;
911 controller->flags = SPI_CONTROLLER_MUST_RX | SPI_CONTROLLER_MUST_TX;
912 controller->dev.of_node = pdev->dev.of_node;
913 controller->bus_num = pdev->id;
914 controller->num_chipselect = num_cs;
915 controller->target_abort = fsl_lpspi_target_abort;
917 controller->use_gpio_descriptors = true;
919 ret = fsl_lpspi_dma_init(&pdev->dev, fsl_lpspi, controller);
931 ret = devm_spi_register_controller(&pdev->dev, controller);
943 fsl_lpspi_dma_exit(controller);
949 spi_controller_put(controller);
956 struct spi_controller *controller = platform_get_drvdata(pdev);
958 spi_controller_get_devdata(controller);
960 fsl_lpspi_dma_exit(controller);