I made a cooking of patches in case any one needs it. Mo
513,519d512
< /* keep unused burst */
< void spi_clear_dhb(void *base_addr)
< {
< u32 reg_val = readl(base_addr + SPI_CTL_REG);
< reg_val &= ~SPI_CTL_DHB;
< writel(reg_val, base_addr + SPI_CTL_REG);
< }
591a585
> aw_spi_sel_dma_type(0, aw_spi->base_addr);
617c611,612
< spin_unlock_irqrestore(&aw_spi->lock, flags);
---
> aw_spi_sel_dma_type(0, aw_spi->base_addr);
> spin_unlock_irqrestore(&aw_spi->lock, flags);
958,960c953,956
< #else
< aw_spi_sel_dma_type(1, base_addr);
< #endif
---
> aw_spi_sel_dma_type(0, base_addr);
> #else
> aw_spi_sel_dma_type(1, base_addr);
> #endif
1008,1009c1004
< unsigned int poll_time_rx = 0x7ffff;
< unsigned int poll_time_tx = 0xfffff;
---
> unsigned int poll_time = 0xfffff;
1016,1022c1011
< aw_spi_start_xfer(base_addr);
< if (tx_len) {
< while ( aw_spi_query_txfifo(base_addr) &&
(--poll_time_tx > 0) ); //txFIFO counter
< if ( poll_time_tx <= 0 ) {
< spi_wrn("cpu tx data time out!\n");
< }
< }
---
> aw_spi_start_xfer(base_addr);
1024c1013
< while(rx_len && (--poll_time_rx >0)) {
---
> while(rx_len && (--poll_time >0)) {
1026,1032c1015,1019
< if (aw_spi_query_rxfifo(base_addr)) {
< *rx_buf++ = readb(base_addr +
SPI_RXDATA_REG); //fetch data
< --rx_len;
< }
< if ( poll_time_rx <= 0 ) {
< spi_wrn("cpu rx data time
out!\n");
< }
---
> if(aw_spi_query_rxfifo(base_addr)){
> *rx_buf++ = readb(base_addr +
SPI_RXDATA_REG);//fetch data
> --rx_len;
> poll_time = 0xffff;
> }
1034c1021,1025
<
---
> } else {
> while(aw_spi_query_txfifo(base_addr)&&(--poll_time > 0) );/*
txFIFO counter */
> }
> if(poll_time <= 0) {
> spi_wrn("cpu tx data time out!\n");
1093,1096d1083
< /* full duplex mode */
< if (t->rx_buf && t->tx_buf)
< spi_clear_dhb(aw_spi->base_addr);
<
--
You received this message because you are subscribed to the Google Groups
"linux-sunxi" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.