Skip to contentSkip to conversation

ARM: orion: implement ARM delay timer

PATCH New Russell King 4 participants 8 messages Oct 19, 2015 – Jan 27, 2016

Subsystems (3)
lore
Share & tools
lore
#0 lore raw

PATCH 1/1 ARM: orion: implement ARM delay timer

Implement an ARM delay timer to be used for udelay() on orion legacy platforms. This allows us to skip the delay loop calibration at boot.

It also means that udelay() will be unaffected by CPU frequency changes when cpufreq is enabled on these platforms.

---
This needs to be tested beyond build testing...

 arch/arm/plat-orion/time.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)
arch/arm/plat-orion/time.c +13 -0
index 8085a8aac812..ffb93db68e9c 100644
@@ -18,6 +18,7 @@
 #include <linux/irq.h>
 #include <linux/sched_clock.h>
 #include <plat/time.h>
+#include <asm/delay.h>
 
 /*
  * MBus bridge block registers.
@@ -188,6 +189,15 @@ orion_time_set_base(void __iomem *_timer_base)
 	timer_base = _timer_base;
 }
 
+static unsigned long orion_delay_timer_read(void)
+{
+	return ~readl(timer_base + TIMER0_VAL_OFF);
+}
+
+static struct delay_timer orion_delay_timer = {
+	.read_current_timer = orion_delay_timer_read,
+};
+
 void __init
 orion_time_init(void __iomem *_bridge_base, u32 _bridge_timer1_clr_mask,
 		unsigned int irq, unsigned int tclk)
@@ -202,6 +212,9 @@ orion_time_init(void __iomem *_bridge_base, u32 _bridge_timer1_clr_mask,
 
 	ticks_per_jiffy = (tclk + HZ/2) / HZ;
 
+	orion_delay_timer.freq = tclk;
+	register_current_timer_delay(&orion_delay_timer);
+
 	/*
 	 * Set scale and timer for sched_clock.
 	 */
Signature · 1 line
2.1.0
#1 lore raw

PATCH 1/1 ARM: orion: implement ARM delay timer

Quoted 9 lines · Russell King

Implement an ARM delay timer to be used for udelay() on orion legacy platforms. This allows us to skip the delay loop calibration at boot.

It also means that udelay() will be unaffected by CPU frequency changes when cpufreq is enabled on these platforms.

---
This needs to be tested beyond build testing...

So what's happening with this change? I see no progress on it.

Quoted 50 lines
 arch/arm/plat-orion/time.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)
arch/arm/plat-orion/time.c +13 -0
index 8085a8aac812..ffb93db68e9c 100644
@@ -18,6 +18,7 @@
 #include <linux/irq.h>
 #include <linux/sched_clock.h>
 #include <plat/time.h>
+#include <asm/delay.h>
 
 /*
  * MBus bridge block registers.
@@ -188,6 +189,15 @@ orion_time_set_base(void __iomem *_timer_base)
 	timer_base = _timer_base;
 }
 
+static unsigned long orion_delay_timer_read(void)
+{
+	return ~readl(timer_base + TIMER0_VAL_OFF);
+}
+
+static struct delay_timer orion_delay_timer = {
+	.read_current_timer = orion_delay_timer_read,
+};
+
 void __init
 orion_time_init(void __iomem *_bridge_base, u32 _bridge_timer1_clr_mask,
 		unsigned int irq, unsigned int tclk)
@@ -202,6 +212,9 @@ orion_time_init(void __iomem *_bridge_base, u32 _bridge_timer1_clr_mask,
 
 	ticks_per_jiffy = (tclk + HZ/2) / HZ;
 
+	orion_delay_timer.freq = tclk;
+	register_current_timer_delay(&orion_delay_timer);
+
 	/*
 	 * Set scale and timer for sched_clock.
 	 */
Signature · 7 lines
2.1.0


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel at lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
Signature · 2 lines
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.
maintainer
#2 lore raw

PATCH 1/1 ARM: orion: implement ARM delay timer

Quoted 4 lines · Russell King - ARM Linux
Quoted 3 lines · Russell King

Implement an ARM delay timer to be used for udelay() on orion legacy platforms. This allows us to skip the delay loop calibration at boot.

Quoted 8 lines
Quoted 6 lines

It also means that udelay() will be unaffected by CPU frequency changes when cpufreq is enabled on these platforms.

---
This needs to be tested beyond build testing...

So what's happening with this change? I see no progress on it.

I said on IRC you had now tested it. Please send a Tested-by:

Andrew

#3 lore raw

PATCH 1/1 ARM: orion: implement ARM delay timer

Quoted 8 lines · Andrew Lunn
Quoted 7 lines · Russell King - ARM Linux
Quoted 6 lines · Russell King

Implement an ARM delay timer to be used for udelay() on orion legacy platforms. This allows us to skip the delay loop calibration at boot.

It also means that udelay() will be unaffected by CPU frequency changes when cpufreq is enabled on these platforms.

Quoted 7 lines
Quoted 5 lines
Quoted 3 lines

