summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Gonzalez <alex.gonzalez@digi.com>2012-02-21 12:54:42 +0100
committerAlex Gonzalez <alex.gonzalez@digi.com>2012-02-21 12:54:42 +0100
commitb18c30dd60daee65abed837402e92a8e549e7af2 (patch)
tree6f6ee99fbdb9f2c79a2e66e9bd3dd6ff76684ffb
parent813a95ac0757995ae76d873ce14e41fc60a61965 (diff)
mc13892: Generalize the previous patch.
The masking/unmasking of events in suspend/resume is not specific to any platform. Signed-off-by: Alex Gonzalez <alex.gonzalez@digi.com>
-rw-r--r--arch/arm/mach-mx5/mx51_ccwmx51js_pmic_mc13892.c43
-rw-r--r--drivers/mxc/pmic/core/pmic_external.c46
-rw-r--r--drivers/mxc/pmic/mc13892/pmic_adc.c7
-rw-r--r--include/linux/pmic_external.h2
4 files changed, 50 insertions, 48 deletions
diff --git a/arch/arm/mach-mx5/mx51_ccwmx51js_pmic_mc13892.c b/arch/arm/mach-mx5/mx51_ccwmx51js_pmic_mc13892.c
index fbf097528041..9050e3586cae 100644
--- a/arch/arm/mach-mx5/mx51_ccwmx51js_pmic_mc13892.c
+++ b/arch/arm/mach-mx5/mx51_ccwmx51js_pmic_mc13892.c
@@ -26,8 +26,6 @@
#include <mach/irqs.h>
#include "mx51_pins.h"
-static unsigned int irqmasks[2];
-
/*
* Convenience conversion.
* Here atm, maybe there is somewhere better for this.
@@ -337,47 +335,6 @@ static void power_on_evt_handler(void)
}
#endif
-int ccxmx51_pm_mc13892_mask_irqs( void )
-{
- int ev;
-
- // Store current masks
- pmic_get_enabled_events(irqmasks);
-
- // Mask all events except power button and RTC
- for( ev=0 ; ev < EVENT_NB ; ev++ ){
- if( ev == EVENT_PWRONI || ev == EVENT_TODAI )
- continue;
- if( !pmic_is_event_masked(irqmasks,ev) )
- pmic_event_mask(ev);
- }
- return 0;
-}
-
-int ccxmx51_pm_mc13892_unmask_irqs( void )
-{
- int ev;
- unsigned int current_irqmasks[2];
-
- // Fetch current event mask
- pmic_get_enabled_events(current_irqmasks);
-
- // For all events
- for( ev=0 ; ev < EVENT_NB ; ev++ ){
- if( pmic_is_event_masked(irqmasks,ev) ){
- if( !pmic_is_event_masked(current_irqmasks,ev) ){
- pmic_event_mask(ev);
- }
- }
- else{
- if( pmic_is_event_masked(current_irqmasks,ev) ){
- pmic_event_unmask(ev);
- }
- }
- }
- return 0;
-}
-
static int mc13892_regulator_init(struct mc13892 *mc13892)
{
unsigned int value, register_mask;
diff --git a/drivers/mxc/pmic/core/pmic_external.c b/drivers/mxc/pmic/core/pmic_external.c
index b5047d63e7b5..47697d3b9398 100644
--- a/drivers/mxc/pmic/core/pmic_external.c
+++ b/drivers/mxc/pmic/core/pmic_external.c
@@ -232,6 +232,9 @@ PMIC_STATUS pmic_write_reg(int reg, unsigned int reg_value,
}
#ifndef CONFIG_MXC_PMIC_MC34704
+
+static unsigned int irqmasks[2];
+
unsigned int pmic_get_active_events(unsigned int *active_events)
{
unsigned int count = 0;
@@ -352,6 +355,49 @@ int pmic_event_mask(type_event event)
return ret;
}
EXPORT_SYMBOL(pmic_event_mask);
+
+int mc13892_suspend_mask_irqs( void )
+{
+ int ev;
+
+ // Store current masks
+ pmic_get_enabled_events(irqmasks);
+
+ // Mask all events except power button and RTC
+ for( ev=0 ; ev < EVENT_NB ; ev++ ){
+ if( ev == EVENT_PWRONI || ev == EVENT_TODAI )
+ continue;
+ if( !pmic_is_event_masked(irqmasks,ev) )
+ pmic_event_mask(ev);
+ }
+ return 0;
+}
+EXPORT_SYMBOL(mc13892_suspend_mask_irqs);
+
+int mc13892_resume_unmask_irqs( void )
+{
+ int ev;
+ unsigned int current_irqmasks[2];
+
+ // Fetch current event mask
+ pmic_get_enabled_events(current_irqmasks);
+
+ // For all events
+ for( ev=0 ; ev < EVENT_NB ; ev++ ){
+ if( pmic_is_event_masked(irqmasks,ev) ){
+ if( !pmic_is_event_masked(current_irqmasks,ev) ){
+ pmic_event_mask(ev);
+ }
+ }
+ else{
+ if( pmic_is_event_masked(current_irqmasks,ev) ){
+ pmic_event_unmask(ev);
+ }
+ }
+ }
+ return 0;
+}
+EXPORT_SYMBOL(mc13892_resume_unmask_irqs);
#endif
EXPORT_SYMBOL(pmic_read_reg);
diff --git a/drivers/mxc/pmic/mc13892/pmic_adc.c b/drivers/mxc/pmic/mc13892/pmic_adc.c
index 998334361c2a..6a81e00c6ca6 100644
--- a/drivers/mxc/pmic/mc13892/pmic_adc.c
+++ b/drivers/mxc/pmic/mc13892/pmic_adc.c
@@ -43,9 +43,6 @@
static int mc13892_adc_major;
static struct class *mc13892_adc_class;
-extern int ccxmx51_pm_mc13892_mask_irqs( void );
-extern int ccxmx51_pm_mc13892_unmask_irqs( void );
-
/*
* Maximun allowed variation in the three X/Y co-ordinates acquired from
* touch-screen
@@ -257,7 +254,7 @@ static int pmic_adc_suspend(struct platform_device *pdev, pm_message_t state)
CHECK_ERROR(pmic_write_reg(REG_ADC3, DEF_ADC_3, PMIC_ALL_BITS));
CHECK_ERROR(pmic_write_reg(REG_ADC4, 0, PMIC_ALL_BITS));
- ccxmx51_pm_mc13892_mask_irqs();
+ mc13892_suspend_mask_irqs();
return 0;
};
@@ -274,7 +271,7 @@ static int pmic_adc_resume(struct platform_device *pdev)
adc_1_reg = ADC_WAIT_TSI_1 | (ADC_BIS * adc_ts);
CHECK_ERROR(pmic_write_reg(REG_ADC1, adc_1_reg, PMIC_ALL_BITS));
- ccxmx51_pm_mc13892_unmask_irqs();
+ mc13892_resume_unmask_irqs();
while (swait > 0) {
swait--;
diff --git a/include/linux/pmic_external.h b/include/linux/pmic_external.h
index 336c6fbaf254..5c7026acff8d 100644
--- a/include/linux/pmic_external.h
+++ b/include/linux/pmic_external.h
@@ -507,6 +507,8 @@ 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 );
+int mc13892_suspend_mask_irqs( void );
+int mc13892_resume_unmask_irqs( void );
unsigned int pmic_get_active_events(unsigned int *active_events);
int pmic_event_mask(type_event event);
int pmic_event_unmask(type_event event);