Re: [DPU PATCH 4/6] drm/msm: strip down custom event ioctl's

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, Apr 16, 2018 at 11:22:19AM -0700, Jeykumar Sankaran wrote:
> Remove custom ioctl support in SDM845 which allows
> user space to register/unregister for hw events.
> 
> Signed-off-by: Jeykumar Sankaran <jsanka@xxxxxxxxxxxxxx>

Reviewed-by: Sean Paul <seanpaul@xxxxxxxxxxxx>

> ---
>  drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c | 218 +------------------------------
>  drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h |   1 -
>  drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c  |  31 -----
>  drivers/gpu/drm/msm/msm_drv.c            | 201 ----------------------------
>  drivers/gpu/drm/msm/msm_kms.h            |   2 -
>  5 files changed, 1 insertion(+), 452 deletions(-)
> 
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> index 8e464fa..387919a 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.c
> @@ -39,31 +39,6 @@
>  #include "dpu_core_perf.h"
>  #include "dpu_trace.h"
>  
> -struct dpu_crtc_irq_info {
> -	struct dpu_irq_callback irq;
> -	u32 event;
> -	int (*func)(struct drm_crtc *crtc, bool en,
> -			struct dpu_irq_callback *irq);
> -	struct list_head list;
> -};
> -
> -struct dpu_crtc_custom_events {
> -	u32 event;
> -	int (*func)(struct drm_crtc *crtc, bool en,
> -			struct dpu_irq_callback *irq);
> -};
> -
> -static int dpu_crtc_power_interrupt_handler(struct drm_crtc *crtc_drm,
> -	bool en, struct dpu_irq_callback *ad_irq);
> -static int dpu_crtc_idle_interrupt_handler(struct drm_crtc *crtc_drm,
> -	bool en, struct dpu_irq_callback *idle_irq);
> -
> -static struct dpu_crtc_custom_events custom_events[] = {
> -	{DRM_EVENT_AD_BACKLIGHT, dpu_cp_ad_interrupt},
> -	{DRM_EVENT_CRTC_POWER, dpu_crtc_power_interrupt_handler},
> -	{DRM_EVENT_IDLE_NOTIFY, dpu_crtc_idle_interrupt_handler}
> -};
> -
>  /* layer mixer index on dpu_crtc */
>  #define LEFT_MIXER 0
>  #define RIGHT_MIXER 1
> @@ -2455,9 +2430,6 @@ static void dpu_crtc_handle_power_event(u32 event_type, void *arg)
>  	struct drm_encoder *encoder;
>  	struct dpu_crtc_mixer *m;
>  	u32 i, misr_status;
> -	unsigned long flags;
> -	struct dpu_crtc_irq_info *node = NULL;
> -	int ret = 0;
>  
>  	if (!crtc) {
>  		DPU_ERROR("invalid crtc\n");
> @@ -2479,17 +2451,6 @@ static void dpu_crtc_handle_power_event(u32 event_type, void *arg)
>  			dpu_encoder_virt_restore(encoder);
>  		}
>  
> -		spin_lock_irqsave(&dpu_crtc->spin_lock, flags);
> -		list_for_each_entry(node, &dpu_crtc->user_event_list, list) {
> -			ret = 0;
> -			if (node->func)
> -				ret = node->func(crtc, true, &node->irq);
> -			if (ret)
> -				DPU_ERROR("%s failed to enable event %x\n",
> -						dpu_crtc->name, node->event);
> -		}
> -		spin_unlock_irqrestore(&dpu_crtc->spin_lock, flags);
> -
>  		dpu_cp_crtc_post_ipc(crtc);
>  
>  		for (i = 0; i < dpu_crtc->num_mixers; ++i) {
> @@ -2514,18 +2475,6 @@ static void dpu_crtc_handle_power_event(u32 event_type, void *arg)
>  							dpu_crtc->misr_data[i];
>  		}
>  
> -		spin_lock_irqsave(&dpu_crtc->spin_lock, flags);
> -		node = NULL;
> -		list_for_each_entry(node, &dpu_crtc->user_event_list, list) {
> -			ret = 0;
> -			if (node->func)
> -				ret = node->func(crtc, false, &node->irq);
> -			if (ret)
> -				DPU_ERROR("%s failed to disable event %x\n",
> -						dpu_crtc->name, node->event);
> -		}
> -		spin_unlock_irqrestore(&dpu_crtc->spin_lock, flags);
> -
>  		dpu_cp_crtc_pre_ipc(crtc);
>  		break;
>  	case DPU_POWER_EVENT_POST_DISABLE:
> @@ -2553,8 +2502,6 @@ static void dpu_crtc_disable(struct drm_crtc *crtc)
>  	struct drm_display_mode *mode;
>  	struct drm_encoder *encoder;
>  	struct msm_drm_private *priv;
> -	unsigned long flags;
> -	struct dpu_crtc_irq_info *node = NULL;
>  	struct drm_event event;
>  	u32 power_on;
>  	int ret;
> @@ -2614,17 +2561,6 @@ static void dpu_crtc_disable(struct drm_crtc *crtc)
>  		atomic_set(&dpu_crtc->frame_pending, 0);
>  	}
>  
> -	spin_lock_irqsave(&dpu_crtc->spin_lock, flags);
> -	list_for_each_entry(node, &dpu_crtc->user_event_list, list) {
> -		ret = 0;
> -		if (node->func)
> -			ret = node->func(crtc, false, &node->irq);
> -		if (ret)
> -			DPU_ERROR("%s failed to disable event %x\n",
> -					dpu_crtc->name, node->event);
> -	}
> -	spin_unlock_irqrestore(&dpu_crtc->spin_lock, flags);
> -
>  	dpu_core_perf_crtc_update(crtc, 0, true);
>  
>  	drm_for_each_encoder(encoder, crtc->dev) {
> @@ -2656,8 +2592,6 @@ static void dpu_crtc_enable(struct drm_crtc *crtc,
>  	struct dpu_crtc *dpu_crtc;
>  	struct drm_encoder *encoder;
>  	struct msm_drm_private *priv;
> -	unsigned long flags;
> -	struct dpu_crtc_irq_info *node = NULL;
>  	struct drm_event event;
>  	u32 power_on;
>  	int ret;
> @@ -2709,17 +2643,6 @@ static void dpu_crtc_enable(struct drm_crtc *crtc,
>  
>  	mutex_unlock(&dpu_crtc->crtc_lock);
>  
> -	spin_lock_irqsave(&dpu_crtc->spin_lock, flags);
> -	list_for_each_entry(node, &dpu_crtc->user_event_list, list) {
> -		ret = 0;
> -		if (node->func)
> -			ret = node->func(crtc, true, &node->irq);
> -		if (ret)
> -			DPU_ERROR("%s failed to enable event %x\n",
> -				dpu_crtc->name, node->event);
> -	}
> -	spin_unlock_irqrestore(&dpu_crtc->spin_lock, flags);
> -
>  	dpu_crtc->power_event = dpu_power_handle_register_event(
>  		&priv->phandle,
>  		DPU_POWER_EVENT_POST_ENABLE | DPU_POWER_EVENT_POST_DISABLE |
> @@ -3995,7 +3918,7 @@ struct drm_crtc *dpu_crtc_init(struct drm_device *dev, struct drm_plane *plane)
>  	init_completion(&dpu_crtc->frame_done_comp);
>  
>  	INIT_LIST_HEAD(&dpu_crtc->frame_event_list);
> -	INIT_LIST_HEAD(&dpu_crtc->user_event_list);
> +
>  	for (i = 0; i < ARRAY_SIZE(dpu_crtc->frame_events); i++) {
>  		INIT_LIST_HEAD(&dpu_crtc->frame_events[i].list);
>  		list_add(&dpu_crtc->frame_events[i].list,
> @@ -4039,142 +3962,3 @@ struct drm_crtc *dpu_crtc_init(struct drm_device *dev, struct drm_plane *plane)
>  	DPU_DEBUG("%s: successfully initialized crtc\n", dpu_crtc->name);
>  	return crtc;
>  }
> -
> -static int _dpu_crtc_event_enable(struct dpu_kms *kms,
> -		struct drm_crtc *crtc_drm, u32 event)
> -{
> -	struct dpu_crtc *crtc = NULL;
> -	struct dpu_crtc_irq_info *node;
> -	struct msm_drm_private *priv;
> -	unsigned long flags;
> -	bool found = false;
> -	int ret, i = 0;
> -
> -	crtc = to_dpu_crtc(crtc_drm);
> -	spin_lock_irqsave(&crtc->spin_lock, flags);
> -	list_for_each_entry(node, &crtc->user_event_list, list) {
> -		if (node->event == event) {
> -			found = true;
> -			break;
> -		}
> -	}
> -	spin_unlock_irqrestore(&crtc->spin_lock, flags);
> -
> -	/* event already enabled */
> -	if (found)
> -		return 0;
> -
> -	node = NULL;
> -	for (i = 0; i < ARRAY_SIZE(custom_events); i++) {
> -		if (custom_events[i].event == event &&
> -			custom_events[i].func) {
> -			node = kzalloc(sizeof(*node), GFP_KERNEL);
> -			if (!node)
> -				return -ENOMEM;
> -			node->event = event;
> -			INIT_LIST_HEAD(&node->list);
> -			node->func = custom_events[i].func;
> -			node->event = event;
> -			break;
> -		}
> -	}
> -
> -	if (!node) {
> -		DPU_ERROR("unsupported event %x\n", event);
> -		return -EINVAL;
> -	}
> -
> -	priv = kms->dev->dev_private;
> -	ret = 0;
> -	if (crtc_drm->enabled) {
> -		dpu_power_resource_enable(&priv->phandle, kms->core_client,
> -				true);
> -		INIT_LIST_HEAD(&node->irq.list);
> -		ret = node->func(crtc_drm, true, &node->irq);
> -		dpu_power_resource_enable(&priv->phandle, kms->core_client,
> -				false);
> -	}
> -
> -	if (!ret) {
> -		spin_lock_irqsave(&crtc->spin_lock, flags);
> -		list_add_tail(&node->list, &crtc->user_event_list);
> -		spin_unlock_irqrestore(&crtc->spin_lock, flags);
> -	} else {
> -		kfree(node);
> -	}
> -
> -	return ret;
> -}
> -
> -static int _dpu_crtc_event_disable(struct dpu_kms *kms,
> -		struct drm_crtc *crtc_drm, u32 event)
> -{
> -	struct dpu_crtc *crtc = NULL;
> -	struct dpu_crtc_irq_info *node = NULL;
> -	struct msm_drm_private *priv;
> -	unsigned long flags;
> -	bool found = false;
> -	int ret;
> -
> -	crtc = to_dpu_crtc(crtc_drm);
> -	spin_lock_irqsave(&crtc->spin_lock, flags);
> -	list_for_each_entry(node, &crtc->user_event_list, list) {
> -		if (node->event == event) {
> -			list_del(&node->list);
> -			found = true;
> -			break;
> -		}
> -	}
> -	spin_unlock_irqrestore(&crtc->spin_lock, flags);
> -
> -	/* event already disabled */
> -	if (!found)
> -		return 0;
> -
> -	/**
> -	 * crtc is disabled interrupts are cleared remove from the list,
> -	 * no need to disable/de-register.
> -	 */
> -	if (!crtc_drm->enabled) {
> -		kfree(node);
> -		return 0;
> -	}
> -	priv = kms->dev->dev_private;
> -	dpu_power_resource_enable(&priv->phandle, kms->core_client, true);
> -	ret = node->func(crtc_drm, false, &node->irq);
> -	dpu_power_resource_enable(&priv->phandle, kms->core_client, false);
> -	return ret;
> -}
> -
> -int dpu_crtc_register_custom_event(struct dpu_kms *kms,
> -		struct drm_crtc *crtc_drm, u32 event, bool en)
> -{
> -	struct dpu_crtc *crtc = NULL;
> -	int ret;
> -
> -	crtc = to_dpu_crtc(crtc_drm);
> -	if (!crtc || !kms || !kms->dev) {
> -		DRM_ERROR("invalid dpu_crtc %pK kms %pK dev %pK\n", crtc,
> -			kms, ((kms) ? (kms->dev) : NULL));
> -		return -EINVAL;
> -	}
> -
> -	if (en)
> -		ret = _dpu_crtc_event_enable(kms, crtc_drm, event);
> -	else
> -		ret = _dpu_crtc_event_disable(kms, crtc_drm, event);
> -
> -	return ret;
> -}
> -
> -static int dpu_crtc_power_interrupt_handler(struct drm_crtc *crtc_drm,
> -	bool en, struct dpu_irq_callback *irq)
> -{
> -	return 0;
> -}
> -
> -static int dpu_crtc_idle_interrupt_handler(struct drm_crtc *crtc_drm,
> -	bool en, struct dpu_irq_callback *irq)
> -{
> -	return 0;
> -}
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h
> index fade658..bc08416 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_crtc.h
> @@ -223,7 +223,6 @@ struct dpu_crtc {
>  	struct list_head dirty_list;
>  	struct list_head ad_dirty;
>  	struct list_head ad_active;
> -	struct list_head user_event_list;
>  
>  	struct mutex crtc_lock;
>  
> diff --git a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> index 2c187e9..5b07f77 100644
> --- a/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> +++ b/drivers/gpu/drm/msm/disp/dpu1/dpu_kms.c
> @@ -90,8 +90,6 @@
>  
>  static int dpu_kms_hw_init(struct msm_kms *kms);
>  static int _dpu_kms_mmu_destroy(struct dpu_kms *dpu_kms);
> -static int _dpu_kms_register_events(struct msm_kms *kms,
> -		struct drm_mode_object *obj, u32 event, bool en);
>  bool dpu_is_custom_client(void)
>  {
>  	return dpucustom;
> @@ -1745,7 +1743,6 @@ static int dpu_kms_pm_resume(struct device *dev)
>  	.pm_suspend      = dpu_kms_pm_suspend,
>  	.pm_resume       = dpu_kms_pm_resume,
>  	.destroy         = dpu_kms_destroy,
> -	.register_events = _dpu_kms_register_events,
>  	.get_address_space = _dpu_kms_get_address_space,
>  	.postopen = _dpu_kms_post_open,
>  };
> @@ -2159,31 +2156,3 @@ struct msm_kms *dpu_kms_init(struct drm_device *dev)
>  	return &dpu_kms->base;
>  }
>  
> -static int _dpu_kms_register_events(struct msm_kms *kms,
> -		struct drm_mode_object *obj, u32 event, bool en)
> -{
> -	int ret = 0;
> -	struct drm_crtc *crtc = NULL;
> -	struct drm_connector *conn = NULL;
> -	struct dpu_kms *dpu_kms = NULL;
> -
> -	if (!kms || !obj) {
> -		DPU_ERROR("invalid argument kms %pK obj %pK\n", kms, obj);
> -		return -EINVAL;
> -	}
> -
> -	dpu_kms = to_dpu_kms(kms);
> -	switch (obj->type) {
> -	case DRM_MODE_OBJECT_CRTC:
> -		crtc = obj_to_crtc(obj);
> -		ret = dpu_crtc_register_custom_event(dpu_kms, crtc, event, en);
> -		break;
> -	case DRM_MODE_OBJECT_CONNECTOR:
> -		conn = obj_to_connector(obj);
> -		ret = dpu_connector_register_custom_event(dpu_kms, conn, event,
> -				en);
> -		break;
> -	}
> -
> -	return ret;
> -}
> diff --git a/drivers/gpu/drm/msm/msm_drv.c b/drivers/gpu/drm/msm/msm_drv.c
> index 5b12e87..a710b63 100644
> --- a/drivers/gpu/drm/msm/msm_drv.c
> +++ b/drivers/gpu/drm/msm/msm_drv.c
> @@ -1226,180 +1226,6 @@ static int msm_ioctl_submitqueue_close(struct drm_device *dev, void *data,
>  	return msm_submitqueue_remove(file->driver_priv, id);
>  }
>  
> -static int msm_drm_object_supports_event(struct drm_device *dev,
> -		struct drm_msm_event_req *req, struct drm_file *file)
> -{
> -	int ret = -EINVAL;
> -	struct drm_mode_object *arg_obj;
> -
> -	arg_obj = drm_mode_object_find(dev, file, req->object_id, req->object_type);
> -	if (!arg_obj)
> -		return -ENOENT;
> -
> -	switch (arg_obj->type) {
> -	case DRM_MODE_OBJECT_CRTC:
> -	case DRM_MODE_OBJECT_CONNECTOR:
> -		ret = 0;
> -		break;
> -	default:
> -		ret = -EOPNOTSUPP;
> -		break;
> -	}
> -
> -	return ret;
> -}
> -
> -static int msm_register_event(struct drm_device *dev,
> -	struct drm_msm_event_req *req, struct drm_file *file, bool en)
> -{
> -	int ret = -EINVAL;
> -	struct msm_drm_private *priv = dev->dev_private;
> -	struct msm_kms *kms = priv->kms;
> -	struct drm_mode_object *arg_obj;
> -
> -	arg_obj = drm_mode_object_find(dev, file, req->object_id, req->object_type);
> -	if (!arg_obj)
> -		return -ENOENT;
> -
> -	ret = kms->funcs->register_events(kms, arg_obj, req->event, en);
> -	return ret;
> -}
> -
> -static int msm_event_client_count(struct drm_device *dev,
> -		struct drm_msm_event_req *req_event, bool locked)
> -{
> -	struct msm_drm_private *priv = dev->dev_private;
> -	unsigned long flag = 0;
> -	struct msm_drm_event *node;
> -	int count = 0;
> -
> -	if (!locked)
> -		spin_lock_irqsave(&dev->event_lock, flag);
> -	list_for_each_entry(node, &priv->client_event_list, base.link) {
> -		if (node->event.type == req_event->event &&
> -			node->info.object_id == req_event->object_id)
> -			count++;
> -	}
> -	if (!locked)
> -		spin_unlock_irqrestore(&dev->event_lock, flag);
> -
> -	return count;
> -}
> -
> -static int msm_ioctl_register_event(struct drm_device *dev, void *data,
> -				    struct drm_file *file)
> -{
> -	struct msm_drm_private *priv = dev->dev_private;
> -	struct drm_msm_event_req *req_event = data;
> -	struct msm_drm_event *client, *node;
> -	unsigned long flag = 0;
> -	bool dup_request = false;
> -	int ret = 0, count = 0;
> -
> -	ret = msm_drm_object_supports_event(dev, req_event, file);
> -	if (ret) {
> -		DRM_ERROR("unsupported event %x object %x object id %d\n",
> -			req_event->event, req_event->object_type,
> -			req_event->object_id);
> -		return ret;
> -	}
> -
> -	spin_lock_irqsave(&dev->event_lock, flag);
> -	list_for_each_entry(node, &priv->client_event_list, base.link) {
> -		if (node->base.file_priv != file)
> -			continue;
> -		if (node->event.type == req_event->event &&
> -			node->info.object_id == req_event->object_id) {
> -			DRM_DEBUG("duplicate request for event %x obj id %d\n",
> -				node->event.type, node->info.object_id);
> -			dup_request = true;
> -			break;
> -		}
> -	}
> -	spin_unlock_irqrestore(&dev->event_lock, flag);
> -
> -	if (dup_request)
> -		return -EALREADY;
> -
> -	client = kzalloc(sizeof(*client), GFP_KERNEL);
> -	if (!client)
> -		return -ENOMEM;
> -
> -	client->base.file_priv = file;
> -	client->base.event = &client->event;
> -	client->event.type = req_event->event;
> -	memcpy(&client->info, req_event, sizeof(client->info));
> -
> -	/* Get the count of clients that have registered for event.
> -	 * Event should be enabled for first client, for subsequent enable
> -	 * calls add to client list and return.
> -	 */
> -	count = msm_event_client_count(dev, req_event, false);
> -	/* Add current client to list */
> -	spin_lock_irqsave(&dev->event_lock, flag);
> -	list_add_tail(&client->base.link, &priv->client_event_list);
> -	spin_unlock_irqrestore(&dev->event_lock, flag);
> -
> -	if (count)
> -		return 0;
> -
> -	ret = msm_register_event(dev, req_event, file, true);
> -	if (ret) {
> -		DRM_ERROR("failed to enable event %x object %x object id %d\n",
> -			req_event->event, req_event->object_type,
> -			req_event->object_id);
> -		spin_lock_irqsave(&dev->event_lock, flag);
> -		list_del(&client->base.link);
> -		spin_unlock_irqrestore(&dev->event_lock, flag);
> -		kfree(client);
> -	}
> -	return ret;
> -}
> -
> -static int msm_ioctl_deregister_event(struct drm_device *dev, void *data,
> -				      struct drm_file *file)
> -{
> -	struct msm_drm_private *priv = dev->dev_private;
> -	struct drm_msm_event_req *req_event = data;
> -	struct msm_drm_event *client = NULL, *node, *temp;
> -	unsigned long flag = 0;
> -	int count = 0;
> -	bool found = false;
> -	int ret = 0;
> -
> -	ret = msm_drm_object_supports_event(dev, req_event, file);
> -	if (ret) {
> -		DRM_ERROR("unsupported event %x object %x object id %d\n",
> -			req_event->event, req_event->object_type,
> -			req_event->object_id);
> -		return ret;
> -	}
> -
> -	spin_lock_irqsave(&dev->event_lock, flag);
> -	list_for_each_entry_safe(node, temp, &priv->client_event_list,
> -			base.link) {
> -		if (node->event.type == req_event->event &&
> -		    node->info.object_id == req_event->object_id &&
> -		    node->base.file_priv == file) {
> -			client = node;
> -			list_del(&client->base.link);
> -			found = true;
> -			kfree(client);
> -			break;
> -		}
> -	}
> -	spin_unlock_irqrestore(&dev->event_lock, flag);
> -
> -	if (!found)
> -		return -ENOENT;
> -
> -	count = msm_event_client_count(dev, req_event, false);
> -	if (!count)
> -		ret = msm_register_event(dev, req_event, file, false);
> -
> -	return ret;
> -}
> -
>  void msm_mode_object_event_notify(struct drm_mode_object *obj,
>  		struct drm_device *dev, struct drm_event *event, u8 *payload)
>  {
> @@ -1452,29 +1278,6 @@ void msm_mode_object_event_notify(struct drm_mode_object *obj,
>  
>  static int msm_release(struct inode *inode, struct file *filp)
>  {
> -	struct drm_file *file_priv = filp->private_data;
> -	struct drm_minor *minor = file_priv->minor;
> -	struct drm_device *dev = minor->dev;
> -	struct msm_drm_private *priv = dev->dev_private;
> -	struct msm_drm_event *node, *temp;
> -	u32 count;
> -	unsigned long flags;
> -
> -	spin_lock_irqsave(&dev->event_lock, flags);
> -	list_for_each_entry_safe(node, temp, &priv->client_event_list,
> -			base.link) {
> -		if (node->base.file_priv != file_priv)
> -			continue;
> -		list_del(&node->base.link);
> -		spin_unlock_irqrestore(&dev->event_lock, flags);
> -		count = msm_event_client_count(dev, &node->info, true);
> -		if (!count)
> -			msm_register_event(dev, &node->info, file_priv, false);
> -		kfree(node);
> -		spin_lock_irqsave(&dev->event_lock, flags);
> -	}
> -	spin_unlock_irqrestore(&dev->event_lock, flags);
> -
>  	return drm_release(inode, filp);
>  }
>  
> @@ -1595,10 +1398,6 @@ int msm_ioctl_rmfb2(struct drm_device *dev, void *data,
>  #ifdef CONFIG_DRM_MSM_WRITEBACK
>  	DRM_IOCTL_DEF_DRV(DPU_WB_CONFIG, dpu_wb_config, DRM_UNLOCKED|DRM_AUTH),
>  #endif
> -	DRM_IOCTL_DEF_DRV(MSM_REGISTER_EVENT,  msm_ioctl_register_event,
> -			  DRM_UNLOCKED|DRM_CONTROL_ALLOW),
> -	DRM_IOCTL_DEF_DRV(MSM_DEREGISTER_EVENT,  msm_ioctl_deregister_event,
> -			  DRM_UNLOCKED|DRM_CONTROL_ALLOW),
>  	DRM_IOCTL_DEF_DRV(MSM_RMFB2, msm_ioctl_rmfb2,
>  			  DRM_CONTROL_ALLOW|DRM_UNLOCKED),
>  };
> diff --git a/drivers/gpu/drm/msm/msm_kms.h b/drivers/gpu/drm/msm/msm_kms.h
> index 25800c0..0ae1deb 100644
> --- a/drivers/gpu/drm/msm/msm_kms.h
> +++ b/drivers/gpu/drm/msm/msm_kms.h
> @@ -94,8 +94,6 @@ struct msm_kms_funcs {
>  	void (*preclose)(struct msm_kms *kms, struct drm_file *file);
>  	void (*postclose)(struct msm_kms *kms, struct drm_file *file);
>  	void (*lastclose)(struct msm_kms *kms);
> -	int (*register_events)(struct msm_kms *kms,
> -			struct drm_mode_object *obj, u32 event, bool en);
>  	void (*set_encoder_mode)(struct msm_kms *kms,
>  				 struct drm_encoder *encoder,
>  				 bool cmd_mode);
> -- 
> The Qualcomm Innovation Center, Inc. is a member of the Code Aurora Forum,
> a Linux Foundation Collaborative Project
> 
> --
> To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

-- 
Sean Paul, Software Engineer, Google / Chromium OS
--
To unsubscribe from this list: send the line "unsubscribe linux-arm-msm" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [Linux for Sparc]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux