Skip to content

Commit 98aefbe

Browse files
committed
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>
2 parents 6d19944 + 57dee99 commit 98aefbe

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

drivers/clocksource/sh_cmt.c

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -634,12 +634,18 @@ static int sh_cmt_clock_event_next(unsigned long delta,
634634

635635
static void sh_cmt_clock_event_suspend(struct clock_event_device *ced)
636636
{
637-
pm_genpd_syscore_poweroff(&ced_to_sh_cmt(ced)->pdev->dev);
637+
struct sh_cmt_priv *p = ced_to_sh_cmt(ced);
638+
639+
pm_genpd_syscore_poweroff(&p->pdev->dev);
640+
clk_unprepare(p->clk);
638641
}
639642

640643
static void sh_cmt_clock_event_resume(struct clock_event_device *ced)
641644
{
642-
pm_genpd_syscore_poweron(&ced_to_sh_cmt(ced)->pdev->dev);
645+
struct sh_cmt_priv *p = ced_to_sh_cmt(ced);
646+
647+
clk_prepare(p->clk);
648+
pm_genpd_syscore_poweron(&p->pdev->dev);
643649
}
644650

645651
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)
736742
goto err2;
737743
}
738744

745+
ret = clk_prepare(p->clk);
746+
if (ret < 0)
747+
goto err3;
748+
739749
if (res2 && (resource_size(res2) == 4)) {
740750
/* assume both CMSTR and CMCSR to be 32-bit */
741751
p->read_control = sh_cmt_read32;
@@ -772,19 +782,21 @@ static int sh_cmt_setup(struct sh_cmt_priv *p, struct platform_device *pdev)
772782
cfg->clocksource_rating);
773783
if (ret) {
774784
dev_err(&p->pdev->dev, "registration failed\n");
775-
goto err3;
785+
goto err4;
776786
}
777787
p->cs_enabled = false;
778788

779789
ret = setup_irq(irq, &p->irqaction);
780790
if (ret) {
781791
dev_err(&p->pdev->dev, "failed to request irq %d\n", irq);
782-
goto err3;
792+
goto err4;
783793
}
784794

785795
platform_set_drvdata(pdev, p);
786796

787797
return 0;
798+
err4:
799+
clk_unprepare(p->clk);
788800
err3:
789801
clk_put(p->clk);
790802
err2:

0 commit comments

Comments
 (0)