Lines Matching full:master
106 * @master: SPI master
111 static int ep93xx_spi_calc_divisors(struct spi_master *master, in ep93xx_spi_calc_divisors() argument
114 struct ep93xx_spi *espi = spi_master_get_devdata(master); in ep93xx_spi_calc_divisors()
122 rate = clamp(rate, master->min_speed_hz, master->max_speed_hz); in ep93xx_spi_calc_divisors()
145 static int ep93xx_spi_chip_setup(struct spi_master *master, in ep93xx_spi_chip_setup() argument
149 struct ep93xx_spi *espi = spi_master_get_devdata(master); in ep93xx_spi_chip_setup()
156 err = ep93xx_spi_calc_divisors(master, xfer->speed_hz, in ep93xx_spi_chip_setup()
165 dev_dbg(&master->dev, "setup: mode %d, cpsr %d, scr %d, dss %d\n", in ep93xx_spi_chip_setup()
167 dev_dbg(&master->dev, "setup: cr0 %#x\n", cr0); in ep93xx_spi_chip_setup()
175 static void ep93xx_do_write(struct spi_master *master) in ep93xx_do_write() argument
177 struct ep93xx_spi *espi = spi_master_get_devdata(master); in ep93xx_do_write()
178 struct spi_transfer *xfer = master->cur_msg->state; in ep93xx_do_write()
193 static void ep93xx_do_read(struct spi_master *master) in ep93xx_do_read() argument
195 struct ep93xx_spi *espi = spi_master_get_devdata(master); in ep93xx_do_read()
196 struct spi_transfer *xfer = master->cur_msg->state; in ep93xx_do_read()
222 static int ep93xx_spi_read_write(struct spi_master *master) in ep93xx_spi_read_write() argument
224 struct ep93xx_spi *espi = spi_master_get_devdata(master); in ep93xx_spi_read_write()
225 struct spi_transfer *xfer = master->cur_msg->state; in ep93xx_spi_read_write()
229 ep93xx_do_read(master); in ep93xx_spi_read_write()
235 ep93xx_do_write(master); in ep93xx_spi_read_write()
260 * @master: SPI master
268 ep93xx_spi_dma_prepare(struct spi_master *master, in ep93xx_spi_dma_prepare() argument
271 struct ep93xx_spi *espi = spi_master_get_devdata(master); in ep93xx_spi_dma_prepare()
272 struct spi_transfer *xfer = master->cur_msg->state; in ep93xx_spi_dma_prepare()
347 dev_warn(&master->dev, "len = %zu expected 0!\n", len); in ep93xx_spi_dma_prepare()
366 * @master: SPI master
372 static void ep93xx_spi_dma_finish(struct spi_master *master, in ep93xx_spi_dma_finish() argument
375 struct ep93xx_spi *espi = spi_master_get_devdata(master); in ep93xx_spi_dma_finish()
392 struct spi_master *master = callback_param; in ep93xx_spi_dma_callback() local
394 ep93xx_spi_dma_finish(master, DMA_TO_DEVICE); in ep93xx_spi_dma_callback()
395 ep93xx_spi_dma_finish(master, DMA_FROM_DEVICE); in ep93xx_spi_dma_callback()
397 spi_finalize_current_transfer(master); in ep93xx_spi_dma_callback()
400 static int ep93xx_spi_dma_transfer(struct spi_master *master) in ep93xx_spi_dma_transfer() argument
402 struct ep93xx_spi *espi = spi_master_get_devdata(master); in ep93xx_spi_dma_transfer()
405 rxd = ep93xx_spi_dma_prepare(master, DMA_FROM_DEVICE); in ep93xx_spi_dma_transfer()
407 dev_err(&master->dev, "DMA RX failed: %ld\n", PTR_ERR(rxd)); in ep93xx_spi_dma_transfer()
411 txd = ep93xx_spi_dma_prepare(master, DMA_TO_DEVICE); in ep93xx_spi_dma_transfer()
413 ep93xx_spi_dma_finish(master, DMA_FROM_DEVICE); in ep93xx_spi_dma_transfer()
414 dev_err(&master->dev, "DMA TX failed: %ld\n", PTR_ERR(txd)); in ep93xx_spi_dma_transfer()
420 rxd->callback_param = master; in ep93xx_spi_dma_transfer()
435 struct spi_master *master = dev_id; in ep93xx_spi_interrupt() local
436 struct ep93xx_spi *espi = spi_master_get_devdata(master); in ep93xx_spi_interrupt()
446 dev_warn(&master->dev, in ep93xx_spi_interrupt()
448 master->cur_msg->status = -EIO; in ep93xx_spi_interrupt()
454 if (ep93xx_spi_read_write(master)) { in ep93xx_spi_interrupt()
473 spi_finalize_current_transfer(master); in ep93xx_spi_interrupt()
478 static int ep93xx_spi_transfer_one(struct spi_master *master, in ep93xx_spi_transfer_one() argument
482 struct ep93xx_spi *espi = spi_master_get_devdata(master); in ep93xx_spi_transfer_one()
486 ret = ep93xx_spi_chip_setup(master, spi, xfer); in ep93xx_spi_transfer_one()
488 dev_err(&master->dev, "failed to setup chip for transfer\n"); in ep93xx_spi_transfer_one()
492 master->cur_msg->state = xfer; in ep93xx_spi_transfer_one()
502 return ep93xx_spi_dma_transfer(master); in ep93xx_spi_transfer_one()
505 ep93xx_spi_read_write(master); in ep93xx_spi_transfer_one()
515 static int ep93xx_spi_prepare_message(struct spi_master *master, in ep93xx_spi_prepare_message() argument
518 struct ep93xx_spi *espi = spi_master_get_devdata(master); in ep93xx_spi_prepare_message()
527 dev_warn(&master->dev, in ep93xx_spi_prepare_message()
543 static int ep93xx_spi_prepare_hardware(struct spi_master *master) in ep93xx_spi_prepare_hardware() argument
545 struct ep93xx_spi *espi = spi_master_get_devdata(master); in ep93xx_spi_prepare_hardware()
560 static int ep93xx_spi_unprepare_hardware(struct spi_master *master) in ep93xx_spi_unprepare_hardware() argument
562 struct ep93xx_spi *espi = spi_master_get_devdata(master); in ep93xx_spi_unprepare_hardware()
645 struct spi_master *master; in ep93xx_spi_probe() local
668 master = spi_alloc_master(&pdev->dev, sizeof(*espi)); in ep93xx_spi_probe()
669 if (!master) in ep93xx_spi_probe()
672 master->use_gpio_descriptors = true; in ep93xx_spi_probe()
673 master->prepare_transfer_hardware = ep93xx_spi_prepare_hardware; in ep93xx_spi_probe()
674 master->unprepare_transfer_hardware = ep93xx_spi_unprepare_hardware; in ep93xx_spi_probe()
675 master->prepare_message = ep93xx_spi_prepare_message; in ep93xx_spi_probe()
676 master->transfer_one = ep93xx_spi_transfer_one; in ep93xx_spi_probe()
677 master->bus_num = pdev->id; in ep93xx_spi_probe()
678 master->mode_bits = SPI_CPOL | SPI_CPHA | SPI_CS_HIGH; in ep93xx_spi_probe()
679 master->bits_per_word_mask = SPI_BPW_RANGE_MASK(4, 16); in ep93xx_spi_probe()
684 master->num_chipselect = 0; in ep93xx_spi_probe()
686 platform_set_drvdata(pdev, master); in ep93xx_spi_probe()
688 espi = spi_master_get_devdata(master); in ep93xx_spi_probe()
701 master->max_speed_hz = clk_get_rate(espi->clk) / 2; in ep93xx_spi_probe()
702 master->min_speed_hz = clk_get_rate(espi->clk) / (254 * 256); in ep93xx_spi_probe()
713 0, "ep93xx-spi", master); in ep93xx_spi_probe()
725 error = devm_spi_register_master(&pdev->dev, master); in ep93xx_spi_probe()
727 dev_err(&pdev->dev, "failed to register SPI master\n"); in ep93xx_spi_probe()
739 spi_master_put(master); in ep93xx_spi_probe()
746 struct spi_master *master = platform_get_drvdata(pdev); in ep93xx_spi_remove() local
747 struct ep93xx_spi *espi = spi_master_get_devdata(master); in ep93xx_spi_remove()