diff options
author | Keerthy <j-keerthy@ti.com> | 2015-07-08 01:42:26 -0400 |
---|---|---|
committer | Paul Walmsley <paul@pwsan.com> | 2015-07-23 08:08:19 -0400 |
commit | 8d4be7d8bf04f93cfb1512a078bd276efc270793 (patch) | |
tree | e039b494201642d8e127b341baa764c7548004e6 | |
parent | 6e487001c5b0939e6083327432565559d8aab6fc (diff) |
ARM: OMAP: PRM: Remove hardcoding of IRQENABLE_MPU_2 and IRQSTATUS_MPU_2 register offsets
The register offsets of IRQENABLE_MPU_2 and IRQSTATUS_MPU_2 are hardcoded.
This makes it difficult to reuse the code for SoCs like AM437x that have
a single instance of IRQENABLE_MPU and IRQSTATUS_MPU registers.
Hence handling the case using offset of 4 to accommodate single set of IRQ*
registers generically.
Signed-off-by: Keerthy <j-keerthy@ti.com>
[paul@pwsan.com: fixed whitespace alignment problems reported by checkpatch.pl]
Reviewed-by: Paul Walmsley <paul@pwsan.com>
Signed-off-by: Paul Walmsley <paul@pwsan.com>
-rw-r--r-- | arch/arm/mach-omap2/prm44xx.c | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/arch/arm/mach-omap2/prm44xx.c b/arch/arm/mach-omap2/prm44xx.c index 8149e5a53743..e6262d39030a 100644 --- a/arch/arm/mach-omap2/prm44xx.c +++ b/arch/arm/mach-omap2/prm44xx.c | |||
@@ -217,11 +217,11 @@ static inline u32 _read_pending_irq_reg(u16 irqen_offs, u16 irqst_offs) | |||
217 | */ | 217 | */ |
218 | static void omap44xx_prm_read_pending_irqs(unsigned long *events) | 218 | static void omap44xx_prm_read_pending_irqs(unsigned long *events) |
219 | { | 219 | { |
220 | events[0] = _read_pending_irq_reg(OMAP4_PRM_IRQENABLE_MPU_OFFSET, | 220 | int i; |
221 | OMAP4_PRM_IRQSTATUS_MPU_OFFSET); | ||
222 | 221 | ||
223 | events[1] = _read_pending_irq_reg(OMAP4_PRM_IRQENABLE_MPU_2_OFFSET, | 222 | for (i = 0; i < omap4_prcm_irq_setup.nr_regs; i++) |
224 | OMAP4_PRM_IRQSTATUS_MPU_2_OFFSET); | 223 | events[i] = _read_pending_irq_reg(omap4_prcm_irq_setup.mask + |
224 | i * 4, omap4_prcm_irq_setup.ack + i * 4); | ||
225 | } | 225 | } |
226 | 226 | ||
227 | /** | 227 | /** |
@@ -251,17 +251,17 @@ static void omap44xx_prm_ocp_barrier(void) | |||
251 | */ | 251 | */ |
252 | static void omap44xx_prm_save_and_clear_irqen(u32 *saved_mask) | 252 | static void omap44xx_prm_save_and_clear_irqen(u32 *saved_mask) |
253 | { | 253 | { |
254 | saved_mask[0] = | 254 | int i; |
255 | omap4_prm_read_inst_reg(OMAP4430_PRM_OCP_SOCKET_INST, | 255 | u16 reg; |
256 | OMAP4_PRM_IRQENABLE_MPU_OFFSET); | ||
257 | saved_mask[1] = | ||
258 | omap4_prm_read_inst_reg(OMAP4430_PRM_OCP_SOCKET_INST, | ||
259 | OMAP4_PRM_IRQENABLE_MPU_2_OFFSET); | ||
260 | 256 | ||
261 | omap4_prm_write_inst_reg(0, OMAP4430_PRM_OCP_SOCKET_INST, | 257 | for (i = 0; i < omap4_prcm_irq_setup.nr_regs; i++) { |
262 | OMAP4_PRM_IRQENABLE_MPU_OFFSET); | 258 | reg = omap4_prcm_irq_setup.mask + i * 4; |
263 | omap4_prm_write_inst_reg(0, OMAP4430_PRM_OCP_SOCKET_INST, | 259 | |
264 | OMAP4_PRM_IRQENABLE_MPU_2_OFFSET); | 260 | saved_mask[i] = |
261 | omap4_prm_read_inst_reg(OMAP4430_PRM_OCP_SOCKET_INST, | ||
262 | reg); | ||
263 | omap4_prm_write_inst_reg(0, OMAP4430_PRM_OCP_SOCKET_INST, reg); | ||
264 | } | ||
265 | 265 | ||
266 | /* OCP barrier */ | 266 | /* OCP barrier */ |
267 | omap4_prm_read_inst_reg(OMAP4430_PRM_OCP_SOCKET_INST, | 267 | omap4_prm_read_inst_reg(OMAP4430_PRM_OCP_SOCKET_INST, |
@@ -280,10 +280,12 @@ static void omap44xx_prm_save_and_clear_irqen(u32 *saved_mask) | |||
280 | */ | 280 | */ |
281 | static void omap44xx_prm_restore_irqen(u32 *saved_mask) | 281 | static void omap44xx_prm_restore_irqen(u32 *saved_mask) |
282 | { | 282 | { |
283 | omap4_prm_write_inst_reg(saved_mask[0], OMAP4430_PRM_OCP_SOCKET_INST, | 283 | int i; |
284 | OMAP4_PRM_IRQENABLE_MPU_OFFSET); | 284 | |
285 | omap4_prm_write_inst_reg(saved_mask[1], OMAP4430_PRM_OCP_SOCKET_INST, | 285 | for (i = 0; i < omap4_prcm_irq_setup.nr_regs; i++) |
286 | OMAP4_PRM_IRQENABLE_MPU_2_OFFSET); | 286 | omap4_prm_write_inst_reg(saved_mask[i], |
287 | OMAP4430_PRM_OCP_SOCKET_INST, | ||
288 | omap4_prcm_irq_setup.mask + i * 4); | ||
287 | } | 289 | } |
288 | 290 | ||
289 | /** | 291 | /** |