diff options
author | Alex Gonzalez <alex.gonzalez@digi.com> | 2012-02-21 12:03:41 +0100 |
---|---|---|
committer | Alex Gonzalez <alex.gonzalez@digi.com> | 2012-02-21 12:14:09 +0100 |
commit | dac0169edb4a0f3043038f54c4c4cbab35b95af9 (patch) | |
tree | b94ab4c66dae10c4647eb7b6978b8fdc7c83ad0b | |
parent | 1436564512fc3960b3969700d1e5d98d65309021 (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.c | 22 | ||||
-rw-r--r-- | include/linux/pmic_external.h | 3 |
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); |