aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/msm/msm_gpu.h
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/gpu/drm/msm/msm_gpu.h')
-rw-r--r--drivers/gpu/drm/msm/msm_gpu.h16
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
111static inline bool msm_gpu_active(struct msm_gpu *gpu)
112{
113 return gpu->submitted_fence > gpu->funcs->last_fence(gpu);
114}
115
102static inline void gpu_write(struct msm_gpu *gpu, u32 reg, u32 data) 116static 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));