Commit 36cdd013 authored by David Weinehall's avatar David Weinehall Committed by Chris Wilson

drm/i915: debugfs spring cleaning

Just like with sysfs, we do some major overhaul.

Pass dev_priv instead of dev to all feature macros (IS_, HAS_,
INTEL_, etc.). This has the side effect that a bunch of functions
now get dev_priv passed instead of dev.

All calls to INTEL_INFO()->gen have been replaced with
INTEL_GEN().

We want access to to_i915(node->minor->dev) in a lot of places,
so add the node_to_i915() helper to accommodate for this.

Finally, we have quite a few cases where we get a void * pointer,
and need to cast it to drm_device *, only to run to_i915() on it.
Add cast_to_i915() to do this.

v2: Don't introduce extra dev (Chris)

v3: Make pipe_crc_info have a pointer to drm_i915_private instead of
    drm_device. This saves a bit of space, since we never use
    drm_device anywhere in these functions.

    Also some minor fixup that I missed in the previous version.

v4: Changed the code a bit so that dev_priv is passed directly
    to various functions, thus removing the need for the
    cast_to_i915() helper. Also did some additional cleanup.

v5: Additional cleanup of newly introduced changes.

v6: Rebase again because of conflict.
Signed-off-by: default avatarDavid Weinehall <david.weinehall@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20160822105931.pcbe2lpsgzckzboa@boomReviewed-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
parent 52a05c30
...@@ -40,6 +40,11 @@ ...@@ -40,6 +40,11 @@
#include <drm/i915_drm.h> #include <drm/i915_drm.h>
#include "i915_drv.h" #include "i915_drv.h"
static inline struct drm_i915_private *node_to_i915(struct drm_info_node *node)
{
return to_i915(node->minor->dev);
}
/* As the drm_debugfs_init() routines are called before dev->dev_private is /* As the drm_debugfs_init() routines are called before dev->dev_private is
* allocated we need to hook into the minor for release. */ * allocated we need to hook into the minor for release. */
static int static int
...@@ -57,7 +62,7 @@ drm_add_fake_info_node(struct drm_minor *minor, ...@@ -57,7 +62,7 @@ drm_add_fake_info_node(struct drm_minor *minor,
node->minor = minor; node->minor = minor;
node->dent = ent; node->dent = ent;
node->info_ent = (void *) key; node->info_ent = (void *)key;
mutex_lock(&minor->debugfs_lock); mutex_lock(&minor->debugfs_lock);
list_add(&node->list, &minor->debugfs_list); list_add(&node->list, &minor->debugfs_list);
...@@ -68,12 +73,11 @@ drm_add_fake_info_node(struct drm_minor *minor, ...@@ -68,12 +73,11 @@ drm_add_fake_info_node(struct drm_minor *minor,
static int i915_capabilities(struct seq_file *m, void *data) static int i915_capabilities(struct seq_file *m, void *data)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev; const struct intel_device_info *info = INTEL_INFO(dev_priv);
const struct intel_device_info *info = INTEL_INFO(dev);
seq_printf(m, "gen: %d\n", info->gen); seq_printf(m, "gen: %d\n", INTEL_GEN(dev_priv));
seq_printf(m, "pch: %d\n", INTEL_PCH_TYPE(dev)); seq_printf(m, "pch: %d\n", INTEL_PCH_TYPE(dev_priv));
#define PRINT_FLAG(x) seq_printf(m, #x ": %s\n", yesno(info->x)) #define PRINT_FLAG(x) seq_printf(m, #x ": %s\n", yesno(info->x))
#define SEP_SEMICOLON ; #define SEP_SEMICOLON ;
DEV_INFO_FOR_EACH_FLAG(PRINT_FLAG, SEP_SEMICOLON); DEV_INFO_FOR_EACH_FLAG(PRINT_FLAG, SEP_SEMICOLON);
...@@ -155,7 +159,7 @@ describe_obj(struct seq_file *m, struct drm_i915_gem_object *obj) ...@@ -155,7 +159,7 @@ describe_obj(struct seq_file *m, struct drm_i915_gem_object *obj)
seq_printf(m, "] %x %s%s%s", seq_printf(m, "] %x %s%s%s",
i915_gem_active_get_seqno(&obj->last_write, i915_gem_active_get_seqno(&obj->last_write,
&obj->base.dev->struct_mutex), &obj->base.dev->struct_mutex),
i915_cache_level_str(to_i915(obj->base.dev), obj->cache_level), i915_cache_level_str(dev_priv, obj->cache_level),
obj->dirty ? " dirty" : "", obj->dirty ? " dirty" : "",
obj->madv == I915_MADV_DONTNEED ? " purgeable" : ""); obj->madv == I915_MADV_DONTNEED ? " purgeable" : "");
if (obj->base.name) if (obj->base.name)
...@@ -195,7 +199,7 @@ describe_obj(struct seq_file *m, struct drm_i915_gem_object *obj) ...@@ -195,7 +199,7 @@ describe_obj(struct seq_file *m, struct drm_i915_gem_object *obj)
} }
engine = i915_gem_active_get_engine(&obj->last_write, engine = i915_gem_active_get_engine(&obj->last_write,
&obj->base.dev->struct_mutex); &dev_priv->drm.struct_mutex);
if (engine) if (engine)
seq_printf(m, " (%s)", engine->name); seq_printf(m, " (%s)", engine->name);
...@@ -221,9 +225,8 @@ static int obj_rank_by_stolen(void *priv, ...@@ -221,9 +225,8 @@ static int obj_rank_by_stolen(void *priv,
static int i915_gem_stolen_list_info(struct seq_file *m, void *data) static int i915_gem_stolen_list_info(struct seq_file *m, void *data)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev; struct drm_device *dev = &dev_priv->drm;
struct drm_i915_private *dev_priv = to_i915(dev);
struct drm_i915_gem_object *obj; struct drm_i915_gem_object *obj;
u64 total_obj_size, total_gtt_size; u64 total_obj_size, total_gtt_size;
LIST_HEAD(stolen); LIST_HEAD(stolen);
...@@ -365,29 +368,29 @@ static int per_file_ctx_stats(int id, void *ptr, void *data) ...@@ -365,29 +368,29 @@ static int per_file_ctx_stats(int id, void *ptr, void *data)
static void print_context_stats(struct seq_file *m, static void print_context_stats(struct seq_file *m,
struct drm_i915_private *dev_priv) struct drm_i915_private *dev_priv)
{ {
struct drm_device *dev = &dev_priv->drm;
struct file_stats stats; struct file_stats stats;
struct drm_file *file; struct drm_file *file;
memset(&stats, 0, sizeof(stats)); memset(&stats, 0, sizeof(stats));
mutex_lock(&dev_priv->drm.struct_mutex); mutex_lock(&dev->struct_mutex);
if (dev_priv->kernel_context) if (dev_priv->kernel_context)
per_file_ctx_stats(0, dev_priv->kernel_context, &stats); per_file_ctx_stats(0, dev_priv->kernel_context, &stats);
list_for_each_entry(file, &dev_priv->drm.filelist, lhead) { list_for_each_entry(file, &dev->filelist, lhead) {
struct drm_i915_file_private *fpriv = file->driver_priv; struct drm_i915_file_private *fpriv = file->driver_priv;
idr_for_each(&fpriv->context_idr, per_file_ctx_stats, &stats); idr_for_each(&fpriv->context_idr, per_file_ctx_stats, &stats);
} }
mutex_unlock(&dev_priv->drm.struct_mutex); mutex_unlock(&dev->struct_mutex);
print_file_stats(m, "[k]contexts", stats); print_file_stats(m, "[k]contexts", stats);
} }
static int i915_gem_object_info(struct seq_file *m, void* data) static int i915_gem_object_info(struct seq_file *m, void *data)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev; struct drm_device *dev = &dev_priv->drm;
struct drm_i915_private *dev_priv = to_i915(dev);
struct i915_ggtt *ggtt = &dev_priv->ggtt; struct i915_ggtt *ggtt = &dev_priv->ggtt;
u32 count, mapped_count, purgeable_count, dpy_count; u32 count, mapped_count, purgeable_count, dpy_count;
u64 size, mapped_size, purgeable_size, dpy_size; u64 size, mapped_size, purgeable_size, dpy_size;
...@@ -497,8 +500,8 @@ static int i915_gem_object_info(struct seq_file *m, void* data) ...@@ -497,8 +500,8 @@ static int i915_gem_object_info(struct seq_file *m, void* data)
static int i915_gem_gtt_info(struct seq_file *m, void *data) static int i915_gem_gtt_info(struct seq_file *m, void *data)
{ {
struct drm_info_node *node = m->private; struct drm_info_node *node = m->private;
struct drm_device *dev = node->minor->dev; struct drm_i915_private *dev_priv = node_to_i915(node);
struct drm_i915_private *dev_priv = to_i915(dev); struct drm_device *dev = &dev_priv->drm;
bool show_pin_display_only = !!node->info_ent->data; bool show_pin_display_only = !!node->info_ent->data;
struct drm_i915_gem_object *obj; struct drm_i915_gem_object *obj;
u64 total_obj_size, total_gtt_size; u64 total_obj_size, total_gtt_size;
...@@ -531,9 +534,8 @@ static int i915_gem_gtt_info(struct seq_file *m, void *data) ...@@ -531,9 +534,8 @@ static int i915_gem_gtt_info(struct seq_file *m, void *data)
static int i915_gem_pageflip_info(struct seq_file *m, void *data) static int i915_gem_pageflip_info(struct seq_file *m, void *data)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev; struct drm_device *dev = &dev_priv->drm;
struct drm_i915_private *dev_priv = to_i915(dev);
struct intel_crtc *crtc; struct intel_crtc *crtc;
int ret; int ret;
...@@ -580,7 +582,7 @@ static int i915_gem_pageflip_info(struct seq_file *m, void *data) ...@@ -580,7 +582,7 @@ static int i915_gem_pageflip_info(struct seq_file *m, void *data)
intel_crtc_get_vblank_counter(crtc)); intel_crtc_get_vblank_counter(crtc));
seq_printf(m, "%d prepares\n", atomic_read(&work->pending)); seq_printf(m, "%d prepares\n", atomic_read(&work->pending));
if (INTEL_INFO(dev)->gen >= 4) if (INTEL_GEN(dev_priv) >= 4)
addr = I915_HI_DISPBASE(I915_READ(DSPSURF(crtc->plane))); addr = I915_HI_DISPBASE(I915_READ(DSPSURF(crtc->plane)));
else else
addr = I915_READ(DSPADDR(crtc->plane)); addr = I915_READ(DSPADDR(crtc->plane));
...@@ -601,9 +603,8 @@ static int i915_gem_pageflip_info(struct seq_file *m, void *data) ...@@ -601,9 +603,8 @@ static int i915_gem_pageflip_info(struct seq_file *m, void *data)
static int i915_gem_batch_pool_info(struct seq_file *m, void *data) static int i915_gem_batch_pool_info(struct seq_file *m, void *data)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev; struct drm_device *dev = &dev_priv->drm;
struct drm_i915_private *dev_priv = to_i915(dev);
struct drm_i915_gem_object *obj; struct drm_i915_gem_object *obj;
struct intel_engine_cs *engine; struct intel_engine_cs *engine;
int total = 0; int total = 0;
...@@ -646,9 +647,8 @@ static int i915_gem_batch_pool_info(struct seq_file *m, void *data) ...@@ -646,9 +647,8 @@ static int i915_gem_batch_pool_info(struct seq_file *m, void *data)
static int i915_gem_request_info(struct seq_file *m, void *data) static int i915_gem_request_info(struct seq_file *m, void *data)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev; struct drm_device *dev = &dev_priv->drm;
struct drm_i915_private *dev_priv = to_i915(dev);
struct intel_engine_cs *engine; struct intel_engine_cs *engine;
struct drm_i915_gem_request *req; struct drm_i915_gem_request *req;
int ret, any; int ret, any;
...@@ -713,9 +713,8 @@ static void i915_ring_seqno_info(struct seq_file *m, ...@@ -713,9 +713,8 @@ static void i915_ring_seqno_info(struct seq_file *m,
static int i915_gem_seqno_info(struct seq_file *m, void *data) static int i915_gem_seqno_info(struct seq_file *m, void *data)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev; struct drm_device *dev = &dev_priv->drm;
struct drm_i915_private *dev_priv = to_i915(dev);
struct intel_engine_cs *engine; struct intel_engine_cs *engine;
int ret; int ret;
...@@ -736,9 +735,8 @@ static int i915_gem_seqno_info(struct seq_file *m, void *data) ...@@ -736,9 +735,8 @@ static int i915_gem_seqno_info(struct seq_file *m, void *data)
static int i915_interrupt_info(struct seq_file *m, void *data) static int i915_interrupt_info(struct seq_file *m, void *data)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev; struct drm_device *dev = &dev_priv->drm;
struct drm_i915_private *dev_priv = to_i915(dev);
struct intel_engine_cs *engine; struct intel_engine_cs *engine;
int ret, i, pipe; int ret, i, pipe;
...@@ -747,7 +745,7 @@ static int i915_interrupt_info(struct seq_file *m, void *data) ...@@ -747,7 +745,7 @@ static int i915_interrupt_info(struct seq_file *m, void *data)
return ret; return ret;
intel_runtime_pm_get(dev_priv); intel_runtime_pm_get(dev_priv);
if (IS_CHERRYVIEW(dev)) { if (IS_CHERRYVIEW(dev_priv)) {
seq_printf(m, "Master Interrupt Control:\t%08x\n", seq_printf(m, "Master Interrupt Control:\t%08x\n",
I915_READ(GEN8_MASTER_IRQ)); I915_READ(GEN8_MASTER_IRQ));
...@@ -786,7 +784,7 @@ static int i915_interrupt_info(struct seq_file *m, void *data) ...@@ -786,7 +784,7 @@ static int i915_interrupt_info(struct seq_file *m, void *data)
I915_READ(GEN8_PCU_IIR)); I915_READ(GEN8_PCU_IIR));
seq_printf(m, "PCU interrupt enable:\t%08x\n", seq_printf(m, "PCU interrupt enable:\t%08x\n",
I915_READ(GEN8_PCU_IER)); I915_READ(GEN8_PCU_IER));
} else if (INTEL_INFO(dev)->gen >= 8) { } else if (INTEL_GEN(dev_priv) >= 8) {
seq_printf(m, "Master Interrupt Control:\t%08x\n", seq_printf(m, "Master Interrupt Control:\t%08x\n",
I915_READ(GEN8_MASTER_IRQ)); I915_READ(GEN8_MASTER_IRQ));
...@@ -842,7 +840,7 @@ static int i915_interrupt_info(struct seq_file *m, void *data) ...@@ -842,7 +840,7 @@ static int i915_interrupt_info(struct seq_file *m, void *data)
I915_READ(GEN8_PCU_IIR)); I915_READ(GEN8_PCU_IIR));
seq_printf(m, "PCU interrupt enable:\t%08x\n", seq_printf(m, "PCU interrupt enable:\t%08x\n",
I915_READ(GEN8_PCU_IER)); I915_READ(GEN8_PCU_IER));
} else if (IS_VALLEYVIEW(dev)) { } else if (IS_VALLEYVIEW(dev_priv)) {
seq_printf(m, "Display IER:\t%08x\n", seq_printf(m, "Display IER:\t%08x\n",
I915_READ(VLV_IER)); I915_READ(VLV_IER));
seq_printf(m, "Display IIR:\t%08x\n", seq_printf(m, "Display IIR:\t%08x\n",
...@@ -880,7 +878,7 @@ static int i915_interrupt_info(struct seq_file *m, void *data) ...@@ -880,7 +878,7 @@ static int i915_interrupt_info(struct seq_file *m, void *data)
seq_printf(m, "DPINVGTT:\t%08x\n", seq_printf(m, "DPINVGTT:\t%08x\n",
I915_READ(DPINVGTT)); I915_READ(DPINVGTT));
} else if (!HAS_PCH_SPLIT(dev)) { } else if (!HAS_PCH_SPLIT(dev_priv)) {
seq_printf(m, "Interrupt enable: %08x\n", seq_printf(m, "Interrupt enable: %08x\n",
I915_READ(IER)); I915_READ(IER));
seq_printf(m, "Interrupt identity: %08x\n", seq_printf(m, "Interrupt identity: %08x\n",
...@@ -912,7 +910,7 @@ static int i915_interrupt_info(struct seq_file *m, void *data) ...@@ -912,7 +910,7 @@ static int i915_interrupt_info(struct seq_file *m, void *data)
I915_READ(GTIMR)); I915_READ(GTIMR));
} }
for_each_engine(engine, dev_priv) { for_each_engine(engine, dev_priv) {
if (INTEL_INFO(dev)->gen >= 6) { if (INTEL_GEN(dev_priv) >= 6) {
seq_printf(m, seq_printf(m,
"Graphics Interrupt mask (%s): %08x\n", "Graphics Interrupt mask (%s): %08x\n",
engine->name, I915_READ_IMR(engine)); engine->name, I915_READ_IMR(engine));
...@@ -927,9 +925,8 @@ static int i915_interrupt_info(struct seq_file *m, void *data) ...@@ -927,9 +925,8 @@ static int i915_interrupt_info(struct seq_file *m, void *data)
static int i915_gem_fence_regs_info(struct seq_file *m, void *data) static int i915_gem_fence_regs_info(struct seq_file *m, void *data)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev; struct drm_device *dev = &dev_priv->drm;
struct drm_i915_private *dev_priv = to_i915(dev);
int i, ret; int i, ret;
ret = mutex_lock_interruptible(&dev->struct_mutex); ret = mutex_lock_interruptible(&dev->struct_mutex);
...@@ -956,8 +953,7 @@ static int i915_gem_fence_regs_info(struct seq_file *m, void *data) ...@@ -956,8 +953,7 @@ static int i915_gem_fence_regs_info(struct seq_file *m, void *data)
static int i915_hws_info(struct seq_file *m, void *data) static int i915_hws_info(struct seq_file *m, void *data)
{ {
struct drm_info_node *node = m->private; struct drm_info_node *node = m->private;
struct drm_device *dev = node->minor->dev; struct drm_i915_private *dev_priv = node_to_i915(node);
struct drm_i915_private *dev_priv = to_i915(dev);
struct intel_engine_cs *engine; struct intel_engine_cs *engine;
const u32 *hws; const u32 *hws;
int i; int i;
...@@ -999,16 +995,16 @@ i915_error_state_write(struct file *filp, ...@@ -999,16 +995,16 @@ i915_error_state_write(struct file *filp,
static int i915_error_state_open(struct inode *inode, struct file *file) static int i915_error_state_open(struct inode *inode, struct file *file)
{ {
struct drm_device *dev = inode->i_private; struct drm_i915_private *dev_priv = inode->i_private;
struct i915_error_state_file_priv *error_priv; struct i915_error_state_file_priv *error_priv;
error_priv = kzalloc(sizeof(*error_priv), GFP_KERNEL); error_priv = kzalloc(sizeof(*error_priv), GFP_KERNEL);
if (!error_priv) if (!error_priv)
return -ENOMEM; return -ENOMEM;
error_priv->dev = dev; error_priv->dev = &dev_priv->drm;
i915_error_state_get(dev, error_priv); i915_error_state_get(&dev_priv->drm, error_priv);
file->private_data = error_priv; file->private_data = error_priv;
...@@ -1034,7 +1030,8 @@ static ssize_t i915_error_state_read(struct file *file, char __user *userbuf, ...@@ -1034,7 +1030,8 @@ static ssize_t i915_error_state_read(struct file *file, char __user *userbuf,
ssize_t ret_count = 0; ssize_t ret_count = 0;
int ret; int ret;
ret = i915_error_state_buf_init(&error_str, to_i915(error_priv->dev), count, *pos); ret = i915_error_state_buf_init(&error_str,
to_i915(error_priv->dev), count, *pos);
if (ret) if (ret)
return ret; return ret;
...@@ -1067,16 +1064,15 @@ static const struct file_operations i915_error_state_fops = { ...@@ -1067,16 +1064,15 @@ static const struct file_operations i915_error_state_fops = {
static int static int
i915_next_seqno_get(void *data, u64 *val) i915_next_seqno_get(void *data, u64 *val)
{ {
struct drm_device *dev = data; struct drm_i915_private *dev_priv = data;
struct drm_i915_private *dev_priv = to_i915(dev);
int ret; int ret;
ret = mutex_lock_interruptible(&dev->struct_mutex); ret = mutex_lock_interruptible(&dev_priv->drm.struct_mutex);
if (ret) if (ret)
return ret; return ret;
*val = dev_priv->next_seqno; *val = dev_priv->next_seqno;
mutex_unlock(&dev->struct_mutex); mutex_unlock(&dev_priv->drm.struct_mutex);
return 0; return 0;
} }
...@@ -1084,7 +1080,8 @@ i915_next_seqno_get(void *data, u64 *val) ...@@ -1084,7 +1080,8 @@ i915_next_seqno_get(void *data, u64 *val)
static int static int
i915_next_seqno_set(void *data, u64 val) i915_next_seqno_set(void *data, u64 val)
{ {
struct drm_device *dev = data; struct drm_i915_private *dev_priv = data;
struct drm_device *dev = &dev_priv->drm;
int ret; int ret;
ret = mutex_lock_interruptible(&dev->struct_mutex); ret = mutex_lock_interruptible(&dev->struct_mutex);
...@@ -1103,14 +1100,13 @@ DEFINE_SIMPLE_ATTRIBUTE(i915_next_seqno_fops, ...@@ -1103,14 +1100,13 @@ DEFINE_SIMPLE_ATTRIBUTE(i915_next_seqno_fops,
static int i915_frequency_info(struct seq_file *m, void *unused) static int i915_frequency_info(struct seq_file *m, void *unused)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev; struct drm_device *dev = &dev_priv->drm;
struct drm_i915_private *dev_priv = to_i915(dev);
int ret = 0; int ret = 0;
intel_runtime_pm_get(dev_priv); intel_runtime_pm_get(dev_priv);
if (IS_GEN5(dev)) { if (IS_GEN5(dev_priv)) {
u16 rgvswctl = I915_READ16(MEMSWCTL); u16 rgvswctl = I915_READ16(MEMSWCTL);
u16 rgvstat = I915_READ16(MEMSTAT_ILK); u16 rgvstat = I915_READ16(MEMSTAT_ILK);
...@@ -1120,7 +1116,7 @@ static int i915_frequency_info(struct seq_file *m, void *unused) ...@@ -1120,7 +1116,7 @@ static int i915_frequency_info(struct seq_file *m, void *unused)
MEMSTAT_VID_SHIFT); MEMSTAT_VID_SHIFT);
seq_printf(m, "Current P-state: %d\n", seq_printf(m, "Current P-state: %d\n",
(rgvstat & MEMSTAT_PSTATE_MASK) >> MEMSTAT_PSTATE_SHIFT); (rgvstat & MEMSTAT_PSTATE_MASK) >> MEMSTAT_PSTATE_SHIFT);
} else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) { } else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv)) {
u32 freq_sts; u32 freq_sts;
mutex_lock(&dev_priv->rps.hw_lock); mutex_lock(&dev_priv->rps.hw_lock);
...@@ -1147,7 +1143,7 @@ static int i915_frequency_info(struct seq_file *m, void *unused) ...@@ -1147,7 +1143,7 @@ static int i915_frequency_info(struct seq_file *m, void *unused)
"efficient (RPe) frequency: %d MHz\n", "efficient (RPe) frequency: %d MHz\n",
intel_gpu_freq(dev_priv, dev_priv->rps.efficient_freq)); intel_gpu_freq(dev_priv, dev_priv->rps.efficient_freq));
mutex_unlock(&dev_priv->rps.hw_lock); mutex_unlock(&dev_priv->rps.hw_lock);
} else if (INTEL_INFO(dev)->gen >= 6) { } else if (INTEL_GEN(dev_priv) >= 6) {
u32 rp_state_limits; u32 rp_state_limits;
u32 gt_perf_status; u32 gt_perf_status;
u32 rp_state_cap; u32 rp_state_cap;
...@@ -1159,7 +1155,7 @@ static int i915_frequency_info(struct seq_file *m, void *unused) ...@@ -1159,7 +1155,7 @@ static int i915_frequency_info(struct seq_file *m, void *unused)
int max_freq; int max_freq;
rp_state_limits = I915_READ(GEN6_RP_STATE_LIMITS); rp_state_limits = I915_READ(GEN6_RP_STATE_LIMITS);
if (IS_BROXTON(dev)) { if (IS_BROXTON(dev_priv)) {
rp_state_cap = I915_READ(BXT_RP_STATE_CAP); rp_state_cap = I915_READ(BXT_RP_STATE_CAP);
gt_perf_status = I915_READ(BXT_GT_PERF_STATUS); gt_perf_status = I915_READ(BXT_GT_PERF_STATUS);
} else { } else {
...@@ -1175,11 +1171,11 @@ static int i915_frequency_info(struct seq_file *m, void *unused) ...@@ -1175,11 +1171,11 @@ static int i915_frequency_info(struct seq_file *m, void *unused)
intel_uncore_forcewake_get(dev_priv, FORCEWAKE_ALL); intel_uncore_forcewake_get(dev_priv, FORCEWAKE_ALL);
reqf = I915_READ(GEN6_RPNSWREQ); reqf = I915_READ(GEN6_RPNSWREQ);
if (IS_GEN9(dev)) if (IS_GEN9(dev_priv))
reqf >>= 23; reqf >>= 23;
else { else {
reqf &= ~GEN6_TURBO_DISABLE; reqf &= ~GEN6_TURBO_DISABLE;
if (IS_HASWELL(dev) || IS_BROADWELL(dev)) if (IS_HASWELL(dev_priv) || IS_BROADWELL(dev_priv))
reqf >>= 24; reqf >>= 24;
else else
reqf >>= 25; reqf >>= 25;
...@@ -1197,9 +1193,9 @@ static int i915_frequency_info(struct seq_file *m, void *unused) ...@@ -1197,9 +1193,9 @@ static int i915_frequency_info(struct seq_file *m, void *unused)
rpdownei = I915_READ(GEN6_RP_CUR_DOWN_EI) & GEN6_CURIAVG_MASK; rpdownei = I915_READ(GEN6_RP_CUR_DOWN_EI) & GEN6_CURIAVG_MASK;
rpcurdown = I915_READ(GEN6_RP_CUR_DOWN) & GEN6_CURBSYTAVG_MASK; rpcurdown = I915_READ(GEN6_RP_CUR_DOWN) & GEN6_CURBSYTAVG_MASK;
rpprevdown = I915_READ(GEN6_RP_PREV_DOWN) & GEN6_CURBSYTAVG_MASK; rpprevdown = I915_READ(GEN6_RP_PREV_DOWN) & GEN6_CURBSYTAVG_MASK;
if (IS_GEN9(dev)) if (IS_GEN9(dev_priv))
cagf = (rpstat & GEN9_CAGF_MASK) >> GEN9_CAGF_SHIFT; cagf = (rpstat & GEN9_CAGF_MASK) >> GEN9_CAGF_SHIFT;
else if (IS_HASWELL(dev) || IS_BROADWELL(dev)) else if (IS_HASWELL(dev_priv) || IS_BROADWELL(dev_priv))
cagf = (rpstat & HSW_CAGF_MASK) >> HSW_CAGF_SHIFT; cagf = (rpstat & HSW_CAGF_MASK) >> HSW_CAGF_SHIFT;
else else
cagf = (rpstat & GEN6_CAGF_MASK) >> GEN6_CAGF_SHIFT; cagf = (rpstat & GEN6_CAGF_MASK) >> GEN6_CAGF_SHIFT;
...@@ -1208,7 +1204,7 @@ static int i915_frequency_info(struct seq_file *m, void *unused) ...@@ -1208,7 +1204,7 @@ static int i915_frequency_info(struct seq_file *m, void *unused)
intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL); intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL);
mutex_unlock(&dev->struct_mutex); mutex_unlock(&dev->struct_mutex);
if (IS_GEN6(dev) || IS_GEN7(dev)) { if (IS_GEN6(dev_priv) || IS_GEN7(dev_priv)) {
pm_ier = I915_READ(GEN6_PMIER); pm_ier = I915_READ(GEN6_PMIER);
pm_imr = I915_READ(GEN6_PMIMR); pm_imr = I915_READ(GEN6_PMIMR);
pm_isr = I915_READ(GEN6_PMISR); pm_isr = I915_READ(GEN6_PMISR);
...@@ -1226,7 +1222,7 @@ static int i915_frequency_info(struct seq_file *m, void *unused) ...@@ -1226,7 +1222,7 @@ static int i915_frequency_info(struct seq_file *m, void *unused)
seq_printf(m, "pm_intr_keep: 0x%08x\n", dev_priv->rps.pm_intr_keep); seq_printf(m, "pm_intr_keep: 0x%08x\n", dev_priv->rps.pm_intr_keep);
seq_printf(m, "GT_PERF_STATUS: 0x%08x\n", gt_perf_status); seq_printf(m, "GT_PERF_STATUS: 0x%08x\n", gt_perf_status);
seq_printf(m, "Render p-state ratio: %d\n", seq_printf(m, "Render p-state ratio: %d\n",
(gt_perf_status & (IS_GEN9(dev) ? 0x1ff00 : 0xff00)) >> 8); (gt_perf_status & (IS_GEN9(dev_priv) ? 0x1ff00 : 0xff00)) >> 8);
seq_printf(m, "Render p-state VID: %d\n", seq_printf(m, "Render p-state VID: %d\n",
gt_perf_status & 0xff); gt_perf_status & 0xff);
seq_printf(m, "Render p-state limit: %d\n", seq_printf(m, "Render p-state limit: %d\n",
...@@ -1255,22 +1251,22 @@ static int i915_frequency_info(struct seq_file *m, void *unused) ...@@ -1255,22 +1251,22 @@ static int i915_frequency_info(struct seq_file *m, void *unused)
seq_printf(m, "Down threshold: %d%%\n", seq_printf(m, "Down threshold: %d%%\n",
dev_priv->rps.down_threshold); dev_priv->rps.down_threshold);
max_freq = (IS_BROXTON(dev) ? rp_state_cap >> 0 : max_freq = (IS_BROXTON(dev_priv) ? rp_state_cap >> 0 :
rp_state_cap >> 16) & 0xff; rp_state_cap >> 16) & 0xff;
max_freq *= (IS_SKYLAKE(dev) || IS_KABYLAKE(dev) ? max_freq *= (IS_SKYLAKE(dev_priv) || IS_KABYLAKE(dev_priv) ?
GEN9_FREQ_SCALER : 1); GEN9_FREQ_SCALER : 1);
seq_printf(m, "Lowest (RPN) frequency: %dMHz\n", seq_printf(m, "Lowest (RPN) frequency: %dMHz\n",
intel_gpu_freq(dev_priv, max_freq)); intel_gpu_freq(dev_priv, max_freq));
max_freq = (rp_state_cap & 0xff00) >> 8; max_freq = (rp_state_cap & 0xff00) >> 8;
max_freq *= (IS_SKYLAKE(dev) || IS_KABYLAKE(dev) ? max_freq *= (IS_SKYLAKE(dev_priv) || IS_KABYLAKE(dev_priv) ?
GEN9_FREQ_SCALER : 1); GEN9_FREQ_SCALER : 1);
seq_printf(m, "Nominal (RP1) frequency: %dMHz\n", seq_printf(m, "Nominal (RP1) frequency: %dMHz\n",
intel_gpu_freq(dev_priv, max_freq)); intel_gpu_freq(dev_priv, max_freq));
max_freq = (IS_BROXTON(dev) ? rp_state_cap >> 16 : max_freq = (IS_BROXTON(dev_priv) ? rp_state_cap >> 16 :
rp_state_cap >> 0) & 0xff; rp_state_cap >> 0) & 0xff;
max_freq *= (IS_SKYLAKE(dev) || IS_KABYLAKE(dev) ? max_freq *= (IS_SKYLAKE(dev_priv) || IS_KABYLAKE(dev_priv) ?
GEN9_FREQ_SCALER : 1); GEN9_FREQ_SCALER : 1);
seq_printf(m, "Max non-overclocked (RP0) frequency: %dMHz\n", seq_printf(m, "Max non-overclocked (RP0) frequency: %dMHz\n",
intel_gpu_freq(dev_priv, max_freq)); intel_gpu_freq(dev_priv, max_freq));
...@@ -1306,9 +1302,7 @@ static int i915_frequency_info(struct seq_file *m, void *unused) ...@@ -1306,9 +1302,7 @@ static int i915_frequency_info(struct seq_file *m, void *unused)
static int i915_hangcheck_info(struct seq_file *m, void *unused) static int i915_hangcheck_info(struct seq_file *m, void *unused)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev;
struct drm_i915_private *dev_priv = to_i915(dev);
struct intel_engine_cs *engine; struct intel_engine_cs *engine;
u64 acthd[I915_NUM_ENGINES]; u64 acthd[I915_NUM_ENGINES];
u32 seqno[I915_NUM_ENGINES]; u32 seqno[I915_NUM_ENGINES];
...@@ -1376,9 +1370,8 @@ static int i915_hangcheck_info(struct seq_file *m, void *unused) ...@@ -1376,9 +1370,8 @@ static int i915_hangcheck_info(struct seq_file *m, void *unused)
static int ironlake_drpc_info(struct seq_file *m) static int ironlake_drpc_info(struct seq_file *m)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev; struct drm_device *dev = &dev_priv->drm;
struct drm_i915_private *dev_priv = to_i915(dev);
u32 rgvmodectl, rstdbyctl; u32 rgvmodectl, rstdbyctl;
u16 crstandvid; u16 crstandvid;
int ret; int ret;
...@@ -1444,9 +1437,7 @@ static int ironlake_drpc_info(struct seq_file *m) ...@@ -1444,9 +1437,7 @@ static int ironlake_drpc_info(struct seq_file *m)
static int i915_forcewake_domains(struct seq_file *m, void *data) static int i915_forcewake_domains(struct seq_file *m, void *data)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev;
struct drm_i915_private *dev_priv = to_i915(dev);
struct intel_uncore_forcewake_domain *fw_domain; struct intel_uncore_forcewake_domain *fw_domain;
spin_lock_irq(&dev_priv->uncore.lock); spin_lock_irq(&dev_priv->uncore.lock);
...@@ -1462,9 +1453,7 @@ static int i915_forcewake_domains(struct seq_file *m, void *data) ...@@ -1462,9 +1453,7 @@ static int i915_forcewake_domains(struct seq_file *m, void *data)
static int vlv_drpc_info(struct seq_file *m) static int vlv_drpc_info(struct seq_file *m)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev;
struct drm_i915_private *dev_priv = to_i915(dev);
u32 rpmodectl1, rcctl1, pw_status; u32 rpmodectl1, rcctl1, pw_status;
intel_runtime_pm_get(dev_priv); intel_runtime_pm_get(dev_priv);
...@@ -1502,9 +1491,8 @@ static int vlv_drpc_info(struct seq_file *m) ...@@ -1502,9 +1491,8 @@ static int vlv_drpc_info(struct seq_file *m)
static int gen6_drpc_info(struct seq_file *m) static int gen6_drpc_info(struct seq_file *m)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev; struct drm_device *dev = &dev_priv->drm;
struct drm_i915_private *dev_priv = to_i915(dev);
u32 rpmodectl1, gt_core_status, rcctl1, rc6vids = 0; u32 rpmodectl1, gt_core_status, rcctl1, rc6vids = 0;
u32 gen9_powergate_enable = 0, gen9_powergate_status = 0; u32 gen9_powergate_enable = 0, gen9_powergate_status = 0;
unsigned forcewake_count; unsigned forcewake_count;
...@@ -1534,7 +1522,7 @@ static int gen6_drpc_info(struct seq_file *m) ...@@ -1534,7 +1522,7 @@ static int gen6_drpc_info(struct seq_file *m)
rpmodectl1 = I915_READ(GEN6_RP_CONTROL); rpmodectl1 = I915_READ(GEN6_RP_CONTROL);
rcctl1 = I915_READ(GEN6_RC_CONTROL); rcctl1 = I915_READ(GEN6_RC_CONTROL);
if (INTEL_INFO(dev)->gen >= 9) { if (INTEL_GEN(dev_priv) >= 9) {
gen9_powergate_enable = I915_READ(GEN9_PG_ENABLE); gen9_powergate_enable = I915_READ(GEN9_PG_ENABLE);
gen9_powergate_status = I915_READ(GEN9_PWRGT_DOMAIN_STATUS); gen9_powergate_status = I915_READ(GEN9_PWRGT_DOMAIN_STATUS);
} }
...@@ -1556,7 +1544,7 @@ static int gen6_drpc_info(struct seq_file *m) ...@@ -1556,7 +1544,7 @@ static int gen6_drpc_info(struct seq_file *m)
yesno(rcctl1 & GEN6_RC_CTL_RC1e_ENABLE)); yesno(rcctl1 & GEN6_RC_CTL_RC1e_ENABLE));
seq_printf(m, "RC6 Enabled: %s\n", seq_printf(m, "RC6 Enabled: %s\n",
yesno(rcctl1 & GEN6_RC_CTL_RC6_ENABLE)); yesno(rcctl1 & GEN6_RC_CTL_RC6_ENABLE));
if (INTEL_INFO(dev)->gen >= 9) { if (INTEL_GEN(dev_priv) >= 9) {
seq_printf(m, "Render Well Gating Enabled: %s\n", seq_printf(m, "Render Well Gating Enabled: %s\n",
yesno(gen9_powergate_enable & GEN9_RENDER_PG_ENABLE)); yesno(gen9_powergate_enable & GEN9_RENDER_PG_ENABLE));
seq_printf(m, "Media Well Gating Enabled: %s\n", seq_printf(m, "Media Well Gating Enabled: %s\n",
...@@ -1590,7 +1578,7 @@ static int gen6_drpc_info(struct seq_file *m) ...@@ -1590,7 +1578,7 @@ static int gen6_drpc_info(struct seq_file *m)
seq_printf(m, "Core Power Down: %s\n", seq_printf(m, "Core Power Down: %s\n",
yesno(gt_core_status & GEN6_CORE_CPD_STATE_MASK)); yesno(gt_core_status & GEN6_CORE_CPD_STATE_MASK));
if (INTEL_INFO(dev)->gen >= 9) { if (INTEL_GEN(dev_priv) >= 9) {
seq_printf(m, "Render Power Well: %s\n", seq_printf(m, "Render Power Well: %s\n",
(gen9_powergate_status & (gen9_powergate_status &
GEN9_PWRGT_RENDER_STATUS_MASK) ? "Up" : "Down"); GEN9_PWRGT_RENDER_STATUS_MASK) ? "Up" : "Down");
...@@ -1620,12 +1608,11 @@ static int gen6_drpc_info(struct seq_file *m) ...@@ -1620,12 +1608,11 @@ static int gen6_drpc_info(struct seq_file *m)
static int i915_drpc_info(struct seq_file *m, void *unused) static int i915_drpc_info(struct seq_file *m, void *unused)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev;
if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
return vlv_drpc_info(m); return vlv_drpc_info(m);
else if (INTEL_INFO(dev)->gen >= 6) else if (INTEL_GEN(dev_priv) >= 6)
return gen6_drpc_info(m); return gen6_drpc_info(m);
else else
return ironlake_drpc_info(m); return ironlake_drpc_info(m);
...@@ -1633,9 +1620,7 @@ static int i915_drpc_info(struct seq_file *m, void *unused) ...@@ -1633,9 +1620,7 @@ static int i915_drpc_info(struct seq_file *m, void *unused)
static int i915_frontbuffer_tracking(struct seq_file *m, void *unused) static int i915_frontbuffer_tracking(struct seq_file *m, void *unused)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev;
struct drm_i915_private *dev_priv = to_i915(dev);
seq_printf(m, "FB tracking busy bits: 0x%08x\n", seq_printf(m, "FB tracking busy bits: 0x%08x\n",
dev_priv->fb_tracking.busy_bits); dev_priv->fb_tracking.busy_bits);
...@@ -1648,11 +1633,9 @@ static int i915_frontbuffer_tracking(struct seq_file *m, void *unused) ...@@ -1648,11 +1633,9 @@ static int i915_frontbuffer_tracking(struct seq_file *m, void *unused)
static int i915_fbc_status(struct seq_file *m, void *unused) static int i915_fbc_status(struct seq_file *m, void *unused)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev;
struct drm_i915_private *dev_priv = to_i915(dev);
if (!HAS_FBC(dev)) { if (!HAS_FBC(dev_priv)) {
seq_puts(m, "FBC unsupported on this chipset\n"); seq_puts(m, "FBC unsupported on this chipset\n");
return 0; return 0;
} }
...@@ -1666,7 +1649,7 @@ static int i915_fbc_status(struct seq_file *m, void *unused) ...@@ -1666,7 +1649,7 @@ static int i915_fbc_status(struct seq_file *m, void *unused)
seq_printf(m, "FBC disabled: %s\n", seq_printf(m, "FBC disabled: %s\n",
dev_priv->fbc.no_fbc_reason); dev_priv->fbc.no_fbc_reason);
if (INTEL_INFO(dev_priv)->gen >= 7) if (INTEL_GEN(dev_priv) >= 7)
seq_printf(m, "Compressing: %s\n", seq_printf(m, "Compressing: %s\n",
yesno(I915_READ(FBC_STATUS2) & yesno(I915_READ(FBC_STATUS2) &
FBC_COMPRESSION_MASK)); FBC_COMPRESSION_MASK));
...@@ -1679,10 +1662,9 @@ static int i915_fbc_status(struct seq_file *m, void *unused) ...@@ -1679,10 +1662,9 @@ static int i915_fbc_status(struct seq_file *m, void *unused)
static int i915_fbc_fc_get(void *data, u64 *val) static int i915_fbc_fc_get(void *data, u64 *val)
{ {
struct drm_device *dev = data; struct drm_i915_private *dev_priv = data;
struct drm_i915_private *dev_priv = to_i915(dev);
if (INTEL_INFO(dev)->gen < 7 || !HAS_FBC(dev)) if (INTEL_GEN(dev_priv) < 7 || !HAS_FBC(dev_priv))
return -ENODEV; return -ENODEV;
*val = dev_priv->fbc.false_color; *val = dev_priv->fbc.false_color;
...@@ -1692,11 +1674,10 @@ static int i915_fbc_fc_get(void *data, u64 *val) ...@@ -1692,11 +1674,10 @@ static int i915_fbc_fc_get(void *data, u64 *val)
static int i915_fbc_fc_set(void *data, u64 val) static int i915_fbc_fc_set(void *data, u64 val)
{ {
struct drm_device *dev = data; struct drm_i915_private *dev_priv = data;
struct drm_i915_private *dev_priv = to_i915(dev);
u32 reg; u32 reg;
if (INTEL_INFO(dev)->gen < 7 || !HAS_FBC(dev)) if (INTEL_GEN(dev_priv) < 7 || !HAS_FBC(dev_priv))
return -ENODEV; return -ENODEV;
mutex_lock(&dev_priv->fbc.lock); mutex_lock(&dev_priv->fbc.lock);
...@@ -1718,11 +1699,9 @@ DEFINE_SIMPLE_ATTRIBUTE(i915_fbc_fc_fops, ...@@ -1718,11 +1699,9 @@ DEFINE_SIMPLE_ATTRIBUTE(i915_fbc_fc_fops,
static int i915_ips_status(struct seq_file *m, void *unused) static int i915_ips_status(struct seq_file *m, void *unused)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev;
struct drm_i915_private *dev_priv = to_i915(dev);
if (!HAS_IPS(dev)) { if (!HAS_IPS(dev_priv)) {
seq_puts(m, "not supported\n"); seq_puts(m, "not supported\n");
return 0; return 0;
} }
...@@ -1732,7 +1711,7 @@ static int i915_ips_status(struct seq_file *m, void *unused) ...@@ -1732,7 +1711,7 @@ static int i915_ips_status(struct seq_file *m, void *unused)
seq_printf(m, "Enabled by kernel parameter: %s\n", seq_printf(m, "Enabled by kernel parameter: %s\n",
yesno(i915.enable_ips)); yesno(i915.enable_ips));
if (INTEL_INFO(dev)->gen >= 8) { if (INTEL_GEN(dev_priv) >= 8) {
seq_puts(m, "Currently: unknown\n"); seq_puts(m, "Currently: unknown\n");
} else { } else {
if (I915_READ(IPS_CTL) & IPS_ENABLE) if (I915_READ(IPS_CTL) & IPS_ENABLE)
...@@ -1748,23 +1727,21 @@ static int i915_ips_status(struct seq_file *m, void *unused) ...@@ -1748,23 +1727,21 @@ static int i915_ips_status(struct seq_file *m, void *unused)
static int i915_sr_status(struct seq_file *m, void *unused) static int i915_sr_status(struct seq_file *m, void *unused)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev;
struct drm_i915_private *dev_priv = to_i915(dev);
bool sr_enabled = false; bool sr_enabled = false;
intel_runtime_pm_get(dev_priv); intel_runtime_pm_get(dev_priv);
if (HAS_PCH_SPLIT(dev)) if (HAS_PCH_SPLIT(dev_priv))
sr_enabled = I915_READ(WM1_LP_ILK) & WM1_LP_SR_EN; sr_enabled = I915_READ(WM1_LP_ILK) & WM1_LP_SR_EN;
else if (IS_CRESTLINE(dev) || IS_G4X(dev) || else if (IS_CRESTLINE(dev_priv) || IS_G4X(dev_priv) ||
IS_I945G(dev) || IS_I945GM(dev)) IS_I945G(dev_priv) || IS_I945GM(dev_priv))
sr_enabled = I915_READ(FW_BLC_SELF) & FW_BLC_SELF_EN; sr_enabled = I915_READ(FW_BLC_SELF) & FW_BLC_SELF_EN;
else if (IS_I915GM(dev)) else if (IS_I915GM(dev_priv))
sr_enabled = I915_READ(INSTPM) & INSTPM_SELF_EN; sr_enabled = I915_READ(INSTPM) & INSTPM_SELF_EN;
else if (IS_PINEVIEW(dev)) else if (IS_PINEVIEW(dev_priv))
sr_enabled = I915_READ(DSPFW3) & PINEVIEW_SELF_REFRESH_EN; sr_enabled = I915_READ(DSPFW3) & PINEVIEW_SELF_REFRESH_EN;
else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
sr_enabled = I915_READ(FW_BLC_SELF_VLV) & FW_CSPWRDWNEN; sr_enabled = I915_READ(FW_BLC_SELF_VLV) & FW_CSPWRDWNEN;
intel_runtime_pm_put(dev_priv); intel_runtime_pm_put(dev_priv);
...@@ -1777,13 +1754,12 @@ static int i915_sr_status(struct seq_file *m, void *unused) ...@@ -1777,13 +1754,12 @@ static int i915_sr_status(struct seq_file *m, void *unused)
static int i915_emon_status(struct seq_file *m, void *unused) static int i915_emon_status(struct seq_file *m, void *unused)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev; struct drm_device *dev = &dev_priv->drm;
struct drm_i915_private *dev_priv = to_i915(dev);
unsigned long temp, chipset, gfx; unsigned long temp, chipset, gfx;
int ret; int ret;
if (!IS_GEN5(dev)) if (!IS_GEN5(dev_priv))
return -ENODEV; return -ENODEV;
ret = mutex_lock_interruptible(&dev->struct_mutex); ret = mutex_lock_interruptible(&dev->struct_mutex);
...@@ -1805,14 +1781,12 @@ static int i915_emon_status(struct seq_file *m, void *unused) ...@@ -1805,14 +1781,12 @@ static int i915_emon_status(struct seq_file *m, void *unused)
static int i915_ring_freq_table(struct seq_file *m, void *unused) static int i915_ring_freq_table(struct seq_file *m, void *unused)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev;
struct drm_i915_private *dev_priv = to_i915(dev);
int ret = 0; int ret = 0;
int gpu_freq, ia_freq; int gpu_freq, ia_freq;
unsigned int max_gpu_freq, min_gpu_freq; unsigned int max_gpu_freq, min_gpu_freq;
if (!HAS_CORE_RING_FREQ(dev)) { if (!HAS_CORE_RING_FREQ(dev_priv)) {
seq_puts(m, "unsupported on this chipset\n"); seq_puts(m, "unsupported on this chipset\n");
return 0; return 0;
} }
...@@ -1823,7 +1797,7 @@ static int i915_ring_freq_table(struct seq_file *m, void *unused) ...@@ -1823,7 +1797,7 @@ static int i915_ring_freq_table(struct seq_file *m, void *unused)
if (ret) if (ret)
goto out; goto out;
if (IS_SKYLAKE(dev) || IS_KABYLAKE(dev)) { if (IS_SKYLAKE(dev_priv) || IS_KABYLAKE(dev_priv)) {
/* Convert GT frequency to 50 HZ units */ /* Convert GT frequency to 50 HZ units */
min_gpu_freq = min_gpu_freq =
dev_priv->rps.min_freq_softlimit / GEN9_FREQ_SCALER; dev_priv->rps.min_freq_softlimit / GEN9_FREQ_SCALER;
...@@ -1843,7 +1817,7 @@ static int i915_ring_freq_table(struct seq_file *m, void *unused) ...@@ -1843,7 +1817,7 @@ static int i915_ring_freq_table(struct seq_file *m, void *unused)
&ia_freq); &ia_freq);
seq_printf(m, "%d\t\t%d\t\t\t\t%d\n", seq_printf(m, "%d\t\t%d\t\t\t\t%d\n",
intel_gpu_freq(dev_priv, (gpu_freq * intel_gpu_freq(dev_priv, (gpu_freq *
(IS_SKYLAKE(dev) || IS_KABYLAKE(dev) ? (IS_SKYLAKE(dev_priv) || IS_KABYLAKE(dev_priv) ?
GEN9_FREQ_SCALER : 1))), GEN9_FREQ_SCALER : 1))),
((ia_freq >> 0) & 0xff) * 100, ((ia_freq >> 0) & 0xff) * 100,
((ia_freq >> 8) & 0xff) * 100); ((ia_freq >> 8) & 0xff) * 100);
...@@ -1858,9 +1832,8 @@ static int i915_ring_freq_table(struct seq_file *m, void *unused) ...@@ -1858,9 +1832,8 @@ static int i915_ring_freq_table(struct seq_file *m, void *unused)
static int i915_opregion(struct seq_file *m, void *unused) static int i915_opregion(struct seq_file *m, void *unused)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev; struct drm_device *dev = &dev_priv->drm;
struct drm_i915_private *dev_priv = to_i915(dev);
struct intel_opregion *opregion = &dev_priv->opregion; struct intel_opregion *opregion = &dev_priv->opregion;
int ret; int ret;
...@@ -1879,10 +1852,7 @@ static int i915_opregion(struct seq_file *m, void *unused) ...@@ -1879,10 +1852,7 @@ static int i915_opregion(struct seq_file *m, void *unused)
static int i915_vbt(struct seq_file *m, void *unused) static int i915_vbt(struct seq_file *m, void *unused)
{ {
struct drm_info_node *node = m->private; struct intel_opregion *opregion = &node_to_i915(m->private)->opregion;
struct drm_device *dev = node->minor->dev;
struct drm_i915_private *dev_priv = to_i915(dev);
struct intel_opregion *opregion = &dev_priv->opregion;
if (opregion->vbt) if (opregion->vbt)
seq_write(m, opregion->vbt, opregion->vbt_size); seq_write(m, opregion->vbt, opregion->vbt_size);
...@@ -1892,8 +1862,8 @@ static int i915_vbt(struct seq_file *m, void *unused) ...@@ -1892,8 +1862,8 @@ static int i915_vbt(struct seq_file *m, void *unused)
static int i915_gem_framebuffer_info(struct seq_file *m, void *data) static int i915_gem_framebuffer_info(struct seq_file *m, void *data)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev; struct drm_device *dev = &dev_priv->drm;
struct intel_framebuffer *fbdev_fb = NULL; struct intel_framebuffer *fbdev_fb = NULL;
struct drm_framebuffer *drm_fb; struct drm_framebuffer *drm_fb;
int ret; int ret;
...@@ -1903,8 +1873,8 @@ static int i915_gem_framebuffer_info(struct seq_file *m, void *data) ...@@ -1903,8 +1873,8 @@ static int i915_gem_framebuffer_info(struct seq_file *m, void *data)
return ret; return ret;
#ifdef CONFIG_DRM_FBDEV_EMULATION #ifdef CONFIG_DRM_FBDEV_EMULATION
if (to_i915(dev)->fbdev) { if (dev_priv->fbdev) {
fbdev_fb = to_intel_framebuffer(to_i915(dev)->fbdev->helper.fb); fbdev_fb = to_intel_framebuffer(dev_priv->fbdev->helper.fb);
seq_printf(m, "fbcon size: %d x %d, depth %d, %d bpp, modifier 0x%llx, refcount %d, obj ", seq_printf(m, "fbcon size: %d x %d, depth %d, %d bpp, modifier 0x%llx, refcount %d, obj ",
fbdev_fb->base.width, fbdev_fb->base.width,
...@@ -1949,9 +1919,8 @@ static void describe_ctx_ring(struct seq_file *m, struct intel_ring *ring) ...@@ -1949,9 +1919,8 @@ static void describe_ctx_ring(struct seq_file *m, struct intel_ring *ring)
static int i915_context_status(struct seq_file *m, void *unused) static int i915_context_status(struct seq_file *m, void *unused)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev; struct drm_device *dev = &dev_priv->drm;
struct drm_i915_private *dev_priv = to_i915(dev);
struct intel_engine_cs *engine; struct intel_engine_cs *engine;
struct i915_gem_context *ctx; struct i915_gem_context *ctx;
int ret; int ret;
...@@ -2043,9 +2012,8 @@ static void i915_dump_lrc_obj(struct seq_file *m, ...@@ -2043,9 +2012,8 @@ static void i915_dump_lrc_obj(struct seq_file *m,
static int i915_dump_lrc(struct seq_file *m, void *unused) static int i915_dump_lrc(struct seq_file *m, void *unused)
{ {
struct drm_info_node *node = (struct drm_info_node *) m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev; struct drm_device *dev = &dev_priv->drm;
struct drm_i915_private *dev_priv = to_i915(dev);
struct intel_engine_cs *engine; struct intel_engine_cs *engine;
struct i915_gem_context *ctx; struct i915_gem_context *ctx;
int ret; int ret;
...@@ -2070,9 +2038,8 @@ static int i915_dump_lrc(struct seq_file *m, void *unused) ...@@ -2070,9 +2038,8 @@ static int i915_dump_lrc(struct seq_file *m, void *unused)
static int i915_execlists(struct seq_file *m, void *data) static int i915_execlists(struct seq_file *m, void *data)
{ {
struct drm_info_node *node = (struct drm_info_node *)m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev; struct drm_device *dev = &dev_priv->drm;
struct drm_i915_private *dev_priv = to_i915(dev);
struct intel_engine_cs *engine; struct intel_engine_cs *engine;
u32 status_pointer; u32 status_pointer;
u8 read_pointer; u8 read_pointer;
...@@ -2173,9 +2140,8 @@ static const char *swizzle_string(unsigned swizzle) ...@@ -2173,9 +2140,8 @@ static const char *swizzle_string(unsigned swizzle)
static int i915_swizzle_info(struct seq_file *m, void *data) static int i915_swizzle_info(struct seq_file *m, void *data)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev; struct drm_device *dev = &dev_priv->drm;
struct drm_i915_private *dev_priv = to_i915(dev);
int ret; int ret;
ret = mutex_lock_interruptible(&dev->struct_mutex); ret = mutex_lock_interruptible(&dev->struct_mutex);
...@@ -2188,7 +2154,7 @@ static int i915_swizzle_info(struct seq_file *m, void *data) ...@@ -2188,7 +2154,7 @@ static int i915_swizzle_info(struct seq_file *m, void *data)
seq_printf(m, "bit6 swizzle for Y-tiling = %s\n", seq_printf(m, "bit6 swizzle for Y-tiling = %s\n",
swizzle_string(dev_priv->mm.bit_6_swizzle_y)); swizzle_string(dev_priv->mm.bit_6_swizzle_y));
if (IS_GEN3(dev) || IS_GEN4(dev)) { if (IS_GEN3(dev_priv) || IS_GEN4(dev_priv)) {
seq_printf(m, "DDC = 0x%08x\n", seq_printf(m, "DDC = 0x%08x\n",
I915_READ(DCC)); I915_READ(DCC));
seq_printf(m, "DDC2 = 0x%08x\n", seq_printf(m, "DDC2 = 0x%08x\n",
...@@ -2197,7 +2163,7 @@ static int i915_swizzle_info(struct seq_file *m, void *data) ...@@ -2197,7 +2163,7 @@ static int i915_swizzle_info(struct seq_file *m, void *data)
I915_READ16(C0DRB3)); I915_READ16(C0DRB3));
seq_printf(m, "C1DRB3 = 0x%04x\n", seq_printf(m, "C1DRB3 = 0x%04x\n",
I915_READ16(C1DRB3)); I915_READ16(C1DRB3));
} else if (INTEL_INFO(dev)->gen >= 6) { } else if (INTEL_GEN(dev_priv) >= 6) {
seq_printf(m, "MAD_DIMM_C0 = 0x%08x\n", seq_printf(m, "MAD_DIMM_C0 = 0x%08x\n",
I915_READ(MAD_DIMM_C0)); I915_READ(MAD_DIMM_C0));
seq_printf(m, "MAD_DIMM_C1 = 0x%08x\n", seq_printf(m, "MAD_DIMM_C1 = 0x%08x\n",
...@@ -2206,7 +2172,7 @@ static int i915_swizzle_info(struct seq_file *m, void *data) ...@@ -2206,7 +2172,7 @@ static int i915_swizzle_info(struct seq_file *m, void *data)
I915_READ(MAD_DIMM_C2)); I915_READ(MAD_DIMM_C2));
seq_printf(m, "TILECTL = 0x%08x\n", seq_printf(m, "TILECTL = 0x%08x\n",
I915_READ(TILECTL)); I915_READ(TILECTL));
if (INTEL_INFO(dev)->gen >= 8) if (INTEL_GEN(dev_priv) >= 8)
seq_printf(m, "GAMTARBMODE = 0x%08x\n", seq_printf(m, "GAMTARBMODE = 0x%08x\n",
I915_READ(GAMTARBMODE)); I915_READ(GAMTARBMODE));
else else
...@@ -2246,9 +2212,9 @@ static int per_file_ctx(int id, void *ptr, void *data) ...@@ -2246,9 +2212,9 @@ static int per_file_ctx(int id, void *ptr, void *data)
return 0; return 0;
} }
static void gen8_ppgtt_info(struct seq_file *m, struct drm_device *dev) static void gen8_ppgtt_info(struct seq_file *m,
struct drm_i915_private *dev_priv)
{ {
struct drm_i915_private *dev_priv = to_i915(dev);
struct intel_engine_cs *engine; struct intel_engine_cs *engine;
struct i915_hw_ppgtt *ppgtt = dev_priv->mm.aliasing_ppgtt; struct i915_hw_ppgtt *ppgtt = dev_priv->mm.aliasing_ppgtt;
int i; int i;
...@@ -2267,9 +2233,9 @@ static void gen8_ppgtt_info(struct seq_file *m, struct drm_device *dev) ...@@ -2267,9 +2233,9 @@ static void gen8_ppgtt_info(struct seq_file *m, struct drm_device *dev)
} }
} }
static void gen6_ppgtt_info(struct seq_file *m, struct drm_device *dev) static void gen6_ppgtt_info(struct seq_file *m,
struct drm_i915_private *dev_priv)
{ {
struct drm_i915_private *dev_priv = to_i915(dev);
struct intel_engine_cs *engine; struct intel_engine_cs *engine;
if (IS_GEN6(dev_priv)) if (IS_GEN6(dev_priv))
...@@ -2301,9 +2267,8 @@ static void gen6_ppgtt_info(struct seq_file *m, struct drm_device *dev) ...@@ -2301,9 +2267,8 @@ static void gen6_ppgtt_info(struct seq_file *m, struct drm_device *dev)
static int i915_ppgtt_info(struct seq_file *m, void *data) static int i915_ppgtt_info(struct seq_file *m, void *data)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev; struct drm_device *dev = &dev_priv->drm;
struct drm_i915_private *dev_priv = to_i915(dev);
struct drm_file *file; struct drm_file *file;
int ret = mutex_lock_interruptible(&dev->struct_mutex); int ret = mutex_lock_interruptible(&dev->struct_mutex);
...@@ -2311,10 +2276,10 @@ static int i915_ppgtt_info(struct seq_file *m, void *data) ...@@ -2311,10 +2276,10 @@ static int i915_ppgtt_info(struct seq_file *m, void *data)
return ret; return ret;
intel_runtime_pm_get(dev_priv); intel_runtime_pm_get(dev_priv);
if (INTEL_INFO(dev)->gen >= 8) if (INTEL_GEN(dev_priv) >= 8)
gen8_ppgtt_info(m, dev); gen8_ppgtt_info(m, dev_priv);
else if (INTEL_INFO(dev)->gen >= 6) else if (INTEL_GEN(dev_priv) >= 6)
gen6_ppgtt_info(m, dev); gen6_ppgtt_info(m, dev_priv);
mutex_lock(&dev->filelist_mutex); mutex_lock(&dev->filelist_mutex);
list_for_each_entry_reverse(file, &dev->filelist, lhead) { list_for_each_entry_reverse(file, &dev->filelist, lhead) {
...@@ -2367,9 +2332,8 @@ static const char *rps_power_to_str(unsigned int power) ...@@ -2367,9 +2332,8 @@ static const char *rps_power_to_str(unsigned int power)
static int i915_rps_boost_info(struct seq_file *m, void *data) static int i915_rps_boost_info(struct seq_file *m, void *data)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev; struct drm_device *dev = &dev_priv->drm;
struct drm_i915_private *dev_priv = to_i915(dev);
struct drm_file *file; struct drm_file *file;
seq_printf(m, "RPS enabled? %d\n", dev_priv->rps.enabled); seq_printf(m, "RPS enabled? %d\n", dev_priv->rps.enabled);
...@@ -2437,12 +2401,10 @@ static int i915_rps_boost_info(struct seq_file *m, void *data) ...@@ -2437,12 +2401,10 @@ static int i915_rps_boost_info(struct seq_file *m, void *data)
static int i915_llc(struct seq_file *m, void *data) static int i915_llc(struct seq_file *m, void *data)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev;
struct drm_i915_private *dev_priv = to_i915(dev);
const bool edram = INTEL_GEN(dev_priv) > 8; const bool edram = INTEL_GEN(dev_priv) > 8;
seq_printf(m, "LLC: %s\n", yesno(HAS_LLC(dev))); seq_printf(m, "LLC: %s\n", yesno(HAS_LLC(dev_priv)));
seq_printf(m, "%s: %lluMB\n", edram ? "eDRAM" : "eLLC", seq_printf(m, "%s: %lluMB\n", edram ? "eDRAM" : "eLLC",
intel_uncore_edram_size(dev_priv)/1024/1024); intel_uncore_edram_size(dev_priv)/1024/1024);
...@@ -2451,8 +2413,7 @@ static int i915_llc(struct seq_file *m, void *data) ...@@ -2451,8 +2413,7 @@ static int i915_llc(struct seq_file *m, void *data)
static int i915_guc_load_status_info(struct seq_file *m, void *data) static int i915_guc_load_status_info(struct seq_file *m, void *data)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_i915_private *dev_priv = to_i915(node->minor->dev);
struct intel_guc_fw *guc_fw = &dev_priv->guc.guc_fw; struct intel_guc_fw *guc_fw = &dev_priv->guc.guc_fw;
u32 tmp, i; u32 tmp, i;
...@@ -2523,9 +2484,8 @@ static void i915_guc_client_info(struct seq_file *m, ...@@ -2523,9 +2484,8 @@ static void i915_guc_client_info(struct seq_file *m,
static int i915_guc_info(struct seq_file *m, void *data) static int i915_guc_info(struct seq_file *m, void *data)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev; struct drm_device *dev = &dev_priv->drm;
struct drm_i915_private *dev_priv = to_i915(dev);
struct intel_guc guc; struct intel_guc guc;
struct i915_guc_client client = {}; struct i915_guc_client client = {};
struct intel_engine_cs *engine; struct intel_engine_cs *engine;
...@@ -2574,9 +2534,7 @@ static int i915_guc_info(struct seq_file *m, void *data) ...@@ -2574,9 +2534,7 @@ static int i915_guc_info(struct seq_file *m, void *data)
static int i915_guc_log_dump(struct seq_file *m, void *data) static int i915_guc_log_dump(struct seq_file *m, void *data)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev;
struct drm_i915_private *dev_priv = to_i915(dev);
struct drm_i915_gem_object *obj; struct drm_i915_gem_object *obj;
int i = 0, pg; int i = 0, pg;
...@@ -2602,15 +2560,13 @@ static int i915_guc_log_dump(struct seq_file *m, void *data) ...@@ -2602,15 +2560,13 @@ static int i915_guc_log_dump(struct seq_file *m, void *data)
static int i915_edp_psr_status(struct seq_file *m, void *data) static int i915_edp_psr_status(struct seq_file *m, void *data)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev;
struct drm_i915_private *dev_priv = to_i915(dev);
u32 psrperf = 0; u32 psrperf = 0;
u32 stat[3]; u32 stat[3];
enum pipe pipe; enum pipe pipe;
bool enabled = false; bool enabled = false;
if (!HAS_PSR(dev)) { if (!HAS_PSR(dev_priv)) {
seq_puts(m, "PSR not supported\n"); seq_puts(m, "PSR not supported\n");
return 0; return 0;
} }
...@@ -2627,7 +2583,7 @@ static int i915_edp_psr_status(struct seq_file *m, void *data) ...@@ -2627,7 +2583,7 @@ static int i915_edp_psr_status(struct seq_file *m, void *data)
seq_printf(m, "Re-enable work scheduled: %s\n", seq_printf(m, "Re-enable work scheduled: %s\n",
yesno(work_busy(&dev_priv->psr.work.work))); yesno(work_busy(&dev_priv->psr.work.work)));
if (HAS_DDI(dev)) if (HAS_DDI(dev_priv))
enabled = I915_READ(EDP_PSR_CTL) & EDP_PSR_ENABLE; enabled = I915_READ(EDP_PSR_CTL) & EDP_PSR_ENABLE;
else { else {
for_each_pipe(dev_priv, pipe) { for_each_pipe(dev_priv, pipe) {
...@@ -2644,7 +2600,7 @@ static int i915_edp_psr_status(struct seq_file *m, void *data) ...@@ -2644,7 +2600,7 @@ static int i915_edp_psr_status(struct seq_file *m, void *data)
seq_printf(m, "HW Enabled & Active bit: %s", yesno(enabled)); seq_printf(m, "HW Enabled & Active bit: %s", yesno(enabled));
if (!HAS_DDI(dev)) if (!HAS_DDI(dev_priv))
for_each_pipe(dev_priv, pipe) { for_each_pipe(dev_priv, pipe) {
if ((stat[pipe] == VLV_EDP_PSR_ACTIVE_NORFB_UP) || if ((stat[pipe] == VLV_EDP_PSR_ACTIVE_NORFB_UP) ||
(stat[pipe] == VLV_EDP_PSR_ACTIVE_SF_UPDATE)) (stat[pipe] == VLV_EDP_PSR_ACTIVE_SF_UPDATE))
...@@ -2656,7 +2612,7 @@ static int i915_edp_psr_status(struct seq_file *m, void *data) ...@@ -2656,7 +2612,7 @@ static int i915_edp_psr_status(struct seq_file *m, void *data)
* VLV/CHV PSR has no kind of performance counter * VLV/CHV PSR has no kind of performance counter
* SKL+ Perf counter is reset to 0 everytime DC state is entered * SKL+ Perf counter is reset to 0 everytime DC state is entered
*/ */
if (IS_HASWELL(dev) || IS_BROADWELL(dev)) { if (IS_HASWELL(dev_priv) || IS_BROADWELL(dev_priv)) {
psrperf = I915_READ(EDP_PSR_PERF_CNT) & psrperf = I915_READ(EDP_PSR_PERF_CNT) &
EDP_PSR_PERF_CNT_MASK; EDP_PSR_PERF_CNT_MASK;
...@@ -2670,8 +2626,8 @@ static int i915_edp_psr_status(struct seq_file *m, void *data) ...@@ -2670,8 +2626,8 @@ static int i915_edp_psr_status(struct seq_file *m, void *data)
static int i915_sink_crc(struct seq_file *m, void *data) static int i915_sink_crc(struct seq_file *m, void *data)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev; struct drm_device *dev = &dev_priv->drm;
struct intel_connector *connector; struct intel_connector *connector;
struct intel_dp *intel_dp = NULL; struct intel_dp *intel_dp = NULL;
int ret; int ret;
...@@ -2710,13 +2666,11 @@ static int i915_sink_crc(struct seq_file *m, void *data) ...@@ -2710,13 +2666,11 @@ static int i915_sink_crc(struct seq_file *m, void *data)
static int i915_energy_uJ(struct seq_file *m, void *data) static int i915_energy_uJ(struct seq_file *m, void *data)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev;
struct drm_i915_private *dev_priv = to_i915(dev);
u64 power; u64 power;
u32 units; u32 units;
if (INTEL_INFO(dev)->gen < 6) if (INTEL_GEN(dev_priv) < 6)
return -ENODEV; return -ENODEV;
intel_runtime_pm_get(dev_priv); intel_runtime_pm_get(dev_priv);
...@@ -2736,9 +2690,7 @@ static int i915_energy_uJ(struct seq_file *m, void *data) ...@@ -2736,9 +2690,7 @@ static int i915_energy_uJ(struct seq_file *m, void *data)
static int i915_runtime_pm_status(struct seq_file *m, void *unused) static int i915_runtime_pm_status(struct seq_file *m, void *unused)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev;
struct drm_i915_private *dev_priv = to_i915(dev);
struct pci_dev *pdev = dev_priv->drm.pdev; struct pci_dev *pdev = dev_priv->drm.pdev;
if (!HAS_RUNTIME_PM(dev_priv)) if (!HAS_RUNTIME_PM(dev_priv))
...@@ -2749,7 +2701,7 @@ static int i915_runtime_pm_status(struct seq_file *m, void *unused) ...@@ -2749,7 +2701,7 @@ static int i915_runtime_pm_status(struct seq_file *m, void *unused)
yesno(!intel_irqs_enabled(dev_priv))); yesno(!intel_irqs_enabled(dev_priv)));
#ifdef CONFIG_PM #ifdef CONFIG_PM
seq_printf(m, "Usage count: %d\n", seq_printf(m, "Usage count: %d\n",
atomic_read(&dev->dev->power.usage_count)); atomic_read(&dev_priv->drm.dev->power.usage_count));
#else #else
seq_printf(m, "Device Power Management (CONFIG_PM) disabled\n"); seq_printf(m, "Device Power Management (CONFIG_PM) disabled\n");
#endif #endif
...@@ -2762,9 +2714,7 @@ static int i915_runtime_pm_status(struct seq_file *m, void *unused) ...@@ -2762,9 +2714,7 @@ static int i915_runtime_pm_status(struct seq_file *m, void *unused)
static int i915_power_domain_info(struct seq_file *m, void *unused) static int i915_power_domain_info(struct seq_file *m, void *unused)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev;
struct drm_i915_private *dev_priv = to_i915(dev);
struct i915_power_domains *power_domains = &dev_priv->power_domains; struct i915_power_domains *power_domains = &dev_priv->power_domains;
int i; int i;
...@@ -2797,12 +2747,10 @@ static int i915_power_domain_info(struct seq_file *m, void *unused) ...@@ -2797,12 +2747,10 @@ static int i915_power_domain_info(struct seq_file *m, void *unused)
static int i915_dmc_info(struct seq_file *m, void *unused) static int i915_dmc_info(struct seq_file *m, void *unused)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev;
struct drm_i915_private *dev_priv = to_i915(dev);
struct intel_csr *csr; struct intel_csr *csr;
if (!HAS_CSR(dev)) { if (!HAS_CSR(dev_priv)) {
seq_puts(m, "not supported\n"); seq_puts(m, "not supported\n");
return 0; return 0;
} }
...@@ -2820,12 +2768,12 @@ static int i915_dmc_info(struct seq_file *m, void *unused) ...@@ -2820,12 +2768,12 @@ static int i915_dmc_info(struct seq_file *m, void *unused)
seq_printf(m, "version: %d.%d\n", CSR_VERSION_MAJOR(csr->version), seq_printf(m, "version: %d.%d\n", CSR_VERSION_MAJOR(csr->version),
CSR_VERSION_MINOR(csr->version)); CSR_VERSION_MINOR(csr->version));
if (IS_SKYLAKE(dev) && csr->version >= CSR_VERSION(1, 6)) { if (IS_SKYLAKE(dev_priv) && csr->version >= CSR_VERSION(1, 6)) {
seq_printf(m, "DC3 -> DC5 count: %d\n", seq_printf(m, "DC3 -> DC5 count: %d\n",
I915_READ(SKL_CSR_DC3_DC5_COUNT)); I915_READ(SKL_CSR_DC3_DC5_COUNT));
seq_printf(m, "DC5 -> DC6 count: %d\n", seq_printf(m, "DC5 -> DC6 count: %d\n",
I915_READ(SKL_CSR_DC5_DC6_COUNT)); I915_READ(SKL_CSR_DC5_DC6_COUNT));
} else if (IS_BROXTON(dev) && csr->version >= CSR_VERSION(1, 4)) { } else if (IS_BROXTON(dev_priv) && csr->version >= CSR_VERSION(1, 4)) {
seq_printf(m, "DC3 -> DC5 count: %d\n", seq_printf(m, "DC3 -> DC5 count: %d\n",
I915_READ(BXT_CSR_DC3_DC5_COUNT)); I915_READ(BXT_CSR_DC3_DC5_COUNT));
} }
...@@ -2862,8 +2810,8 @@ static void intel_encoder_info(struct seq_file *m, ...@@ -2862,8 +2810,8 @@ static void intel_encoder_info(struct seq_file *m,
struct intel_crtc *intel_crtc, struct intel_crtc *intel_crtc,
struct intel_encoder *intel_encoder) struct intel_encoder *intel_encoder)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev; struct drm_device *dev = &dev_priv->drm;
struct drm_crtc *crtc = &intel_crtc->base; struct drm_crtc *crtc = &intel_crtc->base;
struct intel_connector *intel_connector; struct intel_connector *intel_connector;
struct drm_encoder *encoder; struct drm_encoder *encoder;
...@@ -2889,8 +2837,8 @@ static void intel_encoder_info(struct seq_file *m, ...@@ -2889,8 +2837,8 @@ static void intel_encoder_info(struct seq_file *m,
static void intel_crtc_info(struct seq_file *m, struct intel_crtc *intel_crtc) static void intel_crtc_info(struct seq_file *m, struct intel_crtc *intel_crtc)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev; struct drm_device *dev = &dev_priv->drm;
struct drm_crtc *crtc = &intel_crtc->base; struct drm_crtc *crtc = &intel_crtc->base;
struct intel_encoder *intel_encoder; struct intel_encoder *intel_encoder;
struct drm_plane_state *plane_state = crtc->primary->state; struct drm_plane_state *plane_state = crtc->primary->state;
...@@ -2988,12 +2936,11 @@ static void intel_connector_info(struct seq_file *m, ...@@ -2988,12 +2936,11 @@ static void intel_connector_info(struct seq_file *m,
intel_seq_print_mode(m, 2, mode); intel_seq_print_mode(m, 2, mode);
} }
static bool cursor_active(struct drm_device *dev, int pipe) static bool cursor_active(struct drm_i915_private *dev_priv, int pipe)
{ {
struct drm_i915_private *dev_priv = to_i915(dev);
u32 state; u32 state;
if (IS_845G(dev) || IS_I865G(dev)) if (IS_845G(dev_priv) || IS_I865G(dev_priv))
state = I915_READ(CURCNTR(PIPE_A)) & CURSOR_ENABLE; state = I915_READ(CURCNTR(PIPE_A)) & CURSOR_ENABLE;
else else
state = I915_READ(CURCNTR(pipe)) & CURSOR_MODE; state = I915_READ(CURCNTR(pipe)) & CURSOR_MODE;
...@@ -3001,9 +2948,9 @@ static bool cursor_active(struct drm_device *dev, int pipe) ...@@ -3001,9 +2948,9 @@ static bool cursor_active(struct drm_device *dev, int pipe)
return state; return state;
} }
static bool cursor_position(struct drm_device *dev, int pipe, int *x, int *y) static bool cursor_position(struct drm_i915_private *dev_priv,
int pipe, int *x, int *y)
{ {
struct drm_i915_private *dev_priv = to_i915(dev);
u32 pos; u32 pos;
pos = I915_READ(CURPOS(pipe)); pos = I915_READ(CURPOS(pipe));
...@@ -3016,7 +2963,7 @@ static bool cursor_position(struct drm_device *dev, int pipe, int *x, int *y) ...@@ -3016,7 +2963,7 @@ static bool cursor_position(struct drm_device *dev, int pipe, int *x, int *y)
if (pos & (CURSOR_POS_SIGN << CURSOR_Y_SHIFT)) if (pos & (CURSOR_POS_SIGN << CURSOR_Y_SHIFT))
*y = -*y; *y = -*y;
return cursor_active(dev, pipe); return cursor_active(dev_priv, pipe);
} }
static const char *plane_type(enum drm_plane_type type) static const char *plane_type(enum drm_plane_type type)
...@@ -3059,8 +3006,8 @@ static const char *plane_rotation(unsigned int rotation) ...@@ -3059,8 +3006,8 @@ static const char *plane_rotation(unsigned int rotation)
static void intel_plane_info(struct seq_file *m, struct intel_crtc *intel_crtc) static void intel_plane_info(struct seq_file *m, struct intel_crtc *intel_crtc)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev; struct drm_device *dev = &dev_priv->drm;
struct intel_plane *intel_plane; struct intel_plane *intel_plane;
for_each_intel_plane_on_crtc(dev, intel_crtc, intel_plane) { for_each_intel_plane_on_crtc(dev, intel_crtc, intel_plane) {
...@@ -3122,9 +3069,8 @@ static void intel_scaler_info(struct seq_file *m, struct intel_crtc *intel_crtc) ...@@ -3122,9 +3069,8 @@ static void intel_scaler_info(struct seq_file *m, struct intel_crtc *intel_crtc)
static int i915_display_info(struct seq_file *m, void *unused) static int i915_display_info(struct seq_file *m, void *unused)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev; struct drm_device *dev = &dev_priv->drm;
struct drm_i915_private *dev_priv = to_i915(dev);
struct intel_crtc *crtc; struct intel_crtc *crtc;
struct drm_connector *connector; struct drm_connector *connector;
...@@ -3148,7 +3094,7 @@ static int i915_display_info(struct seq_file *m, void *unused) ...@@ -3148,7 +3094,7 @@ static int i915_display_info(struct seq_file *m, void *unused)
if (pipe_config->base.active) { if (pipe_config->base.active) {
intel_crtc_info(m, crtc); intel_crtc_info(m, crtc);
active = cursor_position(dev, crtc->pipe, &x, &y); active = cursor_position(dev_priv, crtc->pipe, &x, &y);
seq_printf(m, "\tcursor visible? %s, position (%d, %d), size %dx%d, addr 0x%08x, active? %s\n", seq_printf(m, "\tcursor visible? %s, position (%d, %d), size %dx%d, addr 0x%08x, active? %s\n",
yesno(crtc->cursor_base), yesno(crtc->cursor_base),
x, y, crtc->base.cursor->state->crtc_w, x, y, crtc->base.cursor->state->crtc_w,
...@@ -3177,11 +3123,10 @@ static int i915_display_info(struct seq_file *m, void *unused) ...@@ -3177,11 +3123,10 @@ static int i915_display_info(struct seq_file *m, void *unused)
static int i915_semaphore_status(struct seq_file *m, void *unused) static int i915_semaphore_status(struct seq_file *m, void *unused)
{ {
struct drm_info_node *node = (struct drm_info_node *) m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev; struct drm_device *dev = &dev_priv->drm;
struct drm_i915_private *dev_priv = to_i915(dev);
struct intel_engine_cs *engine; struct intel_engine_cs *engine;
int num_rings = INTEL_INFO(dev)->num_rings; int num_rings = INTEL_INFO(dev_priv)->num_rings;
enum intel_engine_id id; enum intel_engine_id id;
int j, ret; int j, ret;
...@@ -3195,7 +3140,7 @@ static int i915_semaphore_status(struct seq_file *m, void *unused) ...@@ -3195,7 +3140,7 @@ static int i915_semaphore_status(struct seq_file *m, void *unused)
return ret; return ret;
intel_runtime_pm_get(dev_priv); intel_runtime_pm_get(dev_priv);
if (IS_BROADWELL(dev)) { if (IS_BROADWELL(dev_priv)) {
struct page *page; struct page *page;
uint64_t *seqno; uint64_t *seqno;
...@@ -3250,9 +3195,8 @@ static int i915_semaphore_status(struct seq_file *m, void *unused) ...@@ -3250,9 +3195,8 @@ static int i915_semaphore_status(struct seq_file *m, void *unused)
static int i915_shared_dplls_info(struct seq_file *m, void *unused) static int i915_shared_dplls_info(struct seq_file *m, void *unused)
{ {
struct drm_info_node *node = (struct drm_info_node *) m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev; struct drm_device *dev = &dev_priv->drm;
struct drm_i915_private *dev_priv = to_i915(dev);
int i; int i;
drm_modeset_lock_all(dev); drm_modeset_lock_all(dev);
...@@ -3280,9 +3224,8 @@ static int i915_wa_registers(struct seq_file *m, void *unused) ...@@ -3280,9 +3224,8 @@ static int i915_wa_registers(struct seq_file *m, void *unused)
int i; int i;
int ret; int ret;
struct intel_engine_cs *engine; struct intel_engine_cs *engine;
struct drm_info_node *node = (struct drm_info_node *) m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev; struct drm_device *dev = &dev_priv->drm;
struct drm_i915_private *dev_priv = to_i915(dev);
struct i915_workarounds *workarounds = &dev_priv->workarounds; struct i915_workarounds *workarounds = &dev_priv->workarounds;
enum intel_engine_id id; enum intel_engine_id id;
...@@ -3318,15 +3261,14 @@ static int i915_wa_registers(struct seq_file *m, void *unused) ...@@ -3318,15 +3261,14 @@ static int i915_wa_registers(struct seq_file *m, void *unused)
static int i915_ddb_info(struct seq_file *m, void *unused) static int i915_ddb_info(struct seq_file *m, void *unused)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev; struct drm_device *dev = &dev_priv->drm;
struct drm_i915_private *dev_priv = to_i915(dev);
struct skl_ddb_allocation *ddb; struct skl_ddb_allocation *ddb;
struct skl_ddb_entry *entry; struct skl_ddb_entry *entry;
enum pipe pipe; enum pipe pipe;
int plane; int plane;
if (INTEL_INFO(dev)->gen < 9) if (INTEL_GEN(dev_priv) < 9)
return 0; return 0;
drm_modeset_lock_all(dev); drm_modeset_lock_all(dev);
...@@ -3356,7 +3298,8 @@ static int i915_ddb_info(struct seq_file *m, void *unused) ...@@ -3356,7 +3298,8 @@ static int i915_ddb_info(struct seq_file *m, void *unused)
} }
static void drrs_status_per_crtc(struct seq_file *m, static void drrs_status_per_crtc(struct seq_file *m,
struct drm_device *dev, struct intel_crtc *intel_crtc) struct drm_device *dev,
struct intel_crtc *intel_crtc)
{ {
struct drm_i915_private *dev_priv = to_i915(dev); struct drm_i915_private *dev_priv = to_i915(dev);
struct i915_drrs *drrs = &dev_priv->drrs; struct i915_drrs *drrs = &dev_priv->drrs;
...@@ -3425,8 +3368,8 @@ static void drrs_status_per_crtc(struct seq_file *m, ...@@ -3425,8 +3368,8 @@ static void drrs_status_per_crtc(struct seq_file *m,
static int i915_drrs_status(struct seq_file *m, void *unused) static int i915_drrs_status(struct seq_file *m, void *unused)
{ {
struct drm_info_node *node = m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev; struct drm_device *dev = &dev_priv->drm;
struct intel_crtc *intel_crtc; struct intel_crtc *intel_crtc;
int active_crtc_cnt = 0; int active_crtc_cnt = 0;
...@@ -3449,14 +3392,14 @@ static int i915_drrs_status(struct seq_file *m, void *unused) ...@@ -3449,14 +3392,14 @@ static int i915_drrs_status(struct seq_file *m, void *unused)
struct pipe_crc_info { struct pipe_crc_info {
const char *name; const char *name;
struct drm_device *dev; struct drm_i915_private *dev_priv;
enum pipe pipe; enum pipe pipe;
}; };
static int i915_dp_mst_info(struct seq_file *m, void *unused) static int i915_dp_mst_info(struct seq_file *m, void *unused)
{ {
struct drm_info_node *node = (struct drm_info_node *) m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_device *dev = node->minor->dev; struct drm_device *dev = &dev_priv->drm;
struct intel_encoder *intel_encoder; struct intel_encoder *intel_encoder;
struct intel_digital_port *intel_dig_port; struct intel_digital_port *intel_dig_port;
struct drm_connector *connector; struct drm_connector *connector;
...@@ -3485,10 +3428,10 @@ static int i915_dp_mst_info(struct seq_file *m, void *unused) ...@@ -3485,10 +3428,10 @@ static int i915_dp_mst_info(struct seq_file *m, void *unused)
static int i915_pipe_crc_open(struct inode *inode, struct file *filep) static int i915_pipe_crc_open(struct inode *inode, struct file *filep)
{ {
struct pipe_crc_info *info = inode->i_private; struct pipe_crc_info *info = inode->i_private;
struct drm_i915_private *dev_priv = to_i915(info->dev); struct drm_i915_private *dev_priv = info->dev_priv;
struct intel_pipe_crc *pipe_crc = &dev_priv->pipe_crc[info->pipe]; struct intel_pipe_crc *pipe_crc = &dev_priv->pipe_crc[info->pipe];
if (info->pipe >= INTEL_INFO(info->dev)->num_pipes) if (info->pipe >= INTEL_INFO(dev_priv)->num_pipes)
return -ENODEV; return -ENODEV;
spin_lock_irq(&pipe_crc->lock); spin_lock_irq(&pipe_crc->lock);
...@@ -3509,7 +3452,7 @@ static int i915_pipe_crc_open(struct inode *inode, struct file *filep) ...@@ -3509,7 +3452,7 @@ static int i915_pipe_crc_open(struct inode *inode, struct file *filep)
static int i915_pipe_crc_release(struct inode *inode, struct file *filep) static int i915_pipe_crc_release(struct inode *inode, struct file *filep)
{ {
struct pipe_crc_info *info = inode->i_private; struct pipe_crc_info *info = inode->i_private;
struct drm_i915_private *dev_priv = to_i915(info->dev); struct drm_i915_private *dev_priv = info->dev_priv;
struct intel_pipe_crc *pipe_crc = &dev_priv->pipe_crc[info->pipe]; struct intel_pipe_crc *pipe_crc = &dev_priv->pipe_crc[info->pipe];
spin_lock_irq(&pipe_crc->lock); spin_lock_irq(&pipe_crc->lock);
...@@ -3536,8 +3479,7 @@ i915_pipe_crc_read(struct file *filep, char __user *user_buf, size_t count, ...@@ -3536,8 +3479,7 @@ i915_pipe_crc_read(struct file *filep, char __user *user_buf, size_t count,
loff_t *pos) loff_t *pos)
{ {
struct pipe_crc_info *info = filep->private_data; struct pipe_crc_info *info = filep->private_data;
struct drm_device *dev = info->dev; struct drm_i915_private *dev_priv = info->dev_priv;
struct drm_i915_private *dev_priv = to_i915(dev);
struct intel_pipe_crc *pipe_crc = &dev_priv->pipe_crc[info->pipe]; struct intel_pipe_crc *pipe_crc = &dev_priv->pipe_crc[info->pipe];
char buf[PIPE_CRC_BUFFER_LEN]; char buf[PIPE_CRC_BUFFER_LEN];
int n_entries; int n_entries;
...@@ -3633,11 +3575,11 @@ static struct pipe_crc_info i915_pipe_crc_data[I915_MAX_PIPES] = { ...@@ -3633,11 +3575,11 @@ static struct pipe_crc_info i915_pipe_crc_data[I915_MAX_PIPES] = {
static int i915_pipe_crc_create(struct dentry *root, struct drm_minor *minor, static int i915_pipe_crc_create(struct dentry *root, struct drm_minor *minor,
enum pipe pipe) enum pipe pipe)
{ {
struct drm_device *dev = minor->dev; struct drm_i915_private *dev_priv = to_i915(minor->dev);
struct dentry *ent; struct dentry *ent;
struct pipe_crc_info *info = &i915_pipe_crc_data[pipe]; struct pipe_crc_info *info = &i915_pipe_crc_data[pipe];
info->dev = dev; info->dev_priv = dev_priv;
ent = debugfs_create_file(info->name, S_IRUGO, root, info, ent = debugfs_create_file(info->name, S_IRUGO, root, info,
&i915_pipe_crc_fops); &i915_pipe_crc_fops);
if (!ent) if (!ent)
...@@ -3667,8 +3609,7 @@ static const char *pipe_crc_source_name(enum intel_pipe_crc_source source) ...@@ -3667,8 +3609,7 @@ static const char *pipe_crc_source_name(enum intel_pipe_crc_source source)
static int display_crc_ctl_show(struct seq_file *m, void *data) static int display_crc_ctl_show(struct seq_file *m, void *data)
{ {
struct drm_device *dev = m->private; struct drm_i915_private *dev_priv = m->private;
struct drm_i915_private *dev_priv = to_i915(dev);
int i; int i;
for (i = 0; i < I915_MAX_PIPES; i++) for (i = 0; i < I915_MAX_PIPES; i++)
...@@ -3680,9 +3621,7 @@ static int display_crc_ctl_show(struct seq_file *m, void *data) ...@@ -3680,9 +3621,7 @@ static int display_crc_ctl_show(struct seq_file *m, void *data)
static int display_crc_ctl_open(struct inode *inode, struct file *file) static int display_crc_ctl_open(struct inode *inode, struct file *file)
{ {
struct drm_device *dev = inode->i_private; return single_open(file, display_crc_ctl_show, inode->i_private);
return single_open(file, display_crc_ctl_show, dev);
} }
static int i8xx_pipe_crc_ctl_reg(enum intel_pipe_crc_source *source, static int i8xx_pipe_crc_ctl_reg(enum intel_pipe_crc_source *source,
...@@ -3705,9 +3644,11 @@ static int i8xx_pipe_crc_ctl_reg(enum intel_pipe_crc_source *source, ...@@ -3705,9 +3644,11 @@ static int i8xx_pipe_crc_ctl_reg(enum intel_pipe_crc_source *source,
return 0; return 0;
} }
static int i9xx_pipe_crc_auto_source(struct drm_device *dev, enum pipe pipe, static int i9xx_pipe_crc_auto_source(struct drm_i915_private *dev_priv,
enum pipe pipe,
enum intel_pipe_crc_source *source) enum intel_pipe_crc_source *source)
{ {
struct drm_device *dev = &dev_priv->drm;
struct intel_encoder *encoder; struct intel_encoder *encoder;
struct intel_crtc *crtc; struct intel_crtc *crtc;
struct intel_digital_port *dig_port; struct intel_digital_port *dig_port;
...@@ -3757,16 +3698,15 @@ static int i9xx_pipe_crc_auto_source(struct drm_device *dev, enum pipe pipe, ...@@ -3757,16 +3698,15 @@ static int i9xx_pipe_crc_auto_source(struct drm_device *dev, enum pipe pipe,
return ret; return ret;
} }
static int vlv_pipe_crc_ctl_reg(struct drm_device *dev, static int vlv_pipe_crc_ctl_reg(struct drm_i915_private *dev_priv,
enum pipe pipe, enum pipe pipe,
enum intel_pipe_crc_source *source, enum intel_pipe_crc_source *source,
uint32_t *val) uint32_t *val)
{ {
struct drm_i915_private *dev_priv = to_i915(dev);
bool need_stable_symbols = false; bool need_stable_symbols = false;
if (*source == INTEL_PIPE_CRC_SOURCE_AUTO) { if (*source == INTEL_PIPE_CRC_SOURCE_AUTO) {
int ret = i9xx_pipe_crc_auto_source(dev, pipe, source); int ret = i9xx_pipe_crc_auto_source(dev_priv, pipe, source);
if (ret) if (ret)
return ret; return ret;
} }
...@@ -3784,7 +3724,7 @@ static int vlv_pipe_crc_ctl_reg(struct drm_device *dev, ...@@ -3784,7 +3724,7 @@ static int vlv_pipe_crc_ctl_reg(struct drm_device *dev,
need_stable_symbols = true; need_stable_symbols = true;
break; break;
case INTEL_PIPE_CRC_SOURCE_DP_D: case INTEL_PIPE_CRC_SOURCE_DP_D:
if (!IS_CHERRYVIEW(dev)) if (!IS_CHERRYVIEW(dev_priv))
return -EINVAL; return -EINVAL;
*val = PIPE_CRC_ENABLE | PIPE_CRC_SOURCE_DP_D_VLV; *val = PIPE_CRC_ENABLE | PIPE_CRC_SOURCE_DP_D_VLV;
need_stable_symbols = true; need_stable_symbols = true;
...@@ -3828,16 +3768,15 @@ static int vlv_pipe_crc_ctl_reg(struct drm_device *dev, ...@@ -3828,16 +3768,15 @@ static int vlv_pipe_crc_ctl_reg(struct drm_device *dev,
return 0; return 0;
} }
static int i9xx_pipe_crc_ctl_reg(struct drm_device *dev, static int i9xx_pipe_crc_ctl_reg(struct drm_i915_private *dev_priv,
enum pipe pipe, enum pipe pipe,
enum intel_pipe_crc_source *source, enum intel_pipe_crc_source *source,
uint32_t *val) uint32_t *val)
{ {
struct drm_i915_private *dev_priv = to_i915(dev);
bool need_stable_symbols = false; bool need_stable_symbols = false;
if (*source == INTEL_PIPE_CRC_SOURCE_AUTO) { if (*source == INTEL_PIPE_CRC_SOURCE_AUTO) {
int ret = i9xx_pipe_crc_auto_source(dev, pipe, source); int ret = i9xx_pipe_crc_auto_source(dev_priv, pipe, source);
if (ret) if (ret)
return ret; return ret;
} }
...@@ -3847,24 +3786,24 @@ static int i9xx_pipe_crc_ctl_reg(struct drm_device *dev, ...@@ -3847,24 +3786,24 @@ static int i9xx_pipe_crc_ctl_reg(struct drm_device *dev,
*val = PIPE_CRC_ENABLE | PIPE_CRC_SOURCE_PIPE_I9XX; *val = PIPE_CRC_ENABLE | PIPE_CRC_SOURCE_PIPE_I9XX;
break; break;
case INTEL_PIPE_CRC_SOURCE_TV: case INTEL_PIPE_CRC_SOURCE_TV:
if (!SUPPORTS_TV(dev)) if (!SUPPORTS_TV(dev_priv))
return -EINVAL; return -EINVAL;
*val = PIPE_CRC_ENABLE | PIPE_CRC_SOURCE_TV_PRE; *val = PIPE_CRC_ENABLE | PIPE_CRC_SOURCE_TV_PRE;
break; break;
case INTEL_PIPE_CRC_SOURCE_DP_B: case INTEL_PIPE_CRC_SOURCE_DP_B:
if (!IS_G4X(dev)) if (!IS_G4X(dev_priv))
return -EINVAL; return -EINVAL;
*val = PIPE_CRC_ENABLE | PIPE_CRC_SOURCE_DP_B_G4X; *val = PIPE_CRC_ENABLE | PIPE_CRC_SOURCE_DP_B_G4X;
need_stable_symbols = true; need_stable_symbols = true;
break; break;
case INTEL_PIPE_CRC_SOURCE_DP_C: case INTEL_PIPE_CRC_SOURCE_DP_C:
if (!IS_G4X(dev)) if (!IS_G4X(dev_priv))
return -EINVAL; return -EINVAL;
*val = PIPE_CRC_ENABLE | PIPE_CRC_SOURCE_DP_C_G4X; *val = PIPE_CRC_ENABLE | PIPE_CRC_SOURCE_DP_C_G4X;
need_stable_symbols = true; need_stable_symbols = true;
break; break;
case INTEL_PIPE_CRC_SOURCE_DP_D: case INTEL_PIPE_CRC_SOURCE_DP_D:
if (!IS_G4X(dev)) if (!IS_G4X(dev_priv))
return -EINVAL; return -EINVAL;
*val = PIPE_CRC_ENABLE | PIPE_CRC_SOURCE_DP_D_G4X; *val = PIPE_CRC_ENABLE | PIPE_CRC_SOURCE_DP_D_G4X;
need_stable_symbols = true; need_stable_symbols = true;
...@@ -3888,7 +3827,7 @@ static int i9xx_pipe_crc_ctl_reg(struct drm_device *dev, ...@@ -3888,7 +3827,7 @@ static int i9xx_pipe_crc_ctl_reg(struct drm_device *dev,
if (need_stable_symbols) { if (need_stable_symbols) {
uint32_t tmp = I915_READ(PORT_DFT2_G4X); uint32_t tmp = I915_READ(PORT_DFT2_G4X);
WARN_ON(!IS_G4X(dev)); WARN_ON(!IS_G4X(dev_priv));
I915_WRITE(PORT_DFT_I9XX, I915_WRITE(PORT_DFT_I9XX,
I915_READ(PORT_DFT_I9XX) | DC_BALANCE_RESET); I915_READ(PORT_DFT_I9XX) | DC_BALANCE_RESET);
...@@ -3904,10 +3843,9 @@ static int i9xx_pipe_crc_ctl_reg(struct drm_device *dev, ...@@ -3904,10 +3843,9 @@ static int i9xx_pipe_crc_ctl_reg(struct drm_device *dev,
return 0; return 0;
} }
static void vlv_undo_pipe_scramble_reset(struct drm_device *dev, static void vlv_undo_pipe_scramble_reset(struct drm_i915_private *dev_priv,
enum pipe pipe) enum pipe pipe)
{ {
struct drm_i915_private *dev_priv = to_i915(dev);
uint32_t tmp = I915_READ(PORT_DFT2_G4X); uint32_t tmp = I915_READ(PORT_DFT2_G4X);
switch (pipe) { switch (pipe) {
...@@ -3929,10 +3867,9 @@ static void vlv_undo_pipe_scramble_reset(struct drm_device *dev, ...@@ -3929,10 +3867,9 @@ static void vlv_undo_pipe_scramble_reset(struct drm_device *dev,
} }
static void g4x_undo_pipe_scramble_reset(struct drm_device *dev, static void g4x_undo_pipe_scramble_reset(struct drm_i915_private *dev_priv,
enum pipe pipe) enum pipe pipe)
{ {
struct drm_i915_private *dev_priv = to_i915(dev);
uint32_t tmp = I915_READ(PORT_DFT2_G4X); uint32_t tmp = I915_READ(PORT_DFT2_G4X);
if (pipe == PIPE_A) if (pipe == PIPE_A)
...@@ -3973,9 +3910,10 @@ static int ilk_pipe_crc_ctl_reg(enum intel_pipe_crc_source *source, ...@@ -3973,9 +3910,10 @@ static int ilk_pipe_crc_ctl_reg(enum intel_pipe_crc_source *source,
return 0; return 0;
} }
static void hsw_trans_edp_pipe_A_crc_wa(struct drm_device *dev, bool enable) static void hsw_trans_edp_pipe_A_crc_wa(struct drm_i915_private *dev_priv,
bool enable)
{ {
struct drm_i915_private *dev_priv = to_i915(dev); struct drm_device *dev = &dev_priv->drm;
struct intel_crtc *crtc = struct intel_crtc *crtc =
to_intel_crtc(dev_priv->pipe_to_crtc_mapping[PIPE_A]); to_intel_crtc(dev_priv->pipe_to_crtc_mapping[PIPE_A]);
struct intel_crtc_state *pipe_config; struct intel_crtc_state *pipe_config;
...@@ -4009,7 +3947,7 @@ static void hsw_trans_edp_pipe_A_crc_wa(struct drm_device *dev, bool enable) ...@@ -4009,7 +3947,7 @@ static void hsw_trans_edp_pipe_A_crc_wa(struct drm_device *dev, bool enable)
drm_atomic_state_free(state); drm_atomic_state_free(state);
} }
static int ivb_pipe_crc_ctl_reg(struct drm_device *dev, static int ivb_pipe_crc_ctl_reg(struct drm_i915_private *dev_priv,
enum pipe pipe, enum pipe pipe,
enum intel_pipe_crc_source *source, enum intel_pipe_crc_source *source,
uint32_t *val) uint32_t *val)
...@@ -4025,8 +3963,8 @@ static int ivb_pipe_crc_ctl_reg(struct drm_device *dev, ...@@ -4025,8 +3963,8 @@ static int ivb_pipe_crc_ctl_reg(struct drm_device *dev,
*val = PIPE_CRC_ENABLE | PIPE_CRC_SOURCE_SPRITE_IVB; *val = PIPE_CRC_ENABLE | PIPE_CRC_SOURCE_SPRITE_IVB;
break; break;
case INTEL_PIPE_CRC_SOURCE_PF: case INTEL_PIPE_CRC_SOURCE_PF:
if (IS_HASWELL(dev) && pipe == PIPE_A) if (IS_HASWELL(dev_priv) && pipe == PIPE_A)
hsw_trans_edp_pipe_A_crc_wa(dev, true); hsw_trans_edp_pipe_A_crc_wa(dev_priv, true);
*val = PIPE_CRC_ENABLE | PIPE_CRC_SOURCE_PF_IVB; *val = PIPE_CRC_ENABLE | PIPE_CRC_SOURCE_PF_IVB;
break; break;
...@@ -4040,13 +3978,14 @@ static int ivb_pipe_crc_ctl_reg(struct drm_device *dev, ...@@ -4040,13 +3978,14 @@ static int ivb_pipe_crc_ctl_reg(struct drm_device *dev,
return 0; return 0;
} }
static int pipe_crc_set_source(struct drm_device *dev, enum pipe pipe, static int pipe_crc_set_source(struct drm_i915_private *dev_priv,
enum pipe pipe,
enum intel_pipe_crc_source source) enum intel_pipe_crc_source source)
{ {
struct drm_i915_private *dev_priv = to_i915(dev); struct drm_device *dev = &dev_priv->drm;
struct intel_pipe_crc *pipe_crc = &dev_priv->pipe_crc[pipe]; struct intel_pipe_crc *pipe_crc = &dev_priv->pipe_crc[pipe];
struct intel_crtc *crtc = to_intel_crtc(intel_get_crtc_for_pipe(dev, struct intel_crtc *crtc =
pipe)); to_intel_crtc(intel_get_crtc_for_pipe(dev, pipe));
enum intel_display_power_domain power_domain; enum intel_display_power_domain power_domain;
u32 val = 0; /* shut up gcc */ u32 val = 0; /* shut up gcc */
int ret; int ret;
...@@ -4064,16 +4003,16 @@ static int pipe_crc_set_source(struct drm_device *dev, enum pipe pipe, ...@@ -4064,16 +4003,16 @@ static int pipe_crc_set_source(struct drm_device *dev, enum pipe pipe,
return -EIO; return -EIO;
} }
if (IS_GEN2(dev)) if (IS_GEN2(dev_priv))
ret = i8xx_pipe_crc_ctl_reg(&source, &val); ret = i8xx_pipe_crc_ctl_reg(&source, &val);
else if (INTEL_INFO(dev)->gen < 5) else if (INTEL_GEN(dev_priv) < 5)
ret = i9xx_pipe_crc_ctl_reg(dev, pipe, &source, &val); ret = i9xx_pipe_crc_ctl_reg(dev_priv, pipe, &source, &val);
else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
ret = vlv_pipe_crc_ctl_reg(dev, pipe, &source, &val); ret = vlv_pipe_crc_ctl_reg(dev_priv, pipe, &source, &val);
else if (IS_GEN5(dev) || IS_GEN6(dev)) else if (IS_GEN5(dev_priv) || IS_GEN6(dev_priv))
ret = ilk_pipe_crc_ctl_reg(&source, &val); ret = ilk_pipe_crc_ctl_reg(&source, &val);
else else
ret = ivb_pipe_crc_ctl_reg(dev, pipe, &source, &val); ret = ivb_pipe_crc_ctl_reg(dev_priv, pipe, &source, &val);
if (ret != 0) if (ret != 0)
goto out; goto out;
...@@ -4137,12 +4076,12 @@ static int pipe_crc_set_source(struct drm_device *dev, enum pipe pipe, ...@@ -4137,12 +4076,12 @@ static int pipe_crc_set_source(struct drm_device *dev, enum pipe pipe,
kfree(entries); kfree(entries);
if (IS_G4X(dev)) if (IS_G4X(dev_priv))
g4x_undo_pipe_scramble_reset(dev, pipe); g4x_undo_pipe_scramble_reset(dev_priv, pipe);
else if (IS_VALLEYVIEW(dev) || IS_CHERRYVIEW(dev)) else if (IS_VALLEYVIEW(dev_priv) || IS_CHERRYVIEW(dev_priv))
vlv_undo_pipe_scramble_reset(dev, pipe); vlv_undo_pipe_scramble_reset(dev_priv, pipe);
else if (IS_HASWELL(dev) && pipe == PIPE_A) else if (IS_HASWELL(dev_priv) && pipe == PIPE_A)
hsw_trans_edp_pipe_A_crc_wa(dev, false); hsw_trans_edp_pipe_A_crc_wa(dev_priv, false);
hsw_enable_ips(crtc); hsw_enable_ips(crtc);
} }
...@@ -4246,7 +4185,8 @@ display_crc_ctl_parse_source(const char *buf, enum intel_pipe_crc_source *s) ...@@ -4246,7 +4185,8 @@ display_crc_ctl_parse_source(const char *buf, enum intel_pipe_crc_source *s)
return -EINVAL; return -EINVAL;
} }
static int display_crc_ctl_parse(struct drm_device *dev, char *buf, size_t len) static int display_crc_ctl_parse(struct drm_i915_private *dev_priv,
char *buf, size_t len)
{ {
#define N_WORDS 3 #define N_WORDS 3
int n_words; int n_words;
...@@ -4277,14 +4217,14 @@ static int display_crc_ctl_parse(struct drm_device *dev, char *buf, size_t len) ...@@ -4277,14 +4217,14 @@ static int display_crc_ctl_parse(struct drm_device *dev, char *buf, size_t len)
return -EINVAL; return -EINVAL;
} }
return pipe_crc_set_source(dev, pipe, source); return pipe_crc_set_source(dev_priv, pipe, source);
} }
static ssize_t display_crc_ctl_write(struct file *file, const char __user *ubuf, static ssize_t display_crc_ctl_write(struct file *file, const char __user *ubuf,
size_t len, loff_t *offp) size_t len, loff_t *offp)
{ {
struct seq_file *m = file->private_data; struct seq_file *m = file->private_data;
struct drm_device *dev = m->private; struct drm_i915_private *dev_priv = m->private;
char *tmpbuf; char *tmpbuf;
int ret; int ret;
...@@ -4307,7 +4247,7 @@ static ssize_t display_crc_ctl_write(struct file *file, const char __user *ubuf, ...@@ -4307,7 +4247,7 @@ static ssize_t display_crc_ctl_write(struct file *file, const char __user *ubuf,
} }
tmpbuf[len] = '\0'; tmpbuf[len] = '\0';
ret = display_crc_ctl_parse(dev, tmpbuf, len); ret = display_crc_ctl_parse(dev_priv, tmpbuf, len);
out: out:
kfree(tmpbuf); kfree(tmpbuf);
...@@ -4328,8 +4268,8 @@ static const struct file_operations i915_display_crc_ctl_fops = { ...@@ -4328,8 +4268,8 @@ static const struct file_operations i915_display_crc_ctl_fops = {
}; };
static ssize_t i915_displayport_test_active_write(struct file *file, static ssize_t i915_displayport_test_active_write(struct file *file,
const char __user *ubuf, const char __user *ubuf,
size_t len, loff_t *offp) size_t len, loff_t *offp)
{ {
char *input_buffer; char *input_buffer;
int status = 0; int status = 0;
...@@ -4359,7 +4299,6 @@ static ssize_t i915_displayport_test_active_write(struct file *file, ...@@ -4359,7 +4299,6 @@ static ssize_t i915_displayport_test_active_write(struct file *file,
DRM_DEBUG_DRIVER("Copied %d bytes from user\n", (unsigned int)len); DRM_DEBUG_DRIVER("Copied %d bytes from user\n", (unsigned int)len);
list_for_each_entry(connector, connector_list, head) { list_for_each_entry(connector, connector_list, head) {
if (connector->connector_type != if (connector->connector_type !=
DRM_MODE_CONNECTOR_DisplayPort) DRM_MODE_CONNECTOR_DisplayPort)
continue; continue;
...@@ -4397,7 +4336,6 @@ static int i915_displayport_test_active_show(struct seq_file *m, void *data) ...@@ -4397,7 +4336,6 @@ static int i915_displayport_test_active_show(struct seq_file *m, void *data)
struct intel_dp *intel_dp; struct intel_dp *intel_dp;
list_for_each_entry(connector, connector_list, head) { list_for_each_entry(connector, connector_list, head) {
if (connector->connector_type != if (connector->connector_type !=
DRM_MODE_CONNECTOR_DisplayPort) DRM_MODE_CONNECTOR_DisplayPort)
continue; continue;
...@@ -4417,11 +4355,12 @@ static int i915_displayport_test_active_show(struct seq_file *m, void *data) ...@@ -4417,11 +4355,12 @@ static int i915_displayport_test_active_show(struct seq_file *m, void *data)
} }
static int i915_displayport_test_active_open(struct inode *inode, static int i915_displayport_test_active_open(struct inode *inode,
struct file *file) struct file *file)
{ {
struct drm_device *dev = inode->i_private; struct drm_i915_private *dev_priv = inode->i_private;
return single_open(file, i915_displayport_test_active_show, dev); return single_open(file, i915_displayport_test_active_show,
&dev_priv->drm);
} }
static const struct file_operations i915_displayport_test_active_fops = { static const struct file_operations i915_displayport_test_active_fops = {
...@@ -4441,7 +4380,6 @@ static int i915_displayport_test_data_show(struct seq_file *m, void *data) ...@@ -4441,7 +4380,6 @@ static int i915_displayport_test_data_show(struct seq_file *m, void *data)
struct intel_dp *intel_dp; struct intel_dp *intel_dp;
list_for_each_entry(connector, connector_list, head) { list_for_each_entry(connector, connector_list, head) {
if (connector->connector_type != if (connector->connector_type !=
DRM_MODE_CONNECTOR_DisplayPort) DRM_MODE_CONNECTOR_DisplayPort)
continue; continue;
...@@ -4457,11 +4395,12 @@ static int i915_displayport_test_data_show(struct seq_file *m, void *data) ...@@ -4457,11 +4395,12 @@ static int i915_displayport_test_data_show(struct seq_file *m, void *data)
return 0; return 0;
} }
static int i915_displayport_test_data_open(struct inode *inode, static int i915_displayport_test_data_open(struct inode *inode,
struct file *file) struct file *file)
{ {
struct drm_device *dev = inode->i_private; struct drm_i915_private *dev_priv = inode->i_private;
return single_open(file, i915_displayport_test_data_show, dev); return single_open(file, i915_displayport_test_data_show,
&dev_priv->drm);
} }
static const struct file_operations i915_displayport_test_data_fops = { static const struct file_operations i915_displayport_test_data_fops = {
...@@ -4480,7 +4419,6 @@ static int i915_displayport_test_type_show(struct seq_file *m, void *data) ...@@ -4480,7 +4419,6 @@ static int i915_displayport_test_type_show(struct seq_file *m, void *data)
struct intel_dp *intel_dp; struct intel_dp *intel_dp;
list_for_each_entry(connector, connector_list, head) { list_for_each_entry(connector, connector_list, head) {
if (connector->connector_type != if (connector->connector_type !=
DRM_MODE_CONNECTOR_DisplayPort) DRM_MODE_CONNECTOR_DisplayPort)
continue; continue;
...@@ -4499,9 +4437,10 @@ static int i915_displayport_test_type_show(struct seq_file *m, void *data) ...@@ -4499,9 +4437,10 @@ static int i915_displayport_test_type_show(struct seq_file *m, void *data)
static int i915_displayport_test_type_open(struct inode *inode, static int i915_displayport_test_type_open(struct inode *inode,
struct file *file) struct file *file)
{ {
struct drm_device *dev = inode->i_private; struct drm_i915_private *dev_priv = inode->i_private;
return single_open(file, i915_displayport_test_type_show, dev); return single_open(file, i915_displayport_test_type_show,
&dev_priv->drm);
} }
static const struct file_operations i915_displayport_test_type_fops = { static const struct file_operations i915_displayport_test_type_fops = {
...@@ -4514,13 +4453,14 @@ static const struct file_operations i915_displayport_test_type_fops = { ...@@ -4514,13 +4453,14 @@ static const struct file_operations i915_displayport_test_type_fops = {
static void wm_latency_show(struct seq_file *m, const uint16_t wm[8]) static void wm_latency_show(struct seq_file *m, const uint16_t wm[8])
{ {
struct drm_device *dev = m->private; struct drm_i915_private *dev_priv = m->private;
struct drm_device *dev = &dev_priv->drm;
int level; int level;
int num_levels; int num_levels;
if (IS_CHERRYVIEW(dev)) if (IS_CHERRYVIEW(dev_priv))
num_levels = 3; num_levels = 3;
else if (IS_VALLEYVIEW(dev)) else if (IS_VALLEYVIEW(dev_priv))
num_levels = 1; num_levels = 1;
else else
num_levels = ilk_wm_max_level(dev) + 1; num_levels = ilk_wm_max_level(dev) + 1;
...@@ -4534,8 +4474,8 @@ static void wm_latency_show(struct seq_file *m, const uint16_t wm[8]) ...@@ -4534,8 +4474,8 @@ static void wm_latency_show(struct seq_file *m, const uint16_t wm[8])
* - WM1+ latency values in 0.5us units * - WM1+ latency values in 0.5us units
* - latencies are in us on gen9/vlv/chv * - latencies are in us on gen9/vlv/chv
*/ */
if (INTEL_INFO(dev)->gen >= 9 || IS_VALLEYVIEW(dev) || if (INTEL_GEN(dev_priv) >= 9 || IS_VALLEYVIEW(dev_priv) ||
IS_CHERRYVIEW(dev)) IS_CHERRYVIEW(dev_priv))
latency *= 10; latency *= 10;
else if (level > 0) else if (level > 0)
latency *= 5; latency *= 5;
...@@ -4549,14 +4489,13 @@ static void wm_latency_show(struct seq_file *m, const uint16_t wm[8]) ...@@ -4549,14 +4489,13 @@ static void wm_latency_show(struct seq_file *m, const uint16_t wm[8])
static int pri_wm_latency_show(struct seq_file *m, void *data) static int pri_wm_latency_show(struct seq_file *m, void *data)
{ {
struct drm_device *dev = m->private; struct drm_i915_private *dev_priv = m->private;
struct drm_i915_private *dev_priv = to_i915(dev);
const uint16_t *latencies; const uint16_t *latencies;
if (INTEL_INFO(dev)->gen >= 9) if (INTEL_GEN(dev_priv) >= 9)
latencies = dev_priv->wm.skl_latency; latencies = dev_priv->wm.skl_latency;
else else
latencies = to_i915(dev)->wm.pri_latency; latencies = dev_priv->wm.pri_latency;
wm_latency_show(m, latencies); wm_latency_show(m, latencies);
...@@ -4565,14 +4504,13 @@ static int pri_wm_latency_show(struct seq_file *m, void *data) ...@@ -4565,14 +4504,13 @@ static int pri_wm_latency_show(struct seq_file *m, void *data)
static int spr_wm_latency_show(struct seq_file *m, void *data) static int spr_wm_latency_show(struct seq_file *m, void *data)
{ {
struct drm_device *dev = m->private; struct drm_i915_private *dev_priv = m->private;
struct drm_i915_private *dev_priv = to_i915(dev);
const uint16_t *latencies; const uint16_t *latencies;
if (INTEL_INFO(dev)->gen >= 9) if (INTEL_GEN(dev_priv) >= 9)
latencies = dev_priv->wm.skl_latency; latencies = dev_priv->wm.skl_latency;
else else
latencies = to_i915(dev)->wm.spr_latency; latencies = dev_priv->wm.spr_latency;
wm_latency_show(m, latencies); wm_latency_show(m, latencies);
...@@ -4581,14 +4519,13 @@ static int spr_wm_latency_show(struct seq_file *m, void *data) ...@@ -4581,14 +4519,13 @@ static int spr_wm_latency_show(struct seq_file *m, void *data)
static int cur_wm_latency_show(struct seq_file *m, void *data) static int cur_wm_latency_show(struct seq_file *m, void *data)
{ {
struct drm_device *dev = m->private; struct drm_i915_private *dev_priv = m->private;
struct drm_i915_private *dev_priv = to_i915(dev);
const uint16_t *latencies; const uint16_t *latencies;
if (INTEL_INFO(dev)->gen >= 9) if (INTEL_GEN(dev_priv) >= 9)
latencies = dev_priv->wm.skl_latency; latencies = dev_priv->wm.skl_latency;
else else
latencies = to_i915(dev)->wm.cur_latency; latencies = dev_priv->wm.cur_latency;
wm_latency_show(m, latencies); wm_latency_show(m, latencies);
...@@ -4597,48 +4534,49 @@ static int cur_wm_latency_show(struct seq_file *m, void *data) ...@@ -4597,48 +4534,49 @@ static int cur_wm_latency_show(struct seq_file *m, void *data)
static int pri_wm_latency_open(struct inode *inode, struct file *file) static int pri_wm_latency_open(struct inode *inode, struct file *file)
{ {
struct drm_device *dev = inode->i_private; struct drm_i915_private *dev_priv = inode->i_private;
if (INTEL_INFO(dev)->gen < 5) if (INTEL_GEN(dev_priv) < 5)
return -ENODEV; return -ENODEV;
return single_open(file, pri_wm_latency_show, dev); return single_open(file, pri_wm_latency_show, dev_priv);
} }
static int spr_wm_latency_open(struct inode *inode, struct file *file) static int spr_wm_latency_open(struct inode *inode, struct file *file)
{ {
struct drm_device *dev = inode->i_private; struct drm_i915_private *dev_priv = inode->i_private;
if (HAS_GMCH_DISPLAY(dev)) if (HAS_GMCH_DISPLAY(dev_priv))
return -ENODEV; return -ENODEV;
return single_open(file, spr_wm_latency_show, dev); return single_open(file, spr_wm_latency_show, dev_priv);
} }
static int cur_wm_latency_open(struct inode *inode, struct file *file) static int cur_wm_latency_open(struct inode *inode, struct file *file)
{ {
struct drm_device *dev = inode->i_private; struct drm_i915_private *dev_priv = inode->i_private;
if (HAS_GMCH_DISPLAY(dev)) if (HAS_GMCH_DISPLAY(dev_priv))
return -ENODEV; return -ENODEV;
return single_open(file, cur_wm_latency_show, dev); return single_open(file, cur_wm_latency_show, dev_priv);
} }
static ssize_t wm_latency_write(struct file *file, const char __user *ubuf, static ssize_t wm_latency_write(struct file *file, const char __user *ubuf,
size_t len, loff_t *offp, uint16_t wm[8]) size_t len, loff_t *offp, uint16_t wm[8])
{ {
struct seq_file *m = file->private_data; struct seq_file *m = file->private_data;
struct drm_device *dev = m->private; struct drm_i915_private *dev_priv = m->private;
struct drm_device *dev = &dev_priv->drm;
uint16_t new[8] = { 0 }; uint16_t new[8] = { 0 };
int num_levels; int num_levels;
int level; int level;
int ret; int ret;
char tmp[32]; char tmp[32];
if (IS_CHERRYVIEW(dev)) if (IS_CHERRYVIEW(dev_priv))
num_levels = 3; num_levels = 3;
else if (IS_VALLEYVIEW(dev)) else if (IS_VALLEYVIEW(dev_priv))
num_levels = 1; num_levels = 1;
else else
num_levels = ilk_wm_max_level(dev) + 1; num_levels = ilk_wm_max_level(dev) + 1;
...@@ -4672,14 +4610,13 @@ static ssize_t pri_wm_latency_write(struct file *file, const char __user *ubuf, ...@@ -4672,14 +4610,13 @@ static ssize_t pri_wm_latency_write(struct file *file, const char __user *ubuf,
size_t len, loff_t *offp) size_t len, loff_t *offp)
{ {
struct seq_file *m = file->private_data; struct seq_file *m = file->private_data;
struct drm_device *dev = m->private; struct drm_i915_private *dev_priv = m->private;
struct drm_i915_private *dev_priv = to_i915(dev);
uint16_t *latencies; uint16_t *latencies;
if (INTEL_INFO(dev)->gen >= 9) if (INTEL_GEN(dev_priv) >= 9)
latencies = dev_priv->wm.skl_latency; latencies = dev_priv->wm.skl_latency;
else else
latencies = to_i915(dev)->wm.pri_latency; latencies = dev_priv->wm.pri_latency;
return wm_latency_write(file, ubuf, len, offp, latencies); return wm_latency_write(file, ubuf, len, offp, latencies);
} }
...@@ -4688,14 +4625,13 @@ static ssize_t spr_wm_latency_write(struct file *file, const char __user *ubuf, ...@@ -4688,14 +4625,13 @@ static ssize_t spr_wm_latency_write(struct file *file, const char __user *ubuf,
size_t len, loff_t *offp) size_t len, loff_t *offp)
{ {
struct seq_file *m = file->private_data; struct seq_file *m = file->private_data;
struct drm_device *dev = m->private; struct drm_i915_private *dev_priv = m->private;
struct drm_i915_private *dev_priv = to_i915(dev);
uint16_t *latencies; uint16_t *latencies;
if (INTEL_INFO(dev)->gen >= 9) if (INTEL_GEN(dev_priv) >= 9)
latencies = dev_priv->wm.skl_latency; latencies = dev_priv->wm.skl_latency;
else else
latencies = to_i915(dev)->wm.spr_latency; latencies = dev_priv->wm.spr_latency;
return wm_latency_write(file, ubuf, len, offp, latencies); return wm_latency_write(file, ubuf, len, offp, latencies);
} }
...@@ -4704,14 +4640,13 @@ static ssize_t cur_wm_latency_write(struct file *file, const char __user *ubuf, ...@@ -4704,14 +4640,13 @@ static ssize_t cur_wm_latency_write(struct file *file, const char __user *ubuf,
size_t len, loff_t *offp) size_t len, loff_t *offp)
{ {
struct seq_file *m = file->private_data; struct seq_file *m = file->private_data;
struct drm_device *dev = m->private; struct drm_i915_private *dev_priv = m->private;
struct drm_i915_private *dev_priv = to_i915(dev);
uint16_t *latencies; uint16_t *latencies;
if (INTEL_INFO(dev)->gen >= 9) if (INTEL_GEN(dev_priv) >= 9)
latencies = dev_priv->wm.skl_latency; latencies = dev_priv->wm.skl_latency;
else else
latencies = to_i915(dev)->wm.cur_latency; latencies = dev_priv->wm.cur_latency;
return wm_latency_write(file, ubuf, len, offp, latencies); return wm_latency_write(file, ubuf, len, offp, latencies);
} }
...@@ -4746,8 +4681,7 @@ static const struct file_operations i915_cur_wm_latency_fops = { ...@@ -4746,8 +4681,7 @@ static const struct file_operations i915_cur_wm_latency_fops = {
static int static int
i915_wedged_get(void *data, u64 *val) i915_wedged_get(void *data, u64 *val)
{ {
struct drm_device *dev = data; struct drm_i915_private *dev_priv = data;
struct drm_i915_private *dev_priv = to_i915(dev);
*val = i915_terminally_wedged(&dev_priv->gpu_error); *val = i915_terminally_wedged(&dev_priv->gpu_error);
...@@ -4757,8 +4691,7 @@ i915_wedged_get(void *data, u64 *val) ...@@ -4757,8 +4691,7 @@ i915_wedged_get(void *data, u64 *val)
static int static int
i915_wedged_set(void *data, u64 val) i915_wedged_set(void *data, u64 val)
{ {
struct drm_device *dev = data; struct drm_i915_private *dev_priv = data;
struct drm_i915_private *dev_priv = to_i915(dev);
/* /*
* There is no safeguard against this debugfs entry colliding * There is no safeguard against this debugfs entry colliding
...@@ -4788,8 +4721,7 @@ DEFINE_SIMPLE_ATTRIBUTE(i915_wedged_fops, ...@@ -4788,8 +4721,7 @@ DEFINE_SIMPLE_ATTRIBUTE(i915_wedged_fops,
static int static int
i915_ring_missed_irq_get(void *data, u64 *val) i915_ring_missed_irq_get(void *data, u64 *val)
{ {
struct drm_device *dev = data; struct drm_i915_private *dev_priv = data;
struct drm_i915_private *dev_priv = to_i915(dev);
*val = dev_priv->gpu_error.missed_irq_rings; *val = dev_priv->gpu_error.missed_irq_rings;
return 0; return 0;
...@@ -4798,8 +4730,8 @@ i915_ring_missed_irq_get(void *data, u64 *val) ...@@ -4798,8 +4730,8 @@ i915_ring_missed_irq_get(void *data, u64 *val)
static int static int
i915_ring_missed_irq_set(void *data, u64 val) i915_ring_missed_irq_set(void *data, u64 val)
{ {
struct drm_device *dev = data; struct drm_i915_private *dev_priv = data;
struct drm_i915_private *dev_priv = to_i915(dev); struct drm_device *dev = &dev_priv->drm;
int ret; int ret;
/* Lock against concurrent debugfs callers */ /* Lock against concurrent debugfs callers */
...@@ -4819,8 +4751,7 @@ DEFINE_SIMPLE_ATTRIBUTE(i915_ring_missed_irq_fops, ...@@ -4819,8 +4751,7 @@ DEFINE_SIMPLE_ATTRIBUTE(i915_ring_missed_irq_fops,
static int static int
i915_ring_test_irq_get(void *data, u64 *val) i915_ring_test_irq_get(void *data, u64 *val)
{ {
struct drm_device *dev = data; struct drm_i915_private *dev_priv = data;
struct drm_i915_private *dev_priv = to_i915(dev);
*val = dev_priv->gpu_error.test_irq_rings; *val = dev_priv->gpu_error.test_irq_rings;
...@@ -4830,8 +4761,7 @@ i915_ring_test_irq_get(void *data, u64 *val) ...@@ -4830,8 +4761,7 @@ i915_ring_test_irq_get(void *data, u64 *val)
static int static int
i915_ring_test_irq_set(void *data, u64 val) i915_ring_test_irq_set(void *data, u64 val)
{ {
struct drm_device *dev = data; struct drm_i915_private *dev_priv = data;
struct drm_i915_private *dev_priv = to_i915(dev);
val &= INTEL_INFO(dev_priv)->ring_mask; val &= INTEL_INFO(dev_priv)->ring_mask;
DRM_DEBUG_DRIVER("Masking interrupts on rings 0x%08llx\n", val); DRM_DEBUG_DRIVER("Masking interrupts on rings 0x%08llx\n", val);
...@@ -4863,8 +4793,8 @@ i915_drop_caches_get(void *data, u64 *val) ...@@ -4863,8 +4793,8 @@ i915_drop_caches_get(void *data, u64 *val)
static int static int
i915_drop_caches_set(void *data, u64 val) i915_drop_caches_set(void *data, u64 val)
{ {
struct drm_device *dev = data; struct drm_i915_private *dev_priv = data;
struct drm_i915_private *dev_priv = to_i915(dev); struct drm_device *dev = &dev_priv->drm;
int ret; int ret;
DRM_DEBUG("Dropping caches: 0x%08llx\n", val); DRM_DEBUG("Dropping caches: 0x%08llx\n", val);
...@@ -4903,10 +4833,9 @@ DEFINE_SIMPLE_ATTRIBUTE(i915_drop_caches_fops, ...@@ -4903,10 +4833,9 @@ DEFINE_SIMPLE_ATTRIBUTE(i915_drop_caches_fops,
static int static int
i915_max_freq_get(void *data, u64 *val) i915_max_freq_get(void *data, u64 *val)
{ {
struct drm_device *dev = data; struct drm_i915_private *dev_priv = data;
struct drm_i915_private *dev_priv = to_i915(dev);
if (INTEL_INFO(dev)->gen < 6) if (INTEL_GEN(dev_priv) < 6)
return -ENODEV; return -ENODEV;
*val = intel_gpu_freq(dev_priv, dev_priv->rps.max_freq_softlimit); *val = intel_gpu_freq(dev_priv, dev_priv->rps.max_freq_softlimit);
...@@ -4916,12 +4845,11 @@ i915_max_freq_get(void *data, u64 *val) ...@@ -4916,12 +4845,11 @@ i915_max_freq_get(void *data, u64 *val)
static int static int
i915_max_freq_set(void *data, u64 val) i915_max_freq_set(void *data, u64 val)
{ {
struct drm_device *dev = data; struct drm_i915_private *dev_priv = data;
struct drm_i915_private *dev_priv = to_i915(dev);
u32 hw_max, hw_min; u32 hw_max, hw_min;
int ret; int ret;
if (INTEL_INFO(dev)->gen < 6) if (INTEL_GEN(dev_priv) < 6)
return -ENODEV; return -ENODEV;
DRM_DEBUG_DRIVER("Manually setting max freq to %llu\n", val); DRM_DEBUG_DRIVER("Manually setting max freq to %llu\n", val);
...@@ -4959,8 +4887,7 @@ DEFINE_SIMPLE_ATTRIBUTE(i915_max_freq_fops, ...@@ -4959,8 +4887,7 @@ DEFINE_SIMPLE_ATTRIBUTE(i915_max_freq_fops,
static int static int
i915_min_freq_get(void *data, u64 *val) i915_min_freq_get(void *data, u64 *val)
{ {
struct drm_device *dev = data; struct drm_i915_private *dev_priv = data;
struct drm_i915_private *dev_priv = to_i915(dev);
if (INTEL_GEN(dev_priv) < 6) if (INTEL_GEN(dev_priv) < 6)
return -ENODEV; return -ENODEV;
...@@ -4972,8 +4899,7 @@ i915_min_freq_get(void *data, u64 *val) ...@@ -4972,8 +4899,7 @@ i915_min_freq_get(void *data, u64 *val)
static int static int
i915_min_freq_set(void *data, u64 val) i915_min_freq_set(void *data, u64 val)
{ {
struct drm_device *dev = data; struct drm_i915_private *dev_priv = data;
struct drm_i915_private *dev_priv = to_i915(dev);
u32 hw_max, hw_min; u32 hw_max, hw_min;
int ret; int ret;
...@@ -4994,7 +4920,8 @@ i915_min_freq_set(void *data, u64 val) ...@@ -4994,7 +4920,8 @@ i915_min_freq_set(void *data, u64 val)
hw_max = dev_priv->rps.max_freq; hw_max = dev_priv->rps.max_freq;
hw_min = dev_priv->rps.min_freq; hw_min = dev_priv->rps.min_freq;
if (val < hw_min || val > hw_max || val > dev_priv->rps.max_freq_softlimit) { if (val < hw_min ||
val > hw_max || val > dev_priv->rps.max_freq_softlimit) {
mutex_unlock(&dev_priv->rps.hw_lock); mutex_unlock(&dev_priv->rps.hw_lock);
return -EINVAL; return -EINVAL;
} }
...@@ -5015,12 +4942,12 @@ DEFINE_SIMPLE_ATTRIBUTE(i915_min_freq_fops, ...@@ -5015,12 +4942,12 @@ DEFINE_SIMPLE_ATTRIBUTE(i915_min_freq_fops,
static int static int
i915_cache_sharing_get(void *data, u64 *val) i915_cache_sharing_get(void *data, u64 *val)
{ {
struct drm_device *dev = data; struct drm_i915_private *dev_priv = data;
struct drm_i915_private *dev_priv = to_i915(dev); struct drm_device *dev = &dev_priv->drm;
u32 snpcr; u32 snpcr;
int ret; int ret;
if (!(IS_GEN6(dev) || IS_GEN7(dev))) if (!(IS_GEN6(dev_priv) || IS_GEN7(dev_priv)))
return -ENODEV; return -ENODEV;
ret = mutex_lock_interruptible(&dev->struct_mutex); ret = mutex_lock_interruptible(&dev->struct_mutex);
...@@ -5031,7 +4958,7 @@ i915_cache_sharing_get(void *data, u64 *val) ...@@ -5031,7 +4958,7 @@ i915_cache_sharing_get(void *data, u64 *val)
snpcr = I915_READ(GEN6_MBCUNIT_SNPCR); snpcr = I915_READ(GEN6_MBCUNIT_SNPCR);
intel_runtime_pm_put(dev_priv); intel_runtime_pm_put(dev_priv);
mutex_unlock(&dev_priv->drm.struct_mutex); mutex_unlock(&dev->struct_mutex);
*val = (snpcr & GEN6_MBC_SNPCR_MASK) >> GEN6_MBC_SNPCR_SHIFT; *val = (snpcr & GEN6_MBC_SNPCR_MASK) >> GEN6_MBC_SNPCR_SHIFT;
...@@ -5041,11 +4968,10 @@ i915_cache_sharing_get(void *data, u64 *val) ...@@ -5041,11 +4968,10 @@ i915_cache_sharing_get(void *data, u64 *val)
static int static int
i915_cache_sharing_set(void *data, u64 val) i915_cache_sharing_set(void *data, u64 val)
{ {
struct drm_device *dev = data; struct drm_i915_private *dev_priv = data;
struct drm_i915_private *dev_priv = to_i915(dev);
u32 snpcr; u32 snpcr;
if (!(IS_GEN6(dev) || IS_GEN7(dev))) if (!(IS_GEN6(dev_priv) || IS_GEN7(dev_priv)))
return -ENODEV; return -ENODEV;
if (val > 3) if (val > 3)
...@@ -5076,10 +5002,9 @@ struct sseu_dev_status { ...@@ -5076,10 +5002,9 @@ struct sseu_dev_status {
unsigned int eu_per_subslice; unsigned int eu_per_subslice;
}; };
static void cherryview_sseu_device_status(struct drm_device *dev, static void cherryview_sseu_device_status(struct drm_i915_private *dev_priv,
struct sseu_dev_status *stat) struct sseu_dev_status *stat)
{ {
struct drm_i915_private *dev_priv = to_i915(dev);
int ss_max = 2; int ss_max = 2;
int ss; int ss;
u32 sig1[ss_max], sig2[ss_max]; u32 sig1[ss_max], sig2[ss_max];
...@@ -5108,16 +5033,15 @@ static void cherryview_sseu_device_status(struct drm_device *dev, ...@@ -5108,16 +5033,15 @@ static void cherryview_sseu_device_status(struct drm_device *dev,
stat->subslice_total = stat->subslice_per_slice; stat->subslice_total = stat->subslice_per_slice;
} }
static void gen9_sseu_device_status(struct drm_device *dev, static void gen9_sseu_device_status(struct drm_i915_private *dev_priv,
struct sseu_dev_status *stat) struct sseu_dev_status *stat)
{ {
struct drm_i915_private *dev_priv = to_i915(dev);
int s_max = 3, ss_max = 4; int s_max = 3, ss_max = 4;
int s, ss; int s, ss;
u32 s_reg[s_max], eu_reg[2*s_max], eu_mask[2]; u32 s_reg[s_max], eu_reg[2*s_max], eu_mask[2];
/* BXT has a single slice and at most 3 subslices. */ /* BXT has a single slice and at most 3 subslices. */
if (IS_BROXTON(dev)) { if (IS_BROXTON(dev_priv)) {
s_max = 1; s_max = 1;
ss_max = 3; ss_max = 3;
} }
...@@ -5146,18 +5070,18 @@ static void gen9_sseu_device_status(struct drm_device *dev, ...@@ -5146,18 +5070,18 @@ static void gen9_sseu_device_status(struct drm_device *dev,
stat->slice_total++; stat->slice_total++;
if (IS_SKYLAKE(dev) || IS_KABYLAKE(dev)) if (IS_SKYLAKE(dev_priv) || IS_KABYLAKE(dev_priv))
ss_cnt = INTEL_INFO(dev)->subslice_per_slice; ss_cnt = INTEL_INFO(dev_priv)->subslice_per_slice;
for (ss = 0; ss < ss_max; ss++) { for (ss = 0; ss < ss_max; ss++) {
unsigned int eu_cnt; unsigned int eu_cnt;
if (IS_BROXTON(dev) && if (IS_BROXTON(dev_priv) &&
!(s_reg[s] & (GEN9_PGCTL_SS_ACK(ss)))) !(s_reg[s] & (GEN9_PGCTL_SS_ACK(ss))))
/* skip disabled subslice */ /* skip disabled subslice */
continue; continue;
if (IS_BROXTON(dev)) if (IS_BROXTON(dev_priv))
ss_cnt++; ss_cnt++;
eu_cnt = 2 * hweight32(eu_reg[2*s + ss/2] & eu_cnt = 2 * hweight32(eu_reg[2*s + ss/2] &
...@@ -5173,25 +5097,24 @@ static void gen9_sseu_device_status(struct drm_device *dev, ...@@ -5173,25 +5097,24 @@ static void gen9_sseu_device_status(struct drm_device *dev,
} }
} }
static void broadwell_sseu_device_status(struct drm_device *dev, static void broadwell_sseu_device_status(struct drm_i915_private *dev_priv,
struct sseu_dev_status *stat) struct sseu_dev_status *stat)
{ {
struct drm_i915_private *dev_priv = to_i915(dev);
int s;
u32 slice_info = I915_READ(GEN8_GT_SLICE_INFO); u32 slice_info = I915_READ(GEN8_GT_SLICE_INFO);
int s;
stat->slice_total = hweight32(slice_info & GEN8_LSLICESTAT_MASK); stat->slice_total = hweight32(slice_info & GEN8_LSLICESTAT_MASK);
if (stat->slice_total) { if (stat->slice_total) {
stat->subslice_per_slice = INTEL_INFO(dev)->subslice_per_slice; stat->subslice_per_slice = INTEL_INFO(dev_priv)->subslice_per_slice;
stat->subslice_total = stat->slice_total * stat->subslice_total = stat->slice_total *
stat->subslice_per_slice; stat->subslice_per_slice;
stat->eu_per_subslice = INTEL_INFO(dev)->eu_per_subslice; stat->eu_per_subslice = INTEL_INFO(dev_priv)->eu_per_subslice;
stat->eu_total = stat->eu_per_subslice * stat->subslice_total; stat->eu_total = stat->eu_per_subslice * stat->subslice_total;
/* subtract fused off EU(s) from enabled slice(s) */ /* subtract fused off EU(s) from enabled slice(s) */
for (s = 0; s < stat->slice_total; s++) { for (s = 0; s < stat->slice_total; s++) {
u8 subslice_7eu = INTEL_INFO(dev)->subslice_7eu[s]; u8 subslice_7eu = INTEL_INFO(dev_priv)->subslice_7eu[s];
stat->eu_total -= hweight8(subslice_7eu); stat->eu_total -= hweight8(subslice_7eu);
} }
...@@ -5200,47 +5123,45 @@ static void broadwell_sseu_device_status(struct drm_device *dev, ...@@ -5200,47 +5123,45 @@ static void broadwell_sseu_device_status(struct drm_device *dev,
static int i915_sseu_status(struct seq_file *m, void *unused) static int i915_sseu_status(struct seq_file *m, void *unused)
{ {
struct drm_info_node *node = (struct drm_info_node *) m->private; struct drm_i915_private *dev_priv = node_to_i915(m->private);
struct drm_i915_private *dev_priv = to_i915(node->minor->dev);
struct drm_device *dev = &dev_priv->drm;
struct sseu_dev_status stat; struct sseu_dev_status stat;
if (INTEL_INFO(dev)->gen < 8) if (INTEL_GEN(dev_priv) < 8)
return -ENODEV; return -ENODEV;
seq_puts(m, "SSEU Device Info\n"); seq_puts(m, "SSEU Device Info\n");
seq_printf(m, " Available Slice Total: %u\n", seq_printf(m, " Available Slice Total: %u\n",
INTEL_INFO(dev)->slice_total); INTEL_INFO(dev_priv)->slice_total);
seq_printf(m, " Available Subslice Total: %u\n", seq_printf(m, " Available Subslice Total: %u\n",
INTEL_INFO(dev)->subslice_total); INTEL_INFO(dev_priv)->subslice_total);
seq_printf(m, " Available Subslice Per Slice: %u\n", seq_printf(m, " Available Subslice Per Slice: %u\n",
INTEL_INFO(dev)->subslice_per_slice); INTEL_INFO(dev_priv)->subslice_per_slice);
seq_printf(m, " Available EU Total: %u\n", seq_printf(m, " Available EU Total: %u\n",
INTEL_INFO(dev)->eu_total); INTEL_INFO(dev_priv)->eu_total);
seq_printf(m, " Available EU Per Subslice: %u\n", seq_printf(m, " Available EU Per Subslice: %u\n",
INTEL_INFO(dev)->eu_per_subslice); INTEL_INFO(dev_priv)->eu_per_subslice);
seq_printf(m, " Has Pooled EU: %s\n", yesno(HAS_POOLED_EU(dev))); seq_printf(m, " Has Pooled EU: %s\n", yesno(HAS_POOLED_EU(dev_priv)));
if (HAS_POOLED_EU(dev)) if (HAS_POOLED_EU(dev_priv))
seq_printf(m, " Min EU in pool: %u\n", seq_printf(m, " Min EU in pool: %u\n",
INTEL_INFO(dev)->min_eu_in_pool); INTEL_INFO(dev_priv)->min_eu_in_pool);
seq_printf(m, " Has Slice Power Gating: %s\n", seq_printf(m, " Has Slice Power Gating: %s\n",
yesno(INTEL_INFO(dev)->has_slice_pg)); yesno(INTEL_INFO(dev_priv)->has_slice_pg));
seq_printf(m, " Has Subslice Power Gating: %s\n", seq_printf(m, " Has Subslice Power Gating: %s\n",
yesno(INTEL_INFO(dev)->has_subslice_pg)); yesno(INTEL_INFO(dev_priv)->has_subslice_pg));
seq_printf(m, " Has EU Power Gating: %s\n", seq_printf(m, " Has EU Power Gating: %s\n",
yesno(INTEL_INFO(dev)->has_eu_pg)); yesno(INTEL_INFO(dev_priv)->has_eu_pg));
seq_puts(m, "SSEU Device Status\n"); seq_puts(m, "SSEU Device Status\n");
memset(&stat, 0, sizeof(stat)); memset(&stat, 0, sizeof(stat));
intel_runtime_pm_get(dev_priv); intel_runtime_pm_get(dev_priv);
if (IS_CHERRYVIEW(dev)) { if (IS_CHERRYVIEW(dev_priv)) {
cherryview_sseu_device_status(dev, &stat); cherryview_sseu_device_status(dev_priv, &stat);
} else if (IS_BROADWELL(dev)) { } else if (IS_BROADWELL(dev_priv)) {
broadwell_sseu_device_status(dev, &stat); broadwell_sseu_device_status(dev_priv, &stat);
} else if (INTEL_INFO(dev)->gen >= 9) { } else if (INTEL_GEN(dev_priv) >= 9) {
gen9_sseu_device_status(dev, &stat); gen9_sseu_device_status(dev_priv, &stat);
} }
intel_runtime_pm_put(dev_priv); intel_runtime_pm_put(dev_priv);
...@@ -5261,10 +5182,9 @@ static int i915_sseu_status(struct seq_file *m, void *unused) ...@@ -5261,10 +5182,9 @@ static int i915_sseu_status(struct seq_file *m, void *unused)
static int i915_forcewake_open(struct inode *inode, struct file *file) static int i915_forcewake_open(struct inode *inode, struct file *file)
{ {
struct drm_device *dev = inode->i_private; struct drm_i915_private *dev_priv = inode->i_private;
struct drm_i915_private *dev_priv = to_i915(dev);
if (INTEL_INFO(dev)->gen < 6) if (INTEL_GEN(dev_priv) < 6)
return 0; return 0;
intel_runtime_pm_get(dev_priv); intel_runtime_pm_get(dev_priv);
...@@ -5275,10 +5195,9 @@ static int i915_forcewake_open(struct inode *inode, struct file *file) ...@@ -5275,10 +5195,9 @@ static int i915_forcewake_open(struct inode *inode, struct file *file)
static int i915_forcewake_release(struct inode *inode, struct file *file) static int i915_forcewake_release(struct inode *inode, struct file *file)
{ {
struct drm_device *dev = inode->i_private; struct drm_i915_private *dev_priv = inode->i_private;
struct drm_i915_private *dev_priv = to_i915(dev);
if (INTEL_INFO(dev)->gen < 6) if (INTEL_GEN(dev_priv) < 6)
return 0; return 0;
intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL); intel_uncore_forcewake_put(dev_priv, FORCEWAKE_ALL);
...@@ -5295,12 +5214,11 @@ static const struct file_operations i915_forcewake_fops = { ...@@ -5295,12 +5214,11 @@ static const struct file_operations i915_forcewake_fops = {
static int i915_forcewake_create(struct dentry *root, struct drm_minor *minor) static int i915_forcewake_create(struct dentry *root, struct drm_minor *minor)
{ {
struct drm_device *dev = minor->dev;
struct dentry *ent; struct dentry *ent;
ent = debugfs_create_file("i915_forcewake_user", ent = debugfs_create_file("i915_forcewake_user",
S_IRUSR, S_IRUSR,
root, dev, root, to_i915(minor->dev),
&i915_forcewake_fops); &i915_forcewake_fops);
if (!ent) if (!ent)
return -ENOMEM; return -ENOMEM;
...@@ -5313,12 +5231,11 @@ static int i915_debugfs_create(struct dentry *root, ...@@ -5313,12 +5231,11 @@ static int i915_debugfs_create(struct dentry *root,
const char *name, const char *name,
const struct file_operations *fops) const struct file_operations *fops)
{ {
struct drm_device *dev = minor->dev;
struct dentry *ent; struct dentry *ent;
ent = debugfs_create_file(name, ent = debugfs_create_file(name,
S_IRUGO | S_IWUSR, S_IRUGO | S_IWUSR,
root, dev, root, to_i915(minor->dev),
fops); fops);
if (!ent) if (!ent)
return -ENOMEM; return -ENOMEM;
...@@ -5405,9 +5322,8 @@ static const struct i915_debugfs_files { ...@@ -5405,9 +5322,8 @@ static const struct i915_debugfs_files {
{"i915_dp_test_active", &i915_displayport_test_active_fops} {"i915_dp_test_active", &i915_displayport_test_active_fops}
}; };
void intel_display_crc_init(struct drm_device *dev) void intel_display_crc_init(struct drm_i915_private *dev_priv)
{ {
struct drm_i915_private *dev_priv = to_i915(dev);
enum pipe pipe; enum pipe pipe;
for_each_pipe(dev_priv, pipe) { for_each_pipe(dev_priv, pipe) {
...@@ -5455,7 +5371,7 @@ void i915_debugfs_unregister(struct drm_i915_private *dev_priv) ...@@ -5455,7 +5371,7 @@ void i915_debugfs_unregister(struct drm_i915_private *dev_priv)
drm_debugfs_remove_files(i915_debugfs_list, drm_debugfs_remove_files(i915_debugfs_list,
I915_DEBUGFS_ENTRIES, minor); I915_DEBUGFS_ENTRIES, minor);
drm_debugfs_remove_files((struct drm_info_list *) &i915_forcewake_fops, drm_debugfs_remove_files((struct drm_info_list *)&i915_forcewake_fops,
1, minor); 1, minor);
for (i = 0; i < ARRAY_SIZE(i915_pipe_crc_data); i++) { for (i = 0; i < ARRAY_SIZE(i915_pipe_crc_data); i++) {
...@@ -5467,7 +5383,7 @@ void i915_debugfs_unregister(struct drm_i915_private *dev_priv) ...@@ -5467,7 +5383,7 @@ void i915_debugfs_unregister(struct drm_i915_private *dev_priv)
for (i = 0; i < ARRAY_SIZE(i915_debugfs_files); i++) { for (i = 0; i < ARRAY_SIZE(i915_debugfs_files); i++) {
struct drm_info_list *info_list = struct drm_info_list *info_list =
(struct drm_info_list *) i915_debugfs_files[i].fops; (struct drm_info_list *)i915_debugfs_files[i].fops;
drm_debugfs_remove_files(info_list, 1, minor); drm_debugfs_remove_files(info_list, 1, minor);
} }
......
...@@ -851,7 +851,7 @@ static int i915_driver_init_early(struct drm_i915_private *dev_priv, ...@@ -851,7 +851,7 @@ static int i915_driver_init_early(struct drm_i915_private *dev_priv,
intel_init_audio_hooks(dev_priv); intel_init_audio_hooks(dev_priv);
i915_gem_load_init(&dev_priv->drm); i915_gem_load_init(&dev_priv->drm);
intel_display_crc_init(&dev_priv->drm); intel_display_crc_init(dev_priv);
intel_device_info_dump(dev_priv); intel_device_info_dump(dev_priv);
......
...@@ -3514,7 +3514,7 @@ static inline bool i915_gem_object_needs_bit17_swizzle(struct drm_i915_gem_objec ...@@ -3514,7 +3514,7 @@ static inline bool i915_gem_object_needs_bit17_swizzle(struct drm_i915_gem_objec
int i915_debugfs_register(struct drm_i915_private *dev_priv); int i915_debugfs_register(struct drm_i915_private *dev_priv);
void i915_debugfs_unregister(struct drm_i915_private *dev_priv); void i915_debugfs_unregister(struct drm_i915_private *dev_priv);
int i915_debugfs_connector_add(struct drm_connector *connector); int i915_debugfs_connector_add(struct drm_connector *connector);
void intel_display_crc_init(struct drm_device *dev); void intel_display_crc_init(struct drm_i915_private *dev_priv);
#else #else
static inline int i915_debugfs_register(struct drm_i915_private *dev_priv) {return 0;} static inline int i915_debugfs_register(struct drm_i915_private *dev_priv) {return 0;}
static inline void i915_debugfs_unregister(struct drm_i915_private *dev_priv) {} static inline void i915_debugfs_unregister(struct drm_i915_private *dev_priv) {}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment