diff options
Diffstat (limited to 'drivers/gpu/drm/msm/msm_drv.c')
| -rw-r--r-- | drivers/gpu/drm/msm/msm_drv.c | 76 | 
1 files changed, 21 insertions, 55 deletions
diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c index c356f5ccf253..c84f0a8b3f2c 100644 --- a/drivers/gpu/drm/msm/msm_drv.c +++ b/drivers/gpu/drm/msm/msm_drv.c @@ -5,9 +5,18 @@   * Author: Rob Clark <[email protected]>   */ +#include <linux/dma-mapping.h>  #include <linux/kthread.h> +#include <linux/uaccess.h>  #include <uapi/linux/sched/types.h> + +#include <drm/drm_drv.h> +#include <drm/drm_file.h> +#include <drm/drm_ioctl.h> +#include <drm/drm_irq.h> +#include <drm/drm_prime.h>  #include <drm/drm_of.h> +#include <drm/drm_vblank.h>  #include "msm_drv.h"  #include "msm_debugfs.h" @@ -17,7 +26,6 @@  #include "msm_kms.h"  #include "adreno/adreno_gpu.h" -  /*   * MSM driver version:   * - 1.0.0 - initial interface @@ -75,46 +83,6 @@ module_param(modeset, bool, 0600);   * Util/helpers:   */ -int msm_clk_bulk_get(struct device *dev, struct clk_bulk_data **bulk) -{ -	struct property *prop; -	const char *name; -	struct clk_bulk_data *local; -	int i = 0, ret, count; - -	count = of_property_count_strings(dev->of_node, "clock-names"); -	if (count < 1) -		return 0; - -	local = devm_kcalloc(dev, sizeof(struct clk_bulk_data *), -		count, GFP_KERNEL); -	if (!local) -		return -ENOMEM; - -	of_property_for_each_string(dev->of_node, "clock-names", prop, name) { -		local[i].id = devm_kstrdup(dev, name, GFP_KERNEL); -		if (!local[i].id) { -			devm_kfree(dev, local); -			return -ENOMEM; -		} - -		i++; -	} - -	ret = devm_clk_bulk_get(dev, count, local); - -	if (ret) { -		for (i = 0; i < count; i++) -			devm_kfree(dev, (void *) local[i].id); -		devm_kfree(dev, local); - -		return ret; -	} - -	*bulk = local; -	return count; -} -  struct clk *msm_clk_bulk_get_clock(struct clk_bulk_data *bulk, int count,  		const char *name)  { @@ -505,6 +473,7 @@ static int msm_drm_init(struct device *dev, struct drm_driver *drv)  	ddev->mode_config.normalize_zpos = true;  	if (kms) { +		kms->dev = ddev;  		ret = kms->funcs->hw_init(kms);  		if (ret) {  			DRM_DEV_ERROR(dev, "kms hw init failed: %d\n", ret); @@ -984,17 +953,17 @@ static int msm_ioctl_submitqueue_close(struct drm_device *dev, void *data,  }  static const struct drm_ioctl_desc msm_ioctls[] = { -	DRM_IOCTL_DEF_DRV(MSM_GET_PARAM,    msm_ioctl_get_param,    DRM_AUTH|DRM_RENDER_ALLOW), -	DRM_IOCTL_DEF_DRV(MSM_GEM_NEW,      msm_ioctl_gem_new,      DRM_AUTH|DRM_RENDER_ALLOW), -	DRM_IOCTL_DEF_DRV(MSM_GEM_INFO,     msm_ioctl_gem_info,     DRM_AUTH|DRM_RENDER_ALLOW), -	DRM_IOCTL_DEF_DRV(MSM_GEM_CPU_PREP, msm_ioctl_gem_cpu_prep, DRM_AUTH|DRM_RENDER_ALLOW), -	DRM_IOCTL_DEF_DRV(MSM_GEM_CPU_FINI, msm_ioctl_gem_cpu_fini, DRM_AUTH|DRM_RENDER_ALLOW), -	DRM_IOCTL_DEF_DRV(MSM_GEM_SUBMIT,   msm_ioctl_gem_submit,   DRM_AUTH|DRM_RENDER_ALLOW), -	DRM_IOCTL_DEF_DRV(MSM_WAIT_FENCE,   msm_ioctl_wait_fence,   DRM_AUTH|DRM_RENDER_ALLOW), -	DRM_IOCTL_DEF_DRV(MSM_GEM_MADVISE,  msm_ioctl_gem_madvise,  DRM_AUTH|DRM_RENDER_ALLOW), -	DRM_IOCTL_DEF_DRV(MSM_SUBMITQUEUE_NEW,   msm_ioctl_submitqueue_new,   DRM_AUTH|DRM_RENDER_ALLOW), -	DRM_IOCTL_DEF_DRV(MSM_SUBMITQUEUE_CLOSE, msm_ioctl_submitqueue_close, DRM_AUTH|DRM_RENDER_ALLOW), -	DRM_IOCTL_DEF_DRV(MSM_SUBMITQUEUE_QUERY, msm_ioctl_submitqueue_query, DRM_AUTH|DRM_RENDER_ALLOW), +	DRM_IOCTL_DEF_DRV(MSM_GET_PARAM,    msm_ioctl_get_param,    DRM_RENDER_ALLOW), +	DRM_IOCTL_DEF_DRV(MSM_GEM_NEW,      msm_ioctl_gem_new,      DRM_RENDER_ALLOW), +	DRM_IOCTL_DEF_DRV(MSM_GEM_INFO,     msm_ioctl_gem_info,     DRM_RENDER_ALLOW), +	DRM_IOCTL_DEF_DRV(MSM_GEM_CPU_PREP, msm_ioctl_gem_cpu_prep, DRM_RENDER_ALLOW), +	DRM_IOCTL_DEF_DRV(MSM_GEM_CPU_FINI, msm_ioctl_gem_cpu_fini, DRM_RENDER_ALLOW), +	DRM_IOCTL_DEF_DRV(MSM_GEM_SUBMIT,   msm_ioctl_gem_submit,   DRM_RENDER_ALLOW), +	DRM_IOCTL_DEF_DRV(MSM_WAIT_FENCE,   msm_ioctl_wait_fence,   DRM_RENDER_ALLOW), +	DRM_IOCTL_DEF_DRV(MSM_GEM_MADVISE,  msm_ioctl_gem_madvise,  DRM_RENDER_ALLOW), +	DRM_IOCTL_DEF_DRV(MSM_SUBMITQUEUE_NEW,   msm_ioctl_submitqueue_new,   DRM_RENDER_ALLOW), +	DRM_IOCTL_DEF_DRV(MSM_SUBMITQUEUE_CLOSE, msm_ioctl_submitqueue_close, DRM_RENDER_ALLOW), +	DRM_IOCTL_DEF_DRV(MSM_SUBMITQUEUE_QUERY, msm_ioctl_submitqueue_query, DRM_RENDER_ALLOW),  };  static const struct vm_operations_struct vm_ops = { @@ -1017,7 +986,6 @@ static const struct file_operations fops = {  static struct drm_driver msm_driver = {  	.driver_features    = DRIVER_GEM | -				DRIVER_PRIME |  				DRIVER_RENDER |  				DRIVER_ATOMIC |  				DRIVER_MODESET, @@ -1036,8 +1004,6 @@ static struct drm_driver msm_driver = {  	.dumb_map_offset    = msm_gem_dumb_map_offset,  	.prime_handle_to_fd = drm_gem_prime_handle_to_fd,  	.prime_fd_to_handle = drm_gem_prime_fd_to_handle, -	.gem_prime_export   = drm_gem_prime_export, -	.gem_prime_import   = drm_gem_prime_import,  	.gem_prime_pin      = msm_gem_prime_pin,  	.gem_prime_unpin    = msm_gem_prime_unpin,  	.gem_prime_get_sg_table = msm_gem_prime_get_sg_table,  |