Lines Matching refs:spi
209 static void davinci_spi_chipselect(struct spi_device *spi, int value) in davinci_spi_chipselect() argument
213 struct davinci_spi_config *spicfg = spi->controller_data; in davinci_spi_chipselect()
214 u8 chip_sel = spi->chip_select; in davinci_spi_chipselect()
219 dspi = spi_master_get_devdata(spi->master); in davinci_spi_chipselect()
222 if (spi->cs_gpio >= 0) { in davinci_spi_chipselect()
225 gpio = spi->cs_gpio; in davinci_spi_chipselect()
238 gpio_set_value(gpio, spi->mode & SPI_CS_HIGH); in davinci_spi_chipselect()
240 gpio_set_value(gpio, !(spi->mode & SPI_CS_HIGH)); in davinci_spi_chipselect()
283 static int davinci_spi_setup_transfer(struct spi_device *spi, in davinci_spi_setup_transfer() argument
293 dspi = spi_master_get_devdata(spi->master); in davinci_spi_setup_transfer()
294 spicfg = spi->controller_data; in davinci_spi_setup_transfer()
305 bits_per_word = spi->bits_per_word; in davinci_spi_setup_transfer()
314 dspi->bytes_per_word[spi->chip_select] = 1; in davinci_spi_setup_transfer()
318 dspi->bytes_per_word[spi->chip_select] = 2; in davinci_spi_setup_transfer()
322 hz = spi->max_speed_hz; in davinci_spi_setup_transfer()
332 if (spi->mode & SPI_LSB_FIRST) in davinci_spi_setup_transfer()
335 if (spi->mode & SPI_CPOL) in davinci_spi_setup_transfer()
338 if (!(spi->mode & SPI_CPHA)) in davinci_spi_setup_transfer()
381 if (spi->mode & SPI_READY) { in davinci_spi_setup_transfer()
397 static int davinci_spi_of_setup(struct spi_device *spi) in davinci_spi_of_setup() argument
399 struct davinci_spi_config *spicfg = spi->controller_data; in davinci_spi_of_setup()
400 struct device_node *np = spi->dev.of_node; in davinci_spi_of_setup()
411 spi->controller_data = spicfg; in davinci_spi_of_setup()
423 static int davinci_spi_setup(struct spi_device *spi) in davinci_spi_setup() argument
428 struct spi_master *master = spi->master; in davinci_spi_setup()
429 struct device_node *np = spi->dev.of_node; in davinci_spi_setup()
432 dspi = spi_master_get_devdata(spi->master); in davinci_spi_setup()
435 if (!(spi->mode & SPI_NO_CS)) { in davinci_spi_setup()
436 if (np && (master->cs_gpios != NULL) && (spi->cs_gpio >= 0)) { in davinci_spi_setup()
438 spi->cs_gpio, !(spi->mode & SPI_CS_HIGH)); in davinci_spi_setup()
441 spi->chip_select < pdata->num_chipselect && in davinci_spi_setup()
442 pdata->chip_sel[spi->chip_select] != SPI_INTERN_CS) { in davinci_spi_setup()
443 spi->cs_gpio = pdata->chip_sel[spi->chip_select]; in davinci_spi_setup()
445 spi->cs_gpio, !(spi->mode & SPI_CS_HIGH)); in davinci_spi_setup()
450 dev_err(&spi->dev, "GPIO %d setup failed (%d)\n", in davinci_spi_setup()
451 spi->cs_gpio, retval); in davinci_spi_setup()
456 set_io_bits(dspi->base + SPIPC0, 1 << spi->chip_select); in davinci_spi_setup()
459 if (spi->mode & SPI_READY) in davinci_spi_setup()
462 if (spi->mode & SPI_LOOP) in davinci_spi_setup()
467 return davinci_spi_of_setup(spi); in davinci_spi_setup()
470 static void davinci_spi_cleanup(struct spi_device *spi) in davinci_spi_cleanup() argument
472 struct davinci_spi_config *spicfg = spi->controller_data; in davinci_spi_cleanup()
474 spi->controller_data = NULL; in davinci_spi_cleanup()
475 if (spi->dev.of_node) in davinci_spi_cleanup()
584 static int davinci_spi_bufs(struct spi_device *spi, struct spi_transfer *t) in davinci_spi_bufs() argument
596 dspi = spi_master_get_devdata(spi->master); in davinci_spi_bufs()
598 spicfg = (struct davinci_spi_config *)spi->controller_data; in davinci_spi_bufs()
603 data_type = dspi->bytes_per_word[spi->chip_select]; in davinci_spi_bufs()
656 t->rx_dma = dma_map_single(&spi->dev, buf, in davinci_spi_bufs()
670 t->tx_dma = dma_map_single(&spi->dev, buf, in davinci_spi_bufs()
724 dma_unmap_single(&spi->dev, t->rx_dma, in davinci_spi_bufs()
726 dma_unmap_single(&spi->dev, t->tx_dma, in davinci_spi_bufs()
741 dev_name(&spi->dev)); in davinci_spi_bufs()
746 dev_err(&spi->dev, "SPI data transfer error\n"); in davinci_spi_bufs()
753 dma_unmap_single(&spi->dev, t->tx_dma, t->len, DMA_TO_DEVICE); in davinci_spi_bufs()
755 dma_unmap_single(&spi->dev, t->rx_dma, t->len, DMA_FROM_DEVICE); in davinci_spi_bufs()