|
@@ -1,7 +1,7 @@
|
|
/*
|
|
/*
|
|
* OMAP2/3 PRM module functions
|
|
* OMAP2/3 PRM module functions
|
|
*
|
|
*
|
|
- * Copyright (C) 2010 Texas Instruments, Inc.
|
|
|
|
|
|
+ * Copyright (C) 2010-2011 Texas Instruments, Inc.
|
|
* Copyright (C) 2010 Nokia Corporation
|
|
* Copyright (C) 2010 Nokia Corporation
|
|
* Benoît Cousson
|
|
* Benoît Cousson
|
|
* Paul Walmsley
|
|
* Paul Walmsley
|
|
@@ -212,3 +212,35 @@ u32 omap3_prm_vcvp_rmw(u32 mask, u32 bits, u8 offset)
|
|
{
|
|
{
|
|
return omap2_prm_rmw_mod_reg_bits(mask, bits, OMAP3430_GR_MOD, offset);
|
|
return omap2_prm_rmw_mod_reg_bits(mask, bits, OMAP3430_GR_MOD, offset);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * omap3xxx_prm_read_pending_irqs - read pending PRM MPU IRQs into @events
|
|
|
|
+ * @events: ptr to a u32, preallocated by caller
|
|
|
|
+ *
|
|
|
|
+ * Read PRM_IRQSTATUS_MPU bits, AND'ed with the currently-enabled PRM
|
|
|
|
+ * MPU IRQs, and store the result into the u32 pointed to by @events.
|
|
|
|
+ * No return value.
|
|
|
|
+ */
|
|
|
|
+void omap3xxx_prm_read_pending_irqs(unsigned long *events)
|
|
|
|
+{
|
|
|
|
+ u32 mask, st;
|
|
|
|
+
|
|
|
|
+ /* XXX Can the mask read be avoided (e.g., can it come from RAM?) */
|
|
|
|
+ mask = omap2_prm_read_mod_reg(OCP_MOD, OMAP3_PRM_IRQENABLE_MPU_OFFSET);
|
|
|
|
+ st = omap2_prm_read_mod_reg(OCP_MOD, OMAP3_PRM_IRQSTATUS_MPU_OFFSET);
|
|
|
|
+
|
|
|
|
+ events[0] = mask & st;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * omap3xxx_prm_ocp_barrier - force buffered MPU writes to the PRM to complete
|
|
|
|
+ *
|
|
|
|
+ * Force any buffered writes to the PRM IP block to complete. Needed
|
|
|
|
+ * by the PRM IRQ handler, which reads and writes directly to the IP
|
|
|
|
+ * block, to avoid race conditions after acknowledging or clearing IRQ
|
|
|
|
+ * bits. No return value.
|
|
|
|
+ */
|
|
|
|
+void omap3xxx_prm_ocp_barrier(void)
|
|
|
|
+{
|
|
|
|
+ omap2_prm_read_mod_reg(OCP_MOD, OMAP3_PRM_REVISION_OFFSET);
|
|
|
|
+}
|