summaryrefslogtreecommitdiff
path: root/arch
diff options
context:
space:
mode:
authorJason Chen <b02280@freescale.com>2011-02-21 11:28:46 +0800
committerJason Chen <b02280@freescale.com>2011-02-21 12:49:45 +0800
commit11e8de6cd235b45076001f127a63a30d9dafc78a (patch)
treea2153545420668746208fe407181385bbe9d244d /arch
parent27b0d7864bfaa73b92e4aa2125a9c00a147db641 (diff)
ENGR00139380-1 SMD-MSL: add max17085 battery charger support
Add max17085 battery charger support Signed-off-by: Jason Chen <b02280@freescale.com>
Diffstat (limited to 'arch')
-rw-r--r--arch/arm/mach-mx5/mx53_smd.c56
1 files changed, 56 insertions, 0 deletions
diff --git a/arch/arm/mach-mx5/mx53_smd.c b/arch/arm/mach-mx5/mx53_smd.c
index cc30a07a1b4b..1ce02f3af4f4 100644
--- a/arch/arm/mach-mx5/mx53_smd.c
+++ b/arch/arm/mach-mx5/mx53_smd.c
@@ -862,6 +862,51 @@ static void mx53_smd_power_off(void)
gpio_request(MX53_SMD_SYS_ON_OFF_CTL, "power-off");
gpio_set_value(MX53_SMD_SYS_ON_OFF_CTL, 0);
}
+
+#if defined(CONFIG_BATTERY_MAX17085) || defined(CONFIG_BATTERY_MAX17085_MODULE)
+static struct resource smd_batt_resource[] = {
+ {
+ .flags = IORESOURCE_IO,
+ .name = "pwr-good",
+ .start = MX53_SMD_PWR_GOOD,
+ .end = MX53_SMD_PWR_GOOD,
+ },
+ {
+ .flags = IORESOURCE_IO,
+ .name = "ac-in",
+ .start = MX53_SMD_AC_IN,
+ .end = MX53_SMD_AC_IN,
+ },
+ {
+ .flags = IORESOURCE_IO,
+ .name = "charge-now",
+ .start = MX53_SMD_CHRG_OR_CMOS,
+ .end = MX53_SMD_CHRG_OR_CMOS,
+ },
+ {
+ .flags = IORESOURCE_IO,
+ .name = "charge-done",
+ .start = MX53_SMD_USER_DEG_CHG_NONE,
+ .end = MX53_SMD_USER_DEG_CHG_NONE,
+ },
+};
+
+static struct platform_device smd_battery_device = {
+ .name = "max17085_bat",
+ .resource = smd_batt_resource,
+ .num_resources = ARRAY_SIZE(smd_batt_resource),
+};
+
+static void __init smd_add_device_battery(void)
+{
+ platform_device_register(&smd_battery_device);
+}
+#else
+static void __init smd_add_device_battery(void)
+{
+}
+#endif
+
/*!
* Board specific fixup function. It is called by \b setup_arch() in
* setup.c file very early on during kernel starts. It allows the user to
@@ -1014,6 +1059,16 @@ static void __init mx53_smd_io_init(void)
mdelay(5);
gpio_set_value(MX53_SMD_WLAN_PD, 1);
gpio_free(MX53_SMD_WLAN_PD);
+
+ /* battery */
+ gpio_request(MX53_SMD_AC_IN, "ac-in");
+ gpio_direction_input(MX53_SMD_AC_IN);
+ gpio_request(MX53_SMD_PWR_GOOD, "pwr-good");
+ gpio_direction_input(MX53_SMD_PWR_GOOD);
+ gpio_request(MX53_SMD_CHRG_OR_CMOS, "charger now");
+ gpio_direction_output(MX53_SMD_CHRG_OR_CMOS, 0);
+ gpio_request(MX53_SMD_USER_DEG_CHG_NONE, "charger done");
+ gpio_direction_output(MX53_SMD_USER_DEG_CHG_NONE, 0);
}
/*!
@@ -1090,6 +1145,7 @@ static void __init mxc_board_init(void)
mxc_register_device(&mxc_v4l2out_device, NULL);
mxc_register_device(&mxc_bt_rfkill, &mxc_bt_rfkill_data);
smd_add_device_buttons();
+ smd_add_device_battery();
}
static void __init mx53_smd_timer_init(void)