Lines Matching refs:spi
233 struct spi_device *spi, in img_spfi_start_pio() argument
236 struct img_spfi *spfi = spi_master_get_devdata(spi->master); in img_spfi_start_pio()
315 struct spi_device *spi, in img_spfi_start_dma() argument
318 struct img_spfi *spfi = spi_master_get_devdata(spi->master); in img_spfi_start_dma()
422 if (msg->spi->mode & SPI_CPHA) in img_spfi_prepare()
423 val |= SPFI_PORT_STATE_CK_PHASE(msg->spi->chip_select); in img_spfi_prepare()
425 val &= ~SPFI_PORT_STATE_CK_PHASE(msg->spi->chip_select); in img_spfi_prepare()
426 if (msg->spi->mode & SPI_CPOL) in img_spfi_prepare()
427 val |= SPFI_PORT_STATE_CK_POL(msg->spi->chip_select); in img_spfi_prepare()
429 val &= ~SPFI_PORT_STATE_CK_POL(msg->spi->chip_select); in img_spfi_prepare()
445 static int img_spfi_setup(struct spi_device *spi) in img_spfi_setup() argument
448 struct img_spfi_device_data *spfi_data = spi_get_ctldata(spi); in img_spfi_setup()
455 spi_set_ctldata(spi, spfi_data); in img_spfi_setup()
458 ret = gpio_request_one(spi->cs_gpio, in img_spfi_setup()
459 (spi->mode & SPI_CS_HIGH) ? in img_spfi_setup()
461 dev_name(&spi->dev)); in img_spfi_setup()
463 dev_err(&spi->dev, "can't request chipselect gpio %d\n", in img_spfi_setup()
464 spi->cs_gpio); in img_spfi_setup()
468 if (gpio_is_valid(spi->cs_gpio)) { in img_spfi_setup()
469 int mode = ((spi->mode & SPI_CS_HIGH) ? in img_spfi_setup()
472 ret = gpio_direction_output(spi->cs_gpio, mode); in img_spfi_setup()
474 dev_err(&spi->dev, "chipselect gpio %d setup failed (%d)\n", in img_spfi_setup()
475 spi->cs_gpio, ret); in img_spfi_setup()
481 static void img_spfi_cleanup(struct spi_device *spi) in img_spfi_cleanup() argument
483 struct img_spfi_device_data *spfi_data = spi_get_ctldata(spi); in img_spfi_cleanup()
487 gpio_free(spi->cs_gpio); in img_spfi_cleanup()
489 spi_set_ctldata(spi, NULL); in img_spfi_cleanup()
493 static void img_spfi_config(struct spi_master *master, struct spi_device *spi, in img_spfi_config() argument
496 struct img_spfi *spfi = spi_master_get_devdata(spi->master); in img_spfi_config()
506 val = spfi_readl(spfi, SPFI_DEVICE_PARAMETER(spi->chip_select)); in img_spfi_config()
510 spfi_writel(spfi, val, SPFI_DEVICE_PARAMETER(spi->chip_select)); in img_spfi_config()
533 struct spi_device *spi, in img_spfi_transfer_one() argument
536 struct img_spfi *spfi = spi_master_get_devdata(spi->master); in img_spfi_transfer_one()
546 img_spfi_config(master, spi, xfer); in img_spfi_transfer_one()
547 if (master->can_dma && master->can_dma(master, spi, xfer)) in img_spfi_transfer_one()
548 ret = img_spfi_start_dma(master, spi, xfer); in img_spfi_transfer_one()
550 ret = img_spfi_start_pio(master, spi, xfer); in img_spfi_transfer_one()
555 static bool img_spfi_can_dma(struct spi_master *master, struct spi_device *spi, in img_spfi_can_dma() argument