Lines Matching defs:spi

20 #include <linux/spi/spi.h>
21 #include <linux/spi/spi_bitbang.h>
459 static void spi_sirfsoc_cmd_transfer(struct spi_device *spi,
466 sspi = spi_master_get_devdata(spi->master);
470 if (sspi->word_width == 1 && !(spi->mode & SPI_LSB_FIRST))
474 (!(spi->mode & SPI_LSB_FIRST)))
482 dev_err(&spi->dev, "cmd transfer timeout\n");
488 static void spi_sirfsoc_dma_transfer(struct spi_device *spi,
495 sspi = spi_master_get_devdata(spi->master);
547 sspi->dst_start = dma_map_single(&spi->dev, sspi->rx, t->len,
556 sspi->src_start = dma_map_single(&spi->dev, (void *)sspi->tx, t->len,
579 dev_err(&spi->dev, "transfer timeout\n");
589 dev_err(&spi->dev, "transfer timeout\n");
595 dma_unmap_single(&spi->dev, sspi->src_start, t->len, DMA_TO_DEVICE);
596 dma_unmap_single(&spi->dev, sspi->dst_start, t->len, DMA_FROM_DEVICE);
607 static void spi_sirfsoc_pio_transfer(struct spi_device *spi,
614 sspi = spi_master_get_devdata(spi->master);
686 dev_err(&spi->dev, "transfer timeout\n");
704 static int spi_sirfsoc_transfer(struct spi_device *spi, struct spi_transfer *t)
708 sspi = spi_master_get_devdata(spi->master);
720 spi_sirfsoc_cmd_transfer(spi, t);
722 spi_sirfsoc_dma_transfer(spi, t);
724 spi_sirfsoc_pio_transfer(spi, t);
729 static void spi_sirfsoc_chipselect(struct spi_device *spi, int value)
731 struct sirfsoc_spi *sspi = spi_master_get_devdata(spi->master);
741 if (spi->mode & SPI_CS_HIGH)
747 if (spi->mode & SPI_CS_HIGH)
761 if (spi->mode & SPI_CS_HIGH)
767 if (spi->mode & SPI_CS_HIGH)
780 gpio_direction_output(spi->cs_gpio,
781 spi->mode & SPI_CS_HIGH ? 1 : 0);
784 gpio_direction_output(spi->cs_gpio,
785 spi->mode & SPI_CS_HIGH ? 0 : 1);
791 static int spi_sirfsoc_config_mode(struct spi_device *spi)
796 sspi = spi_master_get_devdata(spi->master);
799 if (!(spi->mode & SPI_CS_HIGH)) {
806 if (!(spi->mode & SPI_LSB_FIRST)) {
813 if (spi->mode & SPI_CPOL) {
824 if (((spi->mode & SPI_CPOL) && (spi->mode & SPI_CPHA)) ||
825 (!(spi->mode & SPI_CPOL) && !(spi->mode & SPI_CPHA))) {
870 spi_sirfsoc_setup_transfer(struct spi_device *spi, struct spi_transfer *t)
877 sspi = spi_master_get_devdata(spi->master);
879 bits_per_word = (t) ? t->bits_per_word : spi->bits_per_word;
880 hz = t && t->speed_hz ? t->speed_hz : spi->max_speed_hz;
884 dev_err(&spi->dev, "Speed %d not supported\n", hz);
907 dev_err(&spi->dev, "bpw %d not supported\n", bits_per_word);
963 spi_sirfsoc_config_mode(spi);
994 static int spi_sirfsoc_setup(struct spi_device *spi)
999 sspi = spi_master_get_devdata(spi->master);
1000 if (spi->cs_gpio == -ENOENT)
1004 if (!spi_get_ctldata(spi)) {
1010 ret = gpio_is_valid(spi->cs_gpio);
1012 dev_err(&spi->dev, "no valid gpio\n");
1016 ret = gpio_request(spi->cs_gpio, DRIVER_NAME);
1018 dev_err(&spi->dev, "failed to request gpio\n");
1021 spi_set_ctldata(spi, cs);
1024 spi_sirfsoc_config_mode(spi);
1025 spi_sirfsoc_chipselect(spi, BITBANG_CS_INACTIVE);
1030 static void spi_sirfsoc_cleanup(struct spi_device *spi)
1032 if (spi_get_ctldata(spi)) {
1033 gpio_free(spi->cs_gpio);
1034 kfree(spi_get_ctldata(spi));
1062 { .compatible = "sirf,prima2-spi", .data = &sirf_real_spi},
1063 { .compatible = "sirf,prima2-usp-spi", .data = &sirf_usp_spi_p2},
1064 { .compatible = "sirf,atlas7-usp-spi", .data = &sirf_usp_spi_a7},