[PATCH 2/2] clocksource/drivers/lpc32xx: Support timer-based ARM delay
Ezequiel Garcia
ezequiel at vanguardiasur.com.ar
Sun Jan 31 12:15:45 PST 2016
On 30 January 2016 at 16:27, Joachim Eastwood <manabian at gmail.com> wrote:
> Hi Ezequiel,
>
> On 30 January 2016 at 07:46, Ezequiel Garcia
> <ezequiel at vanguardiasur.com.ar> wrote:
>> This commit implements the ARM timer-based delay timer for the
>> LPC32xx, LPC18xx, LPC43xx family of SoCs.
>>
>> Signed-off-by: Ezequiel Garcia <ezequiel at vanguardiasur.com.ar>
>> ---
>> drivers/clocksource/time-lpc32xx.c | 12 ++++++++++++
>> 1 file changed, 12 insertions(+)
>>
>> diff --git a/drivers/clocksource/time-lpc32xx.c b/drivers/clocksource/time-lpc32xx.c
>> index 9b3d4a38c716..223bb08720d6 100644
>> --- a/drivers/clocksource/time-lpc32xx.c
>> +++ b/drivers/clocksource/time-lpc32xx.c
>> @@ -18,6 +18,7 @@
>> #include <linux/clk.h>
>> #include <linux/clockchips.h>
>> #include <linux/clocksource.h>
>> +#include <linux/delay.h>
>> #include <linux/interrupt.h>
>> #include <linux/irq.h>
>> #include <linux/kernel.h>
>> @@ -55,6 +56,15 @@ static u64 notrace lpc32xx_read_sched_clock(void)
>> return readl(clocksource_timer_counter);
>> }
>>
>> +static unsigned long lpc32xx_delay_timer_read(void)
>> +{
>> + return readl(clocksource_timer_counter);
>> +}
>
> Could this use the relaxed version?
>
It seems read_current_timer is used in a busy loop in __timer_delay,
and I'd that's why other drivers use readl() here.
In any case, isn't __iormb a no-op on CPU_V7M ?
>> +
>> +static struct delay_timer lpc32xx_delay_timer = {
>> + .read_current_timer = lpc32xx_delay_timer_read,
>> +};
>> +
>> static int lpc32xx_clkevt_next_event(unsigned long delta,
>> struct clock_event_device *evtdev)
>> {
>> @@ -198,6 +208,8 @@ static int __init lpc32xx_clocksource_init(struct device_node *np)
>> }
>>
>> clocksource_timer_counter = base + LPC32XX_TIMER_TC;
>> + lpc32xx_delay_timer.freq = rate;
>> + register_current_timer_delay(&lpc32xx_delay_timer);
>
> As far as I can see 'register_current_timer_delay' is an ARM only function(?).
> Since time-lpc32xx.c can be built on other architectures than ARM
> using COMPILE_TEST should all this be protected under CONFIG_ARM?
>
Yes, you are right.
>
> Could you also CC Vladimir Zapolskiy <vz at mleia.com> on these patches
> since he is working on the lpc32xx platform now?
>
Sure.
--
Ezequiel García, VanguardiaSur
www.vanguardiasur.com.ar
More information about the linux-arm-kernel
mailing list