Lines Matching full:spi_gpio
17 #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 { struct
42 #define DRIVER_NAME "spi_gpio" argument
46 static inline struct spi_gpio *__pure
50 struct spi_gpio *spi_gpio; in spi_to_spi_gpio() local
53 spi_gpio = container_of(bang, struct spi_gpio, bitbang); in spi_to_spi_gpio()
54 return spi_gpio; in spi_to_spi_gpio()
60 struct spi_gpio *spi_gpio = spi_to_spi_gpio(spi); in setsck() local
62 gpiod_set_value_cansleep(spi_gpio->sck, is_on); in setsck()
67 struct spi_gpio *spi_gpio = spi_to_spi_gpio(spi); in setmosi() local
69 gpiod_set_value_cansleep(spi_gpio->mosi, is_on); in setmosi()
74 struct spi_gpio *spi_gpio = spi_to_spi_gpio(spi); in getmiso() local
77 return !!gpiod_get_value_cansleep(spi_gpio->mosi); in getmiso()
79 return !!gpiod_get_value_cansleep(spi_gpio->miso); in getmiso()
196 struct spi_gpio *spi_gpio = spi_to_spi_gpio(spi); in spi_gpio_chipselect() local
200 gpiod_set_value_cansleep(spi_gpio->sck, spi->mode & SPI_CPOL); in spi_gpio_chipselect()
203 if (spi_gpio->cs_gpios) { in spi_gpio_chipselect()
204 struct gpio_desc *cs = spi_gpio->cs_gpios[spi_get_chipselect(spi, 0)]; in spi_gpio_chipselect()
213 struct spi_gpio *spi_gpio = spi_to_spi_gpio(spi); in spi_gpio_set_mosi_idle() local
215 gpiod_set_value_cansleep(spi_gpio->mosi, in spi_gpio_set_mosi_idle()
222 struct spi_gpio *spi_gpio = spi_to_spi_gpio(spi); in spi_gpio_setup() local
229 if (spi_gpio->cs_gpios) { in spi_gpio_setup()
230 cs = spi_gpio->cs_gpios[spi_get_chipselect(spi, 0)]; in spi_gpio_setup()
243 struct spi_gpio *spi_gpio = spi_to_spi_gpio(spi); in spi_gpio_set_direction() local
247 return gpiod_direction_output(spi_gpio->mosi, 1); in spi_gpio_set_direction()
258 ret = gpiod_direction_input(spi_gpio->mosi); in spi_gpio_set_direction()
271 gpiod_set_value_cansleep(spi_gpio->sck, in spi_gpio_set_direction()
273 gpiod_set_value_cansleep(spi_gpio->sck, in spi_gpio_set_direction()
294 static int spi_gpio_request(struct device *dev, struct spi_gpio *spi_gpio) in spi_gpio_request() argument
296 spi_gpio->mosi = devm_gpiod_get_optional(dev, "mosi", GPIOD_OUT_LOW); in spi_gpio_request()
297 if (IS_ERR(spi_gpio->mosi)) in spi_gpio_request()
298 return PTR_ERR(spi_gpio->mosi); in spi_gpio_request()
300 spi_gpio->miso = devm_gpiod_get_optional(dev, "miso", GPIOD_IN); in spi_gpio_request()
301 if (IS_ERR(spi_gpio->miso)) in spi_gpio_request()
302 return PTR_ERR(spi_gpio->miso); in spi_gpio_request()
304 spi_gpio->sck = devm_gpiod_get(dev, "sck", GPIOD_OUT_LOW); in spi_gpio_request()
305 return PTR_ERR_OR_ZERO(spi_gpio->sck); in spi_gpio_request()
313 struct spi_gpio *spi_gpio = spi_controller_get_devdata(host); in spi_gpio_probe_pdata() local
324 spi_gpio->cs_gpios = devm_kcalloc(dev, host->num_chipselect, in spi_gpio_probe_pdata()
325 sizeof(*spi_gpio->cs_gpios), in spi_gpio_probe_pdata()
327 if (!spi_gpio->cs_gpios) in spi_gpio_probe_pdata()
331 spi_gpio->cs_gpios[i] = devm_gpiod_get_index(dev, "cs", i, in spi_gpio_probe_pdata()
333 if (IS_ERR(spi_gpio->cs_gpios[i])) in spi_gpio_probe_pdata()
334 return PTR_ERR(spi_gpio->cs_gpios[i]); in spi_gpio_probe_pdata()
344 struct spi_gpio *spi_gpio; in spi_gpio_probe() local
349 host = devm_spi_alloc_host(dev, sizeof(*spi_gpio)); in spi_gpio_probe()
362 spi_gpio = spi_controller_get_devdata(host); in spi_gpio_probe()
364 status = spi_gpio_request(dev, spi_gpio); in spi_gpio_probe()
372 if (!spi_gpio->mosi) { in spi_gpio_probe()
386 bb = &spi_gpio->bitbang; in spi_gpio_probe()
411 status = spi_bitbang_init(&spi_gpio->bitbang); in spi_gpio_probe()