Skip to content

Commit b061b4f

Browse files
committed
Merge branch 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull timer fixes from Ingo Molnar: "Three clocksource driver fixes" * 'timers-urgent-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: clocksource/drivers/mips-gic-timer: Make gic_clocksource_of_init() return int clocksource/drivers/kona: Fix get_counter() error handling clocksource/drivers/time-armada-370-xp: Fix the clock reference
2 parents ac78bc7 + be5769e commit b061b4f

File tree

3 files changed

+11
-8
lines changed

3 files changed

+11
-8
lines changed

drivers/clocksource/bcm_kona_timer.c

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,10 @@ static void kona_timer_disable_and_clear(void __iomem *base)
6666

6767
}
6868

69-
static void
69+
static int
7070
kona_timer_get_counter(void __iomem *timer_base, uint32_t *msw, uint32_t *lsw)
7171
{
72-
int loop_limit = 4;
72+
int loop_limit = 3;
7373

7474
/*
7575
* Read 64-bit free running counter
@@ -83,18 +83,19 @@ kona_timer_get_counter(void __iomem *timer_base, uint32_t *msw, uint32_t *lsw)
8383
* if new hi-word is equal to previously read hi-word then stop.
8484
*/
8585

86-
while (--loop_limit) {
86+
do {
8787
*msw = readl(timer_base + KONA_GPTIMER_STCHI_OFFSET);
8888
*lsw = readl(timer_base + KONA_GPTIMER_STCLO_OFFSET);
8989
if (*msw == readl(timer_base + KONA_GPTIMER_STCHI_OFFSET))
9090
break;
91-
}
91+
} while (--loop_limit);
9292
if (!loop_limit) {
9393
pr_err("bcm_kona_timer: getting counter failed.\n");
9494
pr_err(" Timer will be impacted\n");
95+
return -ETIMEDOUT;
9596
}
9697

97-
return;
98+
return 0;
9899
}
99100

100101
static int kona_timer_set_next_event(unsigned long clc,
@@ -112,8 +113,11 @@ static int kona_timer_set_next_event(unsigned long clc,
112113

113114
uint32_t lsw, msw;
114115
uint32_t reg;
116+
int ret;
115117

116-
kona_timer_get_counter(timers.tmr_regs, &msw, &lsw);
118+
ret = kona_timer_get_counter(timers.tmr_regs, &msw, &lsw);
119+
if (ret)
120+
return ret;
117121

118122
/* Load the "next" event tick value */
119123
writel(lsw + clc, timers.tmr_regs + KONA_GPTIMER_STCM0_OFFSET);

drivers/clocksource/mips-gic-timer.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ void __init gic_clocksource_init(unsigned int frequency)
164164
gic_start_count();
165165
}
166166

167-
static void __init gic_clocksource_of_init(struct device_node *node)
167+
static int __init gic_clocksource_of_init(struct device_node *node)
168168
{
169169
struct clk *clk;
170170
int ret;

drivers/clocksource/time-armada-370-xp.c

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -338,7 +338,6 @@ static int __init armada_xp_timer_init(struct device_node *np)
338338
struct clk *clk = of_clk_get_by_name(np, "fixed");
339339
int ret;
340340

341-
clk = of_clk_get(np, 0);
342341
if (IS_ERR(clk)) {
343342
pr_err("Failed to get clock");
344343
return PTR_ERR(clk);

0 commit comments

Comments
 (0)