diff options
Diffstat (limited to 'arch/arm/mach-pxa/corgi_pm.c')
| -rw-r--r-- | arch/arm/mach-pxa/corgi_pm.c | 24 | 
1 files changed, 20 insertions, 4 deletions
diff --git a/arch/arm/mach-pxa/corgi_pm.c b/arch/arm/mach-pxa/corgi_pm.c index 29034778bfd..7a39efc5086 100644 --- a/arch/arm/mach-pxa/corgi_pm.c +++ b/arch/arm/mach-pxa/corgi_pm.c @@ -15,9 +15,11 @@  #include <linux/kernel.h>  #include <linux/delay.h>  #include <linux/gpio.h> +#include <linux/gpio-pxa.h>  #include <linux/interrupt.h>  #include <linux/platform_device.h>  #include <linux/apm-emulation.h> +#include <linux/io.h>  #include <asm/irq.h>  #include <asm/mach-types.h> @@ -40,7 +42,9 @@ static struct gpio charger_gpios[] = {  	{ CORGI_GPIO_ADC_TEMP_ON, GPIOF_OUT_INIT_LOW, "ADC Temp On" },  	{ CORGI_GPIO_CHRG_ON,	  GPIOF_OUT_INIT_LOW, "Charger On" },  	{ CORGI_GPIO_CHRG_UKN,	  GPIOF_OUT_INIT_LOW, "Charger Unknown" }, +	{ CORGI_GPIO_AC_IN,	  GPIOF_IN, "Charger Detection" },  	{ CORGI_GPIO_KEY_INT,	  GPIOF_IN, "Key Interrupt" }, +	{ CORGI_GPIO_WAKEUP,	  GPIOF_IN, "System wakeup notification" },  };  static void corgi_charger_init(void) @@ -90,7 +94,12 @@ static int corgi_should_wakeup(unsigned int resume_on_alarm)  {  	int is_resume = 0; -	dev_dbg(sharpsl_pm.dev, "GPLR0 = %x,%x\n", GPLR0, PEDR); +	dev_dbg(sharpsl_pm.dev, "PEDR = %x, GPIO_AC_IN = %d, " +		"GPIO_CHRG_FULL = %d, GPIO_KEY_INT = %d, GPIO_WAKEUP = %d\n", +		PEDR, gpio_get_value(CORGI_GPIO_AC_IN), +		gpio_get_value(CORGI_GPIO_CHRG_FULL), +		gpio_get_value(CORGI_GPIO_KEY_INT), +		gpio_get_value(CORGI_GPIO_WAKEUP));  	if ((PEDR & GPIO_bit(CORGI_GPIO_AC_IN))) {  		if (sharpsl_pm.machinfo->read_devdata(SHARPSL_STATUS_ACIN)) { @@ -124,14 +133,21 @@ static int corgi_should_wakeup(unsigned int resume_on_alarm)  static unsigned long corgi_charger_wakeup(void)  { -	return ~GPLR0 & ( GPIO_bit(CORGI_GPIO_AC_IN) | GPIO_bit(CORGI_GPIO_KEY_INT) | GPIO_bit(CORGI_GPIO_WAKEUP) ); +	unsigned long ret; + +	ret = (!gpio_get_value(CORGI_GPIO_AC_IN) << GPIO_bit(CORGI_GPIO_AC_IN)) +		| (!gpio_get_value(CORGI_GPIO_KEY_INT) +		<< GPIO_bit(CORGI_GPIO_KEY_INT)) +		| (!gpio_get_value(CORGI_GPIO_WAKEUP) +		<< GPIO_bit(CORGI_GPIO_WAKEUP)); +	return ret;  }  unsigned long corgipm_read_devdata(int type)  {  	switch(type) {  	case SHARPSL_STATUS_ACIN: -		return ((GPLR(CORGI_GPIO_AC_IN) & GPIO_bit(CORGI_GPIO_AC_IN)) != 0); +		return !gpio_get_value(CORGI_GPIO_AC_IN);  	case SHARPSL_STATUS_LOCK:  		return gpio_get_value(sharpsl_pm.machinfo->gpio_batlock);  	case SHARPSL_STATUS_CHRGFULL: @@ -182,7 +198,7 @@ static struct sharpsl_charger_machinfo corgi_pm_machinfo = {  static struct platform_device *corgipm_device; -static int __devinit corgipm_init(void) +static int corgipm_init(void)  {  	int ret;  | 
