aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/battery/samsung_battery.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/battery/samsung_battery.c')
-rw-r--r--drivers/battery/samsung_battery.c41
1 files changed, 35 insertions, 6 deletions
diff --git a/drivers/battery/samsung_battery.c b/drivers/battery/samsung_battery.c
index ffe10e9..d3f45f2 100644
--- a/drivers/battery/samsung_battery.c
+++ b/drivers/battery/samsung_battery.c
@@ -58,15 +58,27 @@ static void battery_error_control(struct battery_info *info);
unsigned int lpcharge;
static int battery_get_lpm_state(char *str)
{
- get_option(&str, &lpcharge);
+ if (strncmp(str, "1", 1) == 0)
+ lpcharge = 1;
+
pr_info("%s: Low power charging mode: %d\n", __func__, lpcharge);
return lpcharge;
}
__setup("lpcharge=", battery_get_lpm_state);
-#if defined(CONFIG_RTC_ALARM_BOOT)
+
+/* For KitKat bootloader compatibility */
+static int bootloader_get_lpm_state(char *str)
+{
+ if (strncmp(str, "charger", 7) == 0)
+ lpcharge = 1;
+
+ pr_info("%s: Low power charging mode: %d\n", __func__, lpcharge);
+
+ return lpcharge;
+}
+__setup("androidboot.mode=", bootloader_get_lpm_state);
EXPORT_SYMBOL(lpcharge);
-#endif
/* Cable type from charger or adc */
static int battery_get_cable(struct battery_info *info)
@@ -2007,6 +2019,14 @@ static int samsung_battery_set_property(struct power_supply *ps,
case POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN:
info->pdata->voltage_min = val->intval;
break;
+#if defined(CONFIG_MACH_KONA)
+ case POWER_SUPPLY_PROP_COMPENSATION_3:
+ info->is_comp_3 = val->intval;
+ break;
+ case POWER_SUPPLY_PROP_COMPENSATION_1:
+ info->is_comp_1 = val->intval;
+ break;
+#endif
default:
return -EINVAL;
}
@@ -2037,12 +2057,19 @@ static int samsung_usb_get_property(struct power_supply *ps,
return -EINVAL;
/* Set enable=1 only if the USB charger is connected */
- val->intval = ((info->charge_virt_state !=
- POWER_SUPPLY_STATUS_DISCHARGING) &&
- ((info->cable_type == POWER_SUPPLY_TYPE_USB) ||
+#if defined(CONFIG_MACH_KONA)
+ val->intval = (((info->cable_type == POWER_SUPPLY_TYPE_USB) ||
(info->cable_type == POWER_SUPPLY_TYPE_USB_CDP) ||
((info->cable_type == POWER_SUPPLY_TYPE_DOCK) &&
(info->online_prop == ONLINE_PROP_USB))));
+#else
+ val->intval = ((info->charge_virt_state !=
+ POWER_SUPPLY_STATUS_DISCHARGING) &&
+ ((info->cable_type == POWER_SUPPLY_TYPE_USB) ||
+ (info->cable_type == POWER_SUPPLY_TYPE_USB_CDP) ||
+ ((info->cable_type == POWER_SUPPLY_TYPE_DOCK) &&
+ (info->online_prop == ONLINE_PROP_USB))));
+#endif
return 0;
}
@@ -2161,9 +2188,11 @@ static __devinit int samsung_battery_probe(struct platform_device *pdev)
pr_info("%s: VF detect source: %s\n", __func__,
vf_src_name[info->pdata->vf_det_src]);
+#if !defined(CONFIG_MACH_KONA)
/* recalculate recharge voltage, it depends on max voltage value */
info->pdata->recharge_voltage = info->pdata->voltage_max -
RECHG_DROP_VALUE;
+#endif
pr_info("%s: Recharge voltage: %d\n", __func__,
info->pdata->recharge_voltage);