Skip to content

Commit 72d2f69

Browse files
JosephChen2017rkhuangtao
authored andcommitted
power: rk816-battery: use otg_pmic5v to record otg power supply state
without this patch, we use otg_in to stands for otg attach and power supply state(from dc or pmic), there is something wrong with code logic, let's make it clear. Change-Id: I080e6b137811b2335e0985e786ddfc4eed52e8d6 Signed-off-by: Joseph Chen <chenjh@rock-chips.com>
1 parent 93c6099 commit 72d2f69

1 file changed

Lines changed: 26 additions & 16 deletions

File tree

drivers/power/rk816_battery.c

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -189,7 +189,8 @@ struct rk816_battery {
189189
bool bat_first_power_on;
190190
u8 ac_in;
191191
u8 usb_in;
192-
u8 otg_in;
192+
u8 otg_in; /* OTG device attached status */
193+
u8 otg_pmic5v; /* OTG device power supply from PMIC */
193194
u8 dc_in;
194195
u8 prop_status;
195196
int cvtlmt_irq;
@@ -1511,6 +1512,11 @@ static void rk816_bat_set_chrg_param(struct rk816_battery *di,
15111512
rk816_bat_update_leds(di, di->prop_status);
15121513
}
15131514

1515+
static void rk816_bat_set_otg_in(struct rk816_battery *di, int online)
1516+
{
1517+
di->otg_in = online;
1518+
}
1519+
15141520
/*
15151521
* -----: VBUS-5V
15161522
* #####: PMIC_INT
@@ -1553,13 +1559,13 @@ static void rk816_bat_set_chrg_param(struct rk816_battery *di,
15531559
* again at spot-F, if PLUG_IN_STS=1, means it's charging mode now, we abandont
15541560
* enable boost and disable otg. Otherwise, we can turn on boost safely.
15551561
*/
1556-
static void rk816_bat_set_otg_state(struct rk816_battery *di, int state)
1562+
static void rk816_bat_set_otg_power(struct rk816_battery *di, int power)
15571563
{
15581564
u8 buf;
15591565

1560-
switch (state) {
1566+
switch (power) {
15611567
case USB_OTG_POWER_ON:
1562-
if (di->otg_in) {
1568+
if (di->otg_pmic5v) {
15631569
BAT_INFO("otg5v is on yet, ignore..\n");
15641570
break;
15651571
}
@@ -1597,16 +1603,16 @@ static void rk816_bat_set_otg_state(struct rk816_battery *di, int state)
15971603
*/
15981604
rk816_bat_set_bits(di, RK816_DCDC_EN_REG2,
15991605
BOOST_OTG_MASK, BOOST_OTG_ON);
1600-
di->otg_in = 1;
1606+
di->otg_pmic5v = 1;
16011607
break;
16021608

16031609
case USB_OTG_POWER_OFF:
1604-
if (!di->otg_in) {
1610+
if (!di->otg_pmic5v) {
16051611
BAT_INFO("otg5v is off yet, ignore..\n");
16061612
} else {
16071613
rk816_bat_set_bits(di, RK816_DCDC_EN_REG2,
16081614
BOOST_OTG_MASK, BOOST_OTG_OFF);
1609-
di->otg_in = 0;
1615+
di->otg_pmic5v = 0;
16101616
}
16111617
break;
16121618

@@ -1679,7 +1685,7 @@ static void rk816_bat_dc_delay_work(struct work_struct *work)
16791685
/* check otg supply */
16801686
if (di->otg_in && di->pdata->power_dc2otg) {
16811687
BAT_INFO("otg power from dc adapter\n");
1682-
rk816_bat_set_otg_state(di, USB_OTG_POWER_OFF);
1688+
rk816_bat_set_otg_power(di, USB_OTG_POWER_OFF);
16831689
}
16841690
} else {
16851691
BAT_INFO("detect dc charger out..\n");
@@ -1692,7 +1698,7 @@ static void rk816_bat_dc_delay_work(struct work_struct *work)
16921698
* enable boost
16931699
*/
16941700
msleep(200);
1695-
rk816_bat_set_otg_state(di, USB_OTG_POWER_ON);
1701+
rk816_bat_set_otg_power(di, USB_OTG_POWER_ON);
16961702
}
16971703
}
16981704
out:
@@ -2657,7 +2663,7 @@ static void rk816_bat_debug_info(struct rk816_battery *di)
26572663
DBG("###############################################################\n"
26582664
"Dsoc=%d, Rsoc=%d, Vavg=%d, Iavg=%d, Cap=%d, Fcc=%d, d=%d\n"
26592665
"K=%d, Mode=%s, Oldcap=%d, Is=%d, Ip=%d, Vs=%d, Vusb=%d\n"
2660-
"AC=%d, USB=%d, DC=%d, OTG=%d, PROP=%d, Tfb=%d, Tbat=%d\n"
2666+
"AC=%d, USB=%d, DC=%d, OTG=%d, 5V=%d, PROP=%d, Tfb=%d, Tbat=%d\n"
26612667
"off:i=0x%x, c=0x%x, p=%d, Rbat=%d, age_ocv_cap=%d, fb=%d, hot=%d\n"
26622668
"adp:in=%lu, out=%lu, finish=%lu, LFcc=%d, boot_min=%lu, sleep_min=%lu, adc=%d, Rfac=%d\n"
26632669
"bat:%s, meet: soc=%d, calc: dsoc=%d, rsoc=%d, Vocv=%d, Rsam=%d\n"
@@ -2672,7 +2678,8 @@ static void rk816_bat_debug_info(struct rk816_battery *di)
26722678
CHRG_CUR_INPUT[usb_ctrl & 0x0f],
26732679
CHRG_VOL_SEL[(chrg_ctrl1 & 0x70) >> 4],
26742680
rk816_bat_get_usb_voltage(di),
2675-
di->ac_in, di->usb_in, di->dc_in, di->otg_in, di->prop_status,
2681+
di->ac_in, di->usb_in, di->dc_in, di->otg_in, di->otg_pmic5v,
2682+
di->prop_status,
26762683
FEED_BACK_TEMP[(thermal & 0x0c) >> 2], di->temperature,
26772684
rk816_bat_get_ioffset(di), rk816_bat_get_coffset(di),
26782685
di->poffset, di->bat_res, di->age_adjust_cap, di->fb_blank,
@@ -3679,14 +3686,16 @@ static void rk816_bat_host_evt_worker(struct work_struct *work)
36793686

36803687
/* Determine cable/charger type */
36813688
if (extcon_get_cable_state_(edev, EXTCON_USB_VBUS_EN) > 0) {
3689+
rk816_bat_set_otg_in(di, ONLINE);
36823690
BAT_INFO("receive extcon notifier event: OTG ON...\n");
36833691
if (di->dc_in && di->pdata->power_dc2otg)
36843692
BAT_INFO("otg power from dc adapter\n");
36853693
else
3686-
rk816_bat_set_otg_state(di, USB_OTG_POWER_ON);
3694+
rk816_bat_set_otg_power(di, USB_OTG_POWER_ON);
36873695
} else if (extcon_get_cable_state_(edev, EXTCON_USB_VBUS_EN) == 0) {
36883696
BAT_INFO("receive extcon notifier event: OTG OFF...\n");
3689-
rk816_bat_set_otg_state(di, USB_OTG_POWER_OFF);
3697+
rk816_bat_set_otg_in(di, OFFLINE);
3698+
rk816_bat_set_otg_power(di, USB_OTG_POWER_OFF);
36903699
}
36913700
}
36923701

@@ -4819,16 +4828,17 @@ static void rk816_battery_shutdown(struct platform_device *dev)
48194828
destroy_workqueue(di->usb_charger_wq);
48204829

48214830
del_timer(&di->caltimer);
4822-
rk816_bat_set_otg_state(di, USB_OTG_POWER_OFF);
4831+
rk816_bat_set_otg_power(di, USB_OTG_POWER_OFF);
48234832

48244833
if (base2sec(di->boot_base) < REBOOT_PERIOD_SEC)
48254834
cnt = rk816_bat_check_reboot(di);
48264835
else
48274836
rk816_bat_save_reboot_cnt(di, 0);
48284837

4829-
BAT_INFO("shutdown: dl=%d rl=%d c=%d v=%d cap=%d f=%d ch=%d n=%d mode=%d rest=%d\n",
4838+
BAT_INFO("shutdown: dl=%d rl=%d c=%d v=%d cap=%d f=%d ch=%d otg=%d 5v=%d n=%d mode=%d rest=%d\n",
48304839
di->dsoc, di->rsoc, di->current_avg, di->voltage_avg,
4831-
di->remain_cap, di->fcc, rk816_bat_chrg_online(di), cnt,
4840+
di->remain_cap, di->fcc, rk816_bat_chrg_online(di),
4841+
di->otg_in, di->otg_pmic5v, cnt,
48324842
di->algo_rest_mode, di->algo_rest_val);
48334843
}
48344844

0 commit comments

Comments
 (0)