diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2010-06-01 17:12:27 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2010-06-01 17:12:27 -0400 |
commit | 709d015bb810a3377feaee3093d110a17e919019 (patch) | |
tree | 7a003395ddf648950de114f1da6968c879d8c164 /drivers/char/agp | |
parent | 08a66859e69264f3223560d06b88e80c1a6a6387 (diff) | |
parent | e3a815fcd38043b8f1bb526123d8ab6ae01deb77 (diff) |
Merge branch 'drm-intel-next' of git://git.kernel.org/pub/scm/linux/kernel/git/anholt/drm-intel
* 'drm-intel-next' of git://git.kernel.org/pub/scm/linux/kernel/git/anholt/drm-intel: (41 commits)
drm/i915: add HAS_BSD check to i915_getparam
drm/i915: Honor sync polarity from VBT panel timing descriptors
drm/i915: Unmask interrupt for render engine on Sandybridge
drm/i915: Fix PIPE_CONTROL command on Sandybridge
drm/i915: Fix up address spaces in slow_kernel_write()
drm/i915: Use non-atomic kmap for slow copy paths
drm/i915: Avoid moving from CPU domain during pwrite
drm/i915: Cleanup after failed initialization of ringbuffers
drm/i915: Reject bind_to_gtt() early if object > aperture
drm/i915: Check error code whilst moving buffer to GTT domain.
drm/i915: Remove spurious warning "Failure to install fence"
drm/i915: Rebind bo if currently bound with incorrect alignment.
drm/i915: Include pitch in set_base debug statement.
drm/i915: Only print "nothing to do" debug message as required.
drm/i915: Propagate error from unbinding an unfenceable object.
drm/i915: Avoid nesting of domain changes when setting display plane
drm/i915: Hold the spinlock whilst resetting unpin_work along error path
drm/i915: Only print an message if there was an error
drm/i915: Clean up leftover bits from hws move to ring structure.
drm/i915: Add CxSR support on Pineview DDR3
...
Diffstat (limited to 'drivers/char/agp')
-rw-r--r-- | drivers/char/agp/intel-gtt.c | 46 |
1 files changed, 39 insertions, 7 deletions
diff --git a/drivers/char/agp/intel-gtt.c b/drivers/char/agp/intel-gtt.c index e8ea6825822c..9344216183a4 100644 --- a/drivers/char/agp/intel-gtt.c +++ b/drivers/char/agp/intel-gtt.c | |||
@@ -1059,7 +1059,7 @@ static void intel_i9xx_setup_flush(void) | |||
1059 | } | 1059 | } |
1060 | } | 1060 | } |
1061 | 1061 | ||
1062 | static int intel_i915_configure(void) | 1062 | static int intel_i9xx_configure(void) |
1063 | { | 1063 | { |
1064 | struct aper_size_info_fixed *current_size; | 1064 | struct aper_size_info_fixed *current_size; |
1065 | u32 temp; | 1065 | u32 temp; |
@@ -1207,6 +1207,38 @@ static int intel_i9xx_fetch_size(void) | |||
1207 | return 0; | 1207 | return 0; |
1208 | } | 1208 | } |
1209 | 1209 | ||
1210 | static int intel_i915_get_gtt_size(void) | ||
1211 | { | ||
1212 | int size; | ||
1213 | |||
1214 | if (IS_G33) { | ||
1215 | u16 gmch_ctrl; | ||
1216 | |||
1217 | /* G33's GTT size defined in gmch_ctrl */ | ||
1218 | pci_read_config_word(agp_bridge->dev, I830_GMCH_CTRL, &gmch_ctrl); | ||
1219 | switch (gmch_ctrl & G33_PGETBL_SIZE_MASK) { | ||
1220 | case G33_PGETBL_SIZE_1M: | ||
1221 | size = 1024; | ||
1222 | break; | ||
1223 | case G33_PGETBL_SIZE_2M: | ||
1224 | size = 2048; | ||
1225 | break; | ||
1226 | default: | ||
1227 | dev_info(&agp_bridge->dev->dev, | ||
1228 | "unknown page table size 0x%x, assuming 512KB\n", | ||
1229 | (gmch_ctrl & G33_PGETBL_SIZE_MASK)); | ||
1230 | size = 512; | ||
1231 | } | ||
1232 | } else { | ||
1233 | /* On previous hardware, the GTT size was just what was | ||
1234 | * required to map the aperture. | ||
1235 | */ | ||
1236 | size = agp_bridge->driver->fetch_size(); | ||
1237 | } | ||
1238 | |||
1239 | return KB(size); | ||
1240 | } | ||
1241 | |||
1210 | /* The intel i915 automatically initializes the agp aperture during POST. | 1242 | /* The intel i915 automatically initializes the agp aperture during POST. |
1211 | * Use the memory already set aside for in the GTT. | 1243 | * Use the memory already set aside for in the GTT. |
1212 | */ | 1244 | */ |
@@ -1216,7 +1248,7 @@ static int intel_i915_create_gatt_table(struct agp_bridge_data *bridge) | |||
1216 | struct aper_size_info_fixed *size; | 1248 | struct aper_size_info_fixed *size; |
1217 | int num_entries; | 1249 | int num_entries; |
1218 | u32 temp, temp2; | 1250 | u32 temp, temp2; |
1219 | int gtt_map_size = 256 * 1024; | 1251 | int gtt_map_size; |
1220 | 1252 | ||
1221 | size = agp_bridge->current_size; | 1253 | size = agp_bridge->current_size; |
1222 | page_order = size->page_order; | 1254 | page_order = size->page_order; |
@@ -1226,8 +1258,8 @@ static int intel_i915_create_gatt_table(struct agp_bridge_data *bridge) | |||
1226 | pci_read_config_dword(intel_private.pcidev, I915_MMADDR, &temp); | 1258 | pci_read_config_dword(intel_private.pcidev, I915_MMADDR, &temp); |
1227 | pci_read_config_dword(intel_private.pcidev, I915_PTEADDR, &temp2); | 1259 | pci_read_config_dword(intel_private.pcidev, I915_PTEADDR, &temp2); |
1228 | 1260 | ||
1229 | if (IS_G33) | 1261 | gtt_map_size = intel_i915_get_gtt_size(); |
1230 | gtt_map_size = 1024 * 1024; /* 1M on G33 */ | 1262 | |
1231 | intel_private.gtt = ioremap(temp2, gtt_map_size); | 1263 | intel_private.gtt = ioremap(temp2, gtt_map_size); |
1232 | if (!intel_private.gtt) | 1264 | if (!intel_private.gtt) |
1233 | return -ENOMEM; | 1265 | return -ENOMEM; |
@@ -1422,7 +1454,7 @@ static const struct agp_bridge_driver intel_915_driver = { | |||
1422 | .size_type = FIXED_APER_SIZE, | 1454 | .size_type = FIXED_APER_SIZE, |
1423 | .num_aperture_sizes = 4, | 1455 | .num_aperture_sizes = 4, |
1424 | .needs_scratch_page = true, | 1456 | .needs_scratch_page = true, |
1425 | .configure = intel_i915_configure, | 1457 | .configure = intel_i9xx_configure, |
1426 | .fetch_size = intel_i9xx_fetch_size, | 1458 | .fetch_size = intel_i9xx_fetch_size, |
1427 | .cleanup = intel_i915_cleanup, | 1459 | .cleanup = intel_i915_cleanup, |
1428 | .mask_memory = intel_i810_mask_memory, | 1460 | .mask_memory = intel_i810_mask_memory, |
@@ -1455,7 +1487,7 @@ static const struct agp_bridge_driver intel_i965_driver = { | |||
1455 | .size_type = FIXED_APER_SIZE, | 1487 | .size_type = FIXED_APER_SIZE, |
1456 | .num_aperture_sizes = 4, | 1488 | .num_aperture_sizes = 4, |
1457 | .needs_scratch_page = true, | 1489 | .needs_scratch_page = true, |
1458 | .configure = intel_i915_configure, | 1490 | .configure = intel_i9xx_configure, |
1459 | .fetch_size = intel_i9xx_fetch_size, | 1491 | .fetch_size = intel_i9xx_fetch_size, |
1460 | .cleanup = intel_i915_cleanup, | 1492 | .cleanup = intel_i915_cleanup, |
1461 | .mask_memory = intel_i965_mask_memory, | 1493 | .mask_memory = intel_i965_mask_memory, |
@@ -1488,7 +1520,7 @@ static const struct agp_bridge_driver intel_g33_driver = { | |||
1488 | .size_type = FIXED_APER_SIZE, | 1520 | .size_type = FIXED_APER_SIZE, |
1489 | .num_aperture_sizes = 4, | 1521 | .num_aperture_sizes = 4, |
1490 | .needs_scratch_page = true, | 1522 | .needs_scratch_page = true, |
1491 | .configure = intel_i915_configure, | 1523 | .configure = intel_i9xx_configure, |
1492 | .fetch_size = intel_i9xx_fetch_size, | 1524 | .fetch_size = intel_i9xx_fetch_size, |
1493 | .cleanup = intel_i915_cleanup, | 1525 | .cleanup = intel_i915_cleanup, |
1494 | .mask_memory = intel_i965_mask_memory, | 1526 | .mask_memory = intel_i965_mask_memory, |