diff options
Diffstat (limited to 'drivers/battery/samsung_battery.c')
-rw-r--r-- | drivers/battery/samsung_battery.c | 41 |
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); |