Lines Matching full:spi

2  * SPI controller driver for the Atheros AR71XX/AR724X/AR913X SoCs
6 * This driver has been based on the spi-gpio.c:
23 #include <linux/spi/spi.h>
24 #include <linux/spi/spi_bitbang.h>
31 #define DRV_NAME "ath79-spi"
50 static inline struct ath79_spi *ath79_spidev_to_sp(struct spi_device *spi) in ath79_spidev_to_sp() argument
52 return spi_master_get_devdata(spi->master); in ath79_spidev_to_sp()
55 static void ath79_spi_chipselect(struct spi_device *spi, int is_active) in ath79_spi_chipselect() argument
57 struct ath79_spi *sp = ath79_spidev_to_sp(spi); in ath79_spi_chipselect()
58 int cs_high = (spi->mode & SPI_CS_HIGH) ? is_active : !is_active; in ath79_spi_chipselect()
62 if (spi->mode & SPI_CPOL) in ath79_spi_chipselect()
70 if (spi->chip_select) { in ath79_spi_chipselect()
71 struct ath79_spi_controller_data *cdata = spi->controller_data; in ath79_spi_chipselect()
73 /* SPI is normally active-low */ in ath79_spi_chipselect()
86 static int ath79_spi_setup_cs(struct spi_device *spi) in ath79_spi_setup_cs() argument
88 struct ath79_spi *sp = ath79_spidev_to_sp(spi); in ath79_spi_setup_cs()
91 cdata = spi->controller_data; in ath79_spi_setup_cs()
92 if (spi->chip_select && !cdata) in ath79_spi_setup_cs()
105 if (spi->chip_select) { in ath79_spi_setup_cs()
108 status = gpio_request(cdata->gpio, dev_name(&spi->dev)); in ath79_spi_setup_cs()
113 spi->mode & SPI_CS_HIGH); in ath79_spi_setup_cs()
119 if (spi->mode & SPI_CS_HIGH) in ath79_spi_setup_cs()
129 static void ath79_spi_cleanup_cs(struct spi_device *spi) in ath79_spi_cleanup_cs() argument
131 struct ath79_spi *sp = ath79_spidev_to_sp(spi); in ath79_spi_cleanup_cs()
133 if (spi->chip_select) { in ath79_spi_cleanup_cs()
134 struct ath79_spi_controller_data *cdata = spi->controller_data; in ath79_spi_cleanup_cs()
144 static int ath79_spi_setup(struct spi_device *spi) in ath79_spi_setup() argument
148 if (spi->bits_per_word > 32) in ath79_spi_setup()
151 if (!spi->controller_state) { in ath79_spi_setup()
152 status = ath79_spi_setup_cs(spi); in ath79_spi_setup()
157 status = spi_bitbang_setup(spi); in ath79_spi_setup()
158 if (status && !spi->controller_state) in ath79_spi_setup()
159 ath79_spi_cleanup_cs(spi); in ath79_spi_setup()
164 static void ath79_spi_cleanup(struct spi_device *spi) in ath79_spi_cleanup() argument
166 ath79_spi_cleanup_cs(spi); in ath79_spi_cleanup()
167 spi_bitbang_cleanup(spi); in ath79_spi_cleanup()
170 static u32 ath79_spi_txrx_mode0(struct spi_device *spi, unsigned nsecs, in ath79_spi_txrx_mode0() argument
173 struct ath79_spi *sp = ath79_spidev_to_sp(spi); in ath79_spi_txrx_mode0()
205 dev_err(&pdev->dev, "failed to allocate spi master\n"); in ath79_spi_probe()
279 MODULE_DESCRIPTION("SPI controller driver for Atheros AR71XX/AR724X/AR913X");