Lines Matching refs:spi
211 static void davinci_spi_chipselect(struct spi_device *spi, int value) in davinci_spi_chipselect() argument
215 struct davinci_spi_config *spicfg = spi->controller_data; in davinci_spi_chipselect()
216 u8 chip_sel = spi->chip_select; in davinci_spi_chipselect()
219 dspi = spi_master_get_devdata(spi->master); in davinci_spi_chipselect()
230 if (spi->cs_gpio >= 0) { in davinci_spi_chipselect()
232 gpio_set_value(spi->cs_gpio, spi->mode & SPI_CS_HIGH); in davinci_spi_chipselect()
234 gpio_set_value(spi->cs_gpio, in davinci_spi_chipselect()
235 !(spi->mode & SPI_CS_HIGH)); in davinci_spi_chipselect()
279 static int davinci_spi_setup_transfer(struct spi_device *spi, in davinci_spi_setup_transfer() argument
289 dspi = spi_master_get_devdata(spi->master); in davinci_spi_setup_transfer()
290 spicfg = spi->controller_data; in davinci_spi_setup_transfer()
301 bits_per_word = spi->bits_per_word; in davinci_spi_setup_transfer()
310 dspi->bytes_per_word[spi->chip_select] = 1; in davinci_spi_setup_transfer()
314 dspi->bytes_per_word[spi->chip_select] = 2; in davinci_spi_setup_transfer()
318 hz = spi->max_speed_hz; in davinci_spi_setup_transfer()
328 if (spi->mode & SPI_LSB_FIRST) in davinci_spi_setup_transfer()
331 if (spi->mode & SPI_CPOL) in davinci_spi_setup_transfer()
334 if (!(spi->mode & SPI_CPHA)) in davinci_spi_setup_transfer()
377 if (spi->mode & SPI_READY) { in davinci_spi_setup_transfer()
393 static int davinci_spi_of_setup(struct spi_device *spi) in davinci_spi_of_setup() argument
395 struct davinci_spi_config *spicfg = spi->controller_data; in davinci_spi_of_setup()
396 struct device_node *np = spi->dev.of_node; in davinci_spi_of_setup()
407 spi->controller_data = spicfg; in davinci_spi_of_setup()
419 static int davinci_spi_setup(struct spi_device *spi) in davinci_spi_setup() argument
424 struct spi_master *master = spi->master; in davinci_spi_setup()
425 struct device_node *np = spi->dev.of_node; in davinci_spi_setup()
428 dspi = spi_master_get_devdata(spi->master); in davinci_spi_setup()
431 if (!(spi->mode & SPI_NO_CS)) { in davinci_spi_setup()
432 if (np && (master->cs_gpios != NULL) && (spi->cs_gpio >= 0)) { in davinci_spi_setup()
434 spi->cs_gpio, !(spi->mode & SPI_CS_HIGH)); in davinci_spi_setup()
437 spi->chip_select < pdata->num_chipselect && in davinci_spi_setup()
438 pdata->chip_sel[spi->chip_select] != SPI_INTERN_CS) { in davinci_spi_setup()
439 spi->cs_gpio = pdata->chip_sel[spi->chip_select]; in davinci_spi_setup()
441 spi->cs_gpio, !(spi->mode & SPI_CS_HIGH)); in davinci_spi_setup()
446 dev_err(&spi->dev, "GPIO %d setup failed (%d)\n", in davinci_spi_setup()
447 spi->cs_gpio, retval); in davinci_spi_setup()
452 set_io_bits(dspi->base + SPIPC0, 1 << spi->chip_select); in davinci_spi_setup()
455 if (spi->mode & SPI_READY) in davinci_spi_setup()
458 if (spi->mode & SPI_LOOP) in davinci_spi_setup()
463 return davinci_spi_of_setup(spi); in davinci_spi_setup()
466 static void davinci_spi_cleanup(struct spi_device *spi) in davinci_spi_cleanup() argument
468 struct davinci_spi_config *spicfg = spi->controller_data; in davinci_spi_cleanup()
470 spi->controller_data = NULL; in davinci_spi_cleanup()
471 if (spi->dev.of_node) in davinci_spi_cleanup()
580 static int davinci_spi_bufs(struct spi_device *spi, struct spi_transfer *t) in davinci_spi_bufs() argument
592 dspi = spi_master_get_devdata(spi->master); in davinci_spi_bufs()
594 spicfg = (struct davinci_spi_config *)spi->controller_data; in davinci_spi_bufs()
599 data_type = dspi->bytes_per_word[spi->chip_select]; in davinci_spi_bufs()
652 t->rx_dma = dma_map_single(&spi->dev, buf, in davinci_spi_bufs()
666 t->tx_dma = dma_map_single(&spi->dev, buf, in davinci_spi_bufs()
720 dma_unmap_single(&spi->dev, t->rx_dma, in davinci_spi_bufs()
722 dma_unmap_single(&spi->dev, t->tx_dma, in davinci_spi_bufs()
737 dev_name(&spi->dev)); in davinci_spi_bufs()
742 dev_err(&spi->dev, "SPI data transfer error\n"); in davinci_spi_bufs()
749 dma_unmap_single(&spi->dev, t->tx_dma, t->len, DMA_TO_DEVICE); in davinci_spi_bufs()
751 dma_unmap_single(&spi->dev, t->rx_dma, t->len, DMA_FROM_DEVICE); in davinci_spi_bufs()