diff options
Diffstat (limited to 'drivers/gpu/drm/lima')
| -rw-r--r-- | drivers/gpu/drm/lima/lima_devfreq.c | 13 | ||||
| -rw-r--r-- | drivers/gpu/drm/lima/lima_devfreq.h | 1 | ||||
| -rw-r--r-- | drivers/gpu/drm/lima/lima_drv.c | 4 | ||||
| -rw-r--r-- | drivers/gpu/drm/lima/lima_gem.c | 6 | ||||
| -rw-r--r-- | drivers/gpu/drm/lima/lima_sched.c | 14 | 
5 files changed, 15 insertions, 23 deletions
| diff --git a/drivers/gpu/drm/lima/lima_devfreq.c b/drivers/gpu/drm/lima/lima_devfreq.c index bbe02817721b..da7099d20bd5 100644 --- a/drivers/gpu/drm/lima/lima_devfreq.c +++ b/drivers/gpu/drm/lima/lima_devfreq.c @@ -35,18 +35,13 @@ static int lima_devfreq_target(struct device *dev, unsigned long *freq,  			       u32 flags)  {  	struct dev_pm_opp *opp; -	int err;  	opp = devfreq_recommended_opp(dev, freq, flags);  	if (IS_ERR(opp))  		return PTR_ERR(opp);  	dev_pm_opp_put(opp); -	err = dev_pm_opp_set_rate(dev, *freq); -	if (err) -		return err; - -	return 0; +	return dev_pm_opp_set_rate(dev, *freq);  }  static void lima_devfreq_reset(struct lima_devfreq *devfreq) @@ -105,10 +100,7 @@ void lima_devfreq_fini(struct lima_device *ldev)  		devfreq->devfreq = NULL;  	} -	if (devfreq->opp_of_table_added) { -		dev_pm_opp_of_remove_table(ldev->dev); -		devfreq->opp_of_table_added = false; -	} +	dev_pm_opp_of_remove_table(ldev->dev);  	if (devfreq->regulators_opp_table) {  		dev_pm_opp_put_regulators(devfreq->regulators_opp_table); @@ -162,7 +154,6 @@ int lima_devfreq_init(struct lima_device *ldev)  	ret = dev_pm_opp_of_add_table(dev);  	if (ret)  		goto err_fini; -	ldevfreq->opp_of_table_added = true;  	lima_devfreq_reset(ldevfreq); diff --git a/drivers/gpu/drm/lima/lima_devfreq.h b/drivers/gpu/drm/lima/lima_devfreq.h index 5eed2975a375..2d9b3008ce77 100644 --- a/drivers/gpu/drm/lima/lima_devfreq.h +++ b/drivers/gpu/drm/lima/lima_devfreq.h @@ -18,7 +18,6 @@ struct lima_devfreq {  	struct opp_table *clkname_opp_table;  	struct opp_table *regulators_opp_table;  	struct thermal_cooling_device *cooling; -	bool opp_of_table_added;  	ktime_t busy_time;  	ktime_t idle_time; diff --git a/drivers/gpu/drm/lima/lima_drv.c b/drivers/gpu/drm/lima/lima_drv.c index ab460121fd52..7b8d7178d09a 100644 --- a/drivers/gpu/drm/lima/lima_drv.c +++ b/drivers/gpu/drm/lima/lima_drv.c @@ -255,13 +255,13 @@ static const struct drm_ioctl_desc lima_drm_driver_ioctls[] = {  DEFINE_DRM_GEM_FOPS(lima_drm_driver_fops); -/** +/*   * Changelog:   *   * - 1.1.0 - add heap buffer support   */ -static struct drm_driver lima_drm_driver = { +static const struct drm_driver lima_drm_driver = {  	.driver_features    = DRIVER_RENDER | DRIVER_GEM | DRIVER_SYNCOBJ,  	.open               = lima_drm_driver_open,  	.postclose          = lima_drm_driver_postclose, diff --git a/drivers/gpu/drm/lima/lima_gem.c b/drivers/gpu/drm/lima/lima_gem.c index 11223fe348df..832e5280a6ed 100644 --- a/drivers/gpu/drm/lima/lima_gem.c +++ b/drivers/gpu/drm/lima/lima_gem.c @@ -182,14 +182,14 @@ static int lima_gem_pin(struct drm_gem_object *obj)  	return drm_gem_shmem_pin(obj);  } -static void *lima_gem_vmap(struct drm_gem_object *obj) +static int lima_gem_vmap(struct drm_gem_object *obj, struct dma_buf_map *map)  {  	struct lima_bo *bo = to_lima_bo(obj);  	if (bo->heap_size) -		return ERR_PTR(-EINVAL); +		return -EINVAL; -	return drm_gem_shmem_vmap(obj); +	return drm_gem_shmem_vmap(obj, map);  }  static int lima_gem_mmap(struct drm_gem_object *obj, struct vm_area_struct *vma) diff --git a/drivers/gpu/drm/lima/lima_sched.c b/drivers/gpu/drm/lima/lima_sched.c index dc6df9e9a40d..63b4c5643f9c 100644 --- a/drivers/gpu/drm/lima/lima_sched.c +++ b/drivers/gpu/drm/lima/lima_sched.c @@ -1,6 +1,7 @@  // SPDX-License-Identifier: GPL-2.0 OR MIT  /* Copyright 2017-2019 Qiang Yu <yuq825@gmail.com> */ +#include <linux/dma-buf-map.h>  #include <linux/kthread.h>  #include <linux/slab.h>  #include <linux/vmalloc.h> @@ -223,7 +224,6 @@ static struct dma_fence *lima_sched_run_job(struct drm_sched_job *job)  	struct lima_sched_pipe *pipe = to_lima_pipe(job->sched);  	struct lima_device *ldev = pipe->ldev;  	struct lima_fence *fence; -	struct dma_fence *ret;  	int i, err;  	/* after GPU reset */ @@ -245,7 +245,7 @@ static struct dma_fence *lima_sched_run_job(struct drm_sched_job *job)  	/* for caller usage of the fence, otherwise irq handler  	 * may consume the fence before caller use it  	 */ -	ret = dma_fence_get(task->fence); +	dma_fence_get(task->fence);  	pipe->current_task = task; @@ -303,6 +303,8 @@ static void lima_sched_build_error_task_list(struct lima_sched_task *task)  	struct lima_dump_chunk_buffer *buffer_chunk;  	u32 size, task_size, mem_size;  	int i; +	struct dma_buf_map map; +	int ret;  	mutex_lock(&dev->error_task_list_lock); @@ -388,15 +390,15 @@ static void lima_sched_build_error_task_list(struct lima_sched_task *task)  		} else {  			buffer_chunk->size = lima_bo_size(bo); -			data = drm_gem_shmem_vmap(&bo->base.base); -			if (IS_ERR_OR_NULL(data)) { +			ret = drm_gem_shmem_vmap(&bo->base.base, &map); +			if (ret) {  				kvfree(et);  				goto out;  			} -			memcpy(buffer_chunk + 1, data, buffer_chunk->size); +			memcpy(buffer_chunk + 1, map.vaddr, buffer_chunk->size); -			drm_gem_shmem_vunmap(&bo->base.base, data); +			drm_gem_shmem_vunmap(&bo->base.base, &map);  		}  		buffer_chunk = (void *)(buffer_chunk + 1) + buffer_chunk->size; | 
