aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/dma/ioat/dma_v3.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/drivers/dma/ioat/dma_v3.c b/drivers/dma/ioat/dma_v3.c
index 2dbf32b0273..dfe925fa57a 100644
--- a/drivers/dma/ioat/dma_v3.c
+++ b/drivers/dma/ioat/dma_v3.c
@@ -1147,6 +1147,44 @@ static int ioat3_reset_hw(struct ioat_chan_common *chan)
1147 return ioat2_reset_sync(chan, msecs_to_jiffies(200)); 1147 return ioat2_reset_sync(chan, msecs_to_jiffies(200));
1148} 1148}
1149 1149
1150static bool is_jf_ioat(struct pci_dev *pdev)
1151{
1152 switch (pdev->device) {
1153 case PCI_DEVICE_ID_INTEL_IOAT_JSF0:
1154 case PCI_DEVICE_ID_INTEL_IOAT_JSF1:
1155 case PCI_DEVICE_ID_INTEL_IOAT_JSF2:
1156 case PCI_DEVICE_ID_INTEL_IOAT_JSF3:
1157 case PCI_DEVICE_ID_INTEL_IOAT_JSF4:
1158 case PCI_DEVICE_ID_INTEL_IOAT_JSF5:
1159 case PCI_DEVICE_ID_INTEL_IOAT_JSF6:
1160 case PCI_DEVICE_ID_INTEL_IOAT_JSF7:
1161 case PCI_DEVICE_ID_INTEL_IOAT_JSF8:
1162 case PCI_DEVICE_ID_INTEL_IOAT_JSF9:
1163 return true;
1164 default:
1165 return false;
1166 }
1167}
1168
1169static bool is_snb_ioat(struct pci_dev *pdev)
1170{
1171 switch (pdev->device) {
1172 case PCI_DEVICE_ID_INTEL_IOAT_SNB0:
1173 case PCI_DEVICE_ID_INTEL_IOAT_SNB1:
1174 case PCI_DEVICE_ID_INTEL_IOAT_SNB2:
1175 case PCI_DEVICE_ID_INTEL_IOAT_SNB3:
1176 case PCI_DEVICE_ID_INTEL_IOAT_SNB4:
1177 case PCI_DEVICE_ID_INTEL_IOAT_SNB5:
1178 case PCI_DEVICE_ID_INTEL_IOAT_SNB6:
1179 case PCI_DEVICE_ID_INTEL_IOAT_SNB7:
1180 case PCI_DEVICE_ID_INTEL_IOAT_SNB8:
1181 case PCI_DEVICE_ID_INTEL_IOAT_SNB9:
1182 return true;
1183 default:
1184 return false;
1185 }
1186}
1187
1150int __devinit ioat3_dma_probe(struct ioatdma_device *device, int dca) 1188int __devinit ioat3_dma_probe(struct ioatdma_device *device, int dca)
1151{ 1189{
1152 struct pci_dev *pdev = device->pdev; 1190 struct pci_dev *pdev = device->pdev;
@@ -1167,6 +1205,9 @@ int __devinit ioat3_dma_probe(struct ioatdma_device *device, int dca)
1167 dma->device_alloc_chan_resources = ioat2_alloc_chan_resources; 1205 dma->device_alloc_chan_resources = ioat2_alloc_chan_resources;
1168 dma->device_free_chan_resources = ioat2_free_chan_resources; 1206 dma->device_free_chan_resources = ioat2_free_chan_resources;
1169 1207
1208 if (is_jf_ioat(pdev) || is_snb_ioat(pdev))
1209 dma->copy_align = 6;
1210
1170 dma_cap_set(DMA_INTERRUPT, dma->cap_mask); 1211 dma_cap_set(DMA_INTERRUPT, dma->cap_mask);
1171 dma->device_prep_dma_interrupt = ioat3_prep_interrupt_lock; 1212 dma->device_prep_dma_interrupt = ioat3_prep_interrupt_lock;
1172 1213