Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

clocksource: convert OMAP1 to 32-bit down counting clocksource

Convert the OMAP1 32-bit down counting clocksource to the generic
clocksource infrastructure.

Tested-by: Tony Lindgren <tony@atomide.com>
Cc: linux-omap@vger.kernel.org
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>

+7 -17
+6 -17
arch/arm/mach-omap1/time.c
··· 190 190 * --------------------------------------------------------------------------- 191 191 */ 192 192 193 - static cycle_t mpu_read(struct clocksource *cs) 194 - { 195 - return ~omap_mpu_timer_read(1); 196 - } 197 - 198 - static struct clocksource clocksource_mpu = { 199 - .name = "mpu_timer2", 200 - .rating = 300, 201 - .read = mpu_read, 202 - .mask = CLOCKSOURCE_MASK(32), 203 - .flags = CLOCK_SOURCE_IS_CONTINUOUS, 204 - }; 205 - 206 193 static DEFINE_CLOCK_DATA(cd); 207 194 208 195 static inline unsigned long long notrace _omap_mpu_sched_clock(void) 209 196 { 210 - u32 cyc = mpu_read(&clocksource_mpu); 197 + u32 cyc = ~omap_mpu_timer_read(1); 211 198 return cyc_to_sched_clock(&cd, cyc, (u32)~0); 212 199 } 213 200 ··· 212 225 213 226 static void notrace mpu_update_sched_clock(void) 214 227 { 215 - u32 cyc = mpu_read(&clocksource_mpu); 228 + u32 cyc = ~omap_mpu_timer_read(1); 216 229 update_sched_clock(&cd, cyc, (u32)~0); 217 230 } 218 231 219 232 static void __init omap_init_clocksource(unsigned long rate) 220 233 { 234 + omap_mpu_timer_regs_t __iomem *timer = omap_mpu_timer_base(1); 221 235 static char err[] __initdata = KERN_ERR 222 236 "%s: can't register clocksource!\n"; 223 237 224 238 omap_mpu_timer_start(1, ~0, 1); 225 239 init_sched_clock(&cd, mpu_update_sched_clock, 32, rate); 226 240 227 - if (clocksource_register_hz(&clocksource_mpu, rate)) 228 - printk(err, clocksource_mpu.name); 241 + if (clocksource_mmio_init(&timer->read_tim, "mpu_timer2", rate, 242 + 300, 32, clocksource_mmio_readl_down)) 243 + printk(err, "mpu_timer2"); 229 244 } 230 245 231 246 static void __init omap_mpu_timer_init(void)
+1
arch/arm/plat-omap/Kconfig
··· 12 12 config ARCH_OMAP1 13 13 bool "TI OMAP1" 14 14 select CLKDEV_LOOKUP 15 + select CLKSRC_MMIO 15 16 help 16 17 "Systems based on omap7xx, omap15xx or omap16xx" 17 18