clk_{un}prepare is mandatory for platforms using common clock framework. Since
this driver is used by SPEAr platform, which supports common clock framework,
add clk_{un}prepare() support for it.
Signed-off-by: Viresh Kumar <viresh.kumar@st.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Signed-off-by: Artem Bityutskiy <artem.bityutskiy@linux.intel.com>
Signed-off-by: David Woodhouse <David.Woodhouse@intel.com>
- ret = clk_enable(dev->clk);
+ ret = clk_prepare_enable(dev->clk);
+ goto err_clk_prepare_enable;
ret = request_irq(irq, spear_smi_int_handler, 0, pdev->name, dev);
if (ret) {
ret = request_irq(irq, spear_smi_int_handler, 0, pdev->name, dev);
if (ret) {
free_irq(irq, dev);
platform_set_drvdata(pdev, NULL);
err_irq:
free_irq(irq, dev);
platform_set_drvdata(pdev, NULL);
err_irq:
- clk_disable(dev->clk);
-err_clk_enable:
+ clk_disable_unprepare(dev->clk);
+err_clk_prepare_enable:
clk_put(dev->clk);
err_clk:
iounmap(dev->io_base);
clk_put(dev->clk);
err_clk:
iounmap(dev->io_base);
irq = platform_get_irq(pdev, 0);
free_irq(irq, dev);
irq = platform_get_irq(pdev, 0);
free_irq(irq, dev);
+ clk_disable_unprepare(dev->clk);
clk_put(dev->clk);
iounmap(dev->io_base);
kfree(dev);
clk_put(dev->clk);
iounmap(dev->io_base);
kfree(dev);
struct spear_smi *dev = platform_get_drvdata(pdev);
if (dev && dev->clk)
struct spear_smi *dev = platform_get_drvdata(pdev);
if (dev && dev->clk)
+ clk_disable_unprepare(dev->clk);
int ret = -EPERM;
if (dev && dev->clk)
int ret = -EPERM;
if (dev && dev->clk)
- ret = clk_enable(dev->clk);
+ ret = clk_prepare_enable(dev->clk);
if (!ret)
spear_smi_hw_init(dev);
if (!ret)
spear_smi_hw_init(dev);