Merge the modeset-rework, basic conversion into drm-intel-next
[profile/ivi/kernel-adaptation-intel-automotive.git] / drivers / gpu / drm / i915 / i915_drv.h
index 9fce782..26c6959 100644 (file)
@@ -196,9 +196,10 @@ struct drm_i915_error_state {
        u32 cpu_ring_head[I915_NUM_RINGS];
        u32 cpu_ring_tail[I915_NUM_RINGS];
        u32 error; /* gen6+ */
+       u32 err_int; /* gen7 */
        u32 instpm[I915_NUM_RINGS];
        u32 instps[I915_NUM_RINGS];
-       u32 instdone1;
+       u32 extra_instdone[I915_NUM_INSTDONE_REG];
        u32 seqno[I915_NUM_RINGS];
        u64 bbaddr;
        u32 fault_reg[I915_NUM_RINGS];
@@ -454,8 +455,7 @@ typedef struct drm_i915_private {
        struct timer_list hangcheck_timer;
        int hangcheck_count;
        uint32_t last_acthd[I915_NUM_RINGS];
-       uint32_t last_instdone;
-       uint32_t last_instdone1;
+       uint32_t prev_instdone[I915_NUM_INSTDONE_REG];
 
        unsigned int stop_rings;
 
@@ -686,7 +686,13 @@ typedef struct drm_i915_private {
                struct drm_mm gtt_space;
                /** List of all objects in gtt_space. Used to restore gtt
                 * mappings on resume */
-               struct list_head gtt_list;
+               struct list_head bound_list;
+               /**
+                * List of objects which are not bound to the GTT (thus
+                * are idle and not used by the GPU) but still have
+                * (presumably uncached) pages still attached.
+                */
+               struct list_head unbound_list;
 
                /** Usable portion of the GTT for GEM */
                unsigned long gtt_start;
@@ -834,22 +840,26 @@ typedef struct drm_i915_private {
                u8 max_delay;
        } rps;
 
+       /* ilk-only ips/rps state. Everything in here is protected by the global
+        * mchdev_lock in intel_pm.c */
+       struct {
+               u8 cur_delay;
+               u8 min_delay;
+               u8 max_delay;
+               u8 fmax;
+               u8 fstart;
 
-       u8 cur_delay;
-       u8 min_delay;
-       u8 max_delay;
-       u8 fmax;
-       u8 fstart;
+               u64 last_count1;
+               unsigned long last_time1;
+               unsigned long chipset_power;
+               u64 last_count2;
+               struct timespec last_time2;
+               unsigned long gfx_power;
+               u8 corr;
 
-       u64 last_count1;
-       unsigned long last_time1;
-       unsigned long chipset_power;
-       u64 last_count2;
-       struct timespec last_time2;
-       unsigned long gfx_power;
-       int c_m;
-       int r_t;
-       u8 corr;
+               int c_m;
+               int r_t;
+       } ips;
 
        enum no_fbc_reason no_fbc_reason;
 
@@ -1296,19 +1306,20 @@ int i915_gem_wait_ioctl(struct drm_device *dev, void *data,
                        struct drm_file *file_priv);
 void i915_gem_load(struct drm_device *dev);
 int i915_gem_init_object(struct drm_gem_object *obj);
+void i915_gem_object_init(struct drm_i915_gem_object *obj);
 struct drm_i915_gem_object *i915_gem_alloc_object(struct drm_device *dev,
                                                  size_t size);
 void i915_gem_free_object(struct drm_gem_object *obj);
 int __must_check i915_gem_object_pin(struct drm_i915_gem_object *obj,
                                     uint32_t alignment,
-                                    bool map_and_fenceable);
+                                    bool map_and_fenceable,
+                                    bool nonblocking);
 void i915_gem_object_unpin(struct drm_i915_gem_object *obj);
 int __must_check i915_gem_object_unbind(struct drm_i915_gem_object *obj);
 void i915_gem_release_mmap(struct drm_i915_gem_object *obj);
 void i915_gem_lastclose(struct drm_device *dev);
 
-int i915_gem_object_get_pages_gtt(struct drm_i915_gem_object *obj,
-                                 gfp_t gfpmask);
+int __must_check i915_gem_object_get_pages_gtt(struct drm_i915_gem_object *obj);
 int __must_check i915_mutex_lock_interruptible(struct drm_device *dev);
 int i915_gem_object_sync(struct drm_i915_gem_object *obj,
                         struct intel_ring_buffer *to);
@@ -1449,8 +1460,9 @@ void i915_gem_init_global_gtt(struct drm_device *dev,
 int __must_check i915_gem_evict_something(struct drm_device *dev, int min_size,
                                          unsigned alignment,
                                          unsigned cache_level,
-                                         bool mappable);
-int i915_gem_evict_everything(struct drm_device *dev, bool purgeable_only);
+                                         bool mappable,
+                                         bool nonblock);
+int i915_gem_evict_everything(struct drm_device *dev);
 
 /* i915_gem_stolen.c */
 int i915_gem_init_stolen(struct drm_device *dev);