Lines Matching refs:spi_gpio
43 struct spi_gpio { struct
88 static inline struct spi_gpio *__pure
92 struct spi_gpio *spi_gpio; in spi_to_spi_gpio() local
95 spi_gpio = container_of(bang, struct spi_gpio, bitbang); in spi_to_spi_gpio()
96 return spi_gpio; in spi_to_spi_gpio()
108 struct spi_gpio *spi_gpio = spi_to_spi_gpio(spi); in setsck() local
110 gpiod_set_value_cansleep(spi_gpio->sck, is_on); in setsck()
115 struct spi_gpio *spi_gpio = spi_to_spi_gpio(spi); in setmosi() local
117 gpiod_set_value_cansleep(spi_gpio->mosi, is_on); in setmosi()
122 struct spi_gpio *spi_gpio = spi_to_spi_gpio(spi); in getmiso() local
125 return !!gpiod_get_value_cansleep(spi_gpio->mosi); in getmiso()
127 return !!gpiod_get_value_cansleep(spi_gpio->miso); in getmiso()
220 struct spi_gpio *spi_gpio = spi_to_spi_gpio(spi); in spi_gpio_chipselect() local
224 gpiod_set_value_cansleep(spi_gpio->sck, spi->mode & SPI_CPOL); in spi_gpio_chipselect()
227 if (spi_gpio->has_cs) { in spi_gpio_chipselect()
228 struct gpio_desc *cs = spi_gpio->cs_gpios[spi->chip_select]; in spi_gpio_chipselect()
239 struct spi_gpio *spi_gpio = spi_to_spi_gpio(spi); in spi_gpio_setup() local
245 cs = spi_gpio->cs_gpios[spi->chip_select]; in spi_gpio_setup()
258 struct spi_gpio *spi_gpio = spi_to_spi_gpio(spi); in spi_gpio_set_direction() local
261 return gpiod_direction_output(spi_gpio->mosi, 1); in spi_gpio_set_direction()
263 return gpiod_direction_input(spi_gpio->mosi); in spi_gpio_set_direction()
282 struct spi_gpio *spi_gpio, in spi_gpio_request() argument
288 spi_gpio->mosi = devm_gpiod_get_optional(dev, "mosi", GPIOD_OUT_LOW); in spi_gpio_request()
289 if (IS_ERR(spi_gpio->mosi)) in spi_gpio_request()
290 return PTR_ERR(spi_gpio->mosi); in spi_gpio_request()
291 if (!spi_gpio->mosi) in spi_gpio_request()
295 spi_gpio->miso = devm_gpiod_get_optional(dev, "miso", GPIOD_IN); in spi_gpio_request()
296 if (IS_ERR(spi_gpio->miso)) in spi_gpio_request()
297 return PTR_ERR(spi_gpio->miso); in spi_gpio_request()
298 if (!spi_gpio->miso) in spi_gpio_request()
302 spi_gpio->sck = devm_gpiod_get(dev, "sck", GPIOD_OUT_LOW); in spi_gpio_request()
303 if (IS_ERR(spi_gpio->sck)) in spi_gpio_request()
304 return PTR_ERR(spi_gpio->sck); in spi_gpio_request()
307 spi_gpio->cs_gpios[i] = devm_gpiod_get_index(dev, "cs", in spi_gpio_request()
309 if (IS_ERR(spi_gpio->cs_gpios[i])) in spi_gpio_request()
310 return PTR_ERR(spi_gpio->cs_gpios[i]); in spi_gpio_request()
366 struct spi_gpio *spi_gpio; in spi_gpio_probe() local
383 master = spi_alloc_master(&pdev->dev, sizeof(*spi_gpio)); in spi_gpio_probe()
387 spi_gpio = spi_master_get_devdata(master); in spi_gpio_probe()
389 spi_gpio->cs_gpios = devm_kcalloc(&pdev->dev, in spi_gpio_probe()
391 sizeof(*spi_gpio->cs_gpios), in spi_gpio_probe()
393 if (!spi_gpio->cs_gpios) in spi_gpio_probe()
396 platform_set_drvdata(pdev, spi_gpio); in spi_gpio_probe()
399 spi_gpio->has_cs = !!pdata->num_chipselect; in spi_gpio_probe()
401 spi_gpio->pdev = pdev; in spi_gpio_probe()
403 spi_gpio->pdata = *pdata; in spi_gpio_probe()
405 status = spi_gpio_request(&pdev->dev, spi_gpio, in spi_gpio_probe()
415 master->num_chipselect = spi_gpio->has_cs ? pdata->num_chipselect : 1; in spi_gpio_probe()
422 spi_gpio->bitbang.master = master; in spi_gpio_probe()
423 spi_gpio->bitbang.chipselect = spi_gpio_chipselect; in spi_gpio_probe()
424 spi_gpio->bitbang.set_line_direction = spi_gpio_set_direction; in spi_gpio_probe()
427 spi_gpio->bitbang.txrx_word[SPI_MODE_0] = spi_gpio_txrx_word_mode0; in spi_gpio_probe()
428 spi_gpio->bitbang.txrx_word[SPI_MODE_1] = spi_gpio_txrx_word_mode1; in spi_gpio_probe()
429 spi_gpio->bitbang.txrx_word[SPI_MODE_2] = spi_gpio_txrx_word_mode2; in spi_gpio_probe()
430 spi_gpio->bitbang.txrx_word[SPI_MODE_3] = spi_gpio_txrx_word_mode3; in spi_gpio_probe()
432 spi_gpio->bitbang.txrx_word[SPI_MODE_0] = spi_gpio_spec_txrx_word_mode0; in spi_gpio_probe()
433 spi_gpio->bitbang.txrx_word[SPI_MODE_1] = spi_gpio_spec_txrx_word_mode1; in spi_gpio_probe()
434 spi_gpio->bitbang.txrx_word[SPI_MODE_2] = spi_gpio_spec_txrx_word_mode2; in spi_gpio_probe()
435 spi_gpio->bitbang.txrx_word[SPI_MODE_3] = spi_gpio_spec_txrx_word_mode3; in spi_gpio_probe()
437 spi_gpio->bitbang.setup_transfer = spi_bitbang_setup_transfer; in spi_gpio_probe()
438 spi_gpio->bitbang.flags = SPI_CS_HIGH; in spi_gpio_probe()
440 status = spi_bitbang_start(&spi_gpio->bitbang); in spi_gpio_probe()
449 struct spi_gpio *spi_gpio; in spi_gpio_remove() local
452 spi_gpio = platform_get_drvdata(pdev); in spi_gpio_remove()
456 spi_bitbang_stop(&spi_gpio->bitbang); in spi_gpio_remove()
458 spi_master_put(spi_gpio->bitbang.master); in spi_gpio_remove()