aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrzej Hajda <a.hajda@samsung.com>2014-07-03 09:10:36 -0400
committerInki Dae <daeinki@gmail.com>2014-08-03 03:52:19 -0400
commit12ff54d25d0900a5a3d2f01a02280f15176ef4a3 (patch)
treee4161cc111b94a0ce4d9ac287b737f273ae9e932
parent57ace3358450f4701159521c23b379884300c8d0 (diff)
drm/exynos/ipp: simplify ipp_create_id
There is no gain in passing id by pointer to be filled. Signed-off-by: Andrzej Hajda <a.hajda@samsung.com> Signed-off-by: Inki Dae <inki.dae@samsung.com>
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_ipp.c28
1 files changed, 9 insertions, 19 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_ipp.c b/drivers/gpu/drm/exynos/exynos_drm_ipp.c
index 0552f62295a2..ae75a1d9aaba 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_ipp.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_ipp.c
@@ -145,20 +145,15 @@ int exynos_drm_ippdrv_unregister(struct exynos_drm_ippdrv *ippdrv)
145 return 0; 145 return 0;
146} 146}
147 147
148static int ipp_create_id(struct idr *id_idr, struct mutex *lock, void *obj, 148static int ipp_create_id(struct idr *id_idr, struct mutex *lock, void *obj)
149 u32 *idp)
150{ 149{
151 int ret; 150 int ret;
152 151
153 /* do the allocation under our mutexlock */
154 mutex_lock(lock); 152 mutex_lock(lock);
155 ret = idr_alloc(id_idr, obj, 1, 0, GFP_KERNEL); 153 ret = idr_alloc(id_idr, obj, 1, 0, GFP_KERNEL);
156 mutex_unlock(lock); 154 mutex_unlock(lock);
157 if (ret < 0)
158 return ret;
159 155
160 *idp = ret; 156 return ret;
161 return 0;
162} 157}
163 158
164static void ipp_remove_id(struct idr *id_idr, struct mutex *lock, u32 id) 159static void ipp_remove_id(struct idr *id_idr, struct mutex *lock, u32 id)
@@ -471,13 +466,12 @@ int exynos_drm_ipp_set_property(struct drm_device *drm_dev, void *data,
471 if (!c_node) 466 if (!c_node)
472 return -ENOMEM; 467 return -ENOMEM;
473 468
474 /* create property id */ 469 ret = ipp_create_id(&ctx->prop_idr, &ctx->prop_lock, c_node);
475 ret = ipp_create_id(&ctx->prop_idr, &ctx->prop_lock, c_node, 470 if (ret < 0) {
476 &property->prop_id);
477 if (ret) {
478 DRM_ERROR("failed to create id.\n"); 471 DRM_ERROR("failed to create id.\n");
479 goto err_clear; 472 goto err_clear;
480 } 473 }
474 property->prop_id = ret;
481 475
482 DRM_DEBUG_KMS("created prop_id[%d]cmd[%d]ippdrv[0x%x]\n", 476 DRM_DEBUG_KMS("created prop_id[%d]cmd[%d]ippdrv[0x%x]\n",
483 property->prop_id, property->cmd, (int)ippdrv); 477 property->prop_id, property->cmd, (int)ippdrv);
@@ -1636,21 +1630,17 @@ static int ipp_subdrv_probe(struct drm_device *drm_dev, struct device *dev)
1636 1630
1637 /* get ipp driver entry */ 1631 /* get ipp driver entry */
1638 list_for_each_entry(ippdrv, &exynos_drm_ippdrv_list, drv_list) { 1632 list_for_each_entry(ippdrv, &exynos_drm_ippdrv_list, drv_list) {
1639 u32 ipp_id;
1640
1641 ippdrv->drm_dev = drm_dev; 1633 ippdrv->drm_dev = drm_dev;
1642 1634
1643 ret = ipp_create_id(&ctx->ipp_idr, &ctx->ipp_lock, ippdrv, 1635 ret = ipp_create_id(&ctx->ipp_idr, &ctx->ipp_lock, ippdrv);
1644 &ipp_id); 1636 if (ret < 0) {
1645 if (ret || ipp_id == 0) {
1646 DRM_ERROR("failed to create id.\n"); 1637 DRM_ERROR("failed to create id.\n");
1647 goto err; 1638 goto err;
1648 } 1639 }
1640 ippdrv->prop_list.ipp_id = ret;
1649 1641
1650 DRM_DEBUG_KMS("count[%d]ippdrv[0x%x]ipp_id[%d]\n", 1642 DRM_DEBUG_KMS("count[%d]ippdrv[0x%x]ipp_id[%d]\n",
1651 count++, (int)ippdrv, ipp_id); 1643 count++, (int)ippdrv, ret);
1652
1653 ippdrv->prop_list.ipp_id = ipp_id;
1654 1644
1655 /* store parent device for node */ 1645 /* store parent device for node */
1656 ippdrv->parent_dev = dev; 1646 ippdrv->parent_dev = dev;