diff options
author | Aaro Koskinen <aaro.koskinen@iki.fi> | 2015-03-22 15:37:51 (GMT) |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2015-03-24 12:47:11 (GMT) |
commit | d712648a22851bef1a830274a3b5793178d3493d (patch) | |
tree | d77e7f0acc0869a744a4607adc263911f86b7ab4 | |
parent | af8e4c71f6ddb9b2e20a0b5bf81a391f4552205c (diff) | |
download | linux-d712648a22851bef1a830274a3b5793178d3493d.tar.xz |
staging: octeon-usb: program DMA engine based on transfer direction
Program DMA engine based on transfer direction. We are only transferring
to one direction at a time.
Signed-off-by: Aaro Koskinen <aaro.koskinen@iki.fi>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
-rw-r--r-- | drivers/staging/octeon-usb/octeon-hcd.c | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/drivers/staging/octeon-usb/octeon-hcd.c b/drivers/staging/octeon-usb/octeon-hcd.c index 1ec70eb..a8c467f 100644 --- a/drivers/staging/octeon-usb/octeon-hcd.c +++ b/drivers/staging/octeon-usb/octeon-hcd.c @@ -1636,8 +1636,9 @@ static void cvmx_usb_start_channel(struct cvmx_usb_state *usb, int channel, usbc_haintmsk.u32); } - /* Setup the locations the DMA engines use */ + /* Setup the location the DMA engine uses. */ { + uint64_t reg; uint64_t dma_address = transaction->buffer + transaction->actual_bytes; @@ -1646,12 +1647,11 @@ static void cvmx_usb_start_channel(struct cvmx_usb_state *usb, int channel, transaction->iso_packets[0].offset + transaction->actual_bytes; - cvmx_write64_uint64(CVMX_USBNX_DMA0_OUTB_CHN0(usb->index) + - channel * 8, - dma_address); - cvmx_write64_uint64(CVMX_USBNX_DMA0_INB_CHN0(usb->index) + - channel * 8, - dma_address); + if (pipe->transfer_dir == CVMX_USB_DIRECTION_OUT) + reg = CVMX_USBNX_DMA0_OUTB_CHN0(usb->index); + else + reg = CVMX_USBNX_DMA0_INB_CHN0(usb->index); + cvmx_write64_uint64(reg + channel * 8, dma_address); } /* Setup both the size of the transfer and the SPLIT characteristics */ |