aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/battery/max77693_charger.c
diff options
context:
space:
mode:
authorDaniel Hillenbrand <codeworkx@cyanogenmod.org>2013-06-04 01:33:22 +0200
committerDaniel Hillenbrand <codeworkx@cyanogenmod.org>2013-06-04 12:54:26 +0200
commit55bb2048feb59f2190f704c2a4df81b557b55c7a (patch)
treecbb680a60770fb762e5b27c502ad71c2366bf604 /drivers/battery/max77693_charger.c
parent3d8b293a4f5042cd9fdc4009a40f6483371cd489 (diff)
downloadkernel_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/max77693_charger.c')
-rw-r--r--drivers/battery/max77693_charger.c31
1 files changed, 15 insertions, 16 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));