[ARM] pxa/zeus: provide power-source information when APM is enabled
authorMarc Zyngier <maz@misterjones.org>
Sat, 26 Dec 2009 20:24:13 +0000 (21:24 +0100)
committerEric Miao <eric.y.miao@gmail.com>
Tue, 29 Dec 2009 06:11:32 +0000 (14:11 +0800)
Signed-off-by: Marc Zyngier <maz@misterjones.org>
Signed-off-by: Eric Miao <eric.y.miao@gmail.com>
arch/arm/mach-pxa/zeus.c

index 2f480a2b15316450386f1aa3d802b845c94d8f52..75f2a37f945df03afd4d8e50d10e627fbea701f0 100644 (file)
@@ -25,6 +25,7 @@
 #include <linux/mtd/physmap.h>
 #include <linux/i2c.h>
 #include <linux/i2c/pca953x.h>
+#include <linux/apm-emulation.h>
 
 #include <asm/mach-types.h>
 #include <asm/mach/arch.h>
@@ -626,6 +627,25 @@ static void zeus_power_off(void)
        pxa27x_cpu_suspend(PWRMODE_DEEPSLEEP);
 }
 
+#ifdef CONFIG_APM_EMULATION
+static void zeus_get_power_status(struct apm_power_info *info)
+{
+       /* Power supply is always present */
+       info->ac_line_status    = APM_AC_ONLINE;
+       info->battery_status    = APM_BATTERY_STATUS_NOT_PRESENT;
+       info->battery_flag      = APM_BATTERY_FLAG_NOT_PRESENT;
+}
+
+static inline void zeus_setup_apm(void)
+{
+       apm_get_power_status = zeus_get_power_status;
+}
+#else
+static inline void zeus_setup_apm(void)
+{
+}
+#endif
+
 static int zeus_get_pcb_info(struct i2c_client *client, unsigned gpio,
                             unsigned ngpio, void *context)
 {
@@ -747,6 +767,7 @@ static void __init zeus_init(void)
        MSC1 = (MSC1 & 0xffff0000) | dm9000_msc;
 
        pm_power_off = zeus_power_off;
+       zeus_setup_apm();
 
        pxa2xx_mfp_config(ARRAY_AND_SIZE(zeus_pin_config));