diff options
author | Paul Walmsley <paul@pwsan.com> | 2012-04-19 12:01:50 +0200 |
---|---|---|
committer | Paul Walmsley <paul@pwsan.com> | 2012-04-19 12:03:12 +0200 |
commit | 6c0c27fdb10e15780af800d51711305f65665f25 (patch) | |
tree | 0969fac0aa03d87da08116402e0d1ae548e90139 /arch/arm/mach-omap2/timer.c | |
parent | ARM: OMAP2+: hwmod: add omap_hwmod_get_resource_byname() (diff) | |
download | linux-6c0c27fdb10e15780af800d51711305f65665f25.tar.xz linux-6c0c27fdb10e15780af800d51711305f65665f25.zip |
ARM: OMAP2+: timer: use a proper interface to get hwmod data
arch/arm/mach-omap2/timer.c pokes around inside the hwmod data
structures. Since the hwmod data structures are about to change, this
code will break. This patch modifies the timer code to use
recently-added hwmod functions instead.
Signed-off-by: Paul Walmsley <paul@pwsan.com>
Cc: Tony Lindgren <tony@atomide.com>
Diffstat (limited to '')
-rw-r--r-- | arch/arm/mach-omap2/timer.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/arch/arm/mach-omap2/timer.c b/arch/arm/mach-omap2/timer.c index c512bac69ec5..ecec873e78cd 100644 --- a/arch/arm/mach-omap2/timer.c +++ b/arch/arm/mach-omap2/timer.c @@ -145,8 +145,10 @@ static int __init omap_dm_timer_init_one(struct omap_dm_timer *timer, { char name[10]; /* 10 = sizeof("gptXX_Xck0") */ struct omap_hwmod *oh; + struct resource irq_rsrc, mem_rsrc; size_t size; int res = 0; + int r; sprintf(name, "timer%d", gptimer_id); omap_hwmod_setup_one(name); @@ -154,9 +156,16 @@ static int __init omap_dm_timer_init_one(struct omap_dm_timer *timer, if (!oh) return -ENODEV; - timer->irq = oh->mpu_irqs[0].irq; - timer->phys_base = oh->slaves[0]->addr->pa_start; - size = oh->slaves[0]->addr->pa_end - timer->phys_base; + r = omap_hwmod_get_resource_byname(oh, IORESOURCE_IRQ, NULL, &irq_rsrc); + if (r) + return -ENXIO; + timer->irq = irq_rsrc.start; + + r = omap_hwmod_get_resource_byname(oh, IORESOURCE_MEM, NULL, &mem_rsrc); + if (r) + return -ENXIO; + timer->phys_base = mem_rsrc.start; + size = mem_rsrc.end - mem_rsrc.start; /* Static mapping, never released */ timer->io_base = ioremap(timer->phys_base, size); |