diff options
Diffstat (limited to 'drivers/staging/imx-drm/ipu-v3')
-rw-r--r-- | drivers/staging/imx-drm/ipu-v3/ipu-common.c | 17 | ||||
-rw-r--r-- | drivers/staging/imx-drm/ipu-v3/ipu-dc.c | 5 | ||||
-rw-r--r-- | drivers/staging/imx-drm/ipu-v3/ipu-di.c | 4 | ||||
-rw-r--r-- | drivers/staging/imx-drm/ipu-v3/ipu-dp.c | 13 |
4 files changed, 23 insertions, 16 deletions
diff --git a/drivers/staging/imx-drm/ipu-v3/ipu-common.c b/drivers/staging/imx-drm/ipu-v3/ipu-common.c index e35d0bf03c7b..ba464e5d9f12 100644 --- a/drivers/staging/imx-drm/ipu-v3/ipu-common.c +++ b/drivers/staging/imx-drm/ipu-v3/ipu-common.c @@ -1075,21 +1075,23 @@ static int ipu_probe(struct platform_device *pdev) ipu->cpmem_base = devm_ioremap(&pdev->dev, ipu_base + devtype->cpmem_ofs, PAGE_SIZE); - if (!ipu->cm_reg || !ipu->idmac_reg || !ipu->cpmem_base) { - ret = -ENOMEM; - goto failed_ioremap; - } + if (!ipu->cm_reg || !ipu->idmac_reg || !ipu->cpmem_base) + return -ENOMEM; ipu->clk = devm_clk_get(&pdev->dev, "bus"); if (IS_ERR(ipu->clk)) { ret = PTR_ERR(ipu->clk); dev_err(&pdev->dev, "clk_get failed with %d", ret); - goto failed_clk_get; + return ret; } platform_set_drvdata(pdev, ipu); - clk_prepare_enable(ipu->clk); + ret = clk_prepare_enable(ipu->clk); + if (ret) { + dev_err(&pdev->dev, "clk_prepare_enable failed: %d\n", ret); + return ret; + } ipu->dev = &pdev->dev; ipu->irq_sync = irq_sync; @@ -1134,8 +1136,6 @@ out_failed_reset: ipu_irq_exit(ipu); out_failed_irq: clk_disable_unprepare(ipu->clk); -failed_clk_get: -failed_ioremap: return ret; } @@ -1163,6 +1163,7 @@ static struct platform_driver imx_ipu_driver = { module_platform_driver(imx_ipu_driver); +MODULE_ALIAS("platform:imx-ipuv3"); MODULE_DESCRIPTION("i.MX IPU v3 driver"); MODULE_AUTHOR("Sascha Hauer <s.hauer@pengutronix.de>"); MODULE_LICENSE("GPL"); diff --git a/drivers/staging/imx-drm/ipu-v3/ipu-dc.c b/drivers/staging/imx-drm/ipu-v3/ipu-dc.c index 59f03f9aefc3..21bf1c806528 100644 --- a/drivers/staging/imx-drm/ipu-v3/ipu-dc.c +++ b/drivers/staging/imx-drm/ipu-v3/ipu-dc.c @@ -161,14 +161,15 @@ int ipu_dc_init_sync(struct ipu_dc *dc, struct ipu_di *di, bool interlaced, u32 pixel_fmt, u32 width) { struct ipu_dc_priv *priv = dc->priv; - u32 reg = 0, map; + u32 reg = 0; + int map; dc->di = ipu_di_get_num(di); map = ipu_pixfmt_to_map(pixel_fmt); if (map < 0) { dev_dbg(priv->dev, "IPU_DISP: No MAP\n"); - return -EINVAL; + return map; } if (interlaced) { diff --git a/drivers/staging/imx-drm/ipu-v3/ipu-di.c b/drivers/staging/imx-drm/ipu-v3/ipu-di.c index 0b6806e2069c..948a49b289ef 100644 --- a/drivers/staging/imx-drm/ipu-v3/ipu-di.c +++ b/drivers/staging/imx-drm/ipu-v3/ipu-di.c @@ -654,7 +654,9 @@ EXPORT_SYMBOL_GPL(ipu_di_init_sync_panel); int ipu_di_enable(struct ipu_di *di) { - clk_prepare_enable(di->clk_di_pixel); + int ret = clk_prepare_enable(di->clk_di_pixel); + if (ret) + return ret; ipu_module_enable(di->ipu, di->module); diff --git a/drivers/staging/imx-drm/ipu-v3/ipu-dp.c b/drivers/staging/imx-drm/ipu-v3/ipu-dp.c index 113b046c0225..231afd6c60f8 100644 --- a/drivers/staging/imx-drm/ipu-v3/ipu-dp.c +++ b/drivers/staging/imx-drm/ipu-v3/ipu-dp.c @@ -46,6 +46,8 @@ #define DP_COM_CONF_CSC_DEF_BG (2 << 8) #define DP_COM_CONF_CSC_DEF_BOTH (1 << 8) +#define IPUV3_NUM_FLOWS 3 + struct ipu_dp_priv; struct ipu_dp { @@ -67,7 +69,7 @@ struct ipu_dp_priv { struct ipu_soc *ipu; struct device *dev; void __iomem *base; - struct ipu_flow flow[3]; + struct ipu_flow flow[IPUV3_NUM_FLOWS]; struct mutex mutex; int use_count; }; @@ -280,7 +282,7 @@ struct ipu_dp *ipu_dp_get(struct ipu_soc *ipu, unsigned int flow) struct ipu_dp_priv *priv = ipu->dp_priv; struct ipu_dp *dp; - if (flow > 5) + if ((flow >> 1) >= IPUV3_NUM_FLOWS) return ERR_PTR(-EINVAL); if (flow & 1) @@ -309,19 +311,20 @@ int ipu_dp_init(struct ipu_soc *ipu, struct device *dev, unsigned long base) int i; priv = devm_kzalloc(dev, sizeof(*priv), GFP_KERNEL); + if (!priv) + return -ENOMEM; priv->dev = dev; priv->ipu = ipu; ipu->dp_priv = priv; priv->base = devm_ioremap(dev, base, PAGE_SIZE); - if (!priv->base) { + if (!priv->base) return -ENOMEM; - } mutex_init(&priv->mutex); - for (i = 0; i < 3; i++) { + for (i = 0; i < IPUV3_NUM_FLOWS; i++) { priv->flow[i].foreground.foreground = 1; priv->flow[i].base = priv->base + ipu_dp_flow_base[i]; priv->flow[i].priv = priv; |