Lines Matching refs:spi

308 static void spi_sirfsoc_cmd_transfer(struct spi_device *spi,  in spi_sirfsoc_cmd_transfer()  argument
315 sspi = spi_master_get_devdata(spi->master); in spi_sirfsoc_cmd_transfer()
319 if (sspi->word_width == 1 && !(spi->mode & SPI_LSB_FIRST)) in spi_sirfsoc_cmd_transfer()
323 (!(spi->mode & SPI_LSB_FIRST))) in spi_sirfsoc_cmd_transfer()
331 dev_err(&spi->dev, "cmd transfer timeout\n"); in spi_sirfsoc_cmd_transfer()
337 static void spi_sirfsoc_dma_transfer(struct spi_device *spi, in spi_sirfsoc_dma_transfer() argument
344 sspi = spi_master_get_devdata(spi->master); in spi_sirfsoc_dma_transfer()
365 sspi->dst_start = dma_map_single(&spi->dev, sspi->rx, t->len, in spi_sirfsoc_dma_transfer()
374 sspi->src_start = dma_map_single(&spi->dev, (void *)sspi->tx, t->len, in spi_sirfsoc_dma_transfer()
390 dev_err(&spi->dev, "transfer timeout\n"); in spi_sirfsoc_dma_transfer()
400 dev_err(&spi->dev, "transfer timeout\n"); in spi_sirfsoc_dma_transfer()
403 dma_unmap_single(&spi->dev, sspi->src_start, t->len, DMA_TO_DEVICE); in spi_sirfsoc_dma_transfer()
404 dma_unmap_single(&spi->dev, sspi->dst_start, t->len, DMA_FROM_DEVICE); in spi_sirfsoc_dma_transfer()
412 static void spi_sirfsoc_pio_transfer(struct spi_device *spi, in spi_sirfsoc_pio_transfer() argument
418 sspi = spi_master_get_devdata(spi->master); in spi_sirfsoc_pio_transfer()
450 dev_err(&spi->dev, "transfer timeout\n"); in spi_sirfsoc_pio_transfer()
461 static int spi_sirfsoc_transfer(struct spi_device *spi, struct spi_transfer *t) in spi_sirfsoc_transfer() argument
464 sspi = spi_master_get_devdata(spi->master); in spi_sirfsoc_transfer()
477 spi_sirfsoc_cmd_transfer(spi, t); in spi_sirfsoc_transfer()
479 spi_sirfsoc_dma_transfer(spi, t); in spi_sirfsoc_transfer()
481 spi_sirfsoc_pio_transfer(spi, t); in spi_sirfsoc_transfer()
486 static void spi_sirfsoc_chipselect(struct spi_device *spi, int value) in spi_sirfsoc_chipselect() argument
488 struct sirfsoc_spi *sspi = spi_master_get_devdata(spi->master); in spi_sirfsoc_chipselect()
494 if (spi->mode & SPI_CS_HIGH) in spi_sirfsoc_chipselect()
500 if (spi->mode & SPI_CS_HIGH) in spi_sirfsoc_chipselect()
510 gpio_direction_output(spi->cs_gpio, in spi_sirfsoc_chipselect()
511 spi->mode & SPI_CS_HIGH ? 1 : 0); in spi_sirfsoc_chipselect()
514 gpio_direction_output(spi->cs_gpio, in spi_sirfsoc_chipselect()
515 spi->mode & SPI_CS_HIGH ? 0 : 1); in spi_sirfsoc_chipselect()
522 spi_sirfsoc_setup_transfer(struct spi_device *spi, struct spi_transfer *t) in spi_sirfsoc_setup_transfer() argument
531 sspi = spi_master_get_devdata(spi->master); in spi_sirfsoc_setup_transfer()
533 bits_per_word = (t) ? t->bits_per_word : spi->bits_per_word; in spi_sirfsoc_setup_transfer()
534 hz = t && t->speed_hz ? t->speed_hz : spi->max_speed_hz; in spi_sirfsoc_setup_transfer()
538 dev_err(&spi->dev, "Speed %d not supported\n", hz); in spi_sirfsoc_setup_transfer()
571 if (!(spi->mode & SPI_CS_HIGH)) in spi_sirfsoc_setup_transfer()
573 if (!(spi->mode & SPI_LSB_FIRST)) in spi_sirfsoc_setup_transfer()
575 if (spi->mode & SPI_CPOL) in spi_sirfsoc_setup_transfer()
582 if (((spi->mode & SPI_CPOL) && (spi->mode & SPI_CPHA)) || in spi_sirfsoc_setup_transfer()
583 (!(spi->mode & SPI_CPOL) && !(spi->mode & SPI_CPHA))) in spi_sirfsoc_setup_transfer()
630 static int spi_sirfsoc_setup(struct spi_device *spi) in spi_sirfsoc_setup() argument
634 sspi = spi_master_get_devdata(spi->master); in spi_sirfsoc_setup()
636 if (spi->cs_gpio == -ENOENT) in spi_sirfsoc_setup()
640 return spi_sirfsoc_setup_transfer(spi, NULL); in spi_sirfsoc_setup()