[PATCH] clocksource: sirf/marco+prima2: drop usage of CLOCK_TICK_RATE
Daniel Lezcano
daniel.lezcano at linaro.org
Wed Nov 13 15:00:52 EST 2013
On 11/11/2013 09:20 PM, Uwe Kleine-König wrote:
> As CSR SiRF is converted to multi platform CLOCK_TICK_RATE is a dummy
> value that seems to match the right value is used.
> (arch/arm/mach-prima2/include/mach/timex.h which defined CLOCK_TICK_RATE
> to 1000000 was removed in commit cf82e0e (ARM: sirf: enable
> multiplatform support); marco used the same file.)
>
> To not depend on that dummy value use a local #define instead.
I don't get this patch. It is to fix a compilation error ?
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig at pengutronix.de>
> ---
> drivers/clocksource/timer-marco.c | 13 +++++++------
> drivers/clocksource/timer-prima2.c | 14 ++++++++------
> 2 files changed, 15 insertions(+), 12 deletions(-)
>
> diff --git a/drivers/clocksource/timer-marco.c b/drivers/clocksource/timer-marco.c
> index 09a17d9a..0d367a7 100644
> --- a/drivers/clocksource/timer-marco.c
> +++ b/drivers/clocksource/timer-marco.c
> @@ -19,7 +19,8 @@
> #include <linux/of_irq.h>
> #include <linux/of_address.h>
> #include <linux/sched_clock.h>
> -#include <asm/mach/time.h>
Why do you remove this header ? It is related to CLOCK_TICK_RATE ?
> +
> +#define CLOCK_FREQ 1000000
Why don't you include <linux/timex.h> where <asm/timex.h> is pulled with
the CLOCK_TICK_RATE definition for the multiplatform ?
> #define SIRFSOC_TIMER_32COUNTER_0_CTRL 0x0000
> #define SIRFSOC_TIMER_32COUNTER_1_CTRL 0x0004
> @@ -191,7 +192,7 @@ static int sirfsoc_local_timer_setup(struct clock_event_device *ce)
> ce->rating = 200;
> ce->set_mode = sirfsoc_timer_set_mode;
> ce->set_next_event = sirfsoc_timer_set_next_event;
> - clockevents_calc_mult_shift(ce, CLOCK_TICK_RATE, 60);
> + clockevents_calc_mult_shift(ce, CLOCK_FREQ, 60);
> ce->max_delta_ns = clockevent_delta2ns(-2, ce);
> ce->min_delta_ns = clockevent_delta2ns(2, ce);
> ce->cpumask = cpumask_of(cpu);
> @@ -263,11 +264,11 @@ static void __init sirfsoc_marco_timer_init(void)
> BUG_ON(IS_ERR(clk));
> rate = clk_get_rate(clk);
>
> - BUG_ON(rate < CLOCK_TICK_RATE);
> - BUG_ON(rate % CLOCK_TICK_RATE);
> + BUG_ON(rate < CLOCK_FREQ);
> + BUG_ON(rate % CLOCK_FREQ);
>
> /* Initialize the timer dividers */
> - timer_div = rate / CLOCK_TICK_RATE - 1;
> + timer_div = rate / CLOCK_FREQ - 1;
> writel_relaxed(timer_div << 16, sirfsoc_timer_base + SIRFSOC_TIMER_64COUNTER_CTRL);
> writel_relaxed(timer_div << 16, sirfsoc_timer_base + SIRFSOC_TIMER_32COUNTER_0_CTRL);
> writel_relaxed(timer_div << 16, sirfsoc_timer_base + SIRFSOC_TIMER_32COUNTER_1_CTRL);
> @@ -283,7 +284,7 @@ static void __init sirfsoc_marco_timer_init(void)
> /* Clear all interrupts */
> writel_relaxed(0xFFFF, sirfsoc_timer_base + SIRFSOC_TIMER_INTR_STATUS);
>
> - BUG_ON(clocksource_register_hz(&sirfsoc_clocksource, CLOCK_TICK_RATE));
> + BUG_ON(clocksource_register_hz(&sirfsoc_clocksource, CLOCK_FREQ));
>
> sirfsoc_clockevent_init();
> }
> diff --git a/drivers/clocksource/timer-prima2.c b/drivers/clocksource/timer-prima2.c
> index 8a492d3..ff7d49e 100644
> --- a/drivers/clocksource/timer-prima2.c
> +++ b/drivers/clocksource/timer-prima2.c
> @@ -21,6 +21,8 @@
> #include <linux/sched_clock.h>
> #include <asm/mach/time.h>
>
> +#define CLOCK_FREQ 1000000
> +
> #define SIRFSOC_TIMER_COUNTER_LO 0x0000
> #define SIRFSOC_TIMER_COUNTER_HI 0x0004
> #define SIRFSOC_TIMER_MATCH_0 0x0008
> @@ -173,7 +175,7 @@ static u64 notrace sirfsoc_read_sched_clock(void)
> static void __init sirfsoc_clockevent_init(void)
> {
> sirfsoc_clockevent.cpumask = cpumask_of(0);
> - clockevents_config_and_register(&sirfsoc_clockevent, CLOCK_TICK_RATE,
> + clockevents_config_and_register(&sirfsoc_clockevent, CLOCK_FREQ,
> 2, -2);
> }
>
> @@ -190,8 +192,8 @@ static void __init sirfsoc_prima2_timer_init(struct device_node *np)
>
> rate = clk_get_rate(clk);
>
> - BUG_ON(rate < CLOCK_TICK_RATE);
> - BUG_ON(rate % CLOCK_TICK_RATE);
> + BUG_ON(rate < CLOCK_FREQ);
> + BUG_ON(rate % CLOCK_FREQ);
>
> sirfsoc_timer_base = of_iomap(np, 0);
> if (!sirfsoc_timer_base)
> @@ -199,14 +201,14 @@ static void __init sirfsoc_prima2_timer_init(struct device_node *np)
>
> sirfsoc_timer_irq.irq = irq_of_parse_and_map(np, 0);
>
> - writel_relaxed(rate / CLOCK_TICK_RATE / 2 - 1, sirfsoc_timer_base + SIRFSOC_TIMER_DIV);
> + writel_relaxed(rate / CLOCK_FREQ / 2 - 1, sirfsoc_timer_base + SIRFSOC_TIMER_DIV);
> writel_relaxed(0, sirfsoc_timer_base + SIRFSOC_TIMER_COUNTER_LO);
> writel_relaxed(0, sirfsoc_timer_base + SIRFSOC_TIMER_COUNTER_HI);
> writel_relaxed(BIT(0), sirfsoc_timer_base + SIRFSOC_TIMER_STATUS);
>
> - BUG_ON(clocksource_register_hz(&sirfsoc_clocksource, CLOCK_TICK_RATE));
> + BUG_ON(clocksource_register_hz(&sirfsoc_clocksource, CLOCK_FREQ));
>
> - sched_clock_register(sirfsoc_read_sched_clock, 64, CLOCK_TICK_RATE);
> + sched_clock_register(sirfsoc_read_sched_clock, 64, CLOCK_FREQ);
>
> BUG_ON(setup_irq(sirfsoc_timer_irq.irq, &sirfsoc_timer_irq));
>
>
--
<http://www.linaro.org/> Linaro.org │ Open source software for ARM SoCs
Follow Linaro: <http://www.facebook.com/pages/Linaro> Facebook |
<http://twitter.com/#!/linaroorg> Twitter |
<http://www.linaro.org/linaro-blog/> Blog
More information about the linux-arm-kernel
mailing list