Merge branch 'clockevents/for-Simon-3.13-rc2' into clockevents/3.14
* clocksource: sh_cmt: Add clk_prepare/unprepare support Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
This commit is contained in:
@@ -634,12 +634,18 @@ static int sh_cmt_clock_event_next(unsigned long delta,
|
|||||||
|
|
||||||
static void sh_cmt_clock_event_suspend(struct clock_event_device *ced)
|
static void sh_cmt_clock_event_suspend(struct clock_event_device *ced)
|
||||||
{
|
{
|
||||||
pm_genpd_syscore_poweroff(&ced_to_sh_cmt(ced)->pdev->dev);
|
struct sh_cmt_priv *p = ced_to_sh_cmt(ced);
|
||||||
|
|
||||||
|
pm_genpd_syscore_poweroff(&p->pdev->dev);
|
||||||
|
clk_unprepare(p->clk);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sh_cmt_clock_event_resume(struct clock_event_device *ced)
|
static void sh_cmt_clock_event_resume(struct clock_event_device *ced)
|
||||||
{
|
{
|
||||||
pm_genpd_syscore_poweron(&ced_to_sh_cmt(ced)->pdev->dev);
|
struct sh_cmt_priv *p = ced_to_sh_cmt(ced);
|
||||||
|
|
||||||
|
clk_prepare(p->clk);
|
||||||
|
pm_genpd_syscore_poweron(&p->pdev->dev);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void sh_cmt_register_clockevent(struct sh_cmt_priv *p,
|
static void sh_cmt_register_clockevent(struct sh_cmt_priv *p,
|
||||||
@@ -736,6 +742,10 @@ static int sh_cmt_setup(struct sh_cmt_priv *p, struct platform_device *pdev)
|
|||||||
goto err2;
|
goto err2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ret = clk_prepare(p->clk);
|
||||||
|
if (ret < 0)
|
||||||
|
goto err3;
|
||||||
|
|
||||||
if (res2 && (resource_size(res2) == 4)) {
|
if (res2 && (resource_size(res2) == 4)) {
|
||||||
/* assume both CMSTR and CMCSR to be 32-bit */
|
/* assume both CMSTR and CMCSR to be 32-bit */
|
||||||
p->read_control = sh_cmt_read32;
|
p->read_control = sh_cmt_read32;
|
||||||
@@ -772,19 +782,21 @@ static int sh_cmt_setup(struct sh_cmt_priv *p, struct platform_device *pdev)
|
|||||||
cfg->clocksource_rating);
|
cfg->clocksource_rating);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dev_err(&p->pdev->dev, "registration failed\n");
|
dev_err(&p->pdev->dev, "registration failed\n");
|
||||||
goto err3;
|
goto err4;
|
||||||
}
|
}
|
||||||
p->cs_enabled = false;
|
p->cs_enabled = false;
|
||||||
|
|
||||||
ret = setup_irq(irq, &p->irqaction);
|
ret = setup_irq(irq, &p->irqaction);
|
||||||
if (ret) {
|
if (ret) {
|
||||||
dev_err(&p->pdev->dev, "failed to request irq %d\n", irq);
|
dev_err(&p->pdev->dev, "failed to request irq %d\n", irq);
|
||||||
goto err3;
|
goto err4;
|
||||||
}
|
}
|
||||||
|
|
||||||
platform_set_drvdata(pdev, p);
|
platform_set_drvdata(pdev, p);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
err4:
|
||||||
|
clk_unprepare(p->clk);
|
||||||
err3:
|
err3:
|
||||||
clk_put(p->clk);
|
clk_put(p->clk);
|
||||||
err2:
|
err2:
|
||||||
|
Reference in New Issue
Block a user