diff options
author | Lucas Stach <l.stach@pengutronix.de> | 2013-09-16 12:52:37 +0200 |
---|---|---|
committer | Lucas Stach <l.stach@pengutronix.de> | 2013-09-17 08:45:21 +0200 |
commit | 67cc74905799e26d884894d1d29807cdb7a49166 (patch) | |
tree | 154d7249154ff3940ff673a231d3fa25ffe4557b /drivers/gpu/drm/msm/adreno/adreno_gpu.h | |
parent | 5c5c7a90f086aac3f514f80c34e44f80fc32047f (diff) | |
download | linux-67cc74905799e26d884894d1d29807cdb7a49166.tar.gz linux-67cc74905799e26d884894d1d29807cdb7a49166.tar.xz |
WIP: push down hangcheck into adreno_gpu
Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
Diffstat (limited to 'drivers/gpu/drm/msm/adreno/adreno_gpu.h')
-rw-r--r-- | drivers/gpu/drm/msm/adreno/adreno_gpu.h | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/gpu/drm/msm/adreno/adreno_gpu.h b/drivers/gpu/drm/msm/adreno/adreno_gpu.h index 8d7f26e7d950..a7fe0e5e0c62 100644 --- a/drivers/gpu/drm/msm/adreno/adreno_gpu.h +++ b/drivers/gpu/drm/msm/adreno/adreno_gpu.h @@ -54,6 +54,7 @@ struct adreno_gpu { uint32_t revn; /* numeric revision name */ const struct adreno_gpu_funcs *funcs; struct adreno_gem *gem; + struct workqueue_struct *shared_wq; /* firmware: */ const struct firmware *pm4, *pfp; @@ -65,10 +66,19 @@ struct adreno_gpu { struct drm_gem_object *memptrs_bo; uint32_t memptrs_iova; + uint32_t submitted_fence; + struct adreno_ringbuffer *rb; uint32_t rb_iova; struct adreno_context *lastctx; + + /* Hang Detction: */ +#define DRM_MSM_HANGCHECK_PERIOD 500 /* in ms */ +#define DRM_MSM_HANGCHECK_JIFFIES msecs_to_jiffies(DRM_MSM_HANGCHECK_PERIOD) + struct timer_list hangcheck_timer; + uint32_t hangcheck_fence; + struct work_struct recover_work; }; #define to_adreno_gpu(x) container_of(x, struct adreno_gpu, base) @@ -115,7 +125,8 @@ void adreno_wait_ring(struct adreno_gpu *gpu, uint32_t ndwords); int adreno_gpu_init(struct drm_device *drm, struct platform_device *pdev, struct adreno_gpu *gpu, const struct adreno_gpu_funcs *funcs, - struct adreno_gem *gem, struct adreno_rev rev); + struct adreno_gem *gem, struct workqueue_struct *wq, + struct adreno_rev rev); void adreno_gpu_cleanup(struct adreno_gpu *gpu); static inline void gpu_write(struct adreno_gpu *gpu, u32 reg, u32 data) |