lkml.org 
[lkml]   [2021]   [Jul]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.13 366/800] clocksource/drivers/timer-ti-dm: Save and restore timer TIOCP_CFG
    Date
    From: Tony Lindgren <tony@atomide.com>

    [ Upstream commit 9517c577f9f722270584cfb1a7b4e1354e408658 ]

    As we are using cpu_pm to save and restore context, we must also save and
    restore the timer sysconfig register TIOCP_CFG. This is needed because
    we are not calling PM runtime functions at all with cpu_pm.

    Fixes: b34677b0999a ("clocksource/drivers/timer-ti-dm: Implement cpu_pm notifier for context save and restore")
    Cc: Aaro Koskinen <aaro.koskinen@iki.fi>
    Cc: Adam Ford <aford173@gmail.com>
    Cc: Andreas Kemnade <andreas@kemnade.info>
    Cc: Lokesh Vutla <lokeshvutla@ti.com>
    Cc: Peter Ujfalusi <peter.ujfalusi@gmail.com>
    Signed-off-by: Tony Lindgren <tony@atomide.com>
    Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
    Link: https://lore.kernel.org/r/20210415085506.56828-1-tony@atomide.com
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/clocksource/timer-ti-dm.c | 6 ++++++
    include/clocksource/timer-ti-dm.h | 1 +
    2 files changed, 7 insertions(+)

    diff --git a/drivers/clocksource/timer-ti-dm.c b/drivers/clocksource/timer-ti-dm.c
    index 33eeabf9c3d1..e5c631f1b5cb 100644
    --- a/drivers/clocksource/timer-ti-dm.c
    +++ b/drivers/clocksource/timer-ti-dm.c
    @@ -78,6 +78,9 @@ static void omap_dm_timer_write_reg(struct omap_dm_timer *timer, u32 reg,

    static void omap_timer_restore_context(struct omap_dm_timer *timer)
    {
    + __omap_dm_timer_write(timer, OMAP_TIMER_OCP_CFG_OFFSET,
    + timer->context.ocp_cfg, 0);
    +
    omap_dm_timer_write_reg(timer, OMAP_TIMER_WAKEUP_EN_REG,
    timer->context.twer);
    omap_dm_timer_write_reg(timer, OMAP_TIMER_COUNTER_REG,
    @@ -95,6 +98,9 @@ static void omap_timer_restore_context(struct omap_dm_timer *timer)

    static void omap_timer_save_context(struct omap_dm_timer *timer)
    {
    + timer->context.ocp_cfg =
    + __omap_dm_timer_read(timer, OMAP_TIMER_OCP_CFG_OFFSET, 0);
    +
    timer->context.tclr =
    omap_dm_timer_read_reg(timer, OMAP_TIMER_CTRL_REG);
    timer->context.twer =
    diff --git a/include/clocksource/timer-ti-dm.h b/include/clocksource/timer-ti-dm.h
    index 4c61dade8835..f6da8a132639 100644
    --- a/include/clocksource/timer-ti-dm.h
    +++ b/include/clocksource/timer-ti-dm.h
    @@ -74,6 +74,7 @@
    #define OMAP_TIMER_ERRATA_I103_I767 0x80000000

    struct timer_regs {
    + u32 ocp_cfg;
    u32 tidr;
    u32 tier;
    u32 twer;
    --
    2.30.2


    \
     
     \ /
      Last update: 2021-07-12 10:41    [W:4.052 / U:0.756 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site