diff options
Diffstat (limited to 'drivers/gpu/drm/msm/msm_gpu.h')
-rw-r--r-- | drivers/gpu/drm/msm/msm_gpu.h | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/drivers/gpu/drm/msm/msm_gpu.h b/drivers/gpu/drm/msm/msm_gpu.h index 458db8c64c28..fad27008922f 100644 --- a/drivers/gpu/drm/msm/msm_gpu.h +++ b/drivers/gpu/drm/msm/msm_gpu.h | |||
@@ -72,6 +72,10 @@ struct msm_gpu { | |||
72 | 72 | ||
73 | uint32_t submitted_fence; | 73 | uint32_t submitted_fence; |
74 | 74 | ||
75 | /* is gpu powered/active? */ | ||
76 | int active_cnt; | ||
77 | bool inactive; | ||
78 | |||
75 | /* worker for handling active-list retiring: */ | 79 | /* worker for handling active-list retiring: */ |
76 | struct work_struct retire_work; | 80 | struct work_struct retire_work; |
77 | 81 | ||
@@ -91,7 +95,12 @@ struct msm_gpu { | |||
91 | uint32_t bsc; | 95 | uint32_t bsc; |
92 | #endif | 96 | #endif |
93 | 97 | ||
94 | /* Hang Detction: */ | 98 | /* Hang and Inactivity Detection: |
99 | */ | ||
100 | #define DRM_MSM_INACTIVE_PERIOD 66 /* in ms (roughly four frames) */ | ||
101 | #define DRM_MSM_INACTIVE_JIFFIES msecs_to_jiffies(DRM_MSM_INACTIVE_PERIOD) | ||
102 | struct timer_list inactive_timer; | ||
103 | struct work_struct inactive_work; | ||
95 | #define DRM_MSM_HANGCHECK_PERIOD 500 /* in ms */ | 104 | #define DRM_MSM_HANGCHECK_PERIOD 500 /* in ms */ |
96 | #define DRM_MSM_HANGCHECK_JIFFIES msecs_to_jiffies(DRM_MSM_HANGCHECK_PERIOD) | 105 | #define DRM_MSM_HANGCHECK_JIFFIES msecs_to_jiffies(DRM_MSM_HANGCHECK_PERIOD) |
97 | struct timer_list hangcheck_timer; | 106 | struct timer_list hangcheck_timer; |
@@ -99,6 +108,11 @@ struct msm_gpu { | |||
99 | struct work_struct recover_work; | 108 | struct work_struct recover_work; |
100 | }; | 109 | }; |
101 | 110 | ||
111 | static inline bool msm_gpu_active(struct msm_gpu *gpu) | ||
112 | { | ||
113 | return gpu->submitted_fence > gpu->funcs->last_fence(gpu); | ||
114 | } | ||
115 | |||
102 | static inline void gpu_write(struct msm_gpu *gpu, u32 reg, u32 data) | 116 | static inline void gpu_write(struct msm_gpu *gpu, u32 reg, u32 data) |
103 | { | 117 | { |
104 | msm_writel(data, gpu->mmio + (reg << 2)); | 118 | msm_writel(data, gpu->mmio + (reg << 2)); |