diff options
Diffstat (limited to 'drivers/gpu/drm/imx')
| -rw-r--r-- | drivers/gpu/drm/imx/dcss/dcss-blkctl.c | 13 | ||||
| -rw-r--r-- | drivers/gpu/drm/imx/dcss/dcss-ctxld.c | 14 | ||||
| -rw-r--r-- | drivers/gpu/drm/imx/dcss/dcss-dev.c | 17 | ||||
| -rw-r--r-- | drivers/gpu/drm/imx/dcss/dcss-dev.h | 1 | ||||
| -rw-r--r-- | drivers/gpu/drm/imx/dcss/dcss-dpr.c | 21 | ||||
| -rw-r--r-- | drivers/gpu/drm/imx/dcss/dcss-drv.c | 12 | ||||
| -rw-r--r-- | drivers/gpu/drm/imx/dcss/dcss-dtg.c | 26 | ||||
| -rw-r--r-- | drivers/gpu/drm/imx/dcss/dcss-scaler.c | 21 | ||||
| -rw-r--r-- | drivers/gpu/drm/imx/dcss/dcss-ss.c | 12 | ||||
| -rw-r--r-- | drivers/gpu/drm/imx/ipuv3/imx-ldb.c | 2 | 
10 files changed, 30 insertions, 109 deletions
| diff --git a/drivers/gpu/drm/imx/dcss/dcss-blkctl.c b/drivers/gpu/drm/imx/dcss/dcss-blkctl.c index c9b54bb2692d..803e3fcdb50f 100644 --- a/drivers/gpu/drm/imx/dcss/dcss-blkctl.c +++ b/drivers/gpu/drm/imx/dcss/dcss-blkctl.c @@ -42,14 +42,13 @@ int dcss_blkctl_init(struct dcss_dev *dcss, unsigned long blkctl_base)  {  	struct dcss_blkctl *blkctl; -	blkctl = kzalloc(sizeof(*blkctl), GFP_KERNEL); +	blkctl = devm_kzalloc(dcss->dev, sizeof(*blkctl), GFP_KERNEL);  	if (!blkctl)  		return -ENOMEM; -	blkctl->base_reg = ioremap(blkctl_base, SZ_4K); +	blkctl->base_reg = devm_ioremap(dcss->dev, blkctl_base, SZ_4K);  	if (!blkctl->base_reg) {  		dev_err(dcss->dev, "unable to remap BLK CTRL base\n"); -		kfree(blkctl);  		return -ENOMEM;  	} @@ -60,11 +59,3 @@ int dcss_blkctl_init(struct dcss_dev *dcss, unsigned long blkctl_base)  	return 0;  } - -void dcss_blkctl_exit(struct dcss_blkctl *blkctl) -{ -	if (blkctl->base_reg) -		iounmap(blkctl->base_reg); - -	kfree(blkctl); -} diff --git a/drivers/gpu/drm/imx/dcss/dcss-ctxld.c b/drivers/gpu/drm/imx/dcss/dcss-ctxld.c index 3a84cb3209c4..e41d5c2a3ea4 100644 --- a/drivers/gpu/drm/imx/dcss/dcss-ctxld.c +++ b/drivers/gpu/drm/imx/dcss/dcss-ctxld.c @@ -202,7 +202,7 @@ int dcss_ctxld_init(struct dcss_dev *dcss, unsigned long ctxld_base)  	struct dcss_ctxld *ctxld;  	int ret; -	ctxld = kzalloc(sizeof(*ctxld), GFP_KERNEL); +	ctxld = devm_kzalloc(dcss->dev, sizeof(*ctxld), GFP_KERNEL);  	if (!ctxld)  		return -ENOMEM; @@ -217,7 +217,7 @@ int dcss_ctxld_init(struct dcss_dev *dcss, unsigned long ctxld_base)  		goto err;  	} -	ctxld->ctxld_reg = ioremap(ctxld_base, SZ_4K); +	ctxld->ctxld_reg = devm_ioremap(dcss->dev, ctxld_base, SZ_4K);  	if (!ctxld->ctxld_reg) {  		dev_err(dcss->dev, "ctxld: unable to remap ctxld base\n");  		ret = -ENOMEM; @@ -226,18 +226,14 @@ int dcss_ctxld_init(struct dcss_dev *dcss, unsigned long ctxld_base)  	ret = dcss_ctxld_irq_config(ctxld, to_platform_device(dcss->dev));  	if (ret) -		goto err_irq; +		goto err;  	dcss_ctxld_hw_cfg(ctxld);  	return 0; -err_irq: -	iounmap(ctxld->ctxld_reg); -  err:  	dcss_ctxld_free_ctx(ctxld); -	kfree(ctxld);  	return ret;  } @@ -246,11 +242,7 @@ void dcss_ctxld_exit(struct dcss_ctxld *ctxld)  {  	free_irq(ctxld->irq, ctxld); -	if (ctxld->ctxld_reg) -		iounmap(ctxld->ctxld_reg); -  	dcss_ctxld_free_ctx(ctxld); -	kfree(ctxld);  }  static int dcss_ctxld_enable_locked(struct dcss_ctxld *ctxld) diff --git a/drivers/gpu/drm/imx/dcss/dcss-dev.c b/drivers/gpu/drm/imx/dcss/dcss-dev.c index 4f3af0dfb344..7fd0c4c14205 100644 --- a/drivers/gpu/drm/imx/dcss/dcss-dev.c +++ b/drivers/gpu/drm/imx/dcss/dcss-dev.c @@ -109,8 +109,6 @@ dtg_err:  	dcss_ctxld_exit(dcss->ctxld);  ctxld_err: -	dcss_blkctl_exit(dcss->blkctl); -  	dcss_clocks_disable(dcss);  	return ret; @@ -124,7 +122,6 @@ static void dcss_submodules_stop(struct dcss_dev *dcss)  	dcss_ss_exit(dcss->ss);  	dcss_dtg_exit(dcss->dtg);  	dcss_ctxld_exit(dcss->ctxld); -	dcss_blkctl_exit(dcss->blkctl);  	dcss_clocks_disable(dcss);  } @@ -183,7 +180,12 @@ struct dcss_dev *dcss_dev_create(struct device *dev, bool hdmi_output)  		return ERR_PTR(-EINVAL);  	} -	dcss = kzalloc(sizeof(*dcss), GFP_KERNEL); +	if (!devm_request_mem_region(dev, res->start, resource_size(res), "dcss")) { +		dev_err(dev, "cannot request memory region\n"); +		return ERR_PTR(-EBUSY); +	} + +	dcss = devm_kzalloc(dev, sizeof(*dcss), GFP_KERNEL);  	if (!dcss)  		return ERR_PTR(-ENOMEM); @@ -194,7 +196,7 @@ struct dcss_dev *dcss_dev_create(struct device *dev, bool hdmi_output)  	ret = dcss_clks_init(dcss);  	if (ret) {  		dev_err(dev, "clocks initialization failed\n"); -		goto err; +		return ERR_PTR(ret);  	}  	dcss->of_port = of_graph_get_port_by_id(dev->of_node, 0); @@ -226,9 +228,6 @@ struct dcss_dev *dcss_dev_create(struct device *dev, bool hdmi_output)  clks_err:  	dcss_clks_release(dcss); -err: -	kfree(dcss); -  	return ERR_PTR(ret);  } @@ -246,8 +245,6 @@ void dcss_dev_destroy(struct dcss_dev *dcss)  	dcss_submodules_stop(dcss);  	dcss_clks_release(dcss); - -	kfree(dcss);  }  static int dcss_dev_suspend(struct device *dev) diff --git a/drivers/gpu/drm/imx/dcss/dcss-dev.h b/drivers/gpu/drm/imx/dcss/dcss-dev.h index f27b87c09599..b032e873d227 100644 --- a/drivers/gpu/drm/imx/dcss/dcss-dev.h +++ b/drivers/gpu/drm/imx/dcss/dcss-dev.h @@ -104,7 +104,6 @@ extern const struct dev_pm_ops dcss_dev_pm_ops;  /* BLKCTL */  int dcss_blkctl_init(struct dcss_dev *dcss, unsigned long blkctl_base);  void dcss_blkctl_cfg(struct dcss_blkctl *blkctl); -void dcss_blkctl_exit(struct dcss_blkctl *blkctl);  /* CTXLD */  int dcss_ctxld_init(struct dcss_dev *dcss, unsigned long ctxld_base); diff --git a/drivers/gpu/drm/imx/dcss/dcss-dpr.c b/drivers/gpu/drm/imx/dcss/dcss-dpr.c index df9dab949bf2..072eb209249f 100644 --- a/drivers/gpu/drm/imx/dcss/dcss-dpr.c +++ b/drivers/gpu/drm/imx/dcss/dcss-dpr.c @@ -135,7 +135,7 @@ static int dcss_dpr_ch_init_all(struct dcss_dpr *dpr, unsigned long dpr_base)  		ch->base_ofs = dpr_base + i * 0x1000; -		ch->base_reg = ioremap(ch->base_ofs, SZ_4K); +		ch->base_reg = devm_ioremap(dpr->dev, ch->base_ofs, SZ_4K);  		if (!ch->base_reg) {  			dev_err(dpr->dev, "dpr: unable to remap ch %d base\n",  				i); @@ -155,7 +155,7 @@ int dcss_dpr_init(struct dcss_dev *dcss, unsigned long dpr_base)  {  	struct dcss_dpr *dpr; -	dpr = kzalloc(sizeof(*dpr), GFP_KERNEL); +	dpr = devm_kzalloc(dcss->dev, sizeof(*dpr), GFP_KERNEL);  	if (!dpr)  		return -ENOMEM; @@ -164,18 +164,8 @@ int dcss_dpr_init(struct dcss_dev *dcss, unsigned long dpr_base)  	dpr->ctxld = dcss->ctxld;  	dpr->ctx_id = CTX_SB_HP; -	if (dcss_dpr_ch_init_all(dpr, dpr_base)) { -		int i; - -		for (i = 0; i < 3; i++) { -			if (dpr->ch[i].base_reg) -				iounmap(dpr->ch[i].base_reg); -		} - -		kfree(dpr); - +	if (dcss_dpr_ch_init_all(dpr, dpr_base))  		return -ENOMEM; -	}  	return 0;  } @@ -189,12 +179,7 @@ void dcss_dpr_exit(struct dcss_dpr *dpr)  		struct dcss_dpr_ch *ch = &dpr->ch[ch_no];  		dcss_writel(0, ch->base_reg + DCSS_DPR_SYSTEM_CTRL0); - -		if (ch->base_reg) -			iounmap(ch->base_reg);  	} - -	kfree(dpr);  }  static u32 dcss_dpr_x_pix_wide_adjust(struct dcss_dpr_ch *ch, u32 pix_wide, diff --git a/drivers/gpu/drm/imx/dcss/dcss-drv.c b/drivers/gpu/drm/imx/dcss/dcss-drv.c index ad5f29ea8f6a..d881f5a34760 100644 --- a/drivers/gpu/drm/imx/dcss/dcss-drv.c +++ b/drivers/gpu/drm/imx/dcss/dcss-drv.c @@ -51,15 +51,13 @@ static int dcss_drv_platform_probe(struct platform_device *pdev)  	of_node_put(remote); -	mdrv = kzalloc(sizeof(*mdrv), GFP_KERNEL); +	mdrv = devm_kzalloc(dev, sizeof(*mdrv), GFP_KERNEL);  	if (!mdrv)  		return -ENOMEM;  	mdrv->dcss = dcss_dev_create(dev, hdmi_output); -	if (IS_ERR(mdrv->dcss)) { -		err = PTR_ERR(mdrv->dcss); -		goto err; -	} +	if (IS_ERR(mdrv->dcss)) +		return PTR_ERR(mdrv->dcss);  	dev_set_drvdata(dev, mdrv); @@ -75,8 +73,6 @@ static int dcss_drv_platform_probe(struct platform_device *pdev)  dcss_shutoff:  	dcss_dev_destroy(mdrv->dcss); -err: -	kfree(mdrv);  	return err;  } @@ -86,8 +82,6 @@ static void dcss_drv_platform_remove(struct platform_device *pdev)  	dcss_kms_detach(mdrv->kms);  	dcss_dev_destroy(mdrv->dcss); - -	kfree(mdrv);  }  static void dcss_drv_platform_shutdown(struct platform_device *pdev) diff --git a/drivers/gpu/drm/imx/dcss/dcss-dtg.c b/drivers/gpu/drm/imx/dcss/dcss-dtg.c index 30de00540f63..2968f5d5bd41 100644 --- a/drivers/gpu/drm/imx/dcss/dcss-dtg.c +++ b/drivers/gpu/drm/imx/dcss/dcss-dtg.c @@ -152,7 +152,7 @@ int dcss_dtg_init(struct dcss_dev *dcss, unsigned long dtg_base)  	int ret = 0;  	struct dcss_dtg *dtg; -	dtg = kzalloc(sizeof(*dtg), GFP_KERNEL); +	dtg = devm_kzalloc(dcss->dev, sizeof(*dtg), GFP_KERNEL);  	if (!dtg)  		return -ENOMEM; @@ -160,11 +160,10 @@ int dcss_dtg_init(struct dcss_dev *dcss, unsigned long dtg_base)  	dtg->dev = dcss->dev;  	dtg->ctxld = dcss->ctxld; -	dtg->base_reg = ioremap(dtg_base, SZ_4K); +	dtg->base_reg = devm_ioremap(dtg->dev, dtg_base, SZ_4K);  	if (!dtg->base_reg) { -		dev_err(dcss->dev, "dtg: unable to remap dtg base\n"); -		ret = -ENOMEM; -		goto err_ioremap; +		dev_err(dtg->dev, "dtg: unable to remap dtg base\n"); +		return -ENOMEM;  	}  	dtg->base_ofs = dtg_base; @@ -175,17 +174,7 @@ int dcss_dtg_init(struct dcss_dev *dcss, unsigned long dtg_base)  	dtg->control_status |= OVL_DATA_MODE | BLENDER_VIDEO_ALPHA_SEL |  		((dtg->alpha << DEFAULT_FG_ALPHA_POS) & DEFAULT_FG_ALPHA_MASK); -	ret = dcss_dtg_irq_config(dtg, to_platform_device(dcss->dev)); -	if (ret) -		goto err_irq; - -	return 0; - -err_irq: -	iounmap(dtg->base_reg); - -err_ioremap: -	kfree(dtg); +	ret = dcss_dtg_irq_config(dtg, to_platform_device(dtg->dev));  	return ret;  } @@ -193,11 +182,6 @@ err_ioremap:  void dcss_dtg_exit(struct dcss_dtg *dtg)  {  	free_irq(dtg->ctxld_kick_irq, dtg); - -	if (dtg->base_reg) -		iounmap(dtg->base_reg); - -	kfree(dtg);  }  void dcss_dtg_sync_set(struct dcss_dtg *dtg, struct videomode *vm) diff --git a/drivers/gpu/drm/imx/dcss/dcss-scaler.c b/drivers/gpu/drm/imx/dcss/dcss-scaler.c index 47852b9dd5ea..825728c356ff 100644 --- a/drivers/gpu/drm/imx/dcss/dcss-scaler.c +++ b/drivers/gpu/drm/imx/dcss/dcss-scaler.c @@ -302,7 +302,7 @@ static int dcss_scaler_ch_init_all(struct dcss_scaler *scl,  		ch->base_ofs = scaler_base + i * 0x400; -		ch->base_reg = ioremap(ch->base_ofs, SZ_4K); +		ch->base_reg = devm_ioremap(scl->dev, ch->base_ofs, SZ_4K);  		if (!ch->base_reg) {  			dev_err(scl->dev, "scaler: unable to remap ch base\n");  			return -ENOMEM; @@ -318,7 +318,7 @@ int dcss_scaler_init(struct dcss_dev *dcss, unsigned long scaler_base)  {  	struct dcss_scaler *scaler; -	scaler = kzalloc(sizeof(*scaler), GFP_KERNEL); +	scaler = devm_kzalloc(dcss->dev, sizeof(*scaler), GFP_KERNEL);  	if (!scaler)  		return -ENOMEM; @@ -327,18 +327,8 @@ int dcss_scaler_init(struct dcss_dev *dcss, unsigned long scaler_base)  	scaler->ctxld = dcss->ctxld;  	scaler->ctx_id = CTX_SB_HP; -	if (dcss_scaler_ch_init_all(scaler, scaler_base)) { -		int i; - -		for (i = 0; i < 3; i++) { -			if (scaler->ch[i].base_reg) -				iounmap(scaler->ch[i].base_reg); -		} - -		kfree(scaler); - +	if (dcss_scaler_ch_init_all(scaler, scaler_base))  		return -ENOMEM; -	}  	return 0;  } @@ -351,12 +341,7 @@ void dcss_scaler_exit(struct dcss_scaler *scl)  		struct dcss_scaler_ch *ch = &scl->ch[ch_no];  		dcss_writel(0, ch->base_reg + DCSS_SCALER_CTRL); - -		if (ch->base_reg) -			iounmap(ch->base_reg);  	} - -	kfree(scl);  }  void dcss_scaler_ch_enable(struct dcss_scaler *scl, int ch_num, bool en) diff --git a/drivers/gpu/drm/imx/dcss/dcss-ss.c b/drivers/gpu/drm/imx/dcss/dcss-ss.c index 8ddf08da911b..0df81866fb7b 100644 --- a/drivers/gpu/drm/imx/dcss/dcss-ss.c +++ b/drivers/gpu/drm/imx/dcss/dcss-ss.c @@ -83,7 +83,7 @@ int dcss_ss_init(struct dcss_dev *dcss, unsigned long ss_base)  {  	struct dcss_ss *ss; -	ss = kzalloc(sizeof(*ss), GFP_KERNEL); +	ss = devm_kzalloc(dcss->dev, sizeof(*ss), GFP_KERNEL);  	if (!ss)  		return -ENOMEM; @@ -91,10 +91,9 @@ int dcss_ss_init(struct dcss_dev *dcss, unsigned long ss_base)  	ss->dev = dcss->dev;  	ss->ctxld = dcss->ctxld; -	ss->base_reg = ioremap(ss_base, SZ_4K); +	ss->base_reg = devm_ioremap(ss->dev, ss_base, SZ_4K);  	if (!ss->base_reg) { -		dev_err(dcss->dev, "ss: unable to remap ss base\n"); -		kfree(ss); +		dev_err(ss->dev, "ss: unable to remap ss base\n");  		return -ENOMEM;  	} @@ -108,11 +107,6 @@ void dcss_ss_exit(struct dcss_ss *ss)  {  	/* stop SS */  	dcss_writel(0, ss->base_reg + DCSS_SS_SYS_CTRL); - -	if (ss->base_reg) -		iounmap(ss->base_reg); - -	kfree(ss);  }  void dcss_ss_subsam_set(struct dcss_ss *ss) diff --git a/drivers/gpu/drm/imx/ipuv3/imx-ldb.c b/drivers/gpu/drm/imx/ipuv3/imx-ldb.c index 53840ab054c7..71d70194fcbd 100644 --- a/drivers/gpu/drm/imx/ipuv3/imx-ldb.c +++ b/drivers/gpu/drm/imx/ipuv3/imx-ldb.c @@ -655,7 +655,7 @@ static int imx_ldb_probe(struct platform_device *pdev)  	for (i = 0; i < 4; i++) {  		char clkname[16]; -		sprintf(clkname, "di%d_sel", i); +		snprintf(clkname, sizeof(clkname), "di%d_sel", i);  		imx_ldb->clk_sel[i] = devm_clk_get(imx_ldb->dev, clkname);  		if (IS_ERR(imx_ldb->clk_sel[i])) {  			ret = PTR_ERR(imx_ldb->clk_sel[i]); |