Lines Matching refs:b53spi

24 static inline u32 bcm53xxspi_read(struct bcm53xxspi *b53spi, u16 offset)  in bcm53xxspi_read()  argument
26 return bcma_read32(b53spi->core, offset); in bcm53xxspi_read()
29 static inline void bcm53xxspi_write(struct bcm53xxspi *b53spi, u16 offset, in bcm53xxspi_write() argument
32 bcma_write32(b53spi->core, offset, value); in bcm53xxspi_write()
41 static int bcm53xxspi_wait(struct bcm53xxspi *b53spi, unsigned int timeout_ms) in bcm53xxspi_wait() argument
49 tmp = bcm53xxspi_read(b53spi, B53SPI_MSPI_SPCR2); in bcm53xxspi_wait()
61 tmp = bcm53xxspi_read(b53spi, B53SPI_MSPI_MSPI_STATUS); in bcm53xxspi_wait()
63 bcm53xxspi_write(b53spi, B53SPI_MSPI_MSPI_STATUS, 0); in bcm53xxspi_wait()
72 bcm53xxspi_write(b53spi, B53SPI_MSPI_MSPI_STATUS, 0); in bcm53xxspi_wait()
79 static void bcm53xxspi_buf_write(struct bcm53xxspi *b53spi, u8 *w_buf, in bcm53xxspi_buf_write() argument
87 bcm53xxspi_write(b53spi, B53SPI_MSPI_TXRAM + 4 * (i * 2), in bcm53xxspi_buf_write()
98 bcm53xxspi_write(b53spi, B53SPI_MSPI_CDRAM + 4 * i, tmp); in bcm53xxspi_buf_write()
102 bcm53xxspi_write(b53spi, B53SPI_MSPI_NEWQP, 0); in bcm53xxspi_buf_write()
103 bcm53xxspi_write(b53spi, B53SPI_MSPI_ENDQP, len - 1); in bcm53xxspi_buf_write()
106 bcm53xxspi_write(b53spi, B53SPI_MSPI_WRITE_LOCK, 1); in bcm53xxspi_buf_write()
109 tmp = bcm53xxspi_read(b53spi, B53SPI_MSPI_SPCR2); in bcm53xxspi_buf_write()
113 bcm53xxspi_write(b53spi, B53SPI_MSPI_SPCR2, tmp); in bcm53xxspi_buf_write()
116 bcm53xxspi_wait(b53spi, bcm53xxspi_calc_timeout(len)); in bcm53xxspi_buf_write()
119 bcm53xxspi_write(b53spi, B53SPI_MSPI_WRITE_LOCK, 0); in bcm53xxspi_buf_write()
121 b53spi->read_offset = len; in bcm53xxspi_buf_write()
124 static void bcm53xxspi_buf_read(struct bcm53xxspi *b53spi, u8 *r_buf, in bcm53xxspi_buf_read() argument
130 for (i = 0; i < b53spi->read_offset + len; i++) { in bcm53xxspi_buf_read()
133 if (!cont && i == b53spi->read_offset + len - 1) in bcm53xxspi_buf_read()
137 bcm53xxspi_write(b53spi, B53SPI_MSPI_CDRAM + 4 * i, tmp); in bcm53xxspi_buf_read()
141 bcm53xxspi_write(b53spi, B53SPI_MSPI_NEWQP, 0); in bcm53xxspi_buf_read()
142 bcm53xxspi_write(b53spi, B53SPI_MSPI_ENDQP, in bcm53xxspi_buf_read()
143 b53spi->read_offset + len - 1); in bcm53xxspi_buf_read()
146 bcm53xxspi_write(b53spi, B53SPI_MSPI_WRITE_LOCK, 1); in bcm53xxspi_buf_read()
149 tmp = bcm53xxspi_read(b53spi, B53SPI_MSPI_SPCR2); in bcm53xxspi_buf_read()
153 bcm53xxspi_write(b53spi, B53SPI_MSPI_SPCR2, tmp); in bcm53xxspi_buf_read()
156 bcm53xxspi_wait(b53spi, bcm53xxspi_calc_timeout(len)); in bcm53xxspi_buf_read()
159 bcm53xxspi_write(b53spi, B53SPI_MSPI_WRITE_LOCK, 0); in bcm53xxspi_buf_read()
162 int offset = b53spi->read_offset + i; in bcm53xxspi_buf_read()
165 r_buf[i] = (u8)bcm53xxspi_read(b53spi, B53SPI_MSPI_RXRAM + 4 * (1 + offset * 2)); in bcm53xxspi_buf_read()
168 b53spi->read_offset = 0; in bcm53xxspi_buf_read()
175 struct bcm53xxspi *b53spi = spi_master_get_devdata(master); in bcm53xxspi_transfer_one() local
186 bcm53xxspi_buf_write(b53spi, buf, to_write, cont); in bcm53xxspi_transfer_one()
196 size_t to_read = min_t(size_t, 16 - b53spi->read_offset, in bcm53xxspi_transfer_one()
200 bcm53xxspi_buf_read(b53spi, buf, to_read, cont); in bcm53xxspi_transfer_one()
225 struct bcm53xxspi *b53spi; in bcm53xxspi_bcma_probe() local
234 master = spi_alloc_master(&core->dev, sizeof(*b53spi)); in bcm53xxspi_bcma_probe()
238 b53spi = spi_master_get_devdata(master); in bcm53xxspi_bcma_probe()
239 b53spi->master = master; in bcm53xxspi_bcma_probe()
240 b53spi->core = core; in bcm53xxspi_bcma_probe()
244 bcma_set_drvdata(core, b53spi); in bcm53xxspi_bcma_probe()