diff options
| author | Dan Williams <dan.j.williams@intel.com> | 2010-03-03 23:21:13 -0500 |
|---|---|---|
| committer | Dan Williams <dan.j.williams@intel.com> | 2010-03-03 23:21:13 -0500 |
| commit | aa4d72ae946a4fa40486b871717778734184fa29 (patch) | |
| tree | 5c98641f00a7866e28a364861b9af9b6df606fdd | |
| parent | b9cc98697d1ca35a86bbb708acc6d93993c28f0f (diff) | |
ioat: cleanup ->timer_fn() and ->cleanup_fn() prototypes
If the calling convention of ->timer_fn() and ->cleanup_fn() are unified
across hardware versions we can drop parameters to ioat_init_channel() and
unify ioat_is_dma_complete() implementations.
Both ->timer_fn() and ->cleanup_fn() are modified to expect a struct
dma_chan pointer.
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
| -rw-r--r-- | drivers/dma/ioat/dma.c | 46 | ||||
| -rw-r--r-- | drivers/dma/ioat/dma.h | 11 | ||||
| -rw-r--r-- | drivers/dma/ioat/dma_v2.c | 34 | ||||
| -rw-r--r-- | drivers/dma/ioat/dma_v2.h | 4 | ||||
| -rw-r--r-- | drivers/dma/ioat/dma_v3.c | 12 |
5 files changed, 40 insertions, 67 deletions
diff --git a/drivers/dma/ioat/dma.c b/drivers/dma/ioat/dma.c index dcc4ab78b32b..5d0e42b263df 100644 --- a/drivers/dma/ioat/dma.c +++ b/drivers/dma/ioat/dma.c | |||
| @@ -94,16 +94,12 @@ static irqreturn_t ioat_dma_do_interrupt_msix(int irq, void *data) | |||
| 94 | return IRQ_HANDLED; | 94 | return IRQ_HANDLED; |
| 95 | } | 95 | } |
| 96 | 96 | ||
| 97 | static void ioat1_cleanup_tasklet(unsigned long data); | ||
| 98 | |||
| 99 | /* common channel initialization */ | 97 | /* common channel initialization */ |
| 100 | void ioat_init_channel(struct ioatdma_device *device, | 98 | void ioat_init_channel(struct ioatdma_device *device, struct ioat_chan_common *chan, int idx) |
| 101 | struct ioat_chan_common *chan, int idx, | ||
| 102 | void (*timer_fn)(unsigned long), | ||
| 103 | void (*tasklet)(unsigned long), | ||
| 104 | unsigned long ioat) | ||
| 105 | { | 99 | { |
| 106 | struct dma_device *dma = &device->common; | 100 | struct dma_device *dma = &device->common; |
| 101 | struct dma_chan *c = &chan->common; | ||
| 102 | unsigned long data = (unsigned long) c; | ||
| 107 | 103 | ||
| 108 | chan->device = device; | 104 | chan->device = device; |
| 109 | chan->reg_base = device->reg_base + (0x80 * (idx + 1)); | 105 | chan->reg_base = device->reg_base + (0x80 * (idx + 1)); |
| @@ -112,14 +108,12 @@ void ioat_init_channel(struct ioatdma_device *device, | |||
| 112 | list_add_tail(&chan->common.device_node, &dma->channels); | 108 | list_add_tail(&chan->common.device_node, &dma->channels); |
| 113 | device->idx[idx] = chan; | 109 | device->idx[idx] = chan; |
| 114 | init_timer(&chan->timer); | 110 | init_timer(&chan->timer); |
| 115 | chan->timer.function = timer_fn; | 111 | chan->timer.function = device->timer_fn; |
| 116 | chan->timer.data = ioat; | 112 | chan->timer.data = data; |
| 117 | tasklet_init(&chan->cleanup_task, tasklet, ioat); | 113 | tasklet_init(&chan->cleanup_task, device->cleanup_fn, data); |
| 118 | tasklet_disable(&chan->cleanup_task); | 114 | tasklet_disable(&chan->cleanup_task); |
| 119 | } | 115 | } |
| 120 | 116 | ||
| 121 | static void ioat1_timer_event(unsigned long data); | ||
| 122 | |||
| 123 | /** | 117 | /** |
| 124 | * ioat1_dma_enumerate_channels - find and initialize the device's channels | 118 | * ioat1_dma_enumerate_channels - find and initialize the device's channels |
| 125 | * @device: the device to be enumerated | 119 | * @device: the device to be enumerated |
| @@ -155,10 +149,7 @@ static int ioat1_enumerate_channels(struct ioatdma_device *device) | |||
| 155 | if (!ioat) | 149 | if (!ioat) |
| 156 | break; | 150 | break; |
| 157 | 151 | ||
| 158 | ioat_init_channel(device, &ioat->base, i, | 152 | ioat_init_channel(device, &ioat->base, i); |
| 159 | ioat1_timer_event, | ||
| 160 | ioat1_cleanup_tasklet, | ||
| 161 | (unsigned long) ioat); | ||
| 162 | ioat->xfercap = xfercap; | 153 | ioat->xfercap = xfercap; |
| 163 | spin_lock_init(&ioat->desc_lock); | 154 | spin_lock_init(&ioat->desc_lock); |
| 164 | INIT_LIST_HEAD(&ioat->free_desc); | 155 | INIT_LIST_HEAD(&ioat->free_desc); |
| @@ -532,12 +523,12 @@ ioat1_dma_prep_memcpy(struct dma_chan *c, dma_addr_t dma_dest, | |||
| 532 | return &desc->txd; | 523 | return &desc->txd; |
| 533 | } | 524 | } |
| 534 | 525 | ||
| 535 | static void ioat1_cleanup_tasklet(unsigned long data) | 526 | static void ioat1_cleanup_event(unsigned long data) |
| 536 | { | 527 | { |
| 537 | struct ioat_dma_chan *chan = (void *)data; | 528 | struct ioat_dma_chan *ioat = to_ioat_chan((void *) data); |
| 538 | 529 | ||
| 539 | ioat1_cleanup(chan); | 530 | ioat1_cleanup(ioat); |
| 540 | writew(IOAT_CHANCTRL_RUN, chan->base.reg_base + IOAT_CHANCTRL_OFFSET); | 531 | writew(IOAT_CHANCTRL_RUN, ioat->base.reg_base + IOAT_CHANCTRL_OFFSET); |
| 541 | } | 532 | } |
| 542 | 533 | ||
| 543 | void ioat_dma_unmap(struct ioat_chan_common *chan, enum dma_ctrl_flags flags, | 534 | void ioat_dma_unmap(struct ioat_chan_common *chan, enum dma_ctrl_flags flags, |
| @@ -687,7 +678,7 @@ static void ioat1_cleanup(struct ioat_dma_chan *ioat) | |||
| 687 | 678 | ||
| 688 | static void ioat1_timer_event(unsigned long data) | 679 | static void ioat1_timer_event(unsigned long data) |
| 689 | { | 680 | { |
| 690 | struct ioat_dma_chan *ioat = (void *) data; | 681 | struct ioat_dma_chan *ioat = to_ioat_chan((void *) data); |
| 691 | struct ioat_chan_common *chan = &ioat->base; | 682 | struct ioat_chan_common *chan = &ioat->base; |
| 692 | 683 | ||
| 693 | dev_dbg(to_dev(chan), "%s: state: %lx\n", __func__, chan->state); | 684 | dev_dbg(to_dev(chan), "%s: state: %lx\n", __func__, chan->state); |
| @@ -734,16 +725,17 @@ static void ioat1_timer_event(unsigned long data) | |||
| 734 | spin_unlock_bh(&chan->cleanup_lock); | 725 | spin_unlock_bh(&chan->cleanup_lock); |
| 735 | } | 726 | } |
| 736 | 727 | ||
| 737 | static enum dma_status | 728 | enum dma_status |
| 738 | ioat1_dma_is_complete(struct dma_chan *c, dma_cookie_t cookie, | 729 | ioat_is_dma_complete(struct dma_chan *c, dma_cookie_t cookie, |
| 739 | dma_cookie_t *done, dma_cookie_t *used) | 730 | dma_cookie_t *done, dma_cookie_t *used) |
| 740 | { | 731 | { |
| 741 | struct ioat_dma_chan *ioat = to_ioat_chan(c); | 732 | struct ioat_chan_common *chan = to_chan_common(c); |
| 733 | struct ioatdma_device *device = chan->device; | ||
| 742 | 734 | ||
| 743 | if (ioat_is_complete(c, cookie, done, used) == DMA_SUCCESS) | 735 | if (ioat_is_complete(c, cookie, done, used) == DMA_SUCCESS) |
| 744 | return DMA_SUCCESS; | 736 | return DMA_SUCCESS; |
| 745 | 737 | ||
| 746 | ioat1_cleanup(ioat); | 738 | device->cleanup_fn((unsigned long) c); |
| 747 | 739 | ||
| 748 | return ioat_is_complete(c, cookie, done, used); | 740 | return ioat_is_complete(c, cookie, done, used); |
| 749 | } | 741 | } |
| @@ -1199,12 +1191,14 @@ int __devinit ioat1_dma_probe(struct ioatdma_device *device, int dca) | |||
| 1199 | device->intr_quirk = ioat1_intr_quirk; | 1191 | device->intr_quirk = ioat1_intr_quirk; |
| 1200 | device->enumerate_channels = ioat1_enumerate_channels; | 1192 | device->enumerate_channels = ioat1_enumerate_channels; |
| 1201 | device->self_test = ioat_dma_self_test; | 1193 | device->self_test = ioat_dma_self_test; |
| 1194 | device->timer_fn = ioat1_timer_event; | ||
| 1195 | device->cleanup_fn = ioat1_cleanup_event; | ||
| 1202 | dma = &device->common; | 1196 | dma = &device->common; |
| 1203 | dma->device_prep_dma_memcpy = ioat1_dma_prep_memcpy; | 1197 | dma->device_prep_dma_memcpy = ioat1_dma_prep_memcpy; |
| 1204 | dma->device_issue_pending = ioat1_dma_memcpy_issue_pending; | 1198 | dma->device_issue_pending = ioat1_dma_memcpy_issue_pending; |
| 1205 | dma->device_alloc_chan_resources = ioat1_dma_alloc_chan_resources; | 1199 | dma->device_alloc_chan_resources = ioat1_dma_alloc_chan_resources; |
| 1206 | dma->device_free_chan_resources = ioat1_dma_free_chan_resources; | 1200 | dma->device_free_chan_resources = ioat1_dma_free_chan_resources; |
| 1207 | dma->device_is_tx_complete = ioat1_dma_is_complete; | 1201 | dma->device_is_tx_complete = ioat_is_dma_complete; |
| 1208 | 1202 | ||
| 1209 | err = ioat_probe(device); | 1203 | err = ioat_probe(device); |
| 1210 | if (err) | 1204 | if (err) |
diff --git a/drivers/dma/ioat/dma.h b/drivers/dma/ioat/dma.h index bbc3e78ef333..4f747a254074 100644 --- a/drivers/dma/ioat/dma.h +++ b/drivers/dma/ioat/dma.h | |||
| @@ -61,7 +61,7 @@ | |||
| 61 | * @intr_quirk: interrupt setup quirk (for ioat_v1 devices) | 61 | * @intr_quirk: interrupt setup quirk (for ioat_v1 devices) |
| 62 | * @enumerate_channels: hw version specific channel enumeration | 62 | * @enumerate_channels: hw version specific channel enumeration |
| 63 | * @reset_hw: hw version specific channel (re)initialization | 63 | * @reset_hw: hw version specific channel (re)initialization |
| 64 | * @cleanup_tasklet: select between the v2 and v3 cleanup routines | 64 | * @cleanup_fn: select between the v2 and v3 cleanup routines |
| 65 | * @timer_fn: select between the v2 and v3 timer watchdog routines | 65 | * @timer_fn: select between the v2 and v3 timer watchdog routines |
| 66 | * @self_test: hardware version specific self test for each supported op type | 66 | * @self_test: hardware version specific self test for each supported op type |
| 67 | * | 67 | * |
| @@ -80,7 +80,7 @@ struct ioatdma_device { | |||
| 80 | void (*intr_quirk)(struct ioatdma_device *device); | 80 | void (*intr_quirk)(struct ioatdma_device *device); |
| 81 | int (*enumerate_channels)(struct ioatdma_device *device); | 81 | int (*enumerate_channels)(struct ioatdma_device *device); |
| 82 | int (*reset_hw)(struct ioat_chan_common *chan); | 82 | int (*reset_hw)(struct ioat_chan_common *chan); |
| 83 | void (*cleanup_tasklet)(unsigned long data); | 83 | void (*cleanup_fn)(unsigned long data); |
| 84 | void (*timer_fn)(unsigned long data); | 84 | void (*timer_fn)(unsigned long data); |
| 85 | int (*self_test)(struct ioatdma_device *device); | 85 | int (*self_test)(struct ioatdma_device *device); |
| 86 | }; | 86 | }; |
| @@ -337,10 +337,9 @@ struct dca_provider * __devinit ioat_dca_init(struct pci_dev *pdev, | |||
| 337 | void __iomem *iobase); | 337 | void __iomem *iobase); |
| 338 | unsigned long ioat_get_current_completion(struct ioat_chan_common *chan); | 338 | unsigned long ioat_get_current_completion(struct ioat_chan_common *chan); |
| 339 | void ioat_init_channel(struct ioatdma_device *device, | 339 | void ioat_init_channel(struct ioatdma_device *device, |
| 340 | struct ioat_chan_common *chan, int idx, | 340 | struct ioat_chan_common *chan, int idx); |
| 341 | void (*timer_fn)(unsigned long), | 341 | enum dma_status ioat_is_dma_complete(struct dma_chan *c, dma_cookie_t cookie, |
| 342 | void (*tasklet)(unsigned long), | 342 | dma_cookie_t *done, dma_cookie_t *used); |
| 343 | unsigned long ioat); | ||
| 344 | void ioat_dma_unmap(struct ioat_chan_common *chan, enum dma_ctrl_flags flags, | 343 | void ioat_dma_unmap(struct ioat_chan_common *chan, enum dma_ctrl_flags flags, |
| 345 | size_t len, struct ioat_dma_descriptor *hw); | 344 | size_t len, struct ioat_dma_descriptor *hw); |
| 346 | bool ioat_cleanup_preamble(struct ioat_chan_common *chan, | 345 | bool ioat_cleanup_preamble(struct ioat_chan_common *chan, |
diff --git a/drivers/dma/ioat/dma_v2.c b/drivers/dma/ioat/dma_v2.c index 01ed1cfd3eb6..25a3c72b2941 100644 --- a/drivers/dma/ioat/dma_v2.c +++ b/drivers/dma/ioat/dma_v2.c | |||
| @@ -199,9 +199,9 @@ static void ioat2_cleanup(struct ioat2_dma_chan *ioat) | |||
| 199 | spin_unlock_bh(&chan->cleanup_lock); | 199 | spin_unlock_bh(&chan->cleanup_lock); |
| 200 | } | 200 | } |
| 201 | 201 | ||
| 202 | void ioat2_cleanup_tasklet(unsigned long data) | 202 | void ioat2_cleanup_event(unsigned long data) |
| 203 | { | 203 | { |
| 204 | struct ioat2_dma_chan *ioat = (void *) data; | 204 | struct ioat2_dma_chan *ioat = to_ioat2_chan((void *) data); |
| 205 | 205 | ||
| 206 | ioat2_cleanup(ioat); | 206 | ioat2_cleanup(ioat); |
| 207 | writew(IOAT_CHANCTRL_RUN, ioat->base.reg_base + IOAT_CHANCTRL_OFFSET); | 207 | writew(IOAT_CHANCTRL_RUN, ioat->base.reg_base + IOAT_CHANCTRL_OFFSET); |
| @@ -283,7 +283,7 @@ static void ioat2_restart_channel(struct ioat2_dma_chan *ioat) | |||
| 283 | 283 | ||
| 284 | void ioat2_timer_event(unsigned long data) | 284 | void ioat2_timer_event(unsigned long data) |
| 285 | { | 285 | { |
| 286 | struct ioat2_dma_chan *ioat = (void *) data; | 286 | struct ioat2_dma_chan *ioat = to_ioat2_chan((void *) data); |
| 287 | struct ioat_chan_common *chan = &ioat->base; | 287 | struct ioat_chan_common *chan = &ioat->base; |
| 288 | 288 | ||
| 289 | spin_lock_bh(&chan->cleanup_lock); | 289 | spin_lock_bh(&chan->cleanup_lock); |
| @@ -389,10 +389,7 @@ int ioat2_enumerate_channels(struct ioatdma_device *device) | |||
| 389 | if (!ioat) | 389 | if (!ioat) |
| 390 | break; | 390 | break; |
| 391 | 391 | ||
| 392 | ioat_init_channel(device, &ioat->base, i, | 392 | ioat_init_channel(device, &ioat->base, i); |
| 393 | device->timer_fn, | ||
| 394 | device->cleanup_tasklet, | ||
| 395 | (unsigned long) ioat); | ||
| 396 | ioat->xfercap_log = xfercap_log; | 393 | ioat->xfercap_log = xfercap_log; |
| 397 | spin_lock_init(&ioat->ring_lock); | 394 | spin_lock_init(&ioat->ring_lock); |
| 398 | if (device->reset_hw(&ioat->base)) { | 395 | if (device->reset_hw(&ioat->base)) { |
| @@ -692,7 +689,7 @@ int ioat2_alloc_and_lock(u16 *idx, struct ioat2_dma_chan *ioat, int num_descs) | |||
| 692 | 689 | ||
| 693 | mod_timer(&chan->timer, jiffies + COMPLETION_TIMEOUT); | 690 | mod_timer(&chan->timer, jiffies + COMPLETION_TIMEOUT); |
| 694 | spin_unlock_bh(&chan->cleanup_lock); | 691 | spin_unlock_bh(&chan->cleanup_lock); |
| 695 | device->timer_fn((unsigned long) ioat); | 692 | device->timer_fn((unsigned long) &chan->common); |
| 696 | } else | 693 | } else |
| 697 | spin_unlock_bh(&chan->cleanup_lock); | 694 | spin_unlock_bh(&chan->cleanup_lock); |
| 698 | return -ENOMEM; | 695 | return -ENOMEM; |
| @@ -776,7 +773,7 @@ void ioat2_free_chan_resources(struct dma_chan *c) | |||
| 776 | 773 | ||
| 777 | tasklet_disable(&chan->cleanup_task); | 774 | tasklet_disable(&chan->cleanup_task); |
| 778 | del_timer_sync(&chan->timer); | 775 | del_timer_sync(&chan->timer); |
| 779 | device->cleanup_tasklet((unsigned long) ioat); | 776 | device->cleanup_fn((unsigned long) c); |
| 780 | device->reset_hw(chan); | 777 | device->reset_hw(chan); |
| 781 | 778 | ||
| 782 | spin_lock_bh(&ioat->ring_lock); | 779 | spin_lock_bh(&ioat->ring_lock); |
| @@ -809,21 +806,6 @@ void ioat2_free_chan_resources(struct dma_chan *c) | |||
| 809 | ioat->dmacount = 0; | 806 | ioat->dmacount = 0; |
| 810 | } | 807 | } |
| 811 | 808 | ||
| 812 | enum dma_status | ||
| 813 | ioat2_is_complete(struct dma_chan *c, dma_cookie_t cookie, | ||
| 814 | dma_cookie_t *done, dma_cookie_t *used) | ||
| 815 | { | ||
| 816 | struct ioat2_dma_chan *ioat = to_ioat2_chan(c); | ||
| 817 | struct ioatdma_device *device = ioat->base.device; | ||
| 818 | |||
| 819 | if (ioat_is_complete(c, cookie, done, used) == DMA_SUCCESS) | ||
| 820 | return DMA_SUCCESS; | ||
| 821 | |||
| 822 | device->cleanup_tasklet((unsigned long) ioat); | ||
| 823 | |||
| 824 | return ioat_is_complete(c, cookie, done, used); | ||
| 825 | } | ||
| 826 | |||
| 827 | static ssize_t ring_size_show(struct dma_chan *c, char *page) | 809 | static ssize_t ring_size_show(struct dma_chan *c, char *page) |
| 828 | { | 810 | { |
| 829 | struct ioat2_dma_chan *ioat = to_ioat2_chan(c); | 811 | struct ioat2_dma_chan *ioat = to_ioat2_chan(c); |
| @@ -864,7 +846,7 @@ int __devinit ioat2_dma_probe(struct ioatdma_device *device, int dca) | |||
| 864 | 846 | ||
| 865 | device->enumerate_channels = ioat2_enumerate_channels; | 847 | device->enumerate_channels = ioat2_enumerate_channels; |
| 866 | device->reset_hw = ioat2_reset_hw; | 848 | device->reset_hw = ioat2_reset_hw; |
| 867 | device->cleanup_tasklet = ioat2_cleanup_tasklet; | 849 | device->cleanup_fn = ioat2_cleanup_event; |
| 868 | device->timer_fn = ioat2_timer_event; | 850 | device->timer_fn = ioat2_timer_event; |
| 869 | device->self_test = ioat_dma_self_test; | 851 | device->self_test = ioat_dma_self_test; |
| 870 | dma = &device->common; | 852 | dma = &device->common; |
| @@ -872,7 +854,7 @@ int __devinit ioat2_dma_probe(struct ioatdma_device *device, int dca) | |||
| 872 | dma->device_issue_pending = ioat2_issue_pending; | 854 | dma->device_issue_pending = ioat2_issue_pending; |
| 873 | dma->device_alloc_chan_resources = ioat2_alloc_chan_resources; | 855 | dma->device_alloc_chan_resources = ioat2_alloc_chan_resources; |
| 874 | dma->device_free_chan_resources = ioat2_free_chan_resources; | 856 | dma->device_free_chan_resources = ioat2_free_chan_resources; |
| 875 | dma->device_is_tx_complete = ioat2_is_complete; | 857 | dma->device_is_tx_complete = ioat_is_dma_complete; |
| 876 | 858 | ||
| 877 | err = ioat_probe(device); | 859 | err = ioat_probe(device); |
| 878 | if (err) | 860 | if (err) |
diff --git a/drivers/dma/ioat/dma_v2.h b/drivers/dma/ioat/dma_v2.h index d211335b48f8..ef2871fd7868 100644 --- a/drivers/dma/ioat/dma_v2.h +++ b/drivers/dma/ioat/dma_v2.h | |||
| @@ -176,12 +176,10 @@ ioat2_dma_prep_memcpy_lock(struct dma_chan *c, dma_addr_t dma_dest, | |||
| 176 | void ioat2_issue_pending(struct dma_chan *chan); | 176 | void ioat2_issue_pending(struct dma_chan *chan); |
| 177 | int ioat2_alloc_chan_resources(struct dma_chan *c); | 177 | int ioat2_alloc_chan_resources(struct dma_chan *c); |
| 178 | void ioat2_free_chan_resources(struct dma_chan *c); | 178 | void ioat2_free_chan_resources(struct dma_chan *c); |
| 179 | enum dma_status ioat2_is_complete(struct dma_chan *c, dma_cookie_t cookie, | ||
| 180 | dma_cookie_t *done, dma_cookie_t *used); | ||
| 181 | void __ioat2_restart_chan(struct ioat2_dma_chan *ioat); | 179 | void __ioat2_restart_chan(struct ioat2_dma_chan *ioat); |
| 182 | bool reshape_ring(struct ioat2_dma_chan *ioat, int order); | 180 | bool reshape_ring(struct ioat2_dma_chan *ioat, int order); |
| 183 | void __ioat2_issue_pending(struct ioat2_dma_chan *ioat); | 181 | void __ioat2_issue_pending(struct ioat2_dma_chan *ioat); |
| 184 | void ioat2_cleanup_tasklet(unsigned long data); | 182 | void ioat2_cleanup_event(unsigned long data); |
| 185 | void ioat2_timer_event(unsigned long data); | 183 | void ioat2_timer_event(unsigned long data); |
| 186 | int ioat2_quiesce(struct ioat_chan_common *chan, unsigned long tmo); | 184 | int ioat2_quiesce(struct ioat_chan_common *chan, unsigned long tmo); |
| 187 | int ioat2_reset_sync(struct ioat_chan_common *chan, unsigned long tmo); | 185 | int ioat2_reset_sync(struct ioat_chan_common *chan, unsigned long tmo); |
diff --git a/drivers/dma/ioat/dma_v3.c b/drivers/dma/ioat/dma_v3.c index 9988f1340186..26febc56dab1 100644 --- a/drivers/dma/ioat/dma_v3.c +++ b/drivers/dma/ioat/dma_v3.c | |||
| @@ -358,9 +358,9 @@ static void ioat3_cleanup_sync(struct ioat2_dma_chan *ioat) | |||
| 358 | spin_unlock_bh(&chan->cleanup_lock); | 358 | spin_unlock_bh(&chan->cleanup_lock); |
| 359 | } | 359 | } |
| 360 | 360 | ||
| 361 | static void ioat3_cleanup_tasklet(unsigned long data) | 361 | static void ioat3_cleanup_event(unsigned long data) |
| 362 | { | 362 | { |
| 363 | struct ioat2_dma_chan *ioat = (void *) data; | 363 | struct ioat2_dma_chan *ioat = to_ioat2_chan((void *) data); |
| 364 | 364 | ||
| 365 | ioat3_cleanup_sync(ioat); | 365 | ioat3_cleanup_sync(ioat); |
| 366 | writew(IOAT_CHANCTRL_RUN, ioat->base.reg_base + IOAT_CHANCTRL_OFFSET); | 366 | writew(IOAT_CHANCTRL_RUN, ioat->base.reg_base + IOAT_CHANCTRL_OFFSET); |
| @@ -380,7 +380,7 @@ static void ioat3_restart_channel(struct ioat2_dma_chan *ioat) | |||
| 380 | 380 | ||
| 381 | static void ioat3_timer_event(unsigned long data) | 381 | static void ioat3_timer_event(unsigned long data) |
| 382 | { | 382 | { |
| 383 | struct ioat2_dma_chan *ioat = (void *) data; | 383 | struct ioat2_dma_chan *ioat = to_ioat2_chan((void *) data); |
| 384 | struct ioat_chan_common *chan = &ioat->base; | 384 | struct ioat_chan_common *chan = &ioat->base; |
| 385 | 385 | ||
| 386 | spin_lock_bh(&chan->cleanup_lock); | 386 | spin_lock_bh(&chan->cleanup_lock); |
| @@ -1259,11 +1259,11 @@ int __devinit ioat3_dma_probe(struct ioatdma_device *device, int dca) | |||
| 1259 | 1259 | ||
| 1260 | if (is_raid_device) { | 1260 | if (is_raid_device) { |
| 1261 | dma->device_is_tx_complete = ioat3_is_complete; | 1261 | dma->device_is_tx_complete = ioat3_is_complete; |
| 1262 | device->cleanup_tasklet = ioat3_cleanup_tasklet; | 1262 | device->cleanup_fn = ioat3_cleanup_event; |
| 1263 | device->timer_fn = ioat3_timer_event; | 1263 | device->timer_fn = ioat3_timer_event; |
| 1264 | } else { | 1264 | } else { |
| 1265 | dma->device_is_tx_complete = ioat2_is_complete; | 1265 | dma->device_is_tx_complete = ioat_is_dma_complete; |
| 1266 | device->cleanup_tasklet = ioat2_cleanup_tasklet; | 1266 | device->cleanup_fn = ioat2_cleanup_event; |
| 1267 | device->timer_fn = ioat2_timer_event; | 1267 | device->timer_fn = ioat2_timer_event; |
| 1268 | } | 1268 | } |
| 1269 | 1269 | ||
