Re: [PATCH v2 19/29] nios2: Time keeping

Arnd Bergmann
2014-07-15T09:45:29Z

On Tuesday 15 July 2014 16:45:46 Ley Foon Tan wrote:
> +
> +static inline void __delay(unsigned long loops)
> +{
> + int dummy;
> +
> + __asm__ __volatile__(
> + "1:\n\t"
> + " beq %0,zero,2f\n\t"
> + " addi %0, %0, -1\n\t"
> + " br 1b\n\t"
> + "2:\n\t"
> + : "=r" (dummy) /* Need output for optimizer */
> + : "0" (loops)); /* %0 Input */
> +}

Do you have a reliable clock source? If you do, it would be better
to replace the delay loop with an implementation that waits for
the exact time to pass instead. This will also avoid the loop
calibration during boot and give you better boot times.

> +#ifndef _ASM_NIOS2_TIMEX_H
> +#define _ASM_NIOS2_TIMEX_H
> +
> +/* Supply dummy tick-rate. Real value will be read from devicetree */
> +#define CLOCK_TICK_RATE (HZ * 100000UL)
> +
> +#include <asm-generic/timex.h>
> +
> +#endif

CLOCK_TICK_RATE is no longer used anywhere, no need for this file.

> diff --git a/arch/nios2/kernel/time.c b/arch/nios2/kernel/time.c
> new file mode 100644
> index 0000000..111ade1
> --- /dev/null
> +++ b/arch/nios2/kernel/time.c

Maybe move this to drivers/clocksource? Same argument as for the
irqchip driver, so either move both or neither.

Arnd