aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/dma/ioat/dma.h
diff options
context:
space:
mode:
authorDan Williams <dan.j.williams@intel.com>2009-09-08 20:42:58 -0400
committerDan Williams <dan.j.williams@intel.com>2009-09-08 20:42:58 -0400
commit9de6fc717bdc574cf5faf9d46ce0f9d6265c7952 (patch)
tree55cb18ecfae85033d61f730b5f32d2ac1fb572bc /drivers/dma/ioat/dma.h
parentb094ad3be564e7cc59cca4ff0256550d3a55dd3b (diff)
ioat3: xor self test
This adds a hardware specific self test to be called from ioat_probe. In the ioat3 case we will have tests for all the different raid operations, while ioat1 and ioat2 will continue to just test memcpy. Signed-off-by: Dan Williams <dan.j.williams@intel.com>
Diffstat (limited to 'drivers/dma/ioat/dma.h')
-rw-r--r--drivers/dma/ioat/dma.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/drivers/dma/ioat/dma.h b/drivers/dma/ioat/dma.h
index c2939b289185..0e37e426c729 100644
--- a/drivers/dma/ioat/dma.h
+++ b/drivers/dma/ioat/dma.h
@@ -62,10 +62,10 @@
62 * @enumerate_channels: hw version specific channel enumeration 62 * @enumerate_channels: hw version specific channel enumeration
63 * @cleanup_tasklet: select between the v2 and v3 cleanup routines 63 * @cleanup_tasklet: select between the v2 and v3 cleanup routines
64 * @timer_fn: select between the v2 and v3 timer watchdog routines 64 * @timer_fn: select between the v2 and v3 timer watchdog routines
65 * @self_test: hardware version specific self test for each supported op type
65 * 66 *
66 * Note: the v3 cleanup routine supports raid operations 67 * Note: the v3 cleanup routine supports raid operations
67 */ 68 */
68
69struct ioatdma_device { 69struct ioatdma_device {
70 struct pci_dev *pdev; 70 struct pci_dev *pdev;
71 void __iomem *reg_base; 71 void __iomem *reg_base;
@@ -80,6 +80,7 @@ struct ioatdma_device {
80 int (*enumerate_channels)(struct ioatdma_device *device); 80 int (*enumerate_channels)(struct ioatdma_device *device);
81 void (*cleanup_tasklet)(unsigned long data); 81 void (*cleanup_tasklet)(unsigned long data);
82 void (*timer_fn)(unsigned long data); 82 void (*timer_fn)(unsigned long data);
83 int (*self_test)(struct ioatdma_device *device);
83}; 84};
84 85
85struct ioat_chan_common { 86struct ioat_chan_common {
@@ -313,6 +314,7 @@ static inline void ioat_unmap(struct pci_dev *pdev, dma_addr_t addr, size_t len,
313int __devinit ioat_probe(struct ioatdma_device *device); 314int __devinit ioat_probe(struct ioatdma_device *device);
314int __devinit ioat_register(struct ioatdma_device *device); 315int __devinit ioat_register(struct ioatdma_device *device);
315int __devinit ioat1_dma_probe(struct ioatdma_device *dev, int dca); 316int __devinit ioat1_dma_probe(struct ioatdma_device *dev, int dca);
317int __devinit ioat_dma_self_test(struct ioatdma_device *device);
316void __devexit ioat_dma_remove(struct ioatdma_device *device); 318void __devexit ioat_dma_remove(struct ioatdma_device *device);
317struct dca_provider * __devinit ioat_dca_init(struct pci_dev *pdev, 319struct dca_provider * __devinit ioat_dca_init(struct pci_dev *pdev,
318 void __iomem *iobase); 320 void __iomem *iobase);