summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Gonzalez <alex.gonzalez@digi.com>2012-02-21 12:03:41 +0100
committerAlex Gonzalez <alex.gonzalez@digi.com>2012-02-21 12:14:09 +0100
commitdac0169edb4a0f3043038f54c4c4cbab35b95af9 (patch)
treeb94ab4c66dae10c4647eb7b6978b8fdc7c83ad0b
parent1436564512fc3960b3969700d1e5d98d65309021 (diff)
mc13892: Extend event handling API.
Add functions to get the currently enabled events and to ascertain whether certain event is masked on a provided event mask. These functions will be used to mask/unmask events in suspend/resume. Signed-off-by: Alex Gonzalez <alex.gonzalez@digi.com>
-rw-r--r--drivers/mxc/pmic/core/pmic_external.c22
-rw-r--r--include/linux/pmic_external.h3
2 files changed, 24 insertions, 1 deletions
diff --git a/drivers/mxc/pmic/core/pmic_external.c b/drivers/mxc/pmic/core/pmic_external.c
index 0330e2475e64..b5047d63e7b5 100644
--- a/drivers/mxc/pmic/core/pmic_external.c
+++ b/drivers/mxc/pmic/core/pmic_external.c
@@ -262,9 +262,31 @@ unsigned int pmic_get_active_events(unsigned int *active_events)
}
EXPORT_SYMBOL(pmic_get_active_events);
+void pmic_get_enabled_events(unsigned int *enabled_events)
+{
+ enabled_events[0] = events_enabled0;
+ enabled_events[1] = events_enabled1;
+}
+EXPORT_SYMBOL(pmic_get_enabled_events);
+
#define EVENT_MASK_0 0x387fff
#define EVENT_MASK_1 0x1177ef
+int pmic_is_event_masked( unsigned int * event_mask , type_event event )
+{
+ unsigned int event_bit = 0;
+
+ if (event < EVENT_1HZI) {
+ event_bit = (1 << event);
+ return !(event_mask[0] & event_bit);
+ } else {
+ event -= 24;
+ event_bit = (1 << event);
+ return !(event_mask[1] & event_bit);
+ }
+}
+EXPORT_SYMBOL(pmic_is_event_masked);
+
int pmic_event_unmask(type_event event)
{
unsigned int event_mask = 0;
diff --git a/include/linux/pmic_external.h b/include/linux/pmic_external.h
index d704a5315c99..336c6fbaf254 100644
--- a/include/linux/pmic_external.h
+++ b/include/linux/pmic_external.h
@@ -505,7 +505,8 @@ PMIC_STATUS pmic_get_sensors(t_sensor_bits *sensor_bits);
void pmic_event_callback(type_event event);
void pmic_event_list_init(void);
-
+void pmic_get_enabled_events(unsigned int *enabled_events);
+int pmic_is_event_masked( unsigned int * event_mask , type_event event );
unsigned int pmic_get_active_events(unsigned int *active_events);
int pmic_event_mask(type_event event);
int pmic_event_unmask(type_event event);