lkml.org 
[lkml]   [2020]   [Feb]   [14]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH AUTOSEL 5.4 287/459] clocksource: davinci: only enable clockevents once tim34 is initialized
    Date
    From: Bartosz Golaszewski <bgolaszewski@baylibre.com>

    [ Upstream commit cea931c25104e6bddc42eb067f58193f355dbdd7 ]

    The DM365 platform has a strange quirk (only present when using ancient
    u-boot - mainline u-boot v2013.01 and later works fine) where if we
    enable the second half of the timer in periodic mode before we do its
    initialization - the time won't start flowing and we can't boot.

    When using more recent u-boot, we can enable the timer, then reinitialize
    it and all works fine.

    To work around this issue only enable clockevents once tim34 is
    initialized i.e. move clockevents_config_and_register() below tim34
    initialization.

    Signed-off-by: Bartosz Golaszewski <bgolaszewski@baylibre.com>
    Signed-off-by: Sekhar Nori <nsekhar@ti.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/clocksource/timer-davinci.c | 8 ++++----
    1 file changed, 4 insertions(+), 4 deletions(-)

    diff --git a/drivers/clocksource/timer-davinci.c b/drivers/clocksource/timer-davinci.c
    index 62745c9620498..e421946a91c5a 100644
    --- a/drivers/clocksource/timer-davinci.c
    +++ b/drivers/clocksource/timer-davinci.c
    @@ -302,10 +302,6 @@ int __init davinci_timer_register(struct clk *clk,
    return rv;
    }

    - clockevents_config_and_register(&clockevent->dev, tick_rate,
    - DAVINCI_TIMER_MIN_DELTA,
    - DAVINCI_TIMER_MAX_DELTA);
    -
    davinci_clocksource.dev.rating = 300;
    davinci_clocksource.dev.read = davinci_clocksource_read;
    davinci_clocksource.dev.mask =
    @@ -323,6 +319,10 @@ int __init davinci_timer_register(struct clk *clk,
    davinci_clocksource_init_tim34(base);
    }

    + clockevents_config_and_register(&clockevent->dev, tick_rate,
    + DAVINCI_TIMER_MIN_DELTA,
    + DAVINCI_TIMER_MAX_DELTA);
    +
    rv = clocksource_register_hz(&davinci_clocksource.dev, tick_rate);
    if (rv) {
    pr_err("Unable to register clocksource");
    --
    2.20.1
    \
     
     \ /
      Last update: 2020-02-14 18:26    [W:4.165 / U:0.400 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site