aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/gpu/drm/i915/i915_debugfs.c8
-rw-r--r--drivers/gpu/drm/i915/i915_dma.c12
-rw-r--r--drivers/gpu/drm/i915/i915_drv.c2
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h21
-rw-r--r--drivers/gpu/drm/i915/i915_gem_execbuffer.c2
-rw-r--r--drivers/gpu/drm/i915/intel_display.c2
-rw-r--r--drivers/gpu/drm/i915/intel_lvds.c2
-rw-r--r--drivers/gpu/drm/i915/intel_ringbuffer.h22
8 files changed, 35 insertions, 36 deletions
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index 3601466c5502..c31e818f8b08 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -544,11 +544,11 @@ static int i915_hws_info(struct seq_file *m, void *data)
544 struct drm_device *dev = node->minor->dev; 544 struct drm_device *dev = node->minor->dev;
545 drm_i915_private_t *dev_priv = dev->dev_private; 545 drm_i915_private_t *dev_priv = dev->dev_private;
546 struct intel_ring_buffer *ring; 546 struct intel_ring_buffer *ring;
547 volatile u32 *hws; 547 const volatile u32 __iomem *hws;
548 int i; 548 int i;
549 549
550 ring = &dev_priv->ring[(uintptr_t)node->info_ent->data]; 550 ring = &dev_priv->ring[(uintptr_t)node->info_ent->data];
551 hws = (volatile u32 *)ring->status_page.page_addr; 551 hws = (volatile u32 __iomem *)ring->status_page.page_addr;
552 if (hws == NULL) 552 if (hws == NULL)
553 return 0; 553 return 0;
554 554
@@ -615,7 +615,7 @@ static int i915_ringbuffer_data(struct seq_file *m, void *data)
615 if (!ring->obj) { 615 if (!ring->obj) {
616 seq_printf(m, "No ringbuffer setup\n"); 616 seq_printf(m, "No ringbuffer setup\n");
617 } else { 617 } else {
618 u8 *virt = ring->virtual_start; 618 const u8 __iomem *virt = ring->virtual_start;
619 uint32_t off; 619 uint32_t off;
620 620
621 for (off = 0; off < ring->size; off += 4) { 621 for (off = 0; off < ring->size; off += 4) {
@@ -1259,7 +1259,7 @@ static int i915_wedged_create(struct dentry *root, struct drm_minor *minor)
1259} 1259}
1260 1260
1261static struct drm_info_list i915_debugfs_list[] = { 1261static struct drm_info_list i915_debugfs_list[] = {
1262 {"i915_capabilities", i915_capabilities, 0, 0}, 1262 {"i915_capabilities", i915_capabilities, 0},
1263 {"i915_gem_objects", i915_gem_object_info, 0}, 1263 {"i915_gem_objects", i915_gem_object_info, 0},
1264 {"i915_gem_gtt", i915_gem_gtt_info, 0}, 1264 {"i915_gem_gtt", i915_gem_gtt_info, 0},
1265 {"i915_gem_active", i915_gem_object_list_info, 0, (void *) ACTIVE_LIST}, 1265 {"i915_gem_active", i915_gem_object_list_info, 0, (void *) ACTIVE_LIST},
diff --git a/drivers/gpu/drm/i915/i915_dma.c b/drivers/gpu/drm/i915/i915_dma.c
index 844f3c972b04..76f2df7b712d 100644
--- a/drivers/gpu/drm/i915/i915_dma.c
+++ b/drivers/gpu/drm/i915/i915_dma.c
@@ -60,10 +60,11 @@ static int i915_init_phys_hws(struct drm_device *dev)
60 DRM_ERROR("Can not allocate hardware status page\n"); 60 DRM_ERROR("Can not allocate hardware status page\n");
61 return -ENOMEM; 61 return -ENOMEM;
62 } 62 }
63 ring->status_page.page_addr = dev_priv->status_page_dmah->vaddr; 63 ring->status_page.page_addr =
64 (void __force __iomem *)dev_priv->status_page_dmah->vaddr;
64 dev_priv->dma_status_page = dev_priv->status_page_dmah->busaddr; 65 dev_priv->dma_status_page = dev_priv->status_page_dmah->busaddr;
65 66
66 memset(ring->status_page.page_addr, 0, PAGE_SIZE); 67 memset_io(ring->status_page.page_addr, 0, PAGE_SIZE);
67 68
68 if (INTEL_INFO(dev)->gen >= 4) 69 if (INTEL_INFO(dev)->gen >= 4)
69 dev_priv->dma_status_page |= (dev_priv->dma_status_page >> 28) & 70 dev_priv->dma_status_page |= (dev_priv->dma_status_page >> 28) &
@@ -188,7 +189,7 @@ static int i915_initialize(struct drm_device * dev, drm_i915_init_t * init)
188 } 189 }
189 } 190 }
190 191
191 ring->virtual_start = ring->map.handle; 192 ring->virtual_start = (void __force __iomem *)ring->map.handle;
192 193
193 dev_priv->cpp = init->cpp; 194 dev_priv->cpp = init->cpp;
194 dev_priv->back_offset = init->back_offset; 195 dev_priv->back_offset = init->back_offset;
@@ -870,8 +871,9 @@ static int i915_set_status_page(struct drm_device *dev, void *data,
870 " G33 hw status page\n"); 871 " G33 hw status page\n");
871 return -ENOMEM; 872 return -ENOMEM;
872 } 873 }
873 ring->status_page.page_addr = dev_priv->hws_map.handle; 874 ring->status_page.page_addr =
874 memset(ring->status_page.page_addr, 0, PAGE_SIZE); 875 (void __force __iomem *)dev_priv->hws_map.handle;
876 memset_io(ring->status_page.page_addr, 0, PAGE_SIZE);
875 I915_WRITE(HWS_PGA, ring->status_page.gfx_addr); 877 I915_WRITE(HWS_PGA, ring->status_page.gfx_addr);
876 878
877 DRM_DEBUG_DRIVER("load hws HWS_PGA with gfx mem 0x%x\n", 879 DRM_DEBUG_DRIVER("load hws HWS_PGA with gfx mem 0x%x\n",
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 72fea2bcfc4f..2d31f5fd08f5 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -52,7 +52,7 @@ module_param_named(lvds_downclock, i915_lvds_downclock, int, 0400);
52unsigned int i915_panel_use_ssc = 1; 52unsigned int i915_panel_use_ssc = 1;
53module_param_named(lvds_use_ssc, i915_panel_use_ssc, int, 0600); 53module_param_named(lvds_use_ssc, i915_panel_use_ssc, int, 0600);
54 54
55bool i915_try_reset = true; 55static bool i915_try_reset = true;
56module_param_named(reset, i915_try_reset, bool, 0600); 56module_param_named(reset, i915_try_reset, bool, 0600);
57 57
58static struct drm_driver driver; 58static struct drm_driver driver;
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 9b9a771110a4..eaec56ef12b6 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -1392,25 +1392,4 @@ i915_write(struct drm_i915_private *dev_priv, u32 reg, u64 val, int len)
1392 } 1392 }
1393} 1393}
1394 1394
1395/**
1396 * Reads a dword out of the status page, which is written to from the command
1397 * queue by automatic updates, MI_REPORT_HEAD, MI_STORE_DATA_INDEX, or
1398 * MI_STORE_DATA_IMM.
1399 *
1400 * The following dwords have a reserved meaning:
1401 * 0x00: ISR copy, updated when an ISR bit not set in the HWSTAM changes.
1402 * 0x04: ring 0 head pointer
1403 * 0x05: ring 1 head pointer (915-class)
1404 * 0x06: ring 2 head pointer (915-class)
1405 * 0x10-0x1b: Context status DWords (GM45)
1406 * 0x1f: Last written status offset. (GM45)
1407 *
1408 * The area from dword 0x20 to 0x3ff is available for driver usage.
1409 */
1410#define READ_HWSP(dev_priv, reg) (((volatile u32 *)\
1411 (LP_RING(dev_priv)->status_page.page_addr))[reg])
1412#define READ_BREADCRUMB(dev_priv) READ_HWSP(dev_priv, I915_BREADCRUMB_INDEX)
1413#define I915_GEM_HWS_INDEX 0x20
1414#define I915_BREADCRUMB_INDEX 0x21
1415
1416#endif 1395#endif
diff --git a/drivers/gpu/drm/i915/i915_gem_execbuffer.c b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
index dcfdf4151b6d..94b80acfe6ab 100644
--- a/drivers/gpu/drm/i915/i915_gem_execbuffer.c
+++ b/drivers/gpu/drm/i915/i915_gem_execbuffer.c
@@ -690,8 +690,6 @@ i915_gem_execbuffer_relocate_slow(struct drm_device *dev,
690 /* reacquire the objects */ 690 /* reacquire the objects */
691 eb_reset(eb); 691 eb_reset(eb);
692 for (i = 0; i < count; i++) { 692 for (i = 0; i < count; i++) {
693 struct drm_i915_gem_object *obj;
694
695 obj = to_intel_bo(drm_gem_object_lookup(dev, file, 693 obj = to_intel_bo(drm_gem_object_lookup(dev, file,
696 exec[i].handle)); 694 exec[i].handle));
697 if (obj == NULL) { 695 if (obj == NULL) {
diff --git a/drivers/gpu/drm/i915/intel_display.c b/drivers/gpu/drm/i915/intel_display.c
index fe8454a48eab..cb9d547aa42b 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -2327,7 +2327,7 @@ static void ironlake_fdi_link_train(struct drm_crtc *crtc)
2327 2327
2328} 2328}
2329 2329
2330static const int const snb_b_fdi_train_param [] = { 2330static const int snb_b_fdi_train_param [] = {
2331 FDI_LINK_TRAIN_400MV_0DB_SNB_B, 2331 FDI_LINK_TRAIN_400MV_0DB_SNB_B,
2332 FDI_LINK_TRAIN_400MV_6DB_SNB_B, 2332 FDI_LINK_TRAIN_400MV_6DB_SNB_B,
2333 FDI_LINK_TRAIN_600MV_3_5DB_SNB_B, 2333 FDI_LINK_TRAIN_600MV_3_5DB_SNB_B,
diff --git a/drivers/gpu/drm/i915/intel_lvds.c b/drivers/gpu/drm/i915/intel_lvds.c
index fc6a0a9297c7..3eec52a0b8e6 100644
--- a/drivers/gpu/drm/i915/intel_lvds.c
+++ b/drivers/gpu/drm/i915/intel_lvds.c
@@ -503,7 +503,7 @@ static int intel_lvds_get_modes(struct drm_connector *connector)
503 return drm_add_edid_modes(connector, intel_lvds->edid); 503 return drm_add_edid_modes(connector, intel_lvds->edid);
504 504
505 mode = drm_mode_duplicate(dev, intel_lvds->fixed_mode); 505 mode = drm_mode_duplicate(dev, intel_lvds->fixed_mode);
506 if (mode == 0) 506 if (mode == NULL)
507 return 0; 507 return 0;
508 508
509 drm_mode_probed_add(connector, mode); 509 drm_mode_probed_add(connector, mode);
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.h b/drivers/gpu/drm/i915/intel_ringbuffer.h
index be9087e4c9be..d5911aa06597 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.h
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.h
@@ -43,7 +43,7 @@ struct intel_ring_buffer {
43 RING_BLT = 0x4, 43 RING_BLT = 0x4,
44 } id; 44 } id;
45 u32 mmio_base; 45 u32 mmio_base;
46 void *virtual_start; 46 void __iomem *virtual_start;
47 struct drm_device *dev; 47 struct drm_device *dev;
48 struct drm_i915_gem_object *obj; 48 struct drm_i915_gem_object *obj;
49 49
@@ -142,6 +142,26 @@ intel_read_status_page(struct intel_ring_buffer *ring,
142 return ioread32(ring->status_page.page_addr + reg); 142 return ioread32(ring->status_page.page_addr + reg);
143} 143}
144 144
145/**
146 * Reads a dword out of the status page, which is written to from the command
147 * queue by automatic updates, MI_REPORT_HEAD, MI_STORE_DATA_INDEX, or
148 * MI_STORE_DATA_IMM.
149 *
150 * The following dwords have a reserved meaning:
151 * 0x00: ISR copy, updated when an ISR bit not set in the HWSTAM changes.
152 * 0x04: ring 0 head pointer
153 * 0x05: ring 1 head pointer (915-class)
154 * 0x06: ring 2 head pointer (915-class)
155 * 0x10-0x1b: Context status DWords (GM45)
156 * 0x1f: Last written status offset. (GM45)
157 *
158 * The area from dword 0x20 to 0x3ff is available for driver usage.
159 */
160#define READ_HWSP(dev_priv, reg) intel_read_status_page(LP_RING(dev_priv), reg)
161#define READ_BREADCRUMB(dev_priv) READ_HWSP(dev_priv, I915_BREADCRUMB_INDEX)
162#define I915_GEM_HWS_INDEX 0x20
163#define I915_BREADCRUMB_INDEX 0x21
164
145void intel_cleanup_ring_buffer(struct intel_ring_buffer *ring); 165void intel_cleanup_ring_buffer(struct intel_ring_buffer *ring);
146int __must_check intel_wait_ring_buffer(struct intel_ring_buffer *ring, int n); 166int __must_check intel_wait_ring_buffer(struct intel_ring_buffer *ring, int n);
147int __must_check intel_ring_begin(struct intel_ring_buffer *ring, int n); 167int __must_check intel_ring_begin(struct intel_ring_buffer *ring, int n);