diff options
author | Dave Jiang <dave.jiang@intel.com> | 2012-12-03 18:08:37 -0500 |
---|---|---|
committer | Vinod Koul <vinod.koul@intel.com> | 2013-01-08 01:05:13 -0500 |
commit | 1a363068dcc2269931daef360ed14d2a262f19f7 (patch) | |
tree | 63893a7519328cd7312ba8d14251f5a9e3ceb605 /drivers/dma/ioat/dma_v3.c | |
parent | 7d283397ade3c9e51de644676a6593e1f724ac00 (diff) |
ioat: Add alignment workaround for IVB platforms
The PCI IDs for IvyBridge IOAT DMA needs to go into a header file since
dma_v3.c looks them up for certain hardware workarounds. Need to add to the
alignment workaround for IOAT 3.2 since it wasn't fixed in IVB.
Signed-off-by: Dave Jiang <dave.jiang@intel.com>
Signed-off-by: Dan Williams <djbw@fb.com>
Diffstat (limited to 'drivers/dma/ioat/dma_v3.c')
-rw-r--r-- | drivers/dma/ioat/dma_v3.c | 22 |
1 files changed, 21 insertions, 1 deletions
diff --git a/drivers/dma/ioat/dma_v3.c b/drivers/dma/ioat/dma_v3.c index 6456f7d38e13..9d6f3bbf0e53 100644 --- a/drivers/dma/ioat/dma_v3.c +++ b/drivers/dma/ioat/dma_v3.c | |||
@@ -1229,6 +1229,26 @@ static bool is_snb_ioat(struct pci_dev *pdev) | |||
1229 | } | 1229 | } |
1230 | } | 1230 | } |
1231 | 1231 | ||
1232 | static bool is_ivb_ioat(struct pci_dev *pdev) | ||
1233 | { | ||
1234 | switch (pdev->device) { | ||
1235 | case PCI_DEVICE_ID_INTEL_IOAT_IVB0: | ||
1236 | case PCI_DEVICE_ID_INTEL_IOAT_IVB1: | ||
1237 | case PCI_DEVICE_ID_INTEL_IOAT_IVB2: | ||
1238 | case PCI_DEVICE_ID_INTEL_IOAT_IVB3: | ||
1239 | case PCI_DEVICE_ID_INTEL_IOAT_IVB4: | ||
1240 | case PCI_DEVICE_ID_INTEL_IOAT_IVB5: | ||
1241 | case PCI_DEVICE_ID_INTEL_IOAT_IVB6: | ||
1242 | case PCI_DEVICE_ID_INTEL_IOAT_IVB7: | ||
1243 | case PCI_DEVICE_ID_INTEL_IOAT_IVB8: | ||
1244 | case PCI_DEVICE_ID_INTEL_IOAT_IVB9: | ||
1245 | return true; | ||
1246 | default: | ||
1247 | return false; | ||
1248 | } | ||
1249 | |||
1250 | } | ||
1251 | |||
1232 | int __devinit ioat3_dma_probe(struct ioatdma_device *device, int dca) | 1252 | int __devinit ioat3_dma_probe(struct ioatdma_device *device, int dca) |
1233 | { | 1253 | { |
1234 | struct pci_dev *pdev = device->pdev; | 1254 | struct pci_dev *pdev = device->pdev; |
@@ -1249,7 +1269,7 @@ int __devinit ioat3_dma_probe(struct ioatdma_device *device, int dca) | |||
1249 | dma->device_alloc_chan_resources = ioat2_alloc_chan_resources; | 1269 | dma->device_alloc_chan_resources = ioat2_alloc_chan_resources; |
1250 | dma->device_free_chan_resources = ioat2_free_chan_resources; | 1270 | dma->device_free_chan_resources = ioat2_free_chan_resources; |
1251 | 1271 | ||
1252 | if (is_jf_ioat(pdev) || is_snb_ioat(pdev)) | 1272 | if (is_jf_ioat(pdev) || is_snb_ioat(pdev) || is_ivb_ioat(pdev)) |
1253 | dma->copy_align = 6; | 1273 | dma->copy_align = 6; |
1254 | 1274 | ||
1255 | dma_cap_set(DMA_INTERRUPT, dma->cap_mask); | 1275 | dma_cap_set(DMA_INTERRUPT, dma->cap_mask); |