|
@@ -597,12 +597,12 @@ cppi_next_tx_segment(struct musb *musb, struct cppi_channel *tx)
|
|
|
length = min(n_bds * maxpacket, length);
|
|
|
}
|
|
|
|
|
|
- DBG(4, "TX DMA%d, pktSz %d %s bds %d dma 0x%x len %u\n",
|
|
|
+ DBG(4, "TX DMA%d, pktSz %d %s bds %d dma 0x%llx len %u\n",
|
|
|
tx->index,
|
|
|
maxpacket,
|
|
|
rndis ? "rndis" : "transparent",
|
|
|
n_bds,
|
|
|
- addr, length);
|
|
|
+ (unsigned long long)addr, length);
|
|
|
|
|
|
cppi_rndis_update(tx, 0, musb->ctrl_base, rndis);
|
|
|
|
|
@@ -820,7 +820,7 @@ cppi_next_rx_segment(struct musb *musb, struct cppi_channel *rx, int onepacket)
|
|
|
length = min(n_bds * maxpacket, length);
|
|
|
|
|
|
DBG(4, "RX DMA%d seg, maxp %d %s bds %d (cnt %d) "
|
|
|
- "dma 0x%x len %u %u/%u\n",
|
|
|
+ "dma 0x%llx len %u %u/%u\n",
|
|
|
rx->index, maxpacket,
|
|
|
onepacket
|
|
|
? (is_rndis ? "rndis" : "onepacket")
|
|
@@ -829,7 +829,8 @@ cppi_next_rx_segment(struct musb *musb, struct cppi_channel *rx, int onepacket)
|
|
|
musb_readl(tibase,
|
|
|
DAVINCI_RXCPPI_BUFCNT0_REG + (rx->index * 4))
|
|
|
& 0xffff,
|
|
|
- addr, length, rx->channel.actual_len, rx->buf_len);
|
|
|
+ (unsigned long long)addr, length,
|
|
|
+ rx->channel.actual_len, rx->buf_len);
|
|
|
|
|
|
/* only queue one segment at a time, since the hardware prevents
|
|
|
* correct queue shutdown after unexpected short packets
|
|
@@ -1039,9 +1040,9 @@ static bool cppi_rx_scan(struct cppi *cppi, unsigned ch)
|
|
|
if (!completed && (bd->hw_options & CPPI_OWN_SET))
|
|
|
break;
|
|
|
|
|
|
- DBG(5, "C/RXBD %08x: nxt %08x buf %08x "
|
|
|
+ DBG(5, "C/RXBD %llx: nxt %08x buf %08x "
|
|
|
"off.len %08x opt.len %08x (%d)\n",
|
|
|
- bd->dma, bd->hw_next, bd->hw_bufp,
|
|
|
+ (unsigned long long)bd->dma, bd->hw_next, bd->hw_bufp,
|
|
|
bd->hw_off_len, bd->hw_options,
|
|
|
rx->channel.actual_len);
|
|
|
|
|
@@ -1111,11 +1112,12 @@ static bool cppi_rx_scan(struct cppi *cppi, unsigned ch)
|
|
|
musb_ep_select(cppi->mregs, rx->index + 1);
|
|
|
csr = musb_readw(regs, MUSB_RXCSR);
|
|
|
if (csr & MUSB_RXCSR_DMAENAB) {
|
|
|
- DBG(4, "list%d %p/%p, last %08x%s, csr %04x\n",
|
|
|
+ DBG(4, "list%d %p/%p, last %llx%s, csr %04x\n",
|
|
|
rx->index,
|
|
|
rx->head, rx->tail,
|
|
|
rx->last_processed
|
|
|
- ? rx->last_processed->dma
|
|
|
+ ? (unsigned long long)
|
|
|
+ rx->last_processed->dma
|
|
|
: 0,
|
|
|
completed ? ", completed" : "",
|
|
|
csr);
|
|
@@ -1167,8 +1169,11 @@ irqreturn_t cppi_interrupt(int irq, void *dev_id)
|
|
|
tx = musb_readl(tibase, DAVINCI_TXCPPI_MASKED_REG);
|
|
|
rx = musb_readl(tibase, DAVINCI_RXCPPI_MASKED_REG);
|
|
|
|
|
|
- if (!tx && !rx)
|
|
|
+ if (!tx && !rx) {
|
|
|
+ if (cppi->irq)
|
|
|
+ spin_unlock_irqrestore(&musb->lock, flags);
|
|
|
return IRQ_NONE;
|
|
|
+ }
|
|
|
|
|
|
DBG(4, "CPPI IRQ Tx%x Rx%x\n", tx, rx);
|
|
|
|
|
@@ -1199,7 +1204,7 @@ irqreturn_t cppi_interrupt(int irq, void *dev_id)
|
|
|
*/
|
|
|
if (NULL == bd) {
|
|
|
DBG(1, "null BD\n");
|
|
|
- tx_ram->tx_complete = 0;
|
|
|
+ musb_writel(&tx_ram->tx_complete, 0, 0);
|
|
|
continue;
|
|
|
}
|
|
|
|
|
@@ -1452,7 +1457,7 @@ static int cppi_channel_abort(struct dma_channel *channel)
|
|
|
* compare mode by writing 1 to the tx_complete register.
|
|
|
*/
|
|
|
cppi_reset_tx(tx_ram, 1);
|
|
|
- cppi_ch->head = 0;
|
|
|
+ cppi_ch->head = NULL;
|
|
|
musb_writel(&tx_ram->tx_complete, 0, 1);
|
|
|
cppi_dump_tx(5, cppi_ch, " (done teardown)");
|
|
|
|