Lines Matching refs:ctlr
281 struct spi_controller *ctlr = spi->controller; in rockchip_spi_set_cs() local
282 struct rockchip_spi *rs = spi_controller_get_devdata(ctlr); in rockchip_spi_set_cs()
310 static void rockchip_spi_handle_err(struct spi_controller *ctlr, in rockchip_spi_handle_err() argument
313 struct rockchip_spi *rs = spi_controller_get_devdata(ctlr); in rockchip_spi_handle_err()
330 dmaengine_terminate_async(ctlr->dma_tx); in rockchip_spi_handle_err()
333 dmaengine_terminate_async(ctlr->dma_rx); in rockchip_spi_handle_err()
392 struct spi_controller *ctlr = dev_id; in rockchip_spi_isr() local
393 struct rockchip_spi *rs = spi_controller_get_devdata(ctlr); in rockchip_spi_isr()
397 ctlr->slave_abort(ctlr); in rockchip_spi_isr()
419 struct spi_controller *ctlr, in rockchip_spi_prepare_irq() argument
443 struct spi_controller *ctlr = data; in rockchip_spi_dma_rxcb() local
444 struct rockchip_spi *rs = spi_controller_get_devdata(ctlr); in rockchip_spi_dma_rxcb()
461 struct spi_controller *ctlr = data; in rockchip_spi_dma_txcb() local
462 struct rockchip_spi *rs = spi_controller_get_devdata(ctlr); in rockchip_spi_dma_txcb()
469 wait_for_tx_idle(rs, ctlr->slave); in rockchip_spi_dma_txcb()
491 struct spi_controller *ctlr, struct spi_transfer *xfer) in rockchip_spi_prepare_dma() argument
506 dmaengine_slave_config(ctlr->dma_rx, &rxconf); in rockchip_spi_prepare_dma()
509 ctlr->dma_rx, in rockchip_spi_prepare_dma()
516 rxdesc->callback_param = ctlr; in rockchip_spi_prepare_dma()
528 dmaengine_slave_config(ctlr->dma_tx, &txconf); in rockchip_spi_prepare_dma()
531 ctlr->dma_tx, in rockchip_spi_prepare_dma()
536 dmaengine_terminate_sync(ctlr->dma_rx); in rockchip_spi_prepare_dma()
541 txdesc->callback_param = ctlr; in rockchip_spi_prepare_dma()
547 ctlr->dma_rx->cookie = dmaengine_submit(rxdesc); in rockchip_spi_prepare_dma()
548 dma_async_issue_pending(ctlr->dma_rx); in rockchip_spi_prepare_dma()
559 dma_async_issue_pending(ctlr->dma_tx); in rockchip_spi_prepare_dma()
567 struct spi_controller *ctlr, struct spi_transfer *xfer) in rockchip_spi_pio_transfer() argument
581 if (ms > UINT_MAX || ctlr->slave) in rockchip_spi_pio_transfer()
608 wait_for_tx_idle(rs, ctlr->slave); in rockchip_spi_pio_transfer()
746 static int rockchip_spi_slave_abort(struct spi_controller *ctlr) in rockchip_spi_slave_abort() argument
748 struct rockchip_spi *rs = spi_controller_get_devdata(ctlr); in rockchip_spi_slave_abort()
762 static int rockchip_spi_transfer_wait(struct spi_controller *ctlr, in rockchip_spi_transfer_wait() argument
765 struct rockchip_spi *rs = spi_controller_get_devdata(ctlr); in rockchip_spi_transfer_wait()
769 if (spi_controller_is_slave(ctlr)) { in rockchip_spi_transfer_wait()
803 struct spi_controller *ctlr, in rockchip_spi_transfer_one() argument
807 struct rockchip_spi *rs = spi_controller_get_devdata(ctlr); in rockchip_spi_transfer_one()
836 use_dma = ctlr->can_dma ? ctlr->can_dma(ctlr, spi, xfer) : false; in rockchip_spi_transfer_one()
843 ret = rockchip_spi_config(rs, spi, xfer, xfer_mode, ctlr->slave); in rockchip_spi_transfer_one()
854 ret = rockchip_spi_pio_transfer(rs, ctlr, xfer); in rockchip_spi_transfer_one()
857 ret = rockchip_spi_prepare_dma(rs, ctlr, xfer); in rockchip_spi_transfer_one()
860 ret = rockchip_spi_prepare_irq(rs, ctlr, xfer); in rockchip_spi_transfer_one()
870 ret = rockchip_spi_transfer_wait(ctlr, xfer); in rockchip_spi_transfer_one()
878 static bool rockchip_spi_can_dma(struct spi_controller *ctlr, in rockchip_spi_can_dma() argument
882 struct rockchip_spi *rs = spi_controller_get_devdata(ctlr); in rockchip_spi_can_dma()
920 struct spi_controller *ctlr = dev_get_drvdata(misc->parent); in rockchip_spi_misc_open() local
921 struct rockchip_spi *rs = spi_controller_get_devdata(ctlr); in rockchip_spi_misc_open()
931 struct spi_controller *ctlr = dev_get_drvdata(misc->parent); in rockchip_spi_misc_release() local
932 struct rockchip_spi *rs = spi_controller_get_devdata(ctlr); in rockchip_spi_misc_release()
942 struct spi_controller *ctlr = dev_get_drvdata(misc->parent); in rockchip_spi_mmap() local
943 struct rockchip_spi *rs = spi_controller_get_devdata(ctlr); in rockchip_spi_mmap()
975 struct spi_controller *ctlr; in rockchip_spi_probe() local
986 ctlr = spi_alloc_slave(&pdev->dev, in rockchip_spi_probe()
989 ctlr = spi_alloc_master(&pdev->dev, in rockchip_spi_probe()
992 if (!ctlr) in rockchip_spi_probe()
995 platform_set_drvdata(pdev, ctlr); in rockchip_spi_probe()
997 rs = spi_controller_get_devdata(ctlr); in rockchip_spi_probe()
998 ctlr->slave = slave_mode; in rockchip_spi_probe()
1057 IRQF_ONESHOT, dev_name(&pdev->dev), ctlr); in rockchip_spi_probe()
1111 ctlr->auto_runtime_pm = true; in rockchip_spi_probe()
1112 ctlr->bus_num = pdev->id; in rockchip_spi_probe()
1113 ctlr->mode_bits = SPI_CPOL | SPI_CPHA | SPI_LOOP | SPI_LSB_FIRST; in rockchip_spi_probe()
1115 ctlr->mode_bits |= SPI_NO_CS; in rockchip_spi_probe()
1116 ctlr->slave_abort = rockchip_spi_slave_abort; in rockchip_spi_probe()
1118 ctlr->flags = SPI_MASTER_GPIO_SS; in rockchip_spi_probe()
1119 ctlr->max_native_cs = ROCKCHIP_SPI_MAX_CS_NUM; in rockchip_spi_probe()
1126 ctlr->num_chipselect = num_cs; in rockchip_spi_probe()
1127 ctlr->use_gpio_descriptors = true; in rockchip_spi_probe()
1129 ctlr->dev.of_node = pdev->dev.of_node; in rockchip_spi_probe()
1130 ctlr->bits_per_word_mask = SPI_BPW_MASK(16) | SPI_BPW_MASK(8) | SPI_BPW_MASK(4); in rockchip_spi_probe()
1131 ctlr->min_speed_hz = rs->freq / BAUDR_SCKDV_MAX; in rockchip_spi_probe()
1132 ctlr->max_speed_hz = min(rs->freq / BAUDR_SCKDV_MIN, MAX_SCLK_OUT); in rockchip_spi_probe()
1134 ctlr->setup = rockchip_spi_setup; in rockchip_spi_probe()
1135 ctlr->set_cs = rockchip_spi_set_cs; in rockchip_spi_probe()
1136 ctlr->transfer_one = rockchip_spi_transfer_one; in rockchip_spi_probe()
1137 ctlr->max_transfer_size = rockchip_spi_max_transfer_size; in rockchip_spi_probe()
1138 ctlr->handle_err = rockchip_spi_handle_err; in rockchip_spi_probe()
1140 ctlr->dma_tx = dma_request_chan(rs->dev, "tx"); in rockchip_spi_probe()
1141 if (IS_ERR(ctlr->dma_tx)) { in rockchip_spi_probe()
1143 if (PTR_ERR(ctlr->dma_tx) == -EPROBE_DEFER) { in rockchip_spi_probe()
1148 ctlr->dma_tx = NULL; in rockchip_spi_probe()
1151 ctlr->dma_rx = dma_request_chan(rs->dev, "rx"); in rockchip_spi_probe()
1152 if (IS_ERR(ctlr->dma_rx)) { in rockchip_spi_probe()
1153 if (PTR_ERR(ctlr->dma_rx) == -EPROBE_DEFER) { in rockchip_spi_probe()
1158 ctlr->dma_rx = NULL; in rockchip_spi_probe()
1161 if (ctlr->dma_tx && ctlr->dma_rx) { in rockchip_spi_probe()
1164 ctlr->can_dma = rockchip_spi_can_dma; in rockchip_spi_probe()
1178 ctlr->mode_bits |= SPI_CS_HIGH; in rockchip_spi_probe()
1207 ret = devm_spi_register_controller(&pdev->dev, ctlr); in rockchip_spi_probe()
1216 snprintf(misc_name, sizeof(misc_name), "rkspi-dev%d", ctlr->bus_num); in rockchip_spi_probe()
1235 if (ctlr->dma_rx) in rockchip_spi_probe()
1236 dma_release_channel(ctlr->dma_rx); in rockchip_spi_probe()
1238 if (ctlr->dma_tx) in rockchip_spi_probe()
1239 dma_release_channel(ctlr->dma_tx); in rockchip_spi_probe()
1249 spi_controller_put(ctlr); in rockchip_spi_probe()
1256 struct spi_controller *ctlr = spi_controller_get(platform_get_drvdata(pdev)); in rockchip_spi_remove() local
1257 struct rockchip_spi *rs = spi_controller_get_devdata(ctlr); in rockchip_spi_remove()
1272 if (ctlr->dma_tx) in rockchip_spi_remove()
1273 dma_release_channel(ctlr->dma_tx); in rockchip_spi_remove()
1274 if (ctlr->dma_rx) in rockchip_spi_remove()
1275 dma_release_channel(ctlr->dma_rx); in rockchip_spi_remove()
1277 spi_controller_put(ctlr); in rockchip_spi_remove()
1285 struct spi_controller *ctlr = dev_get_drvdata(dev); in rockchip_spi_runtime_suspend() local
1286 struct rockchip_spi *rs = spi_controller_get_devdata(ctlr); in rockchip_spi_runtime_suspend()
1297 struct spi_controller *ctlr = dev_get_drvdata(dev); in rockchip_spi_runtime_resume() local
1298 struct rockchip_spi *rs = spi_controller_get_devdata(ctlr); in rockchip_spi_runtime_resume()
1316 struct spi_controller *ctlr = dev_get_drvdata(dev); in rockchip_spi_suspend() local
1318 ret = spi_controller_suspend(ctlr); in rockchip_spi_suspend()
1334 struct spi_controller *ctlr = dev_get_drvdata(dev); in rockchip_spi_resume() local
1344 ret = spi_controller_resume(ctlr); in rockchip_spi_resume()