diff options
author | Paul Walmsley <paul@pwsan.com> | 2012-04-19 06:01:50 -0400 |
---|---|---|
committer | Paul Walmsley <paul@pwsan.com> | 2012-04-19 06:03:12 -0400 |
commit | 6c0c27fdb10e15780af800d51711305f65665f25 (patch) | |
tree | 0969fac0aa03d87da08116402e0d1ae548e90139 /arch/arm | |
parent | 5e8370f1fa01bf232ca4770c6d81bbf42437d2a3 (diff) |
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 'arch/arm')
-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, | |||
145 | { | 145 | { |
146 | char name[10]; /* 10 = sizeof("gptXX_Xck0") */ | 146 | char name[10]; /* 10 = sizeof("gptXX_Xck0") */ |
147 | struct omap_hwmod *oh; | 147 | struct omap_hwmod *oh; |
148 | struct resource irq_rsrc, mem_rsrc; | ||
148 | size_t size; | 149 | size_t size; |
149 | int res = 0; | 150 | int res = 0; |
151 | int r; | ||
150 | 152 | ||
151 | sprintf(name, "timer%d", gptimer_id); | 153 | sprintf(name, "timer%d", gptimer_id); |
152 | omap_hwmod_setup_one(name); | 154 | omap_hwmod_setup_one(name); |
@@ -154,9 +156,16 @@ static int __init omap_dm_timer_init_one(struct omap_dm_timer *timer, | |||
154 | if (!oh) | 156 | if (!oh) |
155 | return -ENODEV; | 157 | return -ENODEV; |
156 | 158 | ||
157 | timer->irq = oh->mpu_irqs[0].irq; | 159 | r = omap_hwmod_get_resource_byname(oh, IORESOURCE_IRQ, NULL, &irq_rsrc); |
158 | timer->phys_base = oh->slaves[0]->addr->pa_start; | 160 | if (r) |
159 | size = oh->slaves[0]->addr->pa_end - timer->phys_base; | 161 | return -ENXIO; |
162 | timer->irq = irq_rsrc.start; | ||
163 | |||
164 | r = omap_hwmod_get_resource_byname(oh, IORESOURCE_MEM, NULL, &mem_rsrc); | ||
165 | if (r) | ||
166 | return -ENXIO; | ||
167 | timer->phys_base = mem_rsrc.start; | ||
168 | size = mem_rsrc.end - mem_rsrc.start; | ||
160 | 169 | ||
161 | /* Static mapping, never released */ | 170 | /* Static mapping, never released */ |
162 | timer->io_base = ioremap(timer->phys_base, size); | 171 | timer->io_base = ioremap(timer->phys_base, size); |