Lines Matching refs:spi_gpio
33 struct spi_gpio { struct
75 static inline struct spi_gpio *__pure
79 struct spi_gpio *spi_gpio; in spi_to_spi_gpio() local
82 spi_gpio = container_of(bang, struct spi_gpio, bitbang); in spi_to_spi_gpio()
83 return spi_gpio; in spi_to_spi_gpio()
89 struct spi_gpio *spi_gpio = spi_to_spi_gpio(spi); in setsck() local
91 gpiod_set_value_cansleep(spi_gpio->sck, is_on); in setsck()
96 struct spi_gpio *spi_gpio = spi_to_spi_gpio(spi); in setmosi() local
98 gpiod_set_value_cansleep(spi_gpio->mosi, is_on); in setmosi()
103 struct spi_gpio *spi_gpio = spi_to_spi_gpio(spi); in getmiso() local
106 return !!gpiod_get_value_cansleep(spi_gpio->mosi); in getmiso()
108 return !!gpiod_get_value_cansleep(spi_gpio->miso); in getmiso()
201 struct spi_gpio *spi_gpio = spi_to_spi_gpio(spi); in spi_gpio_chipselect() local
205 gpiod_set_value_cansleep(spi_gpio->sck, spi->mode & SPI_CPOL); in spi_gpio_chipselect()
208 if (spi_gpio->cs_gpios) { in spi_gpio_chipselect()
209 struct gpio_desc *cs = spi_gpio->cs_gpios[spi->chip_select]; in spi_gpio_chipselect()
220 struct spi_gpio *spi_gpio = spi_to_spi_gpio(spi); in spi_gpio_setup() local
226 if (spi_gpio->cs_gpios) { in spi_gpio_setup()
227 cs = spi_gpio->cs_gpios[spi->chip_select]; in spi_gpio_setup()
241 struct spi_gpio *spi_gpio = spi_to_spi_gpio(spi); in spi_gpio_set_direction() local
245 return gpiod_direction_output(spi_gpio->mosi, 1); in spi_gpio_set_direction()
247 ret = gpiod_direction_input(spi_gpio->mosi); in spi_gpio_set_direction()
259 gpiod_set_value_cansleep(spi_gpio->sck, in spi_gpio_set_direction()
261 gpiod_set_value_cansleep(spi_gpio->sck, in spi_gpio_set_direction()
282 static int spi_gpio_request(struct device *dev, struct spi_gpio *spi_gpio) in spi_gpio_request() argument
284 spi_gpio->mosi = devm_gpiod_get_optional(dev, "mosi", GPIOD_OUT_LOW); in spi_gpio_request()
285 if (IS_ERR(spi_gpio->mosi)) in spi_gpio_request()
286 return PTR_ERR(spi_gpio->mosi); in spi_gpio_request()
288 spi_gpio->miso = devm_gpiod_get_optional(dev, "miso", GPIOD_IN); in spi_gpio_request()
289 if (IS_ERR(spi_gpio->miso)) in spi_gpio_request()
290 return PTR_ERR(spi_gpio->miso); in spi_gpio_request()
292 spi_gpio->sck = devm_gpiod_get(dev, "sck", GPIOD_OUT_LOW); in spi_gpio_request()
293 return PTR_ERR_OR_ZERO(spi_gpio->sck); in spi_gpio_request()
324 struct spi_gpio *spi_gpio = spi_master_get_devdata(master); in spi_gpio_probe_pdata() local
337 spi_gpio->cs_gpios = devm_kcalloc(dev, master->num_chipselect, in spi_gpio_probe_pdata()
338 sizeof(*spi_gpio->cs_gpios), in spi_gpio_probe_pdata()
340 if (!spi_gpio->cs_gpios) in spi_gpio_probe_pdata()
344 spi_gpio->cs_gpios[i] = devm_gpiod_get_index(dev, "cs", i, in spi_gpio_probe_pdata()
346 if (IS_ERR(spi_gpio->cs_gpios[i])) in spi_gpio_probe_pdata()
347 return PTR_ERR(spi_gpio->cs_gpios[i]); in spi_gpio_probe_pdata()
362 struct spi_gpio *spi_gpio; in spi_gpio_probe() local
369 master = spi_alloc_master(dev, sizeof(*spi_gpio)); in spi_gpio_probe()
387 spi_gpio = spi_master_get_devdata(master); in spi_gpio_probe()
389 status = spi_gpio_request(dev, spi_gpio); in spi_gpio_probe()
396 if (!spi_gpio->mosi) { in spi_gpio_probe()
410 bb = &spi_gpio->bitbang; in spi_gpio_probe()
434 status = spi_bitbang_init(&spi_gpio->bitbang); in spi_gpio_probe()