aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKeerthy <j-keerthy@ti.com>2015-07-08 01:42:26 -0400
committerPaul Walmsley <paul@pwsan.com>2015-07-23 08:08:19 -0400
commit8d4be7d8bf04f93cfb1512a078bd276efc270793 (patch)
treee039b494201642d8e127b341baa764c7548004e6
parent6e487001c5b0939e6083327432565559d8aab6fc (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.c38
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 */
218static void omap44xx_prm_read_pending_irqs(unsigned long *events) 218static 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 */
252static void omap44xx_prm_save_and_clear_irqen(u32 *saved_mask) 252static 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 */
281static void omap44xx_prm_restore_irqen(u32 *saved_mask) 281static 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/**