Lines Matching defs:spi

15 #include <linux/spi/spi.h>
16 #include <linux/spi/spi-mem.h>
20 #include "spi-dw.h"
92 void dw_spi_set_cs(struct spi_device *spi, bool enable)
94 struct dw_spi *dws = spi_controller_get_devdata(spi->controller);
95 bool cs_high = !!(spi->mode & SPI_CS_HIGH);
105 dw_writel(dws, DW_SPI_SER, BIT(spi->chip_select));
266 static u32 dw_spi_prepare_cr0(struct dw_spi *dws, struct spi_device *spi)
279 cr0 |= ((spi->mode & SPI_CPOL) ? 1 : 0) << SPI_SCOL_OFFSET;
280 cr0 |= ((spi->mode & SPI_CPHA) ? 1 : 0) << SPI_SCPH_OFFSET;
283 cr0 |= ((spi->mode & SPI_LOOP) ? 1 : 0) << SPI_SRL_OFFSET;
293 cr0 |= ((spi->mode & SPI_CPOL) ? 1 : 0) << DWC_SSI_CTRLR0_SCPOL_OFFSET;
294 cr0 |= ((spi->mode & SPI_CPHA) ? 1 : 0) << DWC_SSI_CTRLR0_SCPH_OFFSET;
297 cr0 |= ((spi->mode & SPI_LOOP) ? 1 : 0) << DWC_SSI_CTRLR0_SRL_OFFSET;
306 void dw_spi_update_config(struct dw_spi *dws, struct spi_device *spi,
309 struct chip_data *chip = spi_get_ctldata(spi);
404 struct spi_device *spi, struct spi_transfer *transfer)
426 dw_spi_update_config(dws, spi, &cfg);
431 if (master->can_dma && master->can_dma(master, spi, transfer))
540 static int dw_spi_write_then_read(struct dw_spi *dws, struct spi_device *spi)
563 dw_spi_set_cs(spi, false);
635 static void dw_spi_stop_mem_op(struct dw_spi *dws, struct spi_device *spi)
638 dw_spi_set_cs(spi, true);
652 struct dw_spi *dws = spi_controller_get_devdata(mem->spi->controller);
670 cfg.freq = clamp(mem->spi->max_speed_hz, 0U, dws->max_mem_freq);
680 dw_spi_update_config(dws, mem->spi, &cfg);
717 ret = dw_spi_write_then_read(dws, mem->spi);
735 dw_spi_stop_mem_op(dws, mem->spi);
763 /* This may be called twice for each spi dev */
764 static int dw_spi_setup(struct spi_device *spi)
766 struct dw_spi *dws = spi_controller_get_devdata(spi->controller);
770 chip = spi_get_ctldata(spi);
772 struct dw_spi *dws = spi_controller_get_devdata(spi->controller);
778 spi_set_ctldata(spi, chip);
780 if (device_property_read_u32(&spi->dev,
795 chip->cr0 = dw_spi_prepare_cr0(dws, spi);
800 static void dw_spi_cleanup(struct spi_device *spi)
802 struct chip_data *chip = spi_get_ctldata(spi);
805 spi_set_ctldata(spi, NULL);
902 dev_err(&master->dev, "problem registering spi master\n");