diff options
author | Dmitry Osipenko <digetx@gmail.com> | 2019-06-03 14:59:44 -0400 |
---|---|---|
committer | Daniel Lezcano <daniel.lezcano@linaro.org> | 2019-06-25 13:49:18 -0400 |
commit | 49a678b8ca4c4f40bb2775369c82c9faabfc4a59 (patch) | |
tree | d0ed504936095cbfc495b1a6cbf6c201a03447b9 /drivers/clocksource | |
parent | 7a3916706e858ad0bc3b5629c68168e1449de26a (diff) |
clocksource/drivers/tegra: Minor code clean up
Correct typo and use proper upper casing for acronyms in the comments,
use common style for error messages, prepend error messages with
"tegra-timer:", add error message for cpuhp_setup_state() failure and
clean up whitespaces in the code to fix checkpatch warnings.
Signed-off-by: Dmitry Osipenko <digetx@gmail.com>
Acked-By: Peter De Schrijver <pdeschrijver@nvidia.com>
Signed-off-by: Daniel Lezcano <daniel.lezcano@linaro.org>
Diffstat (limited to 'drivers/clocksource')
-rw-r--r-- | drivers/clocksource/timer-tegra20.c | 43 |
1 files changed, 24 insertions, 19 deletions
diff --git a/drivers/clocksource/timer-tegra20.c b/drivers/clocksource/timer-tegra20.c index e2ef6b8211a5..6a3704142f31 100644 --- a/drivers/clocksource/timer-tegra20.c +++ b/drivers/clocksource/timer-tegra20.c | |||
@@ -6,6 +6,8 @@ | |||
6 | * Colin Cross <ccross@google.com> | 6 | * Colin Cross <ccross@google.com> |
7 | */ | 7 | */ |
8 | 8 | ||
9 | #define pr_fmt(fmt) "tegra-timer: " fmt | ||
10 | |||
9 | #include <linux/clk.h> | 11 | #include <linux/clk.h> |
10 | #include <linux/clockchips.h> | 12 | #include <linux/clockchips.h> |
11 | #include <linux/cpu.h> | 13 | #include <linux/cpu.h> |
@@ -21,13 +23,13 @@ | |||
21 | 23 | ||
22 | #include "timer-of.h" | 24 | #include "timer-of.h" |
23 | 25 | ||
24 | #define RTC_SECONDS 0x08 | 26 | #define RTC_SECONDS 0x08 |
25 | #define RTC_SHADOW_SECONDS 0x0c | 27 | #define RTC_SHADOW_SECONDS 0x0c |
26 | #define RTC_MILLISECONDS 0x10 | 28 | #define RTC_MILLISECONDS 0x10 |
27 | 29 | ||
28 | #define TIMERUS_CNTR_1US 0x10 | 30 | #define TIMERUS_CNTR_1US 0x10 |
29 | #define TIMERUS_USEC_CFG 0x14 | 31 | #define TIMERUS_USEC_CFG 0x14 |
30 | #define TIMERUS_CNTR_FREEZE 0x4c | 32 | #define TIMERUS_CNTR_FREEZE 0x4c |
31 | 33 | ||
32 | #define TIMER_PTV 0x0 | 34 | #define TIMER_PTV 0x0 |
33 | #define TIMER_PTV_EN BIT(31) | 35 | #define TIMER_PTV_EN BIT(31) |
@@ -48,7 +50,7 @@ static u32 usec_config; | |||
48 | static void __iomem *timer_reg_base; | 50 | static void __iomem *timer_reg_base; |
49 | 51 | ||
50 | static int tegra_timer_set_next_event(unsigned long cycles, | 52 | static int tegra_timer_set_next_event(unsigned long cycles, |
51 | struct clock_event_device *evt) | 53 | struct clock_event_device *evt) |
52 | { | 54 | { |
53 | void __iomem *reg_base = timer_of_base(to_timer_of(evt)); | 55 | void __iomem *reg_base = timer_of_base(to_timer_of(evt)); |
54 | 56 | ||
@@ -169,15 +171,17 @@ static struct timer_of suspend_rtc_to = { | |||
169 | 171 | ||
170 | /* | 172 | /* |
171 | * tegra_rtc_read - Reads the Tegra RTC registers | 173 | * tegra_rtc_read - Reads the Tegra RTC registers |
172 | * Care must be taken that this funciton is not called while the | 174 | * Care must be taken that this function is not called while the |
173 | * tegra_rtc driver could be executing to avoid race conditions | 175 | * tegra_rtc driver could be executing to avoid race conditions |
174 | * on the RTC shadow register | 176 | * on the RTC shadow register |
175 | */ | 177 | */ |
176 | static u64 tegra_rtc_read_ms(struct clocksource *cs) | 178 | static u64 tegra_rtc_read_ms(struct clocksource *cs) |
177 | { | 179 | { |
178 | void __iomem *reg_base = timer_of_base(&suspend_rtc_to); | 180 | void __iomem *reg_base = timer_of_base(&suspend_rtc_to); |
181 | |||
179 | u32 ms = readl_relaxed(reg_base + RTC_MILLISECONDS); | 182 | u32 ms = readl_relaxed(reg_base + RTC_MILLISECONDS); |
180 | u32 s = readl_relaxed(reg_base + RTC_SHADOW_SECONDS); | 183 | u32 s = readl_relaxed(reg_base + RTC_SHADOW_SECONDS); |
184 | |||
181 | return (u64)s * MSEC_PER_SEC + ms; | 185 | return (u64)s * MSEC_PER_SEC + ms; |
182 | } | 186 | } |
183 | 187 | ||
@@ -222,7 +226,7 @@ static int __init tegra_init_timer(struct device_node *np, bool tegra20) | |||
222 | 226 | ||
223 | to = this_cpu_ptr(&tegra_to); | 227 | to = this_cpu_ptr(&tegra_to); |
224 | ret = timer_of_init(np, to); | 228 | ret = timer_of_init(np, to); |
225 | if (ret < 0) | 229 | if (ret) |
226 | goto out; | 230 | goto out; |
227 | 231 | ||
228 | timer_reg_base = timer_of_base(to); | 232 | timer_reg_base = timer_of_base(to); |
@@ -281,8 +285,7 @@ static int __init tegra_init_timer(struct device_node *np, bool tegra20) | |||
281 | cpu_to->clkevt.cpumask = cpumask_of(cpu); | 285 | cpu_to->clkevt.cpumask = cpumask_of(cpu); |
282 | cpu_to->clkevt.irq = irq_of_parse_and_map(np, idx); | 286 | cpu_to->clkevt.irq = irq_of_parse_and_map(np, idx); |
283 | if (!cpu_to->clkevt.irq) { | 287 | if (!cpu_to->clkevt.irq) { |
284 | pr_err("%s: can't map IRQ for CPU%d\n", | 288 | pr_err("failed to map irq for cpu%d\n", cpu); |
285 | __func__, cpu); | ||
286 | ret = -EINVAL; | 289 | ret = -EINVAL; |
287 | goto out_irq; | 290 | goto out_irq; |
288 | } | 291 | } |
@@ -292,8 +295,8 @@ static int __init tegra_init_timer(struct device_node *np, bool tegra20) | |||
292 | IRQF_TIMER | IRQF_NOBALANCING, | 295 | IRQF_TIMER | IRQF_NOBALANCING, |
293 | cpu_to->clkevt.name, &cpu_to->clkevt); | 296 | cpu_to->clkevt.name, &cpu_to->clkevt); |
294 | if (ret) { | 297 | if (ret) { |
295 | pr_err("%s: cannot setup irq %d for CPU%d\n", | 298 | pr_err("failed to set up irq for cpu%d: %d\n", |
296 | __func__, cpu_to->clkevt.irq, cpu); | 299 | cpu, ret); |
297 | irq_dispose_mapping(cpu_to->clkevt.irq); | 300 | irq_dispose_mapping(cpu_to->clkevt.irq); |
298 | cpu_to->clkevt.irq = 0; | 301 | cpu_to->clkevt.irq = 0; |
299 | goto out_irq; | 302 | goto out_irq; |
@@ -312,11 +315,14 @@ static int __init tegra_init_timer(struct device_node *np, bool tegra20) | |||
312 | register_current_timer_delay(&tegra_delay_timer); | 315 | register_current_timer_delay(&tegra_delay_timer); |
313 | #endif | 316 | #endif |
314 | 317 | ||
315 | cpuhp_setup_state(CPUHP_AP_TEGRA_TIMER_STARTING, | 318 | ret = cpuhp_setup_state(CPUHP_AP_TEGRA_TIMER_STARTING, |
316 | "AP_TEGRA_TIMER_STARTING", tegra_timer_setup, | 319 | "AP_TEGRA_TIMER_STARTING", tegra_timer_setup, |
317 | tegra_timer_stop); | 320 | tegra_timer_stop); |
321 | if (ret) | ||
322 | pr_err("failed to set up cpu hp state: %d\n", ret); | ||
318 | 323 | ||
319 | return ret; | 324 | return ret; |
325 | |||
320 | out_irq: | 326 | out_irq: |
321 | for_each_possible_cpu(cpu) { | 327 | for_each_possible_cpu(cpu) { |
322 | struct timer_of *cpu_to; | 328 | struct timer_of *cpu_to; |
@@ -329,6 +335,7 @@ out_irq: | |||
329 | } | 335 | } |
330 | out: | 336 | out: |
331 | timer_of_cleanup(to); | 337 | timer_of_cleanup(to); |
338 | |||
332 | return ret; | 339 | return ret; |
333 | } | 340 | } |
334 | 341 | ||
@@ -352,8 +359,6 @@ static int __init tegra20_init_rtc(struct device_node *np) | |||
352 | if (ret) | 359 | if (ret) |
353 | return ret; | 360 | return ret; |
354 | 361 | ||
355 | clocksource_register_hz(&suspend_rtc_clocksource, 1000); | 362 | return clocksource_register_hz(&suspend_rtc_clocksource, 1000); |
356 | |||
357 | return 0; | ||
358 | } | 363 | } |
359 | TIMER_OF_DECLARE(tegra20_rtc, "nvidia,tegra20-rtc", tegra20_init_rtc); | 364 | TIMER_OF_DECLARE(tegra20_rtc, "nvidia,tegra20-rtc", tegra20_init_rtc); |