Lines Matching defs:host
107 * @host: SPI host
112 static int ep93xx_spi_calc_divisors(struct spi_controller *host,
115 struct ep93xx_spi *espi = spi_controller_get_devdata(host);
123 rate = clamp(rate, host->min_speed_hz, host->max_speed_hz);
146 static int ep93xx_spi_chip_setup(struct spi_controller *host,
150 struct ep93xx_spi *espi = spi_controller_get_devdata(host);
157 err = ep93xx_spi_calc_divisors(host, xfer->speed_hz,
169 dev_dbg(&host->dev, "setup: mode %d, cpsr %d, scr %d, dss %d\n",
171 dev_dbg(&host->dev, "setup: cr0 %#x\n", cr0);
179 static void ep93xx_do_write(struct spi_controller *host)
181 struct ep93xx_spi *espi = spi_controller_get_devdata(host);
182 struct spi_transfer *xfer = host->cur_msg->state;
197 static void ep93xx_do_read(struct spi_controller *host)
199 struct ep93xx_spi *espi = spi_controller_get_devdata(host);
200 struct spi_transfer *xfer = host->cur_msg->state;
217 * @host: SPI host
226 static int ep93xx_spi_read_write(struct spi_controller *host)
228 struct ep93xx_spi *espi = spi_controller_get_devdata(host);
229 struct spi_transfer *xfer = host->cur_msg->state;
233 ep93xx_do_read(host);
239 ep93xx_do_write(host);
264 * @host: SPI host
272 ep93xx_spi_dma_prepare(struct spi_controller *host,
275 struct ep93xx_spi *espi = spi_controller_get_devdata(host);
276 struct spi_transfer *xfer = host->cur_msg->state;
351 dev_warn(&host->dev, "len = %zu expected 0!\n", len);
370 * @host: SPI host
376 static void ep93xx_spi_dma_finish(struct spi_controller *host,
379 struct ep93xx_spi *espi = spi_controller_get_devdata(host);
396 struct spi_controller *host = callback_param;
398 ep93xx_spi_dma_finish(host, DMA_TO_DEVICE);
399 ep93xx_spi_dma_finish(host, DMA_FROM_DEVICE);
401 spi_finalize_current_transfer(host);
404 static int ep93xx_spi_dma_transfer(struct spi_controller *host)
406 struct ep93xx_spi *espi = spi_controller_get_devdata(host);
409 rxd = ep93xx_spi_dma_prepare(host, DMA_FROM_DEVICE);
411 dev_err(&host->dev, "DMA RX failed: %ld\n", PTR_ERR(rxd));
415 txd = ep93xx_spi_dma_prepare(host, DMA_TO_DEVICE);
417 ep93xx_spi_dma_finish(host, DMA_FROM_DEVICE);
418 dev_err(&host->dev, "DMA TX failed: %ld\n", PTR_ERR(txd));
424 rxd->callback_param = host;
439 struct spi_controller *host = dev_id;
440 struct ep93xx_spi *espi = spi_controller_get_devdata(host);
450 dev_warn(&host->dev,
452 host->cur_msg->status = -EIO;
458 if (ep93xx_spi_read_write(host)) {
477 spi_finalize_current_transfer(host);
482 static int ep93xx_spi_transfer_one(struct spi_controller *host,
486 struct ep93xx_spi *espi = spi_controller_get_devdata(host);
490 ret = ep93xx_spi_chip_setup(host, spi, xfer);
492 dev_err(&host->dev, "failed to setup chip for transfer\n");
496 host->cur_msg->state = xfer;
506 return ep93xx_spi_dma_transfer(host);
509 ep93xx_spi_read_write(host);
519 static int ep93xx_spi_prepare_message(struct spi_controller *host,
522 struct ep93xx_spi *espi = spi_controller_get_devdata(host);
531 dev_warn(&host->dev,
547 static int ep93xx_spi_prepare_hardware(struct spi_controller *host)
549 struct ep93xx_spi *espi = spi_controller_get_devdata(host);
564 static int ep93xx_spi_unprepare_hardware(struct spi_controller *host)
566 struct ep93xx_spi *espi = spi_controller_get_devdata(host);
649 struct spi_controller *host;
666 host = spi_alloc_host(&pdev->dev, sizeof(*espi));
667 if (!host)
670 host->use_gpio_descriptors = true;
671 host->prepare_transfer_hardware = ep93xx_spi_prepare_hardware;
672 host->unprepare_transfer_hardware = ep93xx_spi_unprepare_hardware;
673 host->prepare_message = ep93xx_spi_prepare_message;
674 host->transfer_one = ep93xx_spi_transfer_one;
675 host->bus_num = pdev->id;
676 host->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH;
677 host->bits_per_word_mask = SPI_BPW_RANGE_MASK(4, 16);
682 host->num_chipselect = 0;
684 platform_set_drvdata(pdev, host);
686 espi = spi_controller_get_devdata(host);
699 host->max_speed_hz = clk_get_rate(espi->clk) / 2;
700 host->min_speed_hz = clk_get_rate(espi->clk) / (254 * 256);
710 0, "ep93xx-spi", host);
722 error = devm_spi_register_controller(&pdev->dev, host);
724 dev_err(&pdev->dev, "failed to register SPI host\n");
736 spi_controller_put(host);
743 struct spi_controller *host = platform_get_drvdata(pdev);
744 struct ep93xx_spi *espi = spi_controller_get_devdata(host);