diff options
author | Ben Widawsky <benjamin.widawsky@intel.com> | 2013-10-05 20:57:11 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2013-10-10 06:47:10 -0400 |
commit | ab484f8fd62c97fc52dbb380d8b7cf3ff77b1e70 (patch) | |
tree | 629b298922bc00509e6e30a1b0407e25992333ea | |
parent | 4032ef4315475dd9605d6cde461168fb85d776ea (diff) |
drm/i915: Remove gen specific checks in MMIO
Now that MMIO has been split up into gen specific functions it is
obvious when HAS_FPGA_DBG_UNCLAIMED, HAS_FORCE_WAKE are needed. As such,
we can remove this extraneous condition.
As a result of this, as well as previously existing function pointers
for forcewake, we no longer need the has_force_wake member in the device
specific data structure.
Signed-off-by: Ben Widawsky <ben@bwidawsk.net>
Reviewed-by: Damien Lespiau <damien.lespiau@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.c | 5 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_drv.h | 3 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_ringbuffer.c | 6 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/intel_uncore.c | 16 |
4 files changed, 12 insertions, 18 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c index 96f230497cbe..59649c060986 100644 --- a/drivers/gpu/drm/i915/i915_drv.c +++ b/drivers/gpu/drm/i915/i915_drv.c | |||
@@ -257,7 +257,6 @@ static const struct intel_device_info intel_sandybridge_d_info = { | |||
257 | .has_bsd_ring = 1, | 257 | .has_bsd_ring = 1, |
258 | .has_blt_ring = 1, | 258 | .has_blt_ring = 1, |
259 | .has_llc = 1, | 259 | .has_llc = 1, |
260 | .has_force_wake = 1, | ||
261 | }; | 260 | }; |
262 | 261 | ||
263 | static const struct intel_device_info intel_sandybridge_m_info = { | 262 | static const struct intel_device_info intel_sandybridge_m_info = { |
@@ -267,7 +266,6 @@ static const struct intel_device_info intel_sandybridge_m_info = { | |||
267 | .has_bsd_ring = 1, | 266 | .has_bsd_ring = 1, |
268 | .has_blt_ring = 1, | 267 | .has_blt_ring = 1, |
269 | .has_llc = 1, | 268 | .has_llc = 1, |
270 | .has_force_wake = 1, | ||
271 | }; | 269 | }; |
272 | 270 | ||
273 | #define GEN7_FEATURES \ | 271 | #define GEN7_FEATURES \ |
@@ -275,8 +273,7 @@ static const struct intel_device_info intel_sandybridge_m_info = { | |||
275 | .need_gfx_hws = 1, .has_hotplug = 1, \ | 273 | .need_gfx_hws = 1, .has_hotplug = 1, \ |
276 | .has_bsd_ring = 1, \ | 274 | .has_bsd_ring = 1, \ |
277 | .has_blt_ring = 1, \ | 275 | .has_blt_ring = 1, \ |
278 | .has_llc = 1, \ | 276 | .has_llc = 1 |
279 | .has_force_wake = 1 | ||
280 | 277 | ||
281 | static const struct intel_device_info intel_ivybridge_d_info = { | 278 | static const struct intel_device_info intel_ivybridge_d_info = { |
282 | GEN7_FEATURES, | 279 | GEN7_FEATURES, |
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h index 957771fc60fa..9cac93c41e10 100644 --- a/drivers/gpu/drm/i915/i915_drv.h +++ b/drivers/gpu/drm/i915/i915_drv.h | |||
@@ -441,7 +441,6 @@ struct intel_uncore { | |||
441 | func(is_valleyview) sep \ | 441 | func(is_valleyview) sep \ |
442 | func(is_haswell) sep \ | 442 | func(is_haswell) sep \ |
443 | func(is_preliminary) sep \ | 443 | func(is_preliminary) sep \ |
444 | func(has_force_wake) sep \ | ||
445 | func(has_fbc) sep \ | 444 | func(has_fbc) sep \ |
446 | func(has_pipe_cxsr) sep \ | 445 | func(has_pipe_cxsr) sep \ |
447 | func(has_hotplug) sep \ | 446 | func(has_hotplug) sep \ |
@@ -1729,8 +1728,6 @@ struct drm_i915_file_private { | |||
1729 | #define HAS_PCH_NOP(dev) (INTEL_PCH_TYPE(dev) == PCH_NOP) | 1728 | #define HAS_PCH_NOP(dev) (INTEL_PCH_TYPE(dev) == PCH_NOP) |
1730 | #define HAS_PCH_SPLIT(dev) (INTEL_PCH_TYPE(dev) != PCH_NONE) | 1729 | #define HAS_PCH_SPLIT(dev) (INTEL_PCH_TYPE(dev) != PCH_NONE) |
1731 | 1730 | ||
1732 | #define HAS_FORCE_WAKE(dev) (INTEL_INFO(dev)->has_force_wake) | ||
1733 | |||
1734 | /* DPF == dynamic parity feature */ | 1731 | /* DPF == dynamic parity feature */ |
1735 | #define HAS_L3_DPF(dev) (IS_IVYBRIDGE(dev) || IS_HASWELL(dev)) | 1732 | #define HAS_L3_DPF(dev) (IS_IVYBRIDGE(dev) || IS_HASWELL(dev)) |
1736 | #define NUM_L3_SLICES(dev) (IS_HSW_GT3(dev) ? 2 : HAS_L3_DPF(dev)) | 1733 | #define NUM_L3_SLICES(dev) (IS_HSW_GT3(dev) ? 2 : HAS_L3_DPF(dev)) |
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c index b67104aaade5..4e108fc3c340 100644 --- a/drivers/gpu/drm/i915/intel_ringbuffer.c +++ b/drivers/gpu/drm/i915/intel_ringbuffer.c | |||
@@ -395,8 +395,7 @@ static int init_ring_common(struct intel_ring_buffer *ring) | |||
395 | int ret = 0; | 395 | int ret = 0; |
396 | u32 head; | 396 | u32 head; |
397 | 397 | ||
398 | if (HAS_FORCE_WAKE(dev)) | 398 | gen6_gt_force_wake_get(dev_priv); |
399 | gen6_gt_force_wake_get(dev_priv); | ||
400 | 399 | ||
401 | if (I915_NEED_GFX_HWS(dev)) | 400 | if (I915_NEED_GFX_HWS(dev)) |
402 | intel_ring_setup_status_page(ring); | 401 | intel_ring_setup_status_page(ring); |
@@ -469,8 +468,7 @@ static int init_ring_common(struct intel_ring_buffer *ring) | |||
469 | memset(&ring->hangcheck, 0, sizeof(ring->hangcheck)); | 468 | memset(&ring->hangcheck, 0, sizeof(ring->hangcheck)); |
470 | 469 | ||
471 | out: | 470 | out: |
472 | if (HAS_FORCE_WAKE(dev)) | 471 | gen6_gt_force_wake_put(dev_priv); |
473 | gen6_gt_force_wake_put(dev_priv); | ||
474 | 472 | ||
475 | return ret; | 473 | return ret; |
476 | } | 474 | } |
diff --git a/drivers/gpu/drm/i915/intel_uncore.c b/drivers/gpu/drm/i915/intel_uncore.c index 7e8dcbeb0cac..f6fae35c568e 100644 --- a/drivers/gpu/drm/i915/intel_uncore.c +++ b/drivers/gpu/drm/i915/intel_uncore.c | |||
@@ -282,6 +282,9 @@ void gen6_gt_force_wake_get(struct drm_i915_private *dev_priv) | |||
282 | { | 282 | { |
283 | unsigned long irqflags; | 283 | unsigned long irqflags; |
284 | 284 | ||
285 | if (!dev_priv->uncore.funcs.force_wake_get) | ||
286 | return; | ||
287 | |||
285 | spin_lock_irqsave(&dev_priv->uncore.lock, irqflags); | 288 | spin_lock_irqsave(&dev_priv->uncore.lock, irqflags); |
286 | if (dev_priv->uncore.forcewake_count++ == 0) | 289 | if (dev_priv->uncore.forcewake_count++ == 0) |
287 | dev_priv->uncore.funcs.force_wake_get(dev_priv); | 290 | dev_priv->uncore.funcs.force_wake_get(dev_priv); |
@@ -295,6 +298,9 @@ void gen6_gt_force_wake_put(struct drm_i915_private *dev_priv) | |||
295 | { | 298 | { |
296 | unsigned long irqflags; | 299 | unsigned long irqflags; |
297 | 300 | ||
301 | if (!dev_priv->uncore.funcs.force_wake_put) | ||
302 | return; | ||
303 | |||
298 | spin_lock_irqsave(&dev_priv->uncore.lock, irqflags); | 304 | spin_lock_irqsave(&dev_priv->uncore.lock, irqflags); |
299 | if (--dev_priv->uncore.forcewake_count == 0) { | 305 | if (--dev_priv->uncore.forcewake_count == 0) { |
300 | dev_priv->uncore.forcewake_count++; | 306 | dev_priv->uncore.forcewake_count++; |
@@ -307,9 +313,7 @@ void gen6_gt_force_wake_put(struct drm_i915_private *dev_priv) | |||
307 | 313 | ||
308 | /* We give fast paths for the really cool registers */ | 314 | /* We give fast paths for the really cool registers */ |
309 | #define NEEDS_FORCE_WAKE(dev_priv, reg) \ | 315 | #define NEEDS_FORCE_WAKE(dev_priv, reg) \ |
310 | ((HAS_FORCE_WAKE((dev_priv)->dev)) && \ | 316 | ((reg) < 0x40000 && (reg) != FORCEWAKE) |
311 | ((reg) < 0x40000) && \ | ||
312 | ((reg) != FORCEWAKE)) | ||
313 | 317 | ||
314 | static void | 318 | static void |
315 | ilk_dummy_write(struct drm_i915_private *dev_priv) | 319 | ilk_dummy_write(struct drm_i915_private *dev_priv) |
@@ -323,8 +327,7 @@ ilk_dummy_write(struct drm_i915_private *dev_priv) | |||
323 | static void | 327 | static void |
324 | hsw_unclaimed_reg_clear(struct drm_i915_private *dev_priv, u32 reg) | 328 | hsw_unclaimed_reg_clear(struct drm_i915_private *dev_priv, u32 reg) |
325 | { | 329 | { |
326 | if (HAS_FPGA_DBG_UNCLAIMED(dev_priv->dev) && | 330 | if (__raw_i915_read32(dev_priv, FPGA_DBG) & FPGA_DBG_RM_NOCLAIM) { |
327 | (__raw_i915_read32(dev_priv, FPGA_DBG) & FPGA_DBG_RM_NOCLAIM)) { | ||
328 | DRM_ERROR("Unknown unclaimed register before writing to %x\n", | 331 | DRM_ERROR("Unknown unclaimed register before writing to %x\n", |
329 | reg); | 332 | reg); |
330 | __raw_i915_write32(dev_priv, FPGA_DBG, FPGA_DBG_RM_NOCLAIM); | 333 | __raw_i915_write32(dev_priv, FPGA_DBG, FPGA_DBG_RM_NOCLAIM); |
@@ -334,8 +337,7 @@ hsw_unclaimed_reg_clear(struct drm_i915_private *dev_priv, u32 reg) | |||
334 | static void | 337 | static void |
335 | hsw_unclaimed_reg_check(struct drm_i915_private *dev_priv, u32 reg) | 338 | hsw_unclaimed_reg_check(struct drm_i915_private *dev_priv, u32 reg) |
336 | { | 339 | { |
337 | if (HAS_FPGA_DBG_UNCLAIMED(dev_priv->dev) && | 340 | if (__raw_i915_read32(dev_priv, FPGA_DBG) & FPGA_DBG_RM_NOCLAIM) { |
338 | (__raw_i915_read32(dev_priv, FPGA_DBG) & FPGA_DBG_RM_NOCLAIM)) { | ||
339 | DRM_ERROR("Unclaimed write to %x\n", reg); | 341 | DRM_ERROR("Unclaimed write to %x\n", reg); |
340 | __raw_i915_write32(dev_priv, FPGA_DBG, FPGA_DBG_RM_NOCLAIM); | 342 | __raw_i915_write32(dev_priv, FPGA_DBG, FPGA_DBG_RM_NOCLAIM); |
341 | } | 343 | } |