Lines Matching defs:spi

14 #include <linux/spi/spi.h>
16 #include "spi-loongson.h"
18 static inline void loongson_spi_write_reg(struct loongson_spi *spi, unsigned char reg,
21 writeb(data, spi->base + reg);
24 static inline char loongson_spi_read_reg(struct loongson_spi *spi, unsigned char reg)
26 return readb(spi->base + reg);
29 static void loongson_spi_set_cs(struct spi_device *spi, bool en)
32 unsigned char mask = (BIT(4) | BIT(0)) << spi_get_chipselect(spi, 0);
33 unsigned char val = en ? mask : (BIT(0) << spi_get_chipselect(spi, 0));
34 struct loongson_spi *loongson_spi = spi_controller_get_devdata(spi->controller);
62 struct spi_device *spi)
68 if (spi->mode & SPI_CPOL)
70 if (spi->mode & SPI_CPHA)
74 loongson_spi->mode |= spi->mode;
78 struct spi_device *spi, struct spi_transfer *t)
83 if ((spi->mode ^ loongson_spi->mode) & SPI_MODE_X_MASK)
84 loongson_spi_set_mode(loongson_spi, spi);
89 static int loongson_spi_setup(struct spi_device *spi)
93 loongson_spi = spi_controller_get_devdata(spi->controller);
94 if (spi->bits_per_word % 8)
97 if (spi_get_chipselect(spi, 0) >= spi->controller->num_chipselect)
101 loongson_spi_set_cs(spi, true);
106 static int loongson_spi_write_read_8bit(struct spi_device *spi, const u8 **tx_buf,
110 struct loongson_spi *loongson_spi = spi_controller_get_devdata(spi->controller);
130 static int loongson_spi_write_read(struct spi_device *spi, struct spi_transfer *xfer)
139 ret = loongson_spi_write_read_8bit(spi, &tx, &rx, count);
158 static int loongson_spi_transfer_one(struct spi_controller *ctrl, struct spi_device *spi,
161 struct loongson_spi *loongson_spi = spi_controller_get_devdata(spi->controller);
163 loongson_spi_update_state(loongson_spi, spi, xfer);
165 return loongson_spi_write_read(spi, xfer);
198 struct loongson_spi *spi;
215 spi = spi_controller_get_devdata(controller);
216 spi->base = regs;
217 spi->controller = controller;
223 spi->clk_rate = clk_get_rate(clk);
224 loongson_spi_reginit(spi);
226 spi->mode = 0;