diff options
Diffstat (limited to 'drivers/dma/ioat_dma.c')
| -rw-r--r-- | drivers/dma/ioat_dma.c | 39 |
1 files changed, 15 insertions, 24 deletions
diff --git a/drivers/dma/ioat_dma.c b/drivers/dma/ioat_dma.c index 45e7b4666c7b..5bcfc55a2776 100644 --- a/drivers/dma/ioat_dma.c +++ b/drivers/dma/ioat_dma.c | |||
| @@ -159,20 +159,6 @@ static int ioat_dma_enumerate_channels(struct ioatdma_device *device) | |||
| 159 | return device->common.chancnt; | 159 | return device->common.chancnt; |
| 160 | } | 160 | } |
| 161 | 161 | ||
| 162 | static void ioat_set_src(dma_addr_t addr, | ||
| 163 | struct dma_async_tx_descriptor *tx, | ||
| 164 | int index) | ||
| 165 | { | ||
| 166 | tx_to_ioat_desc(tx)->src = addr; | ||
| 167 | } | ||
| 168 | |||
| 169 | static void ioat_set_dest(dma_addr_t addr, | ||
| 170 | struct dma_async_tx_descriptor *tx, | ||
| 171 | int index) | ||
| 172 | { | ||
| 173 | tx_to_ioat_desc(tx)->dst = addr; | ||
| 174 | } | ||
| 175 | |||
| 176 | /** | 162 | /** |
| 177 | * ioat_dma_memcpy_issue_pending - push potentially unrecognized appended | 163 | * ioat_dma_memcpy_issue_pending - push potentially unrecognized appended |
| 178 | * descriptors to hw | 164 | * descriptors to hw |
| @@ -415,8 +401,6 @@ static struct ioat_desc_sw *ioat_dma_alloc_descriptor( | |||
| 415 | 401 | ||
| 416 | memset(desc, 0, sizeof(*desc)); | 402 | memset(desc, 0, sizeof(*desc)); |
| 417 | dma_async_tx_descriptor_init(&desc_sw->async_tx, &ioat_chan->common); | 403 | dma_async_tx_descriptor_init(&desc_sw->async_tx, &ioat_chan->common); |
| 418 | desc_sw->async_tx.tx_set_src = ioat_set_src; | ||
| 419 | desc_sw->async_tx.tx_set_dest = ioat_set_dest; | ||
| 420 | switch (ioat_chan->device->version) { | 404 | switch (ioat_chan->device->version) { |
| 421 | case IOAT_VER_1_2: | 405 | case IOAT_VER_1_2: |
| 422 | desc_sw->async_tx.tx_submit = ioat1_tx_submit; | 406 | desc_sw->async_tx.tx_submit = ioat1_tx_submit; |
| @@ -714,6 +698,8 @@ static struct ioat_desc_sw *ioat_dma_get_next_descriptor( | |||
| 714 | 698 | ||
| 715 | static struct dma_async_tx_descriptor *ioat1_dma_prep_memcpy( | 699 | static struct dma_async_tx_descriptor *ioat1_dma_prep_memcpy( |
| 716 | struct dma_chan *chan, | 700 | struct dma_chan *chan, |
| 701 | dma_addr_t dma_dest, | ||
| 702 | dma_addr_t dma_src, | ||
| 717 | size_t len, | 703 | size_t len, |
| 718 | int int_en) | 704 | int int_en) |
| 719 | { | 705 | { |
| @@ -726,6 +712,8 @@ static struct dma_async_tx_descriptor *ioat1_dma_prep_memcpy( | |||
| 726 | 712 | ||
| 727 | if (new) { | 713 | if (new) { |
| 728 | new->len = len; | 714 | new->len = len; |
| 715 | new->dst = dma_dest; | ||
| 716 | new->src = dma_src; | ||
| 729 | return &new->async_tx; | 717 | return &new->async_tx; |
| 730 | } else | 718 | } else |
| 731 | return NULL; | 719 | return NULL; |
| @@ -733,6 +721,8 @@ static struct dma_async_tx_descriptor *ioat1_dma_prep_memcpy( | |||
| 733 | 721 | ||
| 734 | static struct dma_async_tx_descriptor *ioat2_dma_prep_memcpy( | 722 | static struct dma_async_tx_descriptor *ioat2_dma_prep_memcpy( |
| 735 | struct dma_chan *chan, | 723 | struct dma_chan *chan, |
| 724 | dma_addr_t dma_dest, | ||
| 725 | dma_addr_t dma_src, | ||
| 736 | size_t len, | 726 | size_t len, |
| 737 | int int_en) | 727 | int int_en) |
| 738 | { | 728 | { |
| @@ -749,6 +739,8 @@ static struct dma_async_tx_descriptor *ioat2_dma_prep_memcpy( | |||
| 749 | 739 | ||
| 750 | if (new) { | 740 | if (new) { |
| 751 | new->len = len; | 741 | new->len = len; |
| 742 | new->dst = dma_dest; | ||
| 743 | new->src = dma_src; | ||
| 752 | return &new->async_tx; | 744 | return &new->async_tx; |
| 753 | } else | 745 | } else |
| 754 | return NULL; | 746 | return NULL; |
| @@ -1045,7 +1037,7 @@ static int ioat_dma_self_test(struct ioatdma_device *device) | |||
| 1045 | u8 *dest; | 1037 | u8 *dest; |
| 1046 | struct dma_chan *dma_chan; | 1038 | struct dma_chan *dma_chan; |
| 1047 | struct dma_async_tx_descriptor *tx; | 1039 | struct dma_async_tx_descriptor *tx; |
| 1048 | dma_addr_t addr; | 1040 | dma_addr_t dma_dest, dma_src; |
| 1049 | dma_cookie_t cookie; | 1041 | dma_cookie_t cookie; |
| 1050 | int err = 0; | 1042 | int err = 0; |
| 1051 | 1043 | ||
| @@ -1073,7 +1065,12 @@ static int ioat_dma_self_test(struct ioatdma_device *device) | |||
| 1073 | goto out; | 1065 | goto out; |
| 1074 | } | 1066 | } |
| 1075 | 1067 | ||
| 1076 | tx = device->common.device_prep_dma_memcpy(dma_chan, IOAT_TEST_SIZE, 0); | 1068 | dma_src = dma_map_single(dma_chan->device->dev, src, IOAT_TEST_SIZE, |
| 1069 | DMA_TO_DEVICE); | ||
| 1070 | dma_dest = dma_map_single(dma_chan->device->dev, dest, IOAT_TEST_SIZE, | ||
| 1071 | DMA_FROM_DEVICE); | ||
| 1072 | tx = device->common.device_prep_dma_memcpy(dma_chan, dma_dest, dma_src, | ||
| 1073 | IOAT_TEST_SIZE, 0); | ||
| 1077 | if (!tx) { | 1074 | if (!tx) { |
| 1078 | dev_err(&device->pdev->dev, | 1075 | dev_err(&device->pdev->dev, |
| 1079 | "Self-test prep failed, disabling\n"); | 1076 | "Self-test prep failed, disabling\n"); |
| @@ -1082,12 +1079,6 @@ static int ioat_dma_self_test(struct ioatdma_device *device) | |||
| 1082 | } | 1079 | } |
| 1083 | 1080 | ||
| 1084 | async_tx_ack(tx); | 1081 | async_tx_ack(tx); |
| 1085 | addr = dma_map_single(dma_chan->device->dev, src, IOAT_TEST_SIZE, | ||
| 1086 | DMA_TO_DEVICE); | ||
| 1087 | tx->tx_set_src(addr, tx, 0); | ||
| 1088 | addr = dma_map_single(dma_chan->device->dev, dest, IOAT_TEST_SIZE, | ||
| 1089 | DMA_FROM_DEVICE); | ||
| 1090 | tx->tx_set_dest(addr, tx, 0); | ||
| 1091 | tx->callback = ioat_dma_test_callback; | 1082 | tx->callback = ioat_dma_test_callback; |
| 1092 | tx->callback_param = (void *)0x8086; | 1083 | tx->callback_param = (void *)0x8086; |
| 1093 | cookie = tx->tx_submit(tx); | 1084 | cookie = tx->tx_submit(tx); |
