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

Ley Foon Tan
2014-07-21T10:07:03Z

On Tue, Jul 15, 2014 at 5:45 PM, Arnd Bergmann <arnd@arndb.de> wrote:
> 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.
Okay, will change this to use timer instead.

>
>> +#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.

I found jiffies.h still using this define. Can we still remove this?
In include/linux/jiffies.h:
#define LATCH ((CLOCK_TICK_RATE + HZ/2) / HZ) /* For divider */

>
>> 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.
Will keep this here since we don't move irq driver.

Thanks.

Regards
Ley Foon