[ARM] pxa/em-x270: add battery charger
authorMike Rapoport <mike@compulab.co.il>
Mon, 2 Feb 2009 06:57:53 +0000 (08:57 +0200)
committerEric Miao <eric.miao@marvell.com>
Mon, 2 Feb 2009 09:40:16 +0000 (17:40 +0800)
Signed-off-by: Mike Rapoport <mike@compulab.co.il>
Signed-off-by: Eric Miao <eric.miao@marvell.com>
arch/arm/mach-pxa/em-x270.c

index 7d056cb2334e593037ca4fcb8dda56019ecb5745..20ed10c67c6c95df02e2a11de7f3a2ed3f7f2426 100644 (file)
@@ -24,6 +24,8 @@
 #include <linux/regulator/machine.h>
 #include <linux/spi/spi.h>
 #include <linux/spi/tdo24m.h>
+#include <linux/power_supply.h>
+#include <linux/apm-emulation.h>
 
 #include <media/soc_camera.h>
 
@@ -824,6 +826,49 @@ struct led_info em_x270_led_info = {
        .default_trigger = "battery-charging-or-full",
 };
 
+struct power_supply_info em_x270_psy_info = {
+       .name = "LP555597P6H-FPS",
+       .technology = POWER_SUPPLY_TECHNOLOGY_LIPO,
+       .voltage_max_design = 4200000,
+       .voltage_min_design = 3000000,
+       .use_for_apm = 1,
+};
+
+static void em_x270_battery_low(void)
+{
+       apm_queue_event(APM_LOW_BATTERY);
+}
+
+static void em_x270_battery_critical(void)
+{
+       apm_queue_event(APM_CRITICAL_SUSPEND);
+}
+
+struct da9030_battery_info em_x270_batterty_info = {
+       .battery_info = &em_x270_psy_info,
+
+       .charge_milliamp = 1000,
+       .charge_millivolt = 4200,
+
+       .vbat_low = 3600,
+       .vbat_crit = 3400,
+       .vbat_charge_start = 4100,
+       .vbat_charge_stop = 4200,
+       .vbat_charge_restart = 4000,
+
+       .vcharge_min = 3200,
+       .vcharge_max = 5500,
+
+       .tbat_low = 197,
+       .tbat_high = 78,
+       .tbat_restart = 100,
+
+       .batmon_interval = 0,
+
+       .battery_low = em_x270_battery_low,
+       .battery_critical = em_x270_battery_critical,
+};
+
 #define DA9030_SUBDEV(_name, _id, _pdata)      \
        {                                       \
                .name = "da903x-" #_name,       \
@@ -842,6 +887,7 @@ struct da903x_subdev_info em_x270_da9030_subdevs[] = {
 
        DA9030_SUBDEV(led, LED_PC, &em_x270_led_info),
        DA9030_SUBDEV(backlight, WLED, &em_x270_led_info),
+       DA9030_SUBDEV(battery, BAT, &em_x270_batterty_info),
 };
 
 static struct da903x_platform_data em_x270_da9030_info = {