diff options
| -rw-r--r-- | drivers/char/agp/intel-gtt.c | 46 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/Makefile | 1 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_debugfs.c | 82 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_dma.c | 711 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_drv.c | 70 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 209 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_gem.c | 897 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_irq.c | 182 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_reg.h | 82 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/i915_trace.h | 24 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_bios.c | 10 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_crt.c | 23 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_display.c | 281 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_dp.c | 11 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_fb.c | 6 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_hdmi.c | 5 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_overlay.c | 52 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_ringbuffer.c | 849 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_ringbuffer.h | 124 | ||||
| -rw-r--r-- | drivers/gpu/drm/i915/intel_sdvo.c | 2 | ||||
| -rw-r--r-- | include/drm/i915_drm.h | 5 |
21 files changed, 2590 insertions, 1082 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, |
diff --git a/drivers/gpu/drm/i915/Makefile b/drivers/gpu/drm/i915/Makefile index 95639017bdbe..da78f2c0d909 100644 --- a/drivers/gpu/drm/i915/Makefile +++ b/drivers/gpu/drm/i915/Makefile | |||
| @@ -22,6 +22,7 @@ i915-y := i915_drv.o i915_dma.o i915_irq.o i915_mem.o \ | |||
| 22 | intel_fb.o \ | 22 | intel_fb.o \ |
| 23 | intel_tv.o \ | 23 | intel_tv.o \ |
| 24 | intel_dvo.o \ | 24 | intel_dvo.o \ |
| 25 | intel_ringbuffer.o \ | ||
| 25 | intel_overlay.o \ | 26 | intel_overlay.o \ |
| 26 | dvo_ch7xxx.o \ | 27 | dvo_ch7xxx.o \ |
| 27 | dvo_ch7017.o \ | 28 | dvo_ch7017.o \ |
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c index 322070c0c631..52510ad8b25d 100644 --- a/drivers/gpu/drm/i915/i915_debugfs.c +++ b/drivers/gpu/drm/i915/i915_debugfs.c | |||
| @@ -77,7 +77,7 @@ static int i915_gem_object_list_info(struct seq_file *m, void *data) | |||
| 77 | case ACTIVE_LIST: | 77 | case ACTIVE_LIST: |
| 78 | seq_printf(m, "Active:\n"); | 78 | seq_printf(m, "Active:\n"); |
| 79 | lock = &dev_priv->mm.active_list_lock; | 79 | lock = &dev_priv->mm.active_list_lock; |
| 80 | head = &dev_priv->mm.active_list; | 80 | head = &dev_priv->render_ring.active_list; |
| 81 | break; | 81 | break; |
| 82 | case INACTIVE_LIST: | 82 | case INACTIVE_LIST: |
| 83 | seq_printf(m, "Inactive:\n"); | 83 | seq_printf(m, "Inactive:\n"); |
| @@ -129,7 +129,8 @@ static int i915_gem_request_info(struct seq_file *m, void *data) | |||
| 129 | struct drm_i915_gem_request *gem_request; | 129 | struct drm_i915_gem_request *gem_request; |
| 130 | 130 | ||
| 131 | seq_printf(m, "Request:\n"); | 131 | seq_printf(m, "Request:\n"); |
| 132 | list_for_each_entry(gem_request, &dev_priv->mm.request_list, list) { | 132 | list_for_each_entry(gem_request, &dev_priv->render_ring.request_list, |
| 133 | list) { | ||
| 133 | seq_printf(m, " %d @ %d\n", | 134 | seq_printf(m, " %d @ %d\n", |
| 134 | gem_request->seqno, | 135 | gem_request->seqno, |
| 135 | (int) (jiffies - gem_request->emitted_jiffies)); | 136 | (int) (jiffies - gem_request->emitted_jiffies)); |
| @@ -143,9 +144,9 @@ static int i915_gem_seqno_info(struct seq_file *m, void *data) | |||
| 143 | struct drm_device *dev = node->minor->dev; | 144 | struct drm_device *dev = node->minor->dev; |
| 144 | drm_i915_private_t *dev_priv = dev->dev_private; | 145 | drm_i915_private_t *dev_priv = dev->dev_private; |
| 145 | 146 | ||
| 146 | if (dev_priv->hw_status_page != NULL) { | 147 | if (dev_priv->render_ring.status_page.page_addr != NULL) { |
| 147 | seq_printf(m, "Current sequence: %d\n", | 148 | se |
