• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /netgear-R7000-V1.0.7.12_1.2.5/components/opensource/linux/linux-2.6.36/drivers/spi/

Lines Matching refs:xspi

116 static void xspi_tx8(struct xilinx_spi *xspi)
118 xspi->write_fn(*xspi->tx_ptr, xspi->regs + XSPI_TXD_OFFSET);
119 xspi->tx_ptr++;
122 static void xspi_tx16(struct xilinx_spi *xspi)
124 xspi->write_fn(*(u16 *)(xspi->tx_ptr), xspi->regs + XSPI_TXD_OFFSET);
125 xspi->tx_ptr += 2;
128 static void xspi_tx32(struct xilinx_spi *xspi)
130 xspi->write_fn(*(u32 *)(xspi->tx_ptr), xspi->regs + XSPI_TXD_OFFSET);
131 xspi->tx_ptr += 4;
134 static void xspi_rx8(struct xilinx_spi *xspi)
136 u32 data = xspi->read_fn(xspi->regs + XSPI_RXD_OFFSET);
137 if (xspi->rx_ptr) {
138 *xspi->rx_ptr = data & 0xff;
139 xspi->rx_ptr++;
143 static void xspi_rx16(struct xilinx_spi *xspi)
145 u32 data = xspi->read_fn(xspi->regs + XSPI_RXD_OFFSET);
146 if (xspi->rx_ptr) {
147 *(u16 *)(xspi->rx_ptr) = data & 0xffff;
148 xspi->rx_ptr += 2;
152 static void xspi_rx32(struct xilinx_spi *xspi)
154 u32 data = xspi->read_fn(xspi->regs + XSPI_RXD_OFFSET);
155 if (xspi->rx_ptr) {
156 *(u32 *)(xspi->rx_ptr) = data;
157 xspi->rx_ptr += 4;
161 static void xspi_init_hw(struct xilinx_spi *xspi)
163 void __iomem *regs_base = xspi->regs;
166 xspi->write_fn(XIPIF_V123B_RESET_MASK,
169 xspi->write_fn(0, regs_base + XIPIF_V123B_IIER_OFFSET);
171 xspi->write_fn(XIPIF_V123B_GINTR_ENABLE,
174 xspi->write_fn(0xffff, regs_base + XSPI_SSR_OFFSET);
177 xspi->write_fn(XSPI_CR_TRANS_INHIBIT | XSPI_CR_MANUAL_SSELECT |
184 struct xilinx_spi *xspi = spi_master_get_devdata(spi->master);
188 xspi->write_fn(0xffff, xspi->regs + XSPI_SSR_OFFSET);
191 u16 cr = xspi->read_fn(xspi->regs + XSPI_CR_OFFSET)
197 xspi->write_fn(cr, xspi->regs + XSPI_CR_OFFSET);
205 xspi->write_fn(~(0x0001 << spi->chip_select),
206 xspi->regs + XSPI_SSR_OFFSET);
220 struct xilinx_spi *xspi = spi_master_get_devdata(spi->master);
225 if (bits_per_word != xspi->bits_per_word) {
249 static void xilinx_spi_fill_tx_fifo(struct xilinx_spi *xspi)
254 sr = xspi->read_fn(xspi->regs + XSPI_SR_OFFSET);
255 while ((sr & XSPI_SR_TX_FULL_MASK) == 0 && xspi->remaining_bytes > 0) {
256 if (xspi->tx_ptr)
257 xspi->tx_fn(xspi);
259 xspi->write_fn(0, xspi->regs + XSPI_TXD_OFFSET);
260 xspi->remaining_bytes -= xspi->bits_per_word / 8;
261 sr = xspi->read_fn(xspi->regs + XSPI_SR_OFFSET);
267 struct xilinx_spi *xspi = spi_master_get_devdata(spi->master);
273 xspi->tx_ptr = t->tx_buf;
274 xspi->rx_ptr = t->rx_buf;
275 xspi->remaining_bytes = t->len;
276 INIT_COMPLETION(xspi->done);
278 xilinx_spi_fill_tx_fifo(xspi);
283 ipif_ier = xspi->read_fn(xspi->regs + XIPIF_V123B_IIER_OFFSET);
284 xspi->write_fn(ipif_ier | XSPI_INTR_TX_EMPTY,
285 xspi->regs + XIPIF_V123B_IIER_OFFSET);
288 cr = xspi->read_fn(xspi->regs + XSPI_CR_OFFSET) &
290 xspi->write_fn(cr, xspi->regs + XSPI_CR_OFFSET);
292 wait_for_completion(&xspi->done);
295 xspi->write_fn(ipif_ier, xspi->regs + XIPIF_V123B_IIER_OFFSET);
297 return t->len - xspi->remaining_bytes;
308 struct xilinx_spi *xspi = dev_id;
312 ipif_isr = xspi->read_fn(xspi->regs + XIPIF_V123B_IISR_OFFSET);
313 xspi->write_fn(ipif_isr, xspi->regs + XIPIF_V123B_IISR_OFFSET);
324 cr = xspi->read_fn(xspi->regs + XSPI_CR_OFFSET);
325 xspi->write_fn(cr | XSPI_CR_TRANS_INHIBIT,
326 xspi->regs + XSPI_CR_OFFSET);
329 sr = xspi->read_fn(xspi->regs + XSPI_SR_OFFSET);
331 xspi->rx_fn(xspi);
332 sr = xspi->read_fn(xspi->regs + XSPI_SR_OFFSET);
336 if (xspi->remaining_bytes > 0) {
337 xilinx_spi_fill_tx_fifo(xspi);
341 xspi->write_fn(cr, xspi->regs + XSPI_CR_OFFSET);
346 complete(&xspi->done);
357 struct xilinx_spi *xspi;
373 xspi = spi_master_get_devdata(master);
374 xspi->bitbang.master = spi_master_get(master);
375 xspi->bitbang.chipselect = xilinx_spi_chipselect;
376 xspi->bitbang.setup_transfer = xilinx_spi_setup_transfer;
377 xspi->bitbang.txrx_bufs = xilinx_spi_txrx_bufs;
378 xspi->bitbang.master->setup = xilinx_spi_setup;
379 init_completion(&xspi->done);
385 xspi->regs = ioremap(mem->start, resource_size(mem));
386 if (xspi->regs == NULL) {
397 xspi->mem = *mem;
398 xspi->irq = irq;
400 xspi->read_fn = xspi_read32;
401 xspi->write_fn = xspi_write32;
403 xspi->read_fn = xspi_read32_be;
404 xspi->write_fn = xspi_write32_be;
406 xspi->bits_per_word = pdata->bits_per_word;
407 if (xspi->bits_per_word == 8) {
408 xspi->tx_fn = xspi_tx8;
409 xspi->rx_fn = xspi_rx8;
410 } else if (xspi->bits_per_word == 16) {
411 xspi->tx_fn = xspi_tx16;
412 xspi->rx_fn = xspi_rx16;
413 } else if (xspi->bits_per_word == 32) {
414 xspi->tx_fn = xspi_tx32;
415 xspi->rx_fn = xspi_rx32;
421 xspi_init_hw(xspi);
424 ret = request_irq(xspi->irq, xilinx_spi_irq, 0, XILINX_SPI_NAME, xspi);
428 ret = spi_bitbang_start(&xspi->bitbang);
435 (unsigned long long)mem->start, xspi->regs, xspi->irq);
439 free_irq(xspi->irq, xspi);
441 iounmap(xspi->regs);
452 struct xilinx_spi *xspi;
454 xspi = spi_master_get_devdata(master);
456 spi_bitbang_stop(&xspi->bitbang);
457 free_irq(xspi->irq, xspi);
458 iounmap(xspi->regs);
460 release_mem_region(xspi->mem.start, resource_size(&xspi->mem));
461 spi_master_put(xspi->bitbang.master);