diff options
Diffstat (limited to 'drivers/dma')
-rw-r--r-- | drivers/dma/ioat/dma_v3.c | 28 | ||||
-rw-r--r-- | drivers/dma/ioat/hw.h | 22 | ||||
-rw-r--r-- | drivers/dma/ioat/pci.c | 11 |
3 files changed, 55 insertions, 6 deletions
diff --git a/drivers/dma/ioat/dma_v3.c b/drivers/dma/ioat/dma_v3.c index a1dcfb2670f7..ab5655eb0602 100644 --- a/drivers/dma/ioat/dma_v3.c +++ b/drivers/dma/ioat/dma_v3.c | |||
@@ -1260,6 +1260,32 @@ static bool is_ivb_ioat(struct pci_dev *pdev) | |||
1260 | 1260 | ||
1261 | } | 1261 | } |
1262 | 1262 | ||
1263 | static bool is_hsw_ioat(struct pci_dev *pdev) | ||
1264 | { | ||
1265 | switch (pdev->device) { | ||
1266 | case PCI_DEVICE_ID_INTEL_IOAT_HSW0: | ||
1267 | case PCI_DEVICE_ID_INTEL_IOAT_HSW1: | ||
1268 | case PCI_DEVICE_ID_INTEL_IOAT_HSW2: | ||
1269 | case PCI_DEVICE_ID_INTEL_IOAT_HSW3: | ||
1270 | case PCI_DEVICE_ID_INTEL_IOAT_HSW4: | ||
1271 | case PCI_DEVICE_ID_INTEL_IOAT_HSW5: | ||
1272 | case PCI_DEVICE_ID_INTEL_IOAT_HSW6: | ||
1273 | case PCI_DEVICE_ID_INTEL_IOAT_HSW7: | ||
1274 | case PCI_DEVICE_ID_INTEL_IOAT_HSW8: | ||
1275 | case PCI_DEVICE_ID_INTEL_IOAT_HSW9: | ||
1276 | return true; | ||
1277 | default: | ||
1278 | return false; | ||
1279 | } | ||
1280 | |||
1281 | } | ||
1282 | |||
1283 | static bool is_xeon_cb32(struct pci_dev *pdev) | ||
1284 | { | ||
1285 | return is_jf_ioat(pdev) || is_snb_ioat(pdev) || is_ivb_ioat(pdev) || | ||
1286 | is_hsw_ioat(pdev); | ||
1287 | } | ||
1288 | |||
1263 | int ioat3_dma_probe(struct ioatdma_device *device, int dca) | 1289 | int ioat3_dma_probe(struct ioatdma_device *device, int dca) |
1264 | { | 1290 | { |
1265 | struct pci_dev *pdev = device->pdev; | 1291 | struct pci_dev *pdev = device->pdev; |
@@ -1280,7 +1306,7 @@ int ioat3_dma_probe(struct ioatdma_device *device, int dca) | |||
1280 | dma->device_alloc_chan_resources = ioat2_alloc_chan_resources; | 1306 | dma->device_alloc_chan_resources = ioat2_alloc_chan_resources; |
1281 | dma->device_free_chan_resources = ioat2_free_chan_resources; | 1307 | dma->device_free_chan_resources = ioat2_free_chan_resources; |
1282 | 1308 | ||
1283 | if (is_jf_ioat(pdev) || is_snb_ioat(pdev) || is_ivb_ioat(pdev)) | 1309 | if (is_xeon_cb32(pdev)) |
1284 | dma->copy_align = 6; | 1310 | dma->copy_align = 6; |
1285 | 1311 | ||
1286 | dma_cap_set(DMA_INTERRUPT, dma->cap_mask); | 1312 | dma_cap_set(DMA_INTERRUPT, dma->cap_mask); |
diff --git a/drivers/dma/ioat/hw.h b/drivers/dma/ioat/hw.h index 7cb74c62c719..8cfa07789888 100644 --- a/drivers/dma/ioat/hw.h +++ b/drivers/dma/ioat/hw.h | |||
@@ -30,11 +30,6 @@ | |||
30 | #define IOAT_PCI_DID_SCNB 0x65FF | 30 | #define IOAT_PCI_DID_SCNB 0x65FF |
31 | #define IOAT_PCI_DID_SNB 0x402F | 31 | #define IOAT_PCI_DID_SNB 0x402F |
32 | 32 | ||
33 | #define IOAT_VER_1_2 0x12 /* Version 1.2 */ | ||
34 | #define IOAT_VER_2_0 0x20 /* Version 2.0 */ | ||
35 | #define IOAT_VER_3_0 0x30 /* Version 3.0 */ | ||
36 | #define IOAT_VER_3_2 0x32 /* Version 3.2 */ | ||
37 | |||
38 | #define PCI_DEVICE_ID_INTEL_IOAT_IVB0 0x0e20 | 33 | #define PCI_DEVICE_ID_INTEL_IOAT_IVB0 0x0e20 |
39 | #define PCI_DEVICE_ID_INTEL_IOAT_IVB1 0x0e21 | 34 | #define PCI_DEVICE_ID_INTEL_IOAT_IVB1 0x0e21 |
40 | #define PCI_DEVICE_ID_INTEL_IOAT_IVB2 0x0e22 | 35 | #define PCI_DEVICE_ID_INTEL_IOAT_IVB2 0x0e22 |
@@ -46,6 +41,23 @@ | |||
46 | #define PCI_DEVICE_ID_INTEL_IOAT_IVB8 0x0e2e | 41 | #define PCI_DEVICE_ID_INTEL_IOAT_IVB8 0x0e2e |
47 | #define PCI_DEVICE_ID_INTEL_IOAT_IVB9 0x0e2f | 42 | #define PCI_DEVICE_ID_INTEL_IOAT_IVB9 0x0e2f |
48 | 43 | ||
44 | #define PCI_DEVICE_ID_INTEL_IOAT_HSW0 0x2f20 | ||
45 | #define PCI_DEVICE_ID_INTEL_IOAT_HSW1 0x2f21 | ||
46 | #define PCI_DEVICE_ID_INTEL_IOAT_HSW2 0x2f22 | ||
47 | #define PCI_DEVICE_ID_INTEL_IOAT_HSW3 0x2f23 | ||
48 | #define PCI_DEVICE_ID_INTEL_IOAT_HSW4 0x2f24 | ||
49 | #define PCI_DEVICE_ID_INTEL_IOAT_HSW5 0x2f25 | ||
50 | #define PCI_DEVICE_ID_INTEL_IOAT_HSW6 0x2f26 | ||
51 | #define PCI_DEVICE_ID_INTEL_IOAT_HSW7 0x2f27 | ||
52 | #define PCI_DEVICE_ID_INTEL_IOAT_HSW8 0x2f2e | ||
53 | #define PCI_DEVICE_ID_INTEL_IOAT_HSW9 0x2f2f | ||
54 | |||
55 | #define IOAT_VER_1_2 0x12 /* Version 1.2 */ | ||
56 | #define IOAT_VER_2_0 0x20 /* Version 2.0 */ | ||
57 | #define IOAT_VER_3_0 0x30 /* Version 3.0 */ | ||
58 | #define IOAT_VER_3_2 0x32 /* Version 3.2 */ | ||
59 | |||
60 | |||
49 | int system_has_dca_enabled(struct pci_dev *pdev); | 61 | int system_has_dca_enabled(struct pci_dev *pdev); |
50 | 62 | ||
51 | struct ioat_dma_descriptor { | 63 | struct ioat_dma_descriptor { |
diff --git a/drivers/dma/ioat/pci.c b/drivers/dma/ioat/pci.c index 71c7ecd80fac..67c8e83bd90b 100644 --- a/drivers/dma/ioat/pci.c +++ b/drivers/dma/ioat/pci.c | |||
@@ -94,6 +94,17 @@ static struct pci_device_id ioat_pci_tbl[] = { | |||
94 | { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_IOAT_IVB8) }, | 94 | { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_IOAT_IVB8) }, |
95 | { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_IOAT_IVB9) }, | 95 | { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_IOAT_IVB9) }, |
96 | 96 | ||
97 | { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_IOAT_HSW0) }, | ||
98 | { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_IOAT_HSW1) }, | ||
99 | { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_IOAT_HSW2) }, | ||
100 | { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_IOAT_HSW3) }, | ||
101 | { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_IOAT_HSW4) }, | ||
102 | { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_IOAT_HSW5) }, | ||
103 | { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_IOAT_HSW6) }, | ||
104 | { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_IOAT_HSW7) }, | ||
105 | { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_IOAT_HSW8) }, | ||
106 | { PCI_VDEVICE(INTEL, PCI_DEVICE_ID_INTEL_IOAT_HSW9) }, | ||
107 | |||
97 | { 0, } | 108 | { 0, } |
98 | }; | 109 | }; |
99 | MODULE_DEVICE_TABLE(pci, ioat_pci_tbl); | 110 | MODULE_DEVICE_TABLE(pci, ioat_pci_tbl); |