[PATCH v6 02/16] OMAP2+: hwmod: Add API to check IO PAD wakeup status
From: Govindraj <hidden>
Date: 2011-10-03 05:00:47
Also in:
linux-omap, linux-serial
Thanks for the review, On Sat, Oct 1, 2011 at 8:03 PM, Rajendra Nayak [off-list ref] wrote:
On Friday 30 September 2011 04:31 PM, Govindraj.R wrote:quoted
Add API to determine IO-PAD wakeup event status for a given hwmod dynamic_mux pad. Wake up event set will be cleared on pad mux_read.Are these api's even getting used in this series?
Used in Tero's irq_chaining patches. http://lkml.org/lkml/2011/9/23/121 -- Thanks, Govindraj.R
quoted
Signed-off-by: Govindraj.R<redacted> --- ?arch/arm/mach-omap2/mux.c ? ? ? ? ? ? ? ? ? ?| ? 30 ++++++++++++++++++++++++++ ?arch/arm/mach-omap2/mux.h ? ? ? ? ? ? ? ? ? ?| ? 13 +++++++++++ ?arch/arm/mach-omap2/omap_hwmod.c ? ? ? ? ? ? | ? ?7 ++++++ ?arch/arm/plat-omap/include/plat/omap_hwmod.h | ? ?1 + ?4 files changed, 51 insertions(+), 0 deletions(-)diff --git a/arch/arm/mach-omap2/mux.c b/arch/arm/mach-omap2/mux.c index 655e948..fb75aae 100644 --- a/arch/arm/mach-omap2/mux.c +++ b/arch/arm/mach-omap2/mux.c@@ -351,6 +351,36 @@ err1:? ? ? ?return NULL; ?} +/** + * omap_hwmod_mux_get_wake_status - omap hwmod check pad wakeup + * @hmux: ? ? ? ? ? ? ?Pads for a hwmod + * + * Gets the wakeup status of given pad from omap-hwmod. + * Returns true if wakeup capability is set and wakeup event occurred. + * Returns false if wakeup event has not occurred or pads are not available. + */ +bool omap_hwmod_mux_get_wake_status(struct omap_hwmod_mux_info *hmux) +{ + ? ? ? int i; + ? ? ? unsigned int val; + ? ? ? u8 ret = false; + + ? ? ? for (i = 0; i< ?hmux->nr_pads; i++) { + ? ? ? ? ? ? ? struct omap_device_pad *pad =&hmux->pads[i]; + + ? ? ? ? ? ? ? if (pad->flags& ?OMAP_DEVICE_PAD_WAKEUP) { + ? ? ? ? ? ? ? ? ? ? ? val = omap_mux_read(pad->partition, + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? pad->mux->reg_offset); + ? ? ? ? ? ? ? ? ? ? ? if (val& ?OMAP_WAKEUP_EVENT) { + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ret = true; + ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? break; + ? ? ? ? ? ? ? ? ? ? ? } + ? ? ? ? ? ? ? } + ? ? ? } + + ? ? ? return ret; +} + ?/* Assumes the calling function takes care of locking */ ?void omap_hwmod_mux(struct omap_hwmod_mux_info *hmux, u8 state) ?{diff --git a/arch/arm/mach-omap2/mux.h b/arch/arm/mach-omap2/mux.h index 2132308..8b2150a 100644 --- a/arch/arm/mach-omap2/mux.h +++ b/arch/arm/mach-omap2/mux.h@@ -225,8 +225,21 @@ omap_hwmod_mux_init(struct omap_device_pad *bpads,int nr_pads); ? */ ?void omap_hwmod_mux(struct omap_hwmod_mux_info *hmux, u8 state); +/** + * omap_hwmod_mux_get_wake_status - omap hwmod check pad wakeup + * @hmux: ? ? ? ? ? ? ?Pads for a hwmod + * + * Called only from omap_hwmod.c, do not use. + */ +bool omap_hwmod_mux_get_wake_status(struct omap_hwmod_mux_info *hmux); ?#else +static inline bool +omap_hwmod_mux_get_wake_status(struct omap_hwmod_mux_info *hmux) +{ + ? ? ? return 0; +} + ?static inline int omap_mux_init_gpio(int gpio, int val) ?{ ? ? ? ?return 0;diff --git a/arch/arm/mach-omap2/omap_hwmod.cb/arch/arm/mach-omap2/omap_hwmod.c index e751dd9..a8b24d7 100644--- a/arch/arm/mach-omap2/omap_hwmod.c +++ b/arch/arm/mach-omap2/omap_hwmod.c@@ -2724,3 +2724,10 @@ int omap_hwmod_no_setup_reset(struct omap_hwmod*oh) ? ? ? ?return 0; ?} + +int omap_hwmod_pad_get_wakeup_status(struct omap_hwmod *oh) +{ + ? ? ? if (oh&& ?oh->mux) + ? ? ? ? ? ? ? return omap_hwmod_mux_get_wake_status(oh->mux); + ? ? ? return -EINVAL; +}diff --git a/arch/arm/plat-omap/include/plat/omap_hwmod.hb/arch/arm/plat-omap/include/plat/omap_hwmod.h index 0e329ca..9a6195c 100644--- a/arch/arm/plat-omap/include/plat/omap_hwmod.h +++ b/arch/arm/plat-omap/include/plat/omap_hwmod.h@@ -607,6 +607,7 @@ u32 omap_hwmod_get_context_loss_count(structomap_hwmod *oh); ?int omap_hwmod_no_setup_reset(struct omap_hwmod *oh); +int omap_hwmod_pad_get_wakeup_status(struct omap_hwmod *oh); ?/* ? * Chip variant-specific hwmod init routines - XXX should be converted ? * to use initcalls once the initial boot ordering is straightened out-- To unsubscribe from this list: send the line "unsubscribe linux-serial" in the body of a message to majordomo at vger.kernel.org More majordomo info at ?http://vger.kernel.org/majordomo-info.html