diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-09-07 17:00:43 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-09-07 17:00:43 -0400 |
| commit | 4eab8a5717f5a863cb0e2fc8b22d8b22f4aaa644 (patch) | |
| tree | ef1e57b99019aa876fc814d2da2560b6fab631c8 | |
| parent | 6300d6d755842f2ed18053ed6f868944d51b5aef (diff) | |
| parent | 8554048070906579ec9fa19ac381deddd2d7b155 (diff) | |
Merge branch 'drm-intel-fixes' of git://anongit.freedesktop.org/~ickle/drm-intel
* 'drm-intel-fixes' of git://anongit.freedesktop.org/~ickle/drm-intel: (25 commits)
intel_agp,i915: Add more sandybridge graphics device ids
drm/i915: Enable MI_FLUSH on Sandybridge
agp/intel: Fix cache control for Sandybridge
agp/intel: use #ifdef idiom for intel-agp.h
agp/intel: fix physical address mask bits for sandybridge
drm/i915: Prevent double dpms on
drm/i915: Avoid use of uninitialised values when disabling panel-fitter
drm/i915: Avoid pageflipping freeze when we miss the flip prepare interrupt
drm/i915: Tightly scope intel_encoder to prevent invalid use
drm/i915: Allocate the PCI resource for the MCHBAR
drm/i915/dp: Really try 5 times before giving up.
drm/i915/sdvo: Restore guess of the DDC bus in absence of VBIOS
drm/i915/dp: Boost timeout for enabling transcoder to 100ms
drm/i915: Re-use set_base_atomic to share setting of the display registers
drm/i915: Fix offset page-flips on i965+
drm/i915: Include a generation number in the device info
i915: return -EFAULT if copy_to_user fails
i915: return -EFAULT if copy_to_user fails
agp/intel: Promote warning about failure to setup flush to error.
drm/i915: overlay on gen2 can't address above 1G
...
| -rw-r--r-- | drivers/char/agp/intel-agp.c | 16 | ||||
| -rw-r--r-- | drivers/char/agp/intel-agp.h | 22 | ||||
| -rw-r--r-- | drivers/char/agp/intel-gtt.c | 66 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_debugfs.c | 50 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_dma.c | 36 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_drv.c | 65 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 27 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 11 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_irq.c | 51 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_reg.h | 1 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 244 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_dp.c | 58 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_drv.h | 10 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_overlay.c | 2 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_ringbuffer.c | 8 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_sdvo.c | 69 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_tv.c | 9 | ||||
| -rw-r--r-- | include/linux/intel-gtt.h | 20 |
18 files changed, 479 insertions, 286 deletions
diff --git a/drivers/char/agp/intel-agp.c b/drivers/char/agp/intel-agp.c index 710af89b176d..eab58db5f91c 100644 --- a/drivers/char/agp/intel-agp.c +++ b/drivers/char/agp/intel-agp.c | |||
| @@ -12,6 +12,7 @@ | |||
| 12 | #include <asm/smp.h> | 12 | #include <asm/smp.h> |
| 13 | #include "agp.h" | 13 | #include "agp.h" |
| 14 | #include "intel-agp.h" | 14 | #include "intel-agp.h" |
| 15 | #include <linux/intel-gtt.h> | ||
| 15 | 16 | ||
| 16 | #include "intel-gtt.c" | 17 | #include "intel-gtt.c" |
| 17 | 18 | ||
| @@ -815,11 +816,19 @@ static const struct intel_driver_description { | |||
| 815 | "HD Graphics", NULL, &intel_i965_driver }, | 816 | "HD Graphics", NULL, &intel_i965_driver }, |
| 816 | { PCI_DEVICE_ID_INTEL_IRONLAKE_MC2_HB, PCI_DEVICE_ID_INTEL_IRONLAKE_M_IG, | 817 | { PCI_DEVICE_ID_INTEL_IRONLAKE_MC2_HB, PCI_DEVICE_ID_INTEL_IRONLAKE_M_IG, |
| 817 | "HD Graphics", NULL, &intel_i965_driver }, | 818 | "HD Graphics", NULL, &intel_i965_driver }, |
| 818 | { PCI_DEVICE_ID_INTEL_SANDYBRIDGE_HB, PCI_DEVICE_ID_INTEL_SANDYBRIDGE_IG, | 819 | { PCI_DEVICE_ID_INTEL_SANDYBRIDGE_HB, PCI_DEVICE_ID_INTEL_SANDYBRIDGE_GT1_IG, |
| 819 | "Sandybridge", NULL, &intel_gen6_driver }, | 820 | "Sandybridge", NULL, &intel_gen6_driver }, |
| 820 | { PCI_DEVICE_ID_INTEL_SANDYBRIDGE_M_HB, PCI_DEVICE_ID_INTEL_SANDYBRIDGE_M_IG, | 821 | { PCI_DEVICE_ID_INTEL_SANDYBRIDGE_HB, PCI_DEVICE_ID_INTEL_SANDYBRIDGE_GT2_IG, |
| 821 | "Sandybridge", NULL, &intel_gen6_driver }, | 822 | "Sandybridge", NULL, &intel_gen6_driver }, |
| 822 | { PCI_DEVICE_ID_INTEL_SANDYBRIDGE_M_HB, PCI_DEVICE_ID_INTEL_SANDYBRIDGE_M_D0_IG, | 823 | { PCI_DEVICE_ID_INTEL_SANDYBRIDGE_HB, PCI_DEVICE_ID_INTEL_SANDYBRIDGE_GT2_PLUS_IG, |
| 824 | "Sandybridge", NULL, &intel_gen6_driver }, | ||
| 825 | { PCI_DEVICE_ID_INTEL_SANDYBRIDGE_M_HB, PCI_DEVICE_ID_INTEL_SANDYBRIDGE_M_GT1_IG, | ||
| 826 | "Sandybridge", NULL, &intel_gen6_driver }, | ||
| 827 | { PCI_DEVICE_ID_INTEL_SANDYBRIDGE_M_HB, PCI_DEVICE_ID_INTEL_SANDYBRIDGE_M_GT2_IG, | ||
| 828 | "Sandybridge", NULL, &intel_gen6_driver }, | ||
| 829 | { PCI_DEVICE_ID_INTEL_SANDYBRIDGE_M_HB, PCI_DEVICE_ID_INTEL_SANDYBRIDGE_M_GT2_PLUS_IG, | ||
| 830 | "Sandybridge", NULL, &intel_gen6_driver }, | ||
| 831 | { PCI_DEVICE_ID_INTEL_SANDYBRIDGE_S_HB, PCI_DEVICE_ID_INTEL_SANDYBRIDGE_S_IG, | ||
| 823 | "Sandybridge", NULL, &intel_gen6_driver }, | 832 | "Sandybridge", NULL, &intel_gen6_driver }, |
| 824 | { 0, 0, NULL, NULL, NULL } | 833 | { 0, 0, NULL, NULL, NULL } |
| 825 | }; | 834 | }; |
| @@ -1044,6 +1053,7 @@ static struct pci_device_id agp_intel_pci_table[] = { | |||
| 1044 | ID(PCI_DEVICE_ID_INTEL_IRONLAKE_MC2_HB), | 1053 | ID(PCI_DEVICE_ID_INTEL_IRONLAKE_MC2_HB), |
| 1045 | ID(PCI_DEVICE_ID_INTEL_SANDYBRIDGE_HB), | 1054 | ID(PCI_DEVICE_ID_INTEL_SANDYBRIDGE_HB), |
| 1046 | ID(PCI_DEVICE_ID_INTEL_SANDYBRIDGE_M_HB), | 1055 | ID(PCI_DEVICE_ID_INTEL_SANDYBRIDGE_M_HB), |
| 1056 | ID(PCI_DEVICE_ID_INTEL_SANDYBRIDGE_S_HB), | ||
| 1047 | { } | 1057 | { } |
| 1048 | }; | 1058 | }; |
| 1049 | 1059 | ||
diff --git a/drivers/char/agp/intel-agp.h b/drivers/char/agp/intel-agp.h index 08d47532e605..ee189c74d345 100644 --- a/drivers/char/agp/intel-agp.h +++ b/drivers/char/agp/intel-agp.h | |||
| @@ -1,6 +1,8 @@ | |||
| 1 | /* | 1 | /* |
| 2 | * Common Intel AGPGART and GTT definitions. | 2 | * Common Intel AGPGART and GTT definitions. |
| 3 | */ | 3 | */ |
| 4 | #ifndef _INTEL_AGP_H | ||
| 5 | #define _INTEL_AGP_H | ||
| 4 | 6 | ||
| 5 | /* Intel registers */ | 7 | /* Intel registers */ |
| 6 | #define INTEL_APSIZE 0xb4 | 8 | #define INTEL_APSIZE 0xb4 |
| @@ -200,11 +202,16 @@ | |||
| 200 | #define PCI_DEVICE_ID_INTEL_IRONLAKE_MA_HB 0x0062 | 202 | #define PCI_DEVICE_ID_INTEL_IRONLAKE_MA_HB 0x0062 |
| 201 | #define PCI_DEVICE_ID_INTEL_IRONLAKE_MC2_HB 0x006a | 203 | #define PCI_DEVICE_ID_INTEL_IRONLAKE_MC2_HB 0x006a |
| 202 | #define PCI_DEVICE_ID_INTEL_IRONLAKE_M_IG 0x0046 | 204 | #define PCI_DEVICE_ID_INTEL_IRONLAKE_M_IG 0x0046 |
| 203 | #define PCI_DEVICE_ID_INTEL_SANDYBRIDGE_HB 0x0100 | 205 | #define PCI_DEVICE_ID_INTEL_SANDYBRIDGE_HB 0x0100 /* Desktop */ |
| 204 | #define PCI_DEVICE_ID_INTEL_SANDYBRIDGE_IG 0x0102 | 206 | #define PCI_DEVICE_ID_INTEL_SANDYBRIDGE_GT1_IG 0x0102 |
| 205 | #define PCI_DEVICE_ID_INTEL_SANDYBRIDGE_M_HB 0x0104 | 207 | #define PCI_DEVICE_ID_INTEL_SANDYBRIDGE_GT2_IG 0x0112 |
| 206 | #define PCI_DEVICE_ID_INTEL_SANDYBRIDGE_M_IG 0x0106 | 208 | #define PCI_DEVICE_ID_INTEL_SANDYBRIDGE_GT2_PLUS_IG 0x0122 |
| 207 | #define PCI_DEVICE_ID_INTEL_SANDYBRIDGE_M_D0_IG 0x0126 | 209 | #define PCI_DEVICE_ID_INTEL_SANDYBRIDGE_M_HB 0x0104 /* Mobile */ |
| 210 | #define PCI_DEVICE_ID_INTEL_SANDYBRIDGE_M_GT1_IG 0x0106 | ||
| 211 | #define PCI_DEVICE_ID_INTEL_SANDYBRIDGE_M_GT2_IG 0x0116 | ||
| 212 | #define PCI_DEVICE_ID_INTEL_SANDYBRIDGE_M_GT2_PLUS_IG 0x0126 | ||
| 213 | #define PCI_DEVICE_ID_INTEL_SANDYBRIDGE_S_HB 0x0108 /* Server */ | ||
| 214 | #define PCI_DEVICE_ID_INTEL_SANDYBRIDGE_S_IG 0x010A | ||
| 208 | 215 | ||
| 209 | /* cover 915 and 945 variants */ | 216 | /* cover 915 and 945 variants */ |
| 210 | #define IS_I915 (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_E7221_HB || \ | 217 | #define IS_I915 (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_E7221_HB || \ |
| @@ -231,7 +238,8 @@ | |||
| 231 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_PINEVIEW_HB) | 238 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_PINEVIEW_HB) |
| 232 | 239 | ||
| 233 | #define IS_SNB (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_SANDYBRIDGE_HB || \ | 240 | #define IS_SNB (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_SANDYBRIDGE_HB || \ |
| 234 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_SANDYBRIDGE_M_HB) | 241 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_SANDYBRIDGE_M_HB || \ |
| 242 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_SANDYBRIDGE_S_HB) | ||
| 235 | 243 | ||
| 236 | #define IS_G4X (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_EAGLELAKE_HB || \ | 244 | #define IS_G4X (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_EAGLELAKE_HB || \ |
| 237 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_Q45_HB || \ | 245 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_Q45_HB || \ |
| @@ -244,3 +252,5 @@ | |||
| 244 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IRONLAKE_MA_HB || \ | 252 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IRONLAKE_MA_HB || \ |
| 245 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IRONLAKE_MC2_HB || \ | 253 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_IRONLAKE_MC2_HB || \ |
| 246 | IS_SNB) | 254 | IS_SNB) |
| 255 | |||
| 256 | #endif | ||
diff --git a/drivers/char/agp/intel-gtt.c b/drivers/char/agp/intel-gtt.c index d22ffb811bf2..75e0a3497888 100644 --- a/drivers/char/agp/intel-gtt.c +++ b/drivers/char/agp/intel-gtt.c | |||
| @@ -49,6 +49,26 @@ static struct gatt_mask intel_i810_masks[] = | |||
| 49 | .type = INTEL_AGP_CACHED_MEMORY} | 49 | .type = INTEL_AGP_CACHED_MEMORY} |
| 50 | }; | 50 | }; |
| 51 | 51 | ||
| 52 | #define INTEL_AGP_UNCACHED_MEMORY 0 | ||
| 53 | #define INTEL_AGP_CACHED_MEMORY_LLC 1 | ||
| 54 | #define INTEL_AGP_CACHED_MEMORY_LLC_GFDT 2 | ||
| 55 | #define INTEL_AGP_CACHED_MEMORY_LLC_MLC 3 | ||
| 56 | #define INTEL_AGP_CACHED_MEMORY_LLC_MLC_GFDT 4 | ||
| 57 | |||
| 58 | static struct gatt_mask intel_gen6_masks[] = | ||
| 59 | { | ||
| 60 | {.mask = I810_PTE_VALID | GEN6_PTE_UNCACHED, | ||
| 61 | .type = INTEL_AGP_UNCACHED_MEMORY }, | ||
| 62 | {.mask = I810_PTE_VALID | GEN6_PTE_LLC, | ||
| 63 | .type = INTEL_AGP_CACHED_MEMORY_LLC }, | ||
| 64 | {.mask = I810_PTE_VALID | GEN6_PTE_LLC | GEN6_PTE_GFDT, | ||
| 65 | .type = INTEL_AGP_CACHED_MEMORY_LLC_GFDT }, | ||
| 66 | {.mask = I810_PTE_VALID | GEN6_PTE_LLC_MLC, | ||
| 67 | .type = INTEL_AGP_CACHED_MEMORY_LLC_MLC }, | ||
| 68 | {.mask = I810_PTE_VALID | GEN6_PTE_LLC_MLC | GEN6_PTE_GFDT, | ||
| 69 | .type = INTEL_AGP_CACHED_MEMORY_LLC_MLC_GFDT }, | ||
| 70 | }; | ||
| 71 | |||
| 52 | static struct _intel_private { | 72 | static struct _intel_private { |
| 53 | struct pci_dev *pcidev; /* device one */ | 73 | struct pci_dev *pcidev; /* device one */ |
| 54 | u8 __iomem *registers; | 74 | u8 __iomem *registers; |
| @@ -178,13 +198,6 @@ static void intel_agp_insert_sg_entries(struct agp_memory *mem, | |||
| 178 | off_t pg_start, int mask_type) | 198 | off_t pg_start, int mask_type) |
| 179 | { | 199 | { |
| 180 | int i, j; | 200 | int i, j; |
| 181 | u32 cache_bits = 0; | ||
| 182 | |||
| 183 | if (agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_SANDYBRIDGE_HB || | ||
| 184 | agp_bridge->dev->device == PCI_DEVICE_ID_INTEL_SANDYBRIDGE_M_HB) | ||
| 185 | { | ||
| 186 | cache_bits = GEN6_PTE_LLC_MLC; | ||
| 187 | } | ||
| 188 | 201 | ||
| 189 | for (i = 0, j = pg_start; i < mem->page_count; i++, j++) { | 202 | for (i = 0, j = pg_start; i < mem->page_count; i++, j++) { |
| 190 | writel(agp_bridge->driver->mask_memory(agp_bridge, | 203 | writel(agp_bridge->driver->mask_memory(agp_bridge, |
| @@ -317,6 +330,23 @@ static int intel_i830_type_to_mask_type(struct agp_bridge_data *bridge, | |||
| 317 | return 0; | 330 | return 0; |
| 318 | } | ||
