Lines Matching refs:spi
115 static int orion_spi_baudrate_set(struct spi_device *spi, unsigned int speed) in orion_spi_baudrate_set() argument
124 orion_spi = spi_master_get_devdata(spi->master); in orion_spi_baudrate_set()
188 orion_spi_mode_set(struct spi_device *spi) in orion_spi_mode_set() argument
193 orion_spi = spi_master_get_devdata(spi->master); in orion_spi_mode_set()
197 if (spi->mode & SPI_CPOL) in orion_spi_mode_set()
199 if (spi->mode & SPI_CPHA) in orion_spi_mode_set()
205 orion_spi_50mhz_ac_timing_erratum(struct spi_device *spi, unsigned int speed) in orion_spi_50mhz_ac_timing_erratum() argument
210 orion_spi = spi_master_get_devdata(spi->master); in orion_spi_50mhz_ac_timing_erratum()
230 speed == 50000000 && spi->mode & SPI_CPOL && in orion_spi_50mhz_ac_timing_erratum()
231 spi->mode & SPI_CPHA) in orion_spi_50mhz_ac_timing_erratum()
243 orion_spi_setup_transfer(struct spi_device *spi, struct spi_transfer *t) in orion_spi_setup_transfer() argument
246 unsigned int speed = spi->max_speed_hz; in orion_spi_setup_transfer()
247 unsigned int bits_per_word = spi->bits_per_word; in orion_spi_setup_transfer()
250 orion_spi = spi_master_get_devdata(spi->master); in orion_spi_setup_transfer()
258 orion_spi_mode_set(spi); in orion_spi_setup_transfer()
261 orion_spi_50mhz_ac_timing_erratum(spi, speed); in orion_spi_setup_transfer()
263 rc = orion_spi_baudrate_set(spi, speed); in orion_spi_setup_transfer()
277 static void orion_spi_set_cs(struct spi_device *spi, bool enable) in orion_spi_set_cs() argument
281 orion_spi = spi_master_get_devdata(spi->master); in orion_spi_set_cs()
285 ORION_SPI_CS(spi->chip_select)); in orion_spi_set_cs()
309 orion_spi_write_read_8bit(struct spi_device *spi, in orion_spi_write_read_8bit() argument
315 orion_spi = spi_master_get_devdata(spi->master); in orion_spi_write_read_8bit()
329 dev_err(&spi->dev, "TXS timed out\n"); in orion_spi_write_read_8bit()
340 orion_spi_write_read_16bit(struct spi_device *spi, in orion_spi_write_read_16bit() argument
346 orion_spi = spi_master_get_devdata(spi->master); in orion_spi_write_read_16bit()
360 dev_err(&spi->dev, "TXS timed out\n"); in orion_spi_write_read_16bit()
371 orion_spi_write_read(struct spi_device *spi, struct spi_transfer *xfer) in orion_spi_write_read() argument
376 word_len = spi->bits_per_word; in orion_spi_write_read()
384 if (orion_spi_write_read_8bit(spi, &tx, &rx) < 0) in orion_spi_write_read()
393 if (orion_spi_write_read_16bit(spi, &tx, &rx) < 0) in orion_spi_write_read()
404 struct spi_device *spi, in orion_spi_transfer_one() argument
409 status = orion_spi_setup_transfer(spi, t); in orion_spi_transfer_one()
414 orion_spi_write_read(spi, t); in orion_spi_transfer_one()
419 static int orion_spi_setup(struct spi_device *spi) in orion_spi_setup() argument
421 return orion_spi_setup_transfer(spi, NULL); in orion_spi_setup()
503 struct orion_spi *spi; in orion_spi_probe() local
508 master = spi_alloc_master(&pdev->dev, sizeof(*spi)); in orion_spi_probe()
535 spi = spi_master_get_devdata(master); in orion_spi_probe()
536 spi->master = master; in orion_spi_probe()
540 spi->devdata = devdata; in orion_spi_probe()
542 spi->clk = devm_clk_get(&pdev->dev, NULL); in orion_spi_probe()
543 if (IS_ERR(spi->clk)) { in orion_spi_probe()
544 status = PTR_ERR(spi->clk); in orion_spi_probe()
548 status = clk_prepare_enable(spi->clk); in orion_spi_probe()
552 tclk_hz = clk_get_rate(spi->clk); in orion_spi_probe()
573 spi->base = devm_ioremap_resource(&pdev->dev, r); in orion_spi_probe()
574 if (IS_ERR(spi->base)) { in orion_spi_probe()
575 status = PTR_ERR(spi->base); in orion_spi_probe()
584 status = orion_spi_reset(spi); in orion_spi_probe()
601 clk_disable_unprepare(spi->clk); in orion_spi_probe()
611 struct orion_spi *spi = spi_master_get_devdata(master); in orion_spi_remove() local
614 clk_disable_unprepare(spi->clk); in orion_spi_remove()
628 struct orion_spi *spi = spi_master_get_devdata(master); in orion_spi_runtime_suspend() local
630 clk_disable_unprepare(spi->clk); in orion_spi_runtime_suspend()
637 struct orion_spi *spi = spi_master_get_devdata(master); in orion_spi_runtime_resume() local
639 return clk_prepare_enable(spi->clk); in orion_spi_runtime_resume()