diff options
Diffstat (limited to 'drivers/gpu/drm/vc4/vc4_gem.c')
| -rw-r--r-- | drivers/gpu/drm/vc4/vc4_gem.c | 19 | 
1 files changed, 10 insertions, 9 deletions
| diff --git a/drivers/gpu/drm/vc4/vc4_gem.c b/drivers/gpu/drm/vc4/vc4_gem.c index 9f01ddd5b932..b641252939d8 100644 --- a/drivers/gpu/drm/vc4/vc4_gem.c +++ b/drivers/gpu/drm/vc4/vc4_gem.c @@ -314,16 +314,16 @@ vc4_reset_work(struct work_struct *work)  	struct vc4_dev *vc4 =  		container_of(work, struct vc4_dev, hangcheck.reset_work); -	vc4_save_hang_state(vc4->dev); +	vc4_save_hang_state(&vc4->base); -	vc4_reset(vc4->dev); +	vc4_reset(&vc4->base);  }  static void  vc4_hangcheck_elapsed(struct timer_list *t)  {  	struct vc4_dev *vc4 = from_timer(vc4, t, hangcheck.timer); -	struct drm_device *dev = vc4->dev; +	struct drm_device *dev = &vc4->base;  	uint32_t ct0ca, ct1ca;  	unsigned long irqflags;  	struct vc4_exec_info *bin_exec, *render_exec; @@ -1000,7 +1000,7 @@ vc4_job_handle_completed(struct vc4_dev *vc4)  		list_del(&exec->head);  		spin_unlock_irqrestore(&vc4->job_lock, irqflags); -		vc4_complete_exec(vc4->dev, exec); +		vc4_complete_exec(&vc4->base, exec);  		spin_lock_irqsave(&vc4->job_lock, irqflags);  	} @@ -1258,13 +1258,13 @@ vc4_submit_cl_ioctl(struct drm_device *dev, void *data,  	return 0;  fail: -	vc4_complete_exec(vc4->dev, exec); +	vc4_complete_exec(&vc4->base, exec);  	return ret;  } -void -vc4_gem_init(struct drm_device *dev) +static void vc4_gem_destroy(struct drm_device *dev, void *unused); +int vc4_gem_init(struct drm_device *dev)  {  	struct vc4_dev *vc4 = to_vc4_dev(dev); @@ -1285,10 +1285,11 @@ vc4_gem_init(struct drm_device *dev)  	INIT_LIST_HEAD(&vc4->purgeable.list);  	mutex_init(&vc4->purgeable.lock); + +	return drmm_add_action_or_reset(dev, vc4_gem_destroy, NULL);  } -void -vc4_gem_destroy(struct drm_device *dev) +static void vc4_gem_destroy(struct drm_device *dev, void *unused)  {  	struct vc4_dev *vc4 = to_vc4_dev(dev); |