Lines Matching defs:spi_gpio
16 #include <linux/spi/spi_gpio.h>
25 * platform_device->driver_data ... points to spi_gpio
29 * spi->controller->dev.driver_data ... points to spi_gpio->bitbang
32 struct spi_gpio {
66 #define DRIVER_NAME "spi_gpio"
74 static inline struct spi_gpio *__pure
78 struct spi_gpio *spi_gpio;
81 spi_gpio = container_of(bang, struct spi_gpio, bitbang);
82 return spi_gpio;
88 struct spi_gpio *spi_gpio = spi_to_spi_gpio(spi);
90 gpiod_set_value_cansleep(spi_gpio->sck, is_on);
95 struct spi_gpio *spi_gpio = spi_to_spi_gpio(spi);
97 gpiod_set_value_cansleep(spi_gpio->mosi, is_on);
102 struct spi_gpio *spi_gpio = spi_to_spi_gpio(spi);
105 return !!gpiod_get_value_cansleep(spi_gpio->mosi);
107 return !!gpiod_get_value_cansleep(spi_gpio->miso);
224 struct spi_gpio *spi_gpio = spi_to_spi_gpio(spi);
228 gpiod_set_value_cansleep(spi_gpio->sck, spi->mode & SPI_CPOL);
231 if (spi_gpio->cs_gpios) {
232 struct gpio_desc *cs = spi_gpio->cs_gpios[spi_get_chipselect(spi, 0)];
243 struct spi_gpio *spi_gpio = spi_to_spi_gpio(spi);
249 if (spi_gpio->cs_gpios) {
250 cs = spi_gpio->cs_gpios[spi_get_chipselect(spi, 0)];
264 struct spi_gpio *spi_gpio = spi_to_spi_gpio(spi);
268 return gpiod_direction_output(spi_gpio->mosi, 1);
279 ret = gpiod_direction_input(spi_gpio->mosi);
292 gpiod_set_value_cansleep(spi_gpio->sck,
294 gpiod_set_value_cansleep(spi_gpio->sck,
315 static int spi_gpio_request(struct device *dev, struct spi_gpio *spi_gpio)
317 spi_gpio->mosi = devm_gpiod_get_optional(dev, "mosi", GPIOD_OUT_LOW);
318 if (IS_ERR(spi_gpio->mosi))
319 return PTR_ERR(spi_gpio->mosi);
321 spi_gpio->miso = devm_gpiod_get_optional(dev, "miso", GPIOD_IN);
322 if (IS_ERR(spi_gpio->miso))
323 return PTR_ERR(spi_gpio->miso);
325 spi_gpio->sck = devm_gpiod_get(dev, "sck", GPIOD_OUT_LOW);
326 return PTR_ERR_OR_ZERO(spi_gpio->sck);
357 struct spi_gpio *spi_gpio = spi_controller_get_devdata(host);
370 spi_gpio->cs_gpios = devm_kcalloc(dev, host->num_chipselect,
371 sizeof(*spi_gpio->cs_gpios),
373 if (!spi_gpio->cs_gpios)
377 spi_gpio->cs_gpios[i] = devm_gpiod_get_index(dev, "cs", i,
379 if (IS_ERR(spi_gpio->cs_gpios[i]))
380 return PTR_ERR(spi_gpio->cs_gpios[i]);
390 struct spi_gpio *spi_gpio;
394 host = devm_spi_alloc_host(dev, sizeof(*spi_gpio));
406 spi_gpio = spi_controller_get_devdata(host);
408 status = spi_gpio_request(dev, spi_gpio);
415 if (!spi_gpio->mosi) {
429 bb = &spi_gpio->bitbang;
453 status = spi_bitbang_init(&spi_gpio->bitbang);