diff options
author | Daniel Hillenbrand <codeworkx@cyanogenmod.org> | 2013-06-04 01:33:22 +0200 |
---|---|---|
committer | Daniel Hillenbrand <codeworkx@cyanogenmod.org> | 2013-06-04 12:54:26 +0200 |
commit | 55bb2048feb59f2190f704c2a4df81b557b55c7a (patch) | |
tree | cbb680a60770fb762e5b27c502ad71c2366bf604 /drivers/battery | |
parent | 3d8b293a4f5042cd9fdc4009a40f6483371cd489 (diff) | |
download | kernel_samsung_smdk4412-55bb2048feb59f2190f704c2a4df81b557b55c7a.zip kernel_samsung_smdk4412-55bb2048feb59f2190f704c2a4df81b557b55c7a.tar.gz kernel_samsung_smdk4412-55bb2048feb59f2190f704c2a4df81b557b55c7a.tar.bz2 |
smdk4412: bulk update from i9300 update 9
Change-Id: Icd3e7b601f3f4c8b3dcf053fed5819fb7caf5296
Diffstat (limited to 'drivers/battery')
-rw-r--r-- | drivers/battery/max77693_charger.c | 31 | ||||
-rw-r--r-- | drivers/battery/samsung_battery.c | 14 |
2 files changed, 25 insertions, 20 deletions
diff --git a/drivers/battery/max77693_charger.c b/drivers/battery/max77693_charger.c index 4a147ee..35289a6 100644 --- a/drivers/battery/max77693_charger.c +++ b/drivers/battery/max77693_charger.c @@ -463,7 +463,8 @@ void max77693_set_input_current(struct max77693_charger_data *chg_data, #endif if (set_current == OFF_CURR) { - max77693_write_reg(i2c, MAX77693_CHG_REG_CHG_CNFG_09, set_current); + max77693_write_reg(i2c, MAX77693_CHG_REG_CHG_CNFG_09, + set_current); if (chg_data->soft_reg_state == true) { pr_info("%s: exit soft regulation loop\n", __func__); @@ -676,11 +677,12 @@ static int max77693_get_cable_type(struct max77693_charger_data *chg_data) int state; u8 reg_data, mu_adc, mu_adc1k, otg; u8 dtls_00, chgin_dtls; + u8 dtls_01, chg_dtls; u8 mu_st2, chgdetrun, vbvolt, chgtyp, dxovp; - int muic_cb_typ; +#ifdef CONFIG_BATTERY_WPC_CHARGER bool wc_state; - bool retry_det; - bool chg_det_erred = false; /* TEMP: set as true for logging */ +#endif + bool retry_det, chg_det_erred; bool otg_detected = false; int retry_cnt = 0; pr_debug("%s\n", __func__); @@ -719,10 +721,8 @@ static int max77693_get_cable_type(struct max77693_charger_data *chg_data) } #endif - muic_cb_typ = max77693_muic_get_charging_type(); /* if type detection by otg, do not otg check */ - if ((muic_cb_typ != CABLE_TYPE_AUDIODOCK_MUIC) && - (((otg || (mu_adc == 0x00 && !mu_adc1k))))) { + if (otg || (mu_adc == 0x00 && !mu_adc1k)) { pr_info("%s: otg enabled(otg(0x%x), adc(0x%x))\n", __func__, otg, mu_adc); state = POWER_SUPPLY_TYPE_BATTERY; @@ -737,15 +737,20 @@ static int max77693_get_cable_type(struct max77693_charger_data *chg_data) goto chg_det_finish; } + chg_det_erred = false; /* TEMP: set as true for logging */ do { retry_det = false; max77693_read_reg(chg_data->max77693->i2c, MAX77693_CHG_REG_CHG_DTLS_00, &dtls_00); + max77693_read_reg(chg_data->max77693->i2c, + MAX77693_CHG_REG_CHG_DTLS_01, &dtls_01); max77693_read_reg(chg_data->max77693->muic, MAX77693_MUIC_REG_STATUS2, &mu_st2); chgin_dtls = ((dtls_00 & MAX77693_CHGIN_DTLS) >> MAX77693_CHGIN_DTLS_SHIFT); + chg_dtls = ((dtls_01 & MAX77693_CHG_DTLS) >> + MAX77693_CHG_DTLS_SHIFT); chgdetrun = ((mu_st2 & MAX77693_CHGDETRUN) >> MAX77693_CHGDETRUN_SHIFT); vbvolt = ((mu_st2 & MAX77693_VBVOLT) >> @@ -753,9 +758,9 @@ static int max77693_get_cable_type(struct max77693_charger_data *chg_data) chgtyp = ((mu_st2 & MAX77693_CHGTYPE) >> MAX77693_CHGTYPE_SHIFT); if (chg_det_erred) - pr_err("%s: CHGIN(0x%x). MU_ST2(0x%x), " + pr_err("%s: CHGIN(0x%x). CHG(0x%x), MU_ST2(0x%x), " "CDR(0x%x), VB(0x%x), CHGTYP(0x%x)\n", __func__, - chgin_dtls, mu_st2, + chgin_dtls, chg_dtls, mu_st2, chgdetrun, vbvolt, chgtyp); /* input power state */ @@ -772,9 +777,7 @@ static int max77693_get_cable_type(struct max77693_charger_data *chg_data) chg_det_erred = true; /* check chargable input power */ - if ((chgin_dtls == 0x0) && - (chg_data->cable_type == - POWER_SUPPLY_TYPE_BATTERY)) { + if ((chgin_dtls == 0x0) && (chg_dtls == 0x8)) { pr_err("%s: unchargable power\n", __func__); state = POWER_SUPPLY_TYPE_BATTERY; goto chg_det_finish; @@ -974,10 +977,6 @@ static int max77693_get_online_type(struct max77693_charger_data *chg_data) m_typ = max77693_get_cable_type(chg_data); - pr_info("%s: main(%d), sub(%d), pwr(%d)\n", __func__, m_typ, - chg_data->cable_sub_type, - chg_data->cable_pwr_type); - state = ((m_typ << ONLINE_TYPE_MAIN_SHIFT) | (chg_data->cable_sub_type << ONLINE_TYPE_SUB_SHIFT) | (chg_data->cable_pwr_type << ONLINE_TYPE_PWR_SHIFT)); diff --git a/drivers/battery/samsung_battery.c b/drivers/battery/samsung_battery.c index c63430b..ffe10e9 100644 --- a/drivers/battery/samsung_battery.c +++ b/drivers/battery/samsung_battery.c @@ -637,7 +637,7 @@ static void battery_notify_full_state(struct battery_info *info) info->battery_raw_soc, info->battery_full_soc, info->battery_soc); - if ((info->recharge_phase && info->full_charged_state) || + if (info->full_charged_state || ((info->charge_real_state != POWER_SUPPLY_STATUS_DISCHARGING) && (info->battery_raw_soc > info->battery_full_soc) && (info->battery_soc == 100))) { @@ -808,7 +808,7 @@ static bool battery_fullcharged_cond(struct battery_info *info) if (info->charge_real_state == POWER_SUPPLY_STATUS_FULL) { if ((info->battery_vcell > f_cond_vcell) && (info->battery_soc > f_cond_soc)) { - pr_info("%s: real full charged, v(%d), s(%d)\n", + pr_debug("%s: real full charged, v(%d), s(%d)\n", __func__, info->battery_vcell, info->battery_soc); #if defined(USE_2STEP_TERM) @@ -1606,6 +1606,8 @@ charge_ok: case POWER_SUPPLY_TYPE_DOCK: if (!info->pdata->suspend_chging) wake_lock(&info->charge_wake_lock); + /* default dock prop is AC */ + info->online_prop = ONLINE_PROP_AC; muic_cb_typ = max77693_muic_get_charging_type(); switch (muic_cb_typ) { case CABLE_TYPE_AUDIODOCK_MUIC: @@ -1633,6 +1635,7 @@ charge_ok: case CABLE_TYPE_SMARTDOCK_USB_MUIC: pr_info("%s: smart dock usb(low), %d\n", __func__, DOCK_TYPE_LOW_CURR); + info->online_prop = ONLINE_PROP_USB; battery_charge_control(info, DOCK_TYPE_LOW_CURR, DOCK_TYPE_LOW_CURR); @@ -2037,7 +2040,9 @@ static int samsung_usb_get_property(struct power_supply *ps, 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_USB_CDP) || + ((info->cable_type == POWER_SUPPLY_TYPE_DOCK) && + (info->online_prop == ONLINE_PROP_USB)))); return 0; } @@ -2057,7 +2062,8 @@ static int samsung_ac_get_property(struct power_supply *ps, POWER_SUPPLY_STATUS_DISCHARGING) && ((info->cable_type == POWER_SUPPLY_TYPE_MAINS) || (info->cable_type == POWER_SUPPLY_TYPE_MISC) || - (info->cable_type == POWER_SUPPLY_TYPE_DOCK) || + ((info->cable_type == POWER_SUPPLY_TYPE_DOCK) && + (info->online_prop != ONLINE_PROP_USB)) || (info->cable_type == POWER_SUPPLY_TYPE_WIRELESS))); return 0; |