aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/i915_debugfs.c
diff options
context:
space:
mode:
authorJesse Barnes <jbarnes@virtuousgeek.org>2012-03-28 16:39:25 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2012-03-28 17:52:31 -0400
commit57f350b6722f9569f407872f6ead56e2d221d98a (patch)
treee603a42f2af8a94fdfccf9f31b54435b2bdb037a /drivers/gpu/drm/i915/i915_debugfs.c
parent25eb05fc5ac7a432e1a3a723f9af206142cd07fa (diff)
drm/i915: add DPIO support
ValleyView puts some display related registers like the PLL controls and dividers behind the DPIO bus. Add simple indirect register access routines to get to those registers. v2: move new wait_for macro to intel_drv.h (Ben) fix DPIO_PKT double write (Ben) add debugfs file Reviewed-by: Ben Widawsky <ben@bwidawsk.net> Reviewed-by: Eugeni Dodonov <eugeni.dodonov@intel.com> Signed-off-by: Jesse Barnes <jbarnes@virtuousgeek.org> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_debugfs.c')
-rw-r--r--drivers/gpu/drm/i915/i915_debugfs.c48
1 files changed, 48 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index 66c90d4477a3..e74674b3097d 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -1503,6 +1503,53 @@ static int i915_ppgtt_info(struct seq_file *m, void *data)
1503 return 0; 1503 return 0;
1504} 1504}
1505 1505
1506static int i915_dpio_info(struct seq_file *m, void *data)
1507{
1508 struct drm_info_node *node = (struct drm_info_node *) m->private;
1509 struct drm_device *dev = node->minor->dev;
1510 struct drm_i915_private *dev_priv = dev->dev_private;
1511 int ret;
1512
1513
1514 if (!IS_VALLEYVIEW(dev)) {
1515 seq_printf(m, "unsupported\n");
1516 return 0;
1517 }
1518
1519 ret = mutex_lock_interruptible(&dev->mode_config.mutex);
1520 if (ret)
1521 return ret;
1522
1523 seq_printf(m, "DPIO_CTL: 0x%08x\n", I915_READ(DPIO_CTL));
1524
1525 seq_printf(m, "DPIO_DIV_A: 0x%08x\n",
1526 intel_dpio_read(dev_priv, _DPIO_DIV_A));
1527 seq_printf(m, "DPIO_DIV_B: 0x%08x\n",
1528 intel_dpio_read(dev_priv, _DPIO_DIV_B));
1529
1530 seq_printf(m, "DPIO_REFSFR_A: 0x%08x\n",
1531 intel_dpio_read(dev_priv, _DPIO_REFSFR_A));
1532 seq_printf(m, "DPIO_REFSFR_B: 0x%08x\n",
1533 intel_dpio_read(dev_priv, _DPIO_REFSFR_B));
1534
1535 seq_printf(m, "DPIO_CORE_CLK_A: 0x%08x\n",
1536 intel_dpio_read(dev_priv, _DPIO_CORE_CLK_A));
1537 seq_printf(m, "DPIO_CORE_CLK_B: 0x%08x\n",
1538 intel_dpio_read(dev_priv, _DPIO_CORE_CLK_B));
1539
1540 seq_printf(m, "DPIO_LFP_COEFF_A: 0x%08x\n",
1541 intel_dpio_read(dev_priv, _DPIO_LFP_COEFF_A));
1542 seq_printf(m, "DPIO_LFP_COEFF_B: 0x%08x\n",
1543 intel_dpio_read(dev_priv, _DPIO_LFP_COEFF_B));
1544
1545 seq_printf(m, "DPIO_FASTCLK_DISABLE: 0x%08x\n",
1546 intel_dpio_read(dev_priv, DPIO_FASTCLK_DISABLE));
1547
1548 mutex_unlock(&dev->mode_config.mutex);
1549
1550 return 0;
1551}
1552
1506static int 1553static int
1507i915_debugfs_common_open(struct inode *inode, 1554i915_debugfs_common_open(struct inode *inode,
1508 struct file *filp) 1555 struct file *filp)
@@ -1845,6 +1892,7 @@ static struct drm_info_list i915_debugfs_list[] = {
1845 {"i915_gen6_forcewake_count", i915_gen6_forcewake_count_info, 0}, 1892 {"i915_gen6_forcewake_count", i915_gen6_forcewake_count_info, 0},
1846 {"i915_swizzle_info", i915_swizzle_info, 0}, 1893 {"i915_swizzle_info", i915_swizzle_info, 0},
1847 {"i915_ppgtt_info", i915_ppgtt_info, 0}, 1894 {"i915_ppgtt_info", i915_ppgtt_info, 0},
1895 {"i915_dpio", i915_dpio_info, 0},
1848}; 1896};
1849#define I915_DEBUGFS_ENTRIES ARRAY_SIZE(i915_debugfs_list) 1897#define I915_DEBUGFS_ENTRIES ARRAY_SIZE(i915_debugfs_list)
1850 1898