diff options
Diffstat (limited to 'drivers/staging/imx-drm/imx-tve.c')
-rw-r--r-- | drivers/staging/imx-drm/imx-tve.c | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/drivers/staging/imx-drm/imx-tve.c b/drivers/staging/imx-drm/imx-tve.c index a56797d88edc..3c024b40b4f8 100644 --- a/drivers/staging/imx-drm/imx-tve.c +++ b/drivers/staging/imx-drm/imx-tve.c @@ -131,12 +131,14 @@ struct imx_tve { }; static void tve_lock(void *__tve) +__acquires(&tve->lock) { struct imx_tve *tve = __tve; spin_lock(&tve->lock); } static void tve_unlock(void *__tve) +__releases(&tve->lock) { struct imx_tve *tve = __tve; spin_unlock(&tve->lock); @@ -164,7 +166,10 @@ static void tve_enable(struct imx_tve *tve) regmap_write(tve->regmap, TVE_INT_CONT_REG, 0); else regmap_write(tve->regmap, TVE_INT_CONT_REG, - TVE_CD_SM_IEN | TVE_CD_LM_IEN | TVE_CD_MON_END_IEN); + TVE_CD_SM_IEN | + TVE_CD_LM_IEN | + TVE_CD_MON_END_IEN); + spin_unlock_irqrestore(&tve->enable_lock, flags); } @@ -465,7 +470,9 @@ static int clk_tve_di_set_rate(struct clk_hw *hw, unsigned long rate, else val = TVE_DAC_FULL_RATE; - ret = regmap_update_bits(tve->regmap, TVE_COM_CONF_REG, TVE_DAC_SAMP_RATE_MASK, val); + ret = regmap_update_bits(tve->regmap, TVE_COM_CONF_REG, + TVE_DAC_SAMP_RATE_MASK, val); + if (ret < 0) { dev_err(tve->dev, "failed to set divider: %d\n", ret); return ret; @@ -609,13 +616,17 @@ static int imx_tve_probe(struct platform_device *pdev) } if (tve->mode == TVE_MODE_VGA) { - ret = of_property_read_u32(np, "fsl,hsync-pin", &tve->hsync_pin); + ret = of_property_read_u32(np, "fsl,hsync-pin", + &tve->hsync_pin); + if (ret < 0) { dev_err(&pdev->dev, "failed to get vsync pin\n"); return ret; } - ret |= of_property_read_u32(np, "fsl,vsync-pin", &tve->vsync_pin); + ret |= of_property_read_u32(np, "fsl,vsync-pin", + &tve->vsync_pin); + if (ret < 0) { dev_err(&pdev->dev, "failed to get vsync pin\n"); return ret; @@ -623,11 +634,6 @@ static int imx_tve_probe(struct platform_device *pdev) } res = platform_get_resource(pdev, IORESOURCE_MEM, 0); - if (!res) { - dev_err(&pdev->dev, "failed to get memory region\n"); - return -ENOENT; - } - base = devm_ioremap_resource(&pdev->dev, res); if (IS_ERR(base)) return PTR_ERR(base); @@ -743,3 +749,4 @@ module_platform_driver(imx_tve_driver); MODULE_DESCRIPTION("i.MX Television Encoder driver"); MODULE_AUTHOR("Philipp Zabel, Pengutronix"); MODULE_LICENSE("GPL"); +MODULE_ALIAS("platform:imx-tve"); |