diff options
Diffstat (limited to 'drivers/char/agp/intel-agp.c')
-rw-r--r-- | drivers/char/agp/intel-agp.c | 127 |
1 files changed, 67 insertions, 60 deletions
diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c index 4068467ce7b9..8a713f1e9653 100644 --- a/drivers/char/agp/intel-agp.c +++ b/drivers/char/agp/intel-agp.c | |||
@@ -8,6 +8,7 @@ | |||
8 | #include <linux/kernel.h> | 8 | #include <linux/kernel.h> |
9 | #include <linux/pagemap.h> | 9 | #include <linux/pagemap.h> |
10 | #include <linux/agp_backend.h> | 10 | #include <linux/agp_backend.h> |
11 | #include <asm/smp.h> | ||
11 | #include "agp.h" | 12 | #include "agp.h" |
12 | 13 | ||
13 | /* | 14 | /* |
@@ -36,10 +37,10 @@ | |||
36 | #define PCI_DEVICE_ID_INTEL_82965GME_IG 0x2A12 | 37 | #define PCI_DEVICE_ID_INTEL_82965GME_IG 0x2A12 |
37 | #define PCI_DEVICE_ID_INTEL_82945GME_HB 0x27AC | 38 | #define PCI_DEVICE_ID_INTEL_82945GME_HB 0x27AC |
38 | #define PCI_DEVICE_ID_INTEL_82945GME_IG 0x27AE | 39 | #define PCI_DEVICE_ID_INTEL_82945GME_IG 0x27AE |
39 | #define PCI_DEVICE_ID_INTEL_IGDGM_HB 0xA010 | 40 | #define PCI_DEVICE_ID_INTEL_PINEVIEW_M_HB 0xA010 |
40 | #define PCI_DEVICE_ID_INTEL_IGDGM_IG 0xA011 | 41 | #define PCI_DEVICE_ID_INTEL_PINEVIEW_M_IG 0xA011 |
41 | #define PCI_DEVICE_ID_INTEL_IGDG_HB 0xA000 | 42 | #define PCI_DEVICE_ID_INTEL_PINEVIEW_HB 0xA000 |
42 | #define PCI_DEVICE_ID_INTEL_IGDG_IG 0xA001 | 43 | #define PCI_DEVICE_ID_INTEL_PINEVIEW_IG 0xA001 |
43 | #define PCI_DEVICE_ID_INTEL_G33_HB 0x29C0 | 44 | #define PCI_DEVICE_ID_INTEL_G33_HB 0x29C0 |
44 | #define PCI_DEVICE_ID_INTEL_G33_IG 0x29C2 | 45 | #define PCI_DEVICE_ID_INTEL_G33_IG 0x29C2 |
45 | #define PCI_DEVICE_ID_INTEL_Q35_HB 0x29B0 | 46 | #define PCI_DEVICE_ID_INTEL_Q35_HB 0x29B0 |
@@ -50,19 +51,20 @@ | |||
50 | #define PCI_DEVICE_ID_INTEL_B43_IG 0x2E42 | 51 | #define PCI_DEVICE_ID_INTEL_B43_IG 0x2E42 |
51 | #define PCI_DEVICE_ID_INTEL_GM45_HB 0x2A40 | 52 | #define PCI_DEVICE_ID_INTEL_GM45_HB 0x2A40 |
52 | #define PCI_DEVICE_ID_INTEL_GM45_IG 0x2A42 | 53 | #define PCI_DEVICE_ID_INTEL_GM45_IG 0x2A42 |
53 | #define PCI_DEVICE_ID_INTEL_IGD_E_HB 0x2E00 | 54 | #define PCI_DEVICE_ID_INTEL_EAGLELAKE_HB 0x2E00 |
54 | #define PCI_DEVICE_ID_INTEL_IGD_E_IG 0x2E02 | 55 | #define PCI_DEVICE_ID_INTEL_EAGLELAKE_IG 0x2E02 |
55 | #define PCI_DEVICE_ID_INTEL_Q45_HB 0x2E10 | 56 | #define PCI_DEVICE_ID_INTEL_Q45_HB 0x2E10 |
56 | #define PCI_DEVICE_ID_INTEL_Q45_IG 0x2E12 | 57 | #define PCI_DEVICE_ID_INTEL_Q45_IG 0x2E12 |
57 | #define PCI_DEVICE_ID_INTEL_G45_HB 0x2E20 | 58 | #define PCI_DEVICE_ID_INTEL_G45_HB 0x2E20 |
58 | #define PCI_DEVICE_ID_INTEL_G45_IG 0x2E22 | 59 | #define PCI_DEVICE_ID_INTEL_G45_IG 0x2E22 |
59 | #define PCI_DEVICE_ID_INTEL_G41_HB 0x2E30 | 60 | #define PCI_DEVICE_ID_INTEL_G41_HB 0x2E30 |
60 | #define PCI_DEVICE_ID_INTEL_G41_IG 0x2E32 | 61 | #define PCI_DEVICE_ID_INTEL_G41_IG 0x2E32 |
61 | #define PCI_DEVICE_ID_INTEL_IGDNG_D_HB 0x0040 | 62 | #define PCI_DEVICE_ID_INTEL_IRONLAKE_D_HB 0x0040 |
62 | #define PCI_DEVICE_ID_INTEL_IGDNG_D_IG 0x0042 | 63 | #define PCI_DEVICE_ID_INTEL_IRONLAKE_D_IG 0x0042 |
63 | #define PCI_DEVICE_ID_INTEL_IGDNG_M_HB 0x0044 | 64 | #define PCI_DEVICE_ID_INTEL_IRONLAKE_M_HB 0x0044 |
64 | #define PCI_DEVICE_ID_INTEL_IGDNG_MA_HB 0x0062 | 65 | #define PCI_DEVICE_ID_INTEL_IRONLAKE_MA_HB 0x0062 |
65 | #define PCI_DEVICE_ID_INTEL_IGDNG_M_IG 0x0046 | 66 | #define PCI_DEVICE_ID_INTEL_IRONLAKE_MC2_HB 0x006a |
67 | #define PCI_DEVICE_ID_INTEL_IRONLAKE_M_IG 0x0046 | ||
66 | 68 | ||
67 | /* cover 915 and 945 variants */ | 69 | /* cover 915 and 945 variants */ |
68 | #define IS_I915 (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_E7221_HB || \ | 70 | #define IS_I915 (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_E7221_HB || \ |
@@ -82,21 +84,22 @@ | |||
82 | #define IS_G33 (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_G33_HB || \ | 84 | #define IS_G33 (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_G33_HB || \ |
83 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_Q35_HB || \ | 85 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_Q35_HB || \ |
84 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_Q33_HB || \ | 86 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_Q33_HB || \ |
85 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGDGM_HB || \ | 87 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_PINEVIEW_M_HB || \ |
86 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGDG_HB) | 88 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_PINEVIEW_HB) |
87 | 89 | ||
88 | #define IS_IGD (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGDGM_HB || \ | 90 | #define IS_PINEVIEW (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_PINEVIEW_M_HB || \ |
89 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGDG_HB) | 91 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_PINEVIEW_HB) |
90 | 92 | ||
91 | #define IS_G4X (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGD_E_HB || \ | 93 | #define IS_G4X (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_EAGLELAKE_HB || \ |
92 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_Q45_HB || \ | 94 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_Q45_HB || \ |
93 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_G45_HB || \ | 95 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_G45_HB || \ |
94 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_GM45_HB || \ | 96 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_GM45_HB || \ |
95 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_G41_HB || \ | 97 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_G41_HB || \ |
96 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_B43_HB || \ | 98 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_B43_HB || \ |
97 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGDNG_D_HB || \ | 99 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IRONLAKE_D_HB || \ |
98 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGDNG_M_HB || \ | 100 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IRONLAKE_M_HB || \ |
99 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IGDNG_MA_HB) | 101 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IRONLAKE_MA_HB || \ |
102 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IRONLAKE_MC2_HB) | ||
100 | 103 | ||
101 | extern int agp_memory_reserved; | 104 | extern int agp_memory_reserved; |
102 | 105 | ||
@@ -176,6 +179,7 @@ static struct _intel_private { | |||
176 | * popup and for the GTT. | 179 | * popup and for the GTT. |
177 | */ | 180 | */ |
178 | int gtt_entries; /* i830+ */ | 181 | int gtt_entries; /* i830+ */ |
182 | int gtt_total_size; | ||
179 | union { | 183 | union { |
180 | void __iomem *i9xx_flush_page; | 184 | void __iomem *i9xx_flush_page; |
181 | void *i8xx_flush_page; | 185 | void *i8xx_flush_page; |
@@ -651,7 +655,7 @@ static void intel_i830_init_gtt_entries(void) | |||
651 | size = 512; | 655 | size = 512; |
652 | } | 656 | } |
653 | size += 4; /* add in BIOS popup space */ | 657 | size += 4; /* add in BIOS popup space */ |
654 | } else if (IS_G33 && !IS_IGD) { | 658 | } else if (IS_G33 && !IS_PINEVIEW) { |
655 | /* G33's GTT size defined in gmch_ctrl */ | 659 | /* G33's GTT size defined in gmch_ctrl */ |
656 | switch (gmch_ctrl & G33_PGETBL_SIZE_MASK) { | 660 | switch (gmch_ctrl & G33_PGETBL_SIZE_MASK) { |
657 | case G33_PGETBL_SIZE_1M: | 661 | case G33_PGETBL_SIZE_1M: |
@@ -667,7 +671,7 @@ static void intel_i830_init_gtt_entries(void) | |||
667 | size = 512; | 671 | size = 512; |
668 | } | 672 | } |
669 | size += 4; | 673 | size += 4; |
670 | } else if (IS_G4X || IS_IGD) { | 674 | } else if (IS_G4X || IS_PINEVIEW) { |
671 | /* On 4 series hardware, GTT stolen is separate from graphics | 675 | /* On 4 series hardware, GTT stolen is separate from graphics |
672 | * stolen, ignore it in stolen gtt entries counting. However, | 676 | * stolen, ignore it in stolen gtt entries counting. However, |
673 | * 4KB of the stolen memory doesn't get mapped to the GTT. | 677 | * 4KB of the stolen memory doesn't get mapped to the GTT. |
@@ -812,12 +816,6 @@ static void intel_i830_setup_flush(void) | |||
812 | intel_i830_fini_flush(); | 816 | intel_i830_fini_flush(); |
813 | } | 817 | } |
814 | 818 | ||
815 | static void | ||
816 | do_wbinvd(void *null) | ||
817 | { | ||
818 | wbinvd(); | ||
819 | } | ||
820 | |||
821 | /* The chipset_flush interface needs to get data that has already been | 819 | /* The chipset_flush interface needs to get data that has already been |
822 | * flushed out of the CPU all the way out to main memory, because the GPU | 820 | * flushed out of the CPU all the way out to main memory, because the GPU |
823 | * doesn't snoop those buffers. | 821 | * doesn't snoop those buffers. |
@@ -834,12 +832,10 @@ static void intel_i830_chipset_flush(struct agp_bridge_data *bridge) | |||
834 | 832 | ||
835 | memset(pg, 0, 1024); | 833 | memset(pg, 0, 1024); |
836 | 834 | ||
837 | if (cpu_has_clflush) { | 835 | if (cpu_has_clflush) |
838 | clflush_cache_range(pg, 1024); | 836 | clflush_cache_range(pg, 1024); |
839 | } else { | 837 | else if (wbinvd_on_all_cpus() != 0) |
840 | if (on_each_cpu(do_wbinvd, NULL, 1) != 0) | 838 | printk(KERN_ERR "Timed out waiting for cache flush.\n"); |
841 | printk(KERN_ERR "Timed out waiting for cache flush.\n"); | ||
842 | } | ||
843 | } | 839 | } |
844 | 840 | ||
845 | /* The intel i830 automatically initializes the agp aperture during POST. | 841 | /* The intel i830 automatically initializes the agp aperture during POST. |
@@ -1151,7 +1147,7 @@ static int intel_i915_configure(void) | |||
1151 | readl(intel_private.registers+I810_PGETBL_CTL); /* PCI Posting. */ | 1147 | readl(intel_private.registers+I810_PGETBL_CTL); /* PCI Posting. */ |
1152 | 1148 | ||
1153 | if (agp_bridge->driver->needs_scratch_page) { | 1149 | if (agp_bridge->driver->needs_scratch_page) { |
1154 | for (i = intel_private.gtt_entries; i < current_size->num_entries; i++) { | 1150 | for (i = intel_private.gtt_entries; i < intel_private.gtt_total_size; i++) { |
1155 | writel(agp_bridge->scratch_page, intel_private.gtt+i); | 1151 | writel(agp_bridge->scratch_page, intel_private.gtt+i); |
1156 | } | 1152 | } |
1157 | readl(intel_private.gtt+i-1); /* PCI Posting. */ | 1153 | readl(intel_private.gtt+i-1); /* PCI Posting. */ |
@@ -1161,12 +1157,6 @@ static int intel_i915_configure(void) | |||
1161 | 1157 | ||
1162 | intel_i9xx_setup_flush(); | 1158 | intel_i9xx_setup_flush(); |
1163 | 1159 | ||
1164 | #ifdef USE_PCI_DMA_API | ||
1165 | if (pci_set_dma_mask(intel_private.pcidev, DMA_BIT_MASK(36))) | ||
1166 | dev_err(&intel_private.pcidev->dev, | ||
1167 | "set gfx device dma mask 36bit failed!\n"); | ||
1168 | #endif | ||
1169 | |||
1170 | return 0; | 1160 | return 0; |
1171 | } | 1161 | } |
1172 | 1162 | ||
@@ -1312,6 +1302,8 @@ static int intel_i915_create_gatt_table(struct agp_bridge_data *bridge) | |||
1312 | if (!intel_private.gtt) | 1302 | if (!intel_private.gtt) |
1313 | return -ENOMEM; | 1303 | return -ENOMEM; |
1314 | 1304 | ||
1305 | intel_private.gtt_total_size = gtt_map_size / 4; | ||
1306 | |||
1315 | temp &= 0xfff80000; | 1307 | temp &= 0xfff80000; |
1316 | 1308 | ||
1317 | intel_private.registers = ioremap(temp, 128 * 4096); | 1309 | intel_private.registers = ioremap(temp, 128 * 4096); |
@@ -1356,14 +1348,15 @@ static void intel_i965_get_gtt_range(int *gtt_offset, int *gtt_size) | |||
1356 | { | 1348 | { |
1357 | switch (agp_bridge->dev->device) { | 1349 | switch (agp_bridge->dev->device) { |
1358 | case PCI_DEVICE_ID_INTEL_GM45_HB: | 1350 | case PCI_DEVICE_ID_INTEL_GM45_HB: |
1359 | case PCI_DEVICE_ID_INTEL_IGD_E_HB: | 1351 | case PCI_DEVICE_ID_INTEL_EAGLELAKE_HB: |
1360 | case PCI_DEVICE_ID_INTEL_Q45_HB: | 1352 | case PCI_DEVICE_ID_INTEL_Q45_HB: |
1361 | case PCI_DEVICE_ID_INTEL_G45_HB: | 1353 | case PCI_DEVICE_ID_INTEL_G45_HB: |
1362 | case PCI_DEVICE_ID_INTEL_G41_HB: | 1354 | case PCI_DEVICE_ID_INTEL_G41_HB: |
1363 | case PCI_DEVICE_ID_INTEL_B43_HB: | 1355 | case PCI_DEVICE_ID_INTEL_B43_HB: |
1364 | case PCI_DEVICE_ID_INTEL_IGDNG_D_HB: | 1356 | case PCI_DEVICE_ID_INTEL_IRONLAKE_D_HB: |
1365 | case PCI_DEVICE_ID_INTEL_IGDNG_M_HB: | 1357 | case PCI_DEVICE_ID_INTEL_IRONLAKE_M_HB: |
1366 | case PCI_DEVICE_ID_INTEL_IGDNG_MA_HB: | 1358 | case PCI_DEVICE_ID_INTEL_IRONLAKE_MA_HB: |
1359 | case PCI_DEVICE_ID_INTEL_IRONLAKE_MC2_HB: | ||
1367 | *gtt_offset = *gtt_size = MB(2); | 1360 | *gtt_offset = *gtt_size = MB(2); |
1368 | break; | 1361 | break; |
1369 | default: | 1362 | default: |
@@ -1398,6 +1391,8 @@ static int intel_i965_create_gatt_table(struct agp_bridge_data *bridge) | |||
1398 | if (!intel_private.gtt) | 1391 | if (!intel_private.gtt) |
1399 | return -ENOMEM; | 1392 | return -ENOMEM; |
1400 | 1393 | ||
1394 | intel_private.gtt_total_size = gtt_size / 4; | ||
1395 | |||
1401 | intel_private.registers = ioremap(temp, 128 * 4096); | 1396 | intel_private.registers = ioremap(temp, 128 * 4096); |
1402 | if (!intel_private.registers) { | 1397 | if (!intel_private.registers) { |
1403 | iounmap(intel_private.gtt); | 1398 | iounmap(intel_private.gtt); |
@@ -2343,14 +2338,14 @@ static const struct intel_driver_description { | |||
2343 | NULL, &intel_g33_driver }, | 2338 | NULL, &intel_g33_driver }, |
2344 | { PCI_DEVICE_ID_INTEL_Q33_HB, PCI_DEVICE_ID_INTEL_Q33_IG, 0, "Q33", | 2339 | { PCI_DEVICE_ID_INTEL_Q33_HB, PCI_DEVICE_ID_INTEL_Q33_IG, 0, "Q33", |
2345 | NULL, &intel_g33_driver }, | 2340 | NULL, &intel_g33_driver }, |
2346 | { PCI_DEVICE_ID_INTEL_IGDGM_HB, PCI_DEVICE_ID_INTEL_IGDGM_IG, 0, "IGD", | 2341 | { PCI_DEVICE_ID_INTEL_PINEVIEW_M_HB, PCI_DEVICE_ID_INTEL_PINEVIEW_M_IG, 0, "Pineview", |
2347 | NULL, &intel_g33_driver }, | 2342 | NULL, &intel_g33_driver }, |
2348 | { PCI_DEVICE_ID_INTEL_IGDG_HB, PCI_DEVICE_ID_INTEL_IGDG_IG, 0, "IGD", | 2343 | { PCI_DEVICE_ID_INTEL_PINEVIEW_HB, PCI_DEVICE_ID_INTEL_PINEVIEW_IG, 0, "Pineview", |
2349 | NULL, &intel_g33_driver }, | 2344 | NULL, &intel_g33_driver }, |
2350 | { PCI_DEVICE_ID_INTEL_GM45_HB, PCI_DEVICE_ID_INTEL_GM45_IG, 0, | 2345 | { PCI_DEVICE_ID_INTEL_GM45_HB, PCI_DEVICE_ID_INTEL_GM45_IG, 0, |
2351 | "Mobile IntelĀ® GM45 Express", NULL, &intel_i965_driver }, | 2346 | "GM45", NULL, &intel_i965_driver }, |
2352 | { PCI_DEVICE_ID_INTEL_IGD_E_HB, PCI_DEVICE_ID_INTEL_IGD_E_IG, 0, | 2347 | { PCI_DEVICE_ID_INTEL_EAGLELAKE_HB, PCI_DEVICE_ID_INTEL_EAGLELAKE_IG, 0, |
2353 | "Intel Integrated Graphics Device", NULL, &intel_i965_driver }, | 2348 | "Eaglelake", NULL, &intel_i965_driver }, |
2354 | { PCI_DEVICE_ID_INTEL_Q45_HB, PCI_DEVICE_ID_INTEL_Q45_IG, 0, | 2349 | { PCI_DEVICE_ID_INTEL_Q45_HB, PCI_DEVICE_ID_INTEL_Q45_IG, 0, |
2355 | "Q45/Q43", NULL, &intel_i965_driver }, | 2350 | "Q45/Q43", NULL, &intel_i965_driver }, |
2356 | { PCI_DEVICE_ID_INTEL_G45_HB, PCI_DEVICE_ID_INTEL_G45_IG, 0, | 2351 | { PCI_DEVICE_ID_INTEL_G45_HB, PCI_DEVICE_ID_INTEL_G45_IG, 0, |
@@ -2359,12 +2354,14 @@ static const struct intel_driver_description { | |||
2359 | "B43", NULL, &intel_i965_driver }, | 2354 | "B43", NULL, &intel_i965_driver }, |
2360 | { PCI_DEVICE_ID_INTEL_G41_HB, PCI_DEVICE_ID_INTEL_G41_IG, 0, | 2355 | { PCI_DEVICE_ID_INTEL_G41_HB, PCI_DEVICE_ID_INTEL_G41_IG, 0, |
2361 | "G41", NULL, &intel_i965_driver }, | 2356 | "G41", NULL, &intel_i965_driver }, |
2362 | { PCI_DEVICE_ID_INTEL_IGDNG_D_HB, PCI_DEVICE_ID_INTEL_IGDNG_D_IG, 0, | 2357 | { PCI_DEVICE_ID_INTEL_IRONLAKE_D_HB, PCI_DEVICE_ID_INTEL_IRONLAKE_D_IG, 0, |
2363 | "IGDNG/D", NULL, &intel_i965_driver }, | 2358 | "Ironlake/D", NULL, &intel_i965_driver }, |
2364 | { PCI_DEVICE_ID_INTEL_IGDNG_M_HB, PCI_DEVICE_ID_INTEL_IGDNG_M_IG, 0, | 2359 | { PCI_DEVICE_ID_INTEL_IRONLAKE_M_HB, PCI_DEVICE_ID_INTEL_IRONLAKE_M_IG, 0, |
2365 | "IGDNG/M", NULL, &intel_i965_driver }, | 2360 | "Ironlake/M", NULL, &intel_i965_driver }, |
2366 | { PCI_DEVICE_ID_INTEL_IGDNG_MA_HB, PCI_DEVICE_ID_INTEL_IGDNG_M_IG, 0, | 2361 | { PCI_DEVICE_ID_INTEL_IRONLAKE_MA_HB, PCI_DEVICE_ID_INTEL_IRONLAKE_M_IG, 0, |
2367 | "IGDNG/MA", NULL, &intel_i965_driver }, | 2362 | "Ironlake/MA", NULL, &intel_i965_driver }, |
2363 | { PCI_DEVICE_ID_INTEL_IRONLAKE_MC2_HB, PCI_DEVICE_ID_INTEL_IRONLAKE_M_IG, 0, | ||
2364 | "Ironlake/MC2", NULL, &intel_i965_driver }, | ||
2368 | { 0, 0, 0, NULL, NULL, NULL } | 2365 | { 0, 0, 0, NULL, NULL, NULL } |
2369 | }; | 2366 | }; |
2370 | 2367 | ||
@@ -2456,6 +2453,15 @@ static int __devinit agp_intel_probe(struct pci_dev *pdev, | |||
2456 | &bridge->mode); | 2453 | &bridge->mode); |
2457 | } | 2454 | } |
2458 | 2455 | ||
2456 | if (bridge->driver->mask_memory == intel_i965_mask_memory) { | ||
2457 | if (pci_set_dma_mask(intel_private.pcidev, DMA_BIT_MASK(36))) | ||
2458 | dev_err(&intel_private.pcidev->dev, | ||
2459 | "set gfx device dma mask 36bit failed!\n"); | ||
2460 | else | ||
2461 | pci_set_consistent_dma_mask(intel_private.pcidev, | ||
2462 | DMA_BIT_MASK(36)); | ||
2463 | } | ||
2464 | |||
2459 | pci_set_drvdata(pdev, bridge); | 2465 | pci_set_drvdata(pdev, bridge); |
2460 | return agp_add_bridge(bridge); | 2466 | return agp_add_bridge(bridge); |
2461 | } | 2467 | } |
@@ -2541,8 +2547,8 @@ static struct pci_device_id agp_intel_pci_table[] = { | |||
2541 | ID(PCI_DEVICE_ID_INTEL_82945G_HB), | 2547 | ID(PCI_DEVICE_ID_INTEL_82945G_HB), |
2542 | ID(PCI_DEVICE_ID_INTEL_82945GM_HB), | 2548 | ID(PCI_DEVICE_ID_INTEL_82945GM_HB), |
2543 | ID(PCI_DEVICE_ID_INTEL_82945GME_HB), | 2549 | ID(PCI_DEVICE_ID_INTEL_82945GME_HB), |
2544 | ID(PCI_DEVICE_ID_INTEL_IGDGM_HB), | 2550 | ID(PCI_DEVICE_ID_INTEL_PINEVIEW_M_HB), |
2545 | ID(PCI_DEVICE_ID_INTEL_IGDG_HB), | 2551 | ID(PCI_DEVICE_ID_INTEL_PINEVIEW_HB), |
2546 | ID(PCI_DEVICE_ID_INTEL_82946GZ_HB), | 2552 | ID(PCI_DEVICE_ID_INTEL_82946GZ_HB), |
2547 | ID(PCI_DEVICE_ID_INTEL_82G35_HB), | 2553 | ID(PCI_DEVICE_ID_INTEL_82G35_HB), |
2548 | ID(PCI_DEVICE_ID_INTEL_82965Q_HB), | 2554 | ID(PCI_DEVICE_ID_INTEL_82965Q_HB), |
@@ -2553,14 +2559,15 @@ static struct pci_device_id agp_intel_pci_table[] = { | |||
2553 | ID(PCI_DEVICE_ID_INTEL_Q35_HB), | 2559 | ID(PCI_DEVICE_ID_INTEL_Q35_HB), |
2554 | ID(PCI_DEVICE_ID_INTEL_Q33_HB), | 2560 | ID(PCI_DEVICE_ID_INTEL_Q33_HB), |
2555 | ID(PCI_DEVICE_ID_INTEL_GM45_HB), | 2561 | ID(PCI_DEVICE_ID_INTEL_GM45_HB), |
2556 | ID(PCI_DEVICE_ID_INTEL_IGD_E_HB), | 2562 | ID(PCI_DEVICE_ID_INTEL_EAGLELAKE_HB), |
2557 | ID(PCI_DEVICE_ID_INTEL_Q45_HB), | 2563 | ID(PCI_DEVICE_ID_INTEL_Q45_HB), |
2558 | ID(PCI_DEVICE_ID_INTEL_G45_HB), | 2564 | ID(PCI_DEVICE_ID_INTEL_G45_HB), |
2559 | ID(PCI_DEVICE_ID_INTEL_G41_HB), | 2565 | ID(PCI_DEVICE_ID_INTEL_G41_HB), |
2560 | ID(PCI_DEVICE_ID_INTEL_B43_HB), | 2566 | ID(PCI_DEVICE_ID_INTEL_B43_HB), |
2561 | ID(PCI_DEVICE_ID_INTEL_IGDNG_D_HB), | 2567 | ID(PCI_DEVICE_ID_INTEL_IRONLAKE_D_HB), |
2562 | ID(PCI_DEVICE_ID_INTEL_IGDNG_M_HB), | 2568 | ID(PCI_DEVICE_ID_INTEL_IRONLAKE_M_HB), |
2563 | ID(PCI_DEVICE_ID_INTEL_IGDNG_MA_HB), | 2569 | ID(PCI_DEVICE_ID_INTEL_IRONLAKE_MA_HB), |
2570 | ID(PCI_DEVICE_ID_INTEL_IRONLAKE_MC2_HB), | ||
2564 | { } | 2571 | { } |
2565 | }; | 2572 | }; |
2566 | 2573 | ||