[PATCH v3 3/6] media: s5p-tv: Fix sdo driver to work with CCF
From: Tomasz Figa <hidden>
Date: 2013-08-29 13:14:54
Also in:
linux-devicetree, linux-media, linux-samsung-soc, lkml
Hi Mateusz, On Wednesday 28 of August 2013 18:13:01 Mateusz Krawczuk wrote:
quoted hunk ↗ jump to hunk
Replace clk_enable by clock_enable_prepare and clk_disable with clk_disable_unprepare. Clock prepare is required by Clock Common Framework, and old clock driver didn`t support it. Without it Common Clock Framework prints a warning. Signed-off-by: Mateusz Krawczuk <redacted> --- drivers/media/platform/s5p-tv/sdo_drv.c | 25 +++++++++++++++---------- 1 file changed, 15 insertions(+), 10 deletions(-)diff --git a/drivers/media/platform/s5p-tv/sdo_drv.cb/drivers/media/platform/s5p-tv/sdo_drv.c index 9dbdfe6..a79e620 100644--- a/drivers/media/platform/s5p-tv/sdo_drv.c +++ b/drivers/media/platform/s5p-tv/sdo_drv.c@@ -209,10 +209,10 @@ static int sdo_streamon(struct sdo_device *sdev) clk_get_rate(sdev->fout_vpll)); /* enable clock in SDO */ sdo_write_mask(sdev, SDO_CLKCON, ~0, SDO_TVOUT_CLOCK_ON); - ret = clk_enable(sdev->dacphy); + ret = clk_prepare_enable(sdev->dacphy); if (ret < 0) { dev_err(sdev->dev, - "clk_enable(dacphy) failed !\n"); + "clk_prepare_enable(dacphy) failed !\n");
nit: I haven't noticed this when reviewing previous patch, but please tone down those errors messages a bit, by removing the exclamation mark (and the space before it). We shouldn't be shouting at users. ;)
quoted hunk ↗ jump to hunk
goto fail; } /* enable DAC */@@ -230,7 +230,7 @@ static int sdo_streamoff(struct sdo_device *sdev) int tries; sdo_write_mask(sdev, SDO_DAC, 0, SDO_POWER_ON_DAC); - clk_disable(sdev->dacphy); + clk_disable_unprepare(sdev->dacphy); sdo_write_mask(sdev, SDO_CLKCON, 0, SDO_TVOUT_CLOCK_ON); for (tries = 100; tries; --tries) { if (sdo_read(sdev, SDO_CLKCON) & SDO_TVOUT_CLOCK_READY)@@ -274,7 +274,7 @@ static int sdo_runtime_suspend(struct device *dev) dev_info(dev, "suspend\n"); regulator_disable(sdev->vdet); regulator_disable(sdev->vdac); - clk_disable(sdev->sclk_dac); + clk_disable_unprepare(sdev->sclk_dac); return 0; }@@ -286,7 +286,7 @@ static int sdo_runtime_resume(struct device *dev) dev_info(dev, "resume\n"); - ret = clk_enable(sdev->sclk_dac); + ret = clk_prepare_enable(sdev->sclk_dac); if (ret < 0) return ret;@@ -319,7 +319,7 @@ static int sdo_runtime_resume(struct device *dev) vdac_r_dis: regulator_disable(sdev->vdac); dac_clk_dis: - clk_disable(sdev->sclk_dac); + clk_disable_unprepare(sdev->sclk_dac); return ret; }@@ -333,7 +333,7 @@ static int sdo_probe(struct platform_device *pdev) struct device *dev = &pdev->dev; struct sdo_device *sdev; struct resource *res; - int ret = 0; + int ret;
Hmm, this change doesn't look like belonging to this patch.
quoted hunk ↗ jump to hunk
struct clk *sclk_vpll; dev_info(dev, "probe start\n");@@ -425,8 +425,13 @@ static int sdo_probe(struct platform_device *pdev) } /* enable gate for dac clock, because mixer uses it */ - clk_enable(sdev->dac); - + ret = clk_prepare_enable(sdev->dac); + if (ret < 0) { + dev_err(dev, + "clk_prepare_enable_enable(dac) failed !\n"); + ret = PTR_ERR(sdev->dac);
Hmm, ret already contains the error value returned by clk_prepare_enable() here, so this looks like a copy paste error. Best regards, Tomasz
quoted hunk ↗ jump to hunk
+ goto fail_fout_vpll; + } /* configure power management */ pm_runtime_enable(dev);@@ -464,7 +469,7 @@ static int sdo_remove(struct platform_device *pdev) struct sdo_device *sdev = sd_to_sdev(sd); pm_runtime_disable(&pdev->dev); - clk_disable(sdev->dac); + clk_disable_unprepare(sdev->dac); clk_put(sdev->fout_vpll); clk_put(sdev->dacphy); clk_put(sdev->dac);