Lines Matching refs:ctlr

239 	struct spi_controller *ctlr = spi->controller;  in rockchip_spi_set_cs()  local
240 struct rockchip_spi *rs = spi_controller_get_devdata(ctlr); in rockchip_spi_set_cs()
268 static void rockchip_spi_handle_err(struct spi_controller *ctlr, in rockchip_spi_handle_err() argument
271 struct rockchip_spi *rs = spi_controller_get_devdata(ctlr); in rockchip_spi_handle_err()
282 dmaengine_terminate_async(ctlr->dma_tx); in rockchip_spi_handle_err()
285 dmaengine_terminate_async(ctlr->dma_rx); in rockchip_spi_handle_err()
343 struct spi_controller *ctlr = dev_id; in rockchip_spi_isr() local
344 struct rockchip_spi *rs = spi_controller_get_devdata(ctlr); in rockchip_spi_isr()
353 spi_finalize_current_transfer(ctlr); in rockchip_spi_isr()
379 struct spi_controller *ctlr = data; in rockchip_spi_dma_rxcb() local
380 struct rockchip_spi *rs = spi_controller_get_devdata(ctlr); in rockchip_spi_dma_rxcb()
387 spi_finalize_current_transfer(ctlr); in rockchip_spi_dma_rxcb()
392 struct spi_controller *ctlr = data; in rockchip_spi_dma_txcb() local
393 struct rockchip_spi *rs = spi_controller_get_devdata(ctlr); in rockchip_spi_dma_txcb()
400 wait_for_tx_idle(rs, ctlr->slave); in rockchip_spi_dma_txcb()
403 spi_finalize_current_transfer(ctlr); in rockchip_spi_dma_txcb()
420 struct spi_controller *ctlr, struct spi_transfer *xfer) in rockchip_spi_prepare_dma() argument
436 dmaengine_slave_config(ctlr->dma_rx, &rxconf); in rockchip_spi_prepare_dma()
439 ctlr->dma_rx, in rockchip_spi_prepare_dma()
446 rxdesc->callback_param = ctlr; in rockchip_spi_prepare_dma()
458 dmaengine_slave_config(ctlr->dma_tx, &txconf); in rockchip_spi_prepare_dma()
461 ctlr->dma_tx, in rockchip_spi_prepare_dma()
466 dmaengine_terminate_sync(ctlr->dma_rx); in rockchip_spi_prepare_dma()
471 txdesc->callback_param = ctlr; in rockchip_spi_prepare_dma()
478 dma_async_issue_pending(ctlr->dma_rx); in rockchip_spi_prepare_dma()
486 dma_async_issue_pending(ctlr->dma_tx); in rockchip_spi_prepare_dma()
584 static int rockchip_spi_slave_abort(struct spi_controller *ctlr) in rockchip_spi_slave_abort() argument
586 struct rockchip_spi *rs = spi_controller_get_devdata(ctlr); in rockchip_spi_slave_abort()
589 spi_finalize_current_transfer(ctlr); in rockchip_spi_slave_abort()
595 struct spi_controller *ctlr, in rockchip_spi_transfer_one() argument
599 struct rockchip_spi *rs = spi_controller_get_devdata(ctlr); in rockchip_spi_transfer_one()
605 spi_finalize_current_transfer(ctlr); in rockchip_spi_transfer_one()
624 use_dma = ctlr->can_dma ? ctlr->can_dma(ctlr, spi, xfer) : false; in rockchip_spi_transfer_one()
626 ret = rockchip_spi_config(rs, spi, xfer, use_dma, ctlr->slave); in rockchip_spi_transfer_one()
631 return rockchip_spi_prepare_dma(rs, ctlr, xfer); in rockchip_spi_transfer_one()
636 static bool rockchip_spi_can_dma(struct spi_controller *ctlr, in rockchip_spi_can_dma() argument
640 struct rockchip_spi *rs = spi_controller_get_devdata(ctlr); in rockchip_spi_can_dma()
654 struct spi_controller *ctlr; in rockchip_spi_probe() local
663 ctlr = spi_alloc_slave(&pdev->dev, in rockchip_spi_probe()
666 ctlr = spi_alloc_master(&pdev->dev, in rockchip_spi_probe()
669 if (!ctlr) in rockchip_spi_probe()
672 platform_set_drvdata(pdev, ctlr); in rockchip_spi_probe()
674 rs = spi_controller_get_devdata(ctlr); in rockchip_spi_probe()
675 ctlr->slave = slave_mode; in rockchip_spi_probe()
718 IRQF_ONESHOT, dev_name(&pdev->dev), ctlr); in rockchip_spi_probe()
754 ctlr->auto_runtime_pm = true; in rockchip_spi_probe()
755 ctlr->bus_num = pdev->id; in rockchip_spi_probe()
756 ctlr->mode_bits = SPI_CPOL | SPI_CPHA | SPI_LOOP | SPI_LSB_FIRST; in rockchip_spi_probe()
758 ctlr->mode_bits |= SPI_NO_CS; in rockchip_spi_probe()
759 ctlr->slave_abort = rockchip_spi_slave_abort; in rockchip_spi_probe()
761 ctlr->flags = SPI_MASTER_GPIO_SS; in rockchip_spi_probe()
762 ctlr->max_native_cs = ROCKCHIP_SPI_MAX_CS_NUM; in rockchip_spi_probe()
767 if (of_property_read_u16(np, "num-cs", &ctlr->num_chipselect)) in rockchip_spi_probe()
768 ctlr->num_chipselect = 1; in rockchip_spi_probe()
769 ctlr->use_gpio_descriptors = true; in rockchip_spi_probe()
771 ctlr->dev.of_node = pdev->dev.of_node; in rockchip_spi_probe()
772 ctlr->bits_per_word_mask = SPI_BPW_MASK(16) | SPI_BPW_MASK(8) | SPI_BPW_MASK(4); in rockchip_spi_probe()
773 ctlr->min_speed_hz = rs->freq / BAUDR_SCKDV_MAX; in rockchip_spi_probe()
774 ctlr->max_speed_hz = min(rs->freq / BAUDR_SCKDV_MIN, MAX_SCLK_OUT); in rockchip_spi_probe()
776 ctlr->set_cs = rockchip_spi_set_cs; in rockchip_spi_probe()
777 ctlr->transfer_one = rockchip_spi_transfer_one; in rockchip_spi_probe()
778 ctlr->max_transfer_size = rockchip_spi_max_transfer_size; in rockchip_spi_probe()
779 ctlr->handle_err = rockchip_spi_handle_err; in rockchip_spi_probe()
781 ctlr->dma_tx = dma_request_chan(rs->dev, "tx"); in rockchip_spi_probe()
782 if (IS_ERR(ctlr->dma_tx)) { in rockchip_spi_probe()
784 if (PTR_ERR(ctlr->dma_tx) == -EPROBE_DEFER) { in rockchip_spi_probe()
789 ctlr->dma_tx = NULL; in rockchip_spi_probe()
792 ctlr->dma_rx = dma_request_chan(rs->dev, "rx"); in rockchip_spi_probe()
793 if (IS_ERR(ctlr->dma_rx)) { in rockchip_spi_probe()
794 if (PTR_ERR(ctlr->dma_rx) == -EPROBE_DEFER) { in rockchip_spi_probe()
799 ctlr->dma_rx = NULL; in rockchip_spi_probe()
802 if (ctlr->dma_tx && ctlr->dma_rx) { in rockchip_spi_probe()
805 ctlr->can_dma = rockchip_spi_can_dma; in rockchip_spi_probe()
810 ctlr->mode_bits |= SPI_CS_HIGH; in rockchip_spi_probe()
816 ret = devm_spi_register_controller(&pdev->dev, ctlr); in rockchip_spi_probe()
825 if (ctlr->dma_rx) in rockchip_spi_probe()
826 dma_release_channel(ctlr->dma_rx); in rockchip_spi_probe()
828 if (ctlr->dma_tx) in rockchip_spi_probe()
829 dma_release_channel(ctlr->dma_tx); in rockchip_spi_probe()
837 spi_controller_put(ctlr); in rockchip_spi_probe()
844 struct spi_controller *ctlr = spi_controller_get(platform_get_drvdata(pdev)); in rockchip_spi_remove() local
845 struct rockchip_spi *rs = spi_controller_get_devdata(ctlr); in rockchip_spi_remove()
856 if (ctlr->dma_tx) in rockchip_spi_remove()
857 dma_release_channel(ctlr->dma_tx); in rockchip_spi_remove()
858 if (ctlr->dma_rx) in rockchip_spi_remove()
859 dma_release_channel(ctlr->dma_rx); in rockchip_spi_remove()
861 spi_controller_put(ctlr); in rockchip_spi_remove()
870 struct spi_controller *ctlr = dev_get_drvdata(dev); in rockchip_spi_suspend() local
872 ret = spi_controller_suspend(ctlr); in rockchip_spi_suspend()
888 struct spi_controller *ctlr = dev_get_drvdata(dev); in rockchip_spi_resume() local
889 struct rockchip_spi *rs = spi_controller_get_devdata(ctlr); in rockchip_spi_resume()
897 ret = spi_controller_resume(ctlr); in rockchip_spi_resume()
910 struct spi_controller *ctlr = dev_get_drvdata(dev); in rockchip_spi_runtime_suspend() local
911 struct rockchip_spi *rs = spi_controller_get_devdata(ctlr); in rockchip_spi_runtime_suspend()
922 struct spi_controller *ctlr = dev_get_drvdata(dev); in rockchip_spi_runtime_resume() local
923 struct rockchip_spi *rs = spi_controller_get_devdata(ctlr); in rockchip_spi_runtime_resume()