diff options
author | Dan Williams <dan.j.williams@intel.com> | 2009-07-28 17:44:04 -0400 |
---|---|---|
committer | Dan Williams <dan.j.williams@intel.com> | 2009-09-08 20:29:55 -0400 |
commit | c7984f4e4e3af3bf8027d636283ea8658c7f80b9 (patch) | |
tree | 81fb1adc44173505d447aa93142cc96a4bf03044 /drivers/dma/ioat/dma.c | |
parent | 77867fff033ea549096c49d863c564ad7d8be36f (diff) |
ioat: define descriptor control bit-field
This cleans up a mess of and'ing and or'ing bit definitions, and allows
simple assignments from the specified dma_ctrl_flags parameter.
Signed-off-by: Maciej Sosnowski <maciej.sosnowski@intel.com>
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers/dma/ioat/dma.c')
-rw-r--r-- | drivers/dma/ioat/dma.c | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/drivers/dma/ioat/dma.c b/drivers/dma/ioat/dma.c index b7508041c6d7..4840d4805d8c 100644 --- a/drivers/dma/ioat/dma.c +++ b/drivers/dma/ioat/dma.c | |||
@@ -472,9 +472,9 @@ static dma_cookie_t ioat1_tx_submit(struct dma_async_tx_descriptor *tx) | |||
472 | return -ENOMEM; | 472 | return -ENOMEM; |
473 | } | 473 | } |
474 | 474 | ||
475 | hw->ctl = IOAT_DMA_DESCRIPTOR_CTL_CP_STS; | 475 | hw->ctl_f.compl_write = 1; |
476 | if (first->txd.callback) { | 476 | if (first->txd.callback) { |
477 | hw->ctl |= IOAT_DMA_DESCRIPTOR_CTL_INT_GN; | 477 | hw->ctl_f.int_en = 1; |
478 | if (first != new) { | 478 | if (first != new) { |
479 | /* move callback into to last desc */ | 479 | /* move callback into to last desc */ |
480 | new->txd.callback = first->txd.callback; | 480 | new->txd.callback = first->txd.callback; |
@@ -563,9 +563,9 @@ static dma_cookie_t ioat2_tx_submit(struct dma_async_tx_descriptor *tx) | |||
563 | return -ENOMEM; | 563 | return -ENOMEM; |
564 | } | 564 | } |
565 | 565 | ||
566 | hw->ctl |= IOAT_DMA_DESCRIPTOR_CTL_CP_STS; | 566 | hw->ctl_f.compl_write = 1; |
567 | if (first->txd.callback) { | 567 | if (first->txd.callback) { |
568 | hw->ctl |= IOAT_DMA_DESCRIPTOR_CTL_INT_GN; | 568 | hw->ctl_f.int_en = 1; |
569 | if (first != new) { | 569 | if (first != new) { |
570 | /* move callback into to last desc */ | 570 | /* move callback into to last desc */ |
571 | new->txd.callback = first->txd.callback; | 571 | new->txd.callback = first->txd.callback; |
@@ -878,7 +878,8 @@ ioat2_dma_get_next_descriptor(struct ioat_dma_chan *ioat_chan) | |||
878 | noop_desc = to_ioat_desc(ioat_chan->used_desc.next); | 878 | noop_desc = to_ioat_desc(ioat_chan->used_desc.next); |
879 | /* set size to non-zero value (channel returns error when size is 0) */ | 879 | /* set size to non-zero value (channel returns error when size is 0) */ |
880 | noop_desc->hw->size = NULL_DESC_BUFFER_SIZE; | 880 | noop_desc->hw->size = NULL_DESC_BUFFER_SIZE; |
881 | noop_desc->hw->ctl = IOAT_DMA_DESCRIPTOR_NUL; | 881 | noop_desc->hw->ctl = 0; |
882 | noop_desc->hw->ctl_f.null = 1; | ||
882 | noop_desc->hw->src_addr = 0; | 883 | noop_desc->hw->src_addr = 0; |
883 | noop_desc->hw->dst_addr = 0; | 884 | noop_desc->hw->dst_addr = 0; |
884 | 885 | ||
@@ -1230,6 +1231,7 @@ ioat_dma_is_complete(struct dma_chan *chan, dma_cookie_t cookie, | |||
1230 | static void ioat_dma_start_null_desc(struct ioat_dma_chan *ioat_chan) | 1231 | static void ioat_dma_start_null_desc(struct ioat_dma_chan *ioat_chan) |
1231 | { | 1232 | { |
1232 | struct ioat_desc_sw *desc; | 1233 | struct ioat_desc_sw *desc; |
1234 | struct ioat_dma_descriptor *hw; | ||
1233 | 1235 | ||
1234 | spin_lock_bh(&ioat_chan->desc_lock); | 1236 | spin_lock_bh(&ioat_chan->desc_lock); |
1235 | 1237 | ||
@@ -1242,17 +1244,19 @@ static void ioat_dma_start_null_desc(struct ioat_dma_chan *ioat_chan) | |||
1242 | return; | 1244 | return; |
1243 | } | 1245 | } |
1244 | 1246 | ||
1245 | desc->hw->ctl = IOAT_DMA_DESCRIPTOR_NUL | 1247 | hw = desc->hw; |
1246 | | IOAT_DMA_DESCRIPTOR_CTL_INT_GN | 1248 | hw->ctl = 0; |
1247 | | IOAT_DMA_DESCRIPTOR_CTL_CP_STS; | 1249 | hw->ctl_f.null = 1; |
1250 | hw->ctl_f.int_en = 1; | ||
1251 | hw->ctl_f.compl_write = 1; | ||
1248 | /* set size to non-zero value (channel returns error when size is 0) */ | 1252 | /* set size to non-zero value (channel returns error when size is 0) */ |
1249 | desc->hw->size = NULL_DESC_BUFFER_SIZE; | 1253 | hw->size = NULL_DESC_BUFFER_SIZE; |
1250 | desc->hw->src_addr = 0; | 1254 | hw->src_addr = 0; |
1251 | desc->hw->dst_addr = 0; | 1255 | hw->dst_addr = 0; |
1252 | async_tx_ack(&desc->txd); | 1256 | async_tx_ack(&desc->txd); |
1253 | switch (ioat_chan->device->version) { | 1257 | switch (ioat_chan->device->version) { |
1254 | case IOAT_VER_1_2: | 1258 | case IOAT_VER_1_2: |
1255 | desc->hw->next = 0; | 1259 | hw->next = 0; |
1256 | list_add_tail(&desc->node, &ioat_chan->used_desc); | 1260 | list_add_tail(&desc->node, &ioat_chan->used_desc); |
1257 | 1261 | ||
1258 | writel(((u64) desc->txd.phys) & 0x00000000FFFFFFFF, | 1262 | writel(((u64) desc->txd.phys) & 0x00000000FFFFFFFF, |