---
This needs to be tested beyond build testing...

So what's happening with this change? I see no progress on it.

I said on IRC you had now tested it. Please send a Tested-by:

Sorry, I've totally lost track, I'd forgotten that it gets used on Dove.

Signature · 3 lines
RMK's Patch system: http://www.arm.linux.org.uk/developer/patches/
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.
maintainer
#4 lore raw

PATCH 1/1 ARM: orion: implement ARM delay timer

Quoted 13 lines · Russell King - ARM Linux
Quoted 12 lines · Andrew Lunn
Quoted 11 lines · Russell King - ARM Linux
Quoted 9 lines · Russell King

Implement an ARM delay timer to be used for udelay() on orion legacy platforms. This allows us to skip the delay loop calibration at boot.

It also means that udelay() will be unaffected by CPU frequency changes when cpufreq is enabled on these platforms.

---
This needs to be tested beyond build testing...

Quoted 7 lines
Quoted 3 lines
Quoted 1 line

So what's happening with this change? I see no progress on it.

I said on IRC you had now tested it. Please send a Tested-by:

Sorry, I've totally lost track, I'd forgotten that it gets used on Dove.

Andrew

#5 lore raw

PATCH 1/1 ARM: orion: implement ARM delay timer

In reply to Russell King

Hi Russell,

Quoted 7 lines · Russell King

Implement an ARM delay timer to be used for udelay() on orion legacy platforms. This allows us to skip the delay loop calibration at boot.

It also means that udelay() will be unaffected by CPU frequency changes when cpufreq is enabled on these platforms.

Applied on mvebu/drivers with Acked-by tag from Andrew Lunn

Thanks,

Gregory

Quoted 47 lines

---
This needs to be tested beyond build testing...

 arch/arm/plat-orion/time.c | 13 +++++++++++++
 1 file changed, 13 insertions(+)
arch/arm/plat-orion/time.c +13 -0
index 8085a8aac812..ffb93db68e9c 100644
@@ -18,6 +18,7 @@
 #include <linux/irq.h>
 #include <linux/sched_clock.h>
 #include <plat/time.h>
+#include <asm/delay.h>
 
 /*
  * MBus bridge block registers.
@@ -188,6 +189,15 @@ orion_time_set_base(void __iomem *_timer_base)
 	timer_base = _timer_base;
 }
 
+static unsigned long orion_delay_timer_read(void)
+{
+	return ~readl(timer_base + TIMER0_VAL_OFF);
+}
+
+static struct delay_timer orion_delay_timer = {
+	.read_current_timer = orion_delay_timer_read,
+};
+
 void __init
 orion_time_init(void __iomem *_bridge_base, u32 _bridge_timer1_clr_mask,
 		unsigned int irq, unsigned int tclk)
@@ -202,6 +212,9 @@ orion_time_init(void __iomem *_bridge_base, u32 _bridge_timer1_clr_mask,
 
 	ticks_per_jiffy = (tclk + HZ/2) / HZ;
 
+	orion_delay_timer.freq = tclk;
+	register_current_timer_delay(&orion_delay_timer);
+
 	/*
 	 * Set scale and timer for sched_clock.
 	 */
Signature · 1 line
2.1.0
Signature · 4 lines
Gregory Clement, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com
#6 lore raw

PATCH 1/1 ARM: orion: implement ARM delay timer

Quoted 7 lines · Gregory CLEMENT

Hi Russell,

Quoted 3 lines · Russell King

Implement an ARM delay timer to be used for udelay() on orion legacy platforms. This allows us to skip the delay loop calibration at boot.

Quoted 6 lines
Quoted 4 lines

It also means that udelay() will be unaffected by CPU frequency changes when cpufreq is enabled on these platforms.

Applied on mvebu/drivers with Acked-by tag from Andrew Lunn

And, I hope, my tested-by which delayed Andrew's ack until December, despite the patch being marked as CFT because I wanted _others_ to test it (which never happened.)

Signature · 3 lines
RMK's Patch system: http://www.arm.linux.org.uk/developer/patches/
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.
#7 lore raw

PATCH 1/1 ARM: orion: implement ARM delay timer

Hi Russell King,

Quoted 8 lines · Russell King - ARM Linux
Quoted 7 lines · Gregory CLEMENT

Hi Russell,

Quoted 3 lines · Russell King

Implement an ARM delay timer to be used for udelay() on orion legacy platforms. This allows us to skip the delay loop calibration at boot.

Quoted 8 lines
Quoted 6 lines
Quoted 4 lines

It also means that udelay() will be unaffected by CPU frequency changes when cpufreq is enabled on these platforms.

Applied on mvebu/drivers with Acked-by tag from Andrew Lunn

And, I hope, my tested-by which delayed Andrew's ack until December,

Now yes :)

Gregory

Quoted 7 lines

despite the patch being marked as CFT because I wanted _others_ to test it (which never happened.)

Signature · 3 lines
RMK's Patch system: http://www.arm.linux.org.uk/developer/patches/
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.
Signature · 4 lines
Gregory Clement, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com