diff options
Diffstat (limited to 'drivers/gpu/drm/exynos/exynos_drm_ipp.c')
| -rw-r--r-- | drivers/gpu/drm/exynos/exynos_drm_ipp.c | 28 | 
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 49eebe948ed..0bda96454a0 100644 --- a/drivers/gpu/drm/exynos/exynos_drm_ipp.c +++ b/drivers/gpu/drm/exynos/exynos_drm_ipp.c @@ -27,7 +27,7 @@  #include "exynos_drm_iommu.h"  /* - * IPP is stand for Image Post Processing and + * IPP stands for Image Post Processing and   * supports image scaler/rotator and input/output DMA operations.   * using FIMC, GSC, Rotator, so on.   * IPP is integration device driver of same attribute h/w @@ -1292,7 +1292,7 @@ static int ipp_start_property(struct exynos_drm_ippdrv *ippdrv,  	DRM_DEBUG_KMS("%s:prop_id[%d]\n", __func__, property->prop_id);  	/* store command info in ippdrv */ -	ippdrv->cmd = c_node; +	ippdrv->c_node = c_node;  	if (!ipp_check_mem_list(c_node)) {  		DRM_DEBUG_KMS("%s:empty memory.\n", __func__); @@ -1303,7 +1303,7 @@ static int ipp_start_property(struct exynos_drm_ippdrv *ippdrv,  	ret = ipp_set_property(ippdrv, property);  	if (ret) {  		DRM_ERROR("failed to set property.\n"); -		ippdrv->cmd = NULL; +		ippdrv->c_node = NULL;  		return ret;  	} @@ -1487,11 +1487,6 @@ void ipp_sched_cmd(struct work_struct *work)  	mutex_lock(&c_node->cmd_lock);  	property = &c_node->property; -	if (!property) { -		DRM_ERROR("failed to get property:prop_id[%d]\n", -			c_node->property.prop_id); -		goto err_unlock; -	}  	switch (cmd_work->ctrl) {  	case IPP_CTRL_PLAY: @@ -1704,7 +1699,7 @@ void ipp_sched_event(struct work_struct *work)  		return;  	} -	c_node = ippdrv->cmd; +	c_node = ippdrv->c_node;  	if (!c_node) {  		DRM_ERROR("failed to get command node.\n");  		return; @@ -1888,14 +1883,14 @@ err_clear:  	return;  } -static int __devinit ipp_probe(struct platform_device *pdev) +static int ipp_probe(struct platform_device *pdev)  {  	struct device *dev = &pdev->dev;  	struct ipp_context *ctx;  	struct exynos_drm_subdrv *subdrv;  	int ret; -	ctx = kzalloc(sizeof(*ctx), GFP_KERNEL); +	ctx = devm_kzalloc(&pdev->dev, sizeof(*ctx), GFP_KERNEL);  	if (!ctx)  		return -ENOMEM; @@ -1916,8 +1911,7 @@ static int __devinit ipp_probe(struct platform_device *pdev)  	ctx->event_workq = create_singlethread_workqueue("ipp_event");  	if (!ctx->event_workq) {  		dev_err(dev, "failed to create event workqueue\n"); -		ret = -EINVAL; -		goto err_clear; +		return -EINVAL;  	}  	/* @@ -1958,12 +1952,10 @@ err_cmd_workq:  	destroy_workqueue(ctx->cmd_workq);  err_event_workq:  	destroy_workqueue(ctx->event_workq); -err_clear: -	kfree(ctx);  	return ret;  } -static int __devexit ipp_remove(struct platform_device *pdev) +static int ipp_remove(struct platform_device *pdev)  {  	struct ipp_context *ctx = platform_get_drvdata(pdev); @@ -1985,8 +1977,6 @@ static int __devexit ipp_remove(struct platform_device *pdev)  	destroy_workqueue(ctx->cmd_workq);  	destroy_workqueue(ctx->event_workq); -	kfree(ctx); -  	return 0;  } @@ -2050,7 +2040,7 @@ static const struct dev_pm_ops ipp_pm_ops = {  struct platform_driver ipp_driver = {  	.probe		= ipp_probe, -	.remove		= __devexit_p(ipp_remove), +	.remove		= ipp_remove,  	.driver		= {  		.name	= "exynos-drm-ipp",  		.owner	= THIS_MODULE,  |