aboutsummaryrefslogtreecommitdiff
path: root/drivers/power
diff options
context:
space:
mode:
authorTony Lindgren2021-01-10 21:53:55 +0200
committerSebastian Reichel2021-01-14 23:42:42 +0100
commit5a21489207a52f825458d0c190bfca06e36f17e0 (patch)
tree839bcb0deb04d76d2c455dc4057535397e825141 /drivers/power
parentc6fdea96646dcc868ef0d565c527823ac30ef234 (diff)
power: supply: cpcap-charger: Drop internal state and use generic stats
We currently have both state and status, get rid of state and use generic status instead. Cc: Arthur Demchenkov <spinal.by@gmail.com> Cc: Carl Philipp Klemm <philipp@uvos.xyz> Cc: Merlijn Wajer <merlijn@wizzup.org> Cc: Pavel Machek <pavel@ucw.cz> Signed-off-by: Tony Lindgren <tony@atomide.com> Signed-off-by: Sebastian Reichel <sebastian.reichel@collabora.com>
Diffstat (limited to 'drivers/power')
-rw-r--r--drivers/power/supply/cpcap-charger.c81
1 files changed, 42 insertions, 39 deletions
diff --git a/drivers/power/supply/cpcap-charger.c b/drivers/power/supply/cpcap-charger.c
index 81270edfd106..8baa39b8afc2 100644
--- a/drivers/power/supply/cpcap-charger.c
+++ b/drivers/power/supply/cpcap-charger.c
@@ -140,7 +140,6 @@ struct cpcap_charger_ddata {
atomic_t active;
int status;
- int state;
int voltage;
int limit_current;
};
@@ -386,6 +385,39 @@ static void cpcap_charger_set_inductive_path(struct cpcap_charger_ddata *ddata,
gpiod_set_value(ddata->gpio[1], enabled);
}
+static void cpcap_charger_update_state(struct cpcap_charger_ddata *ddata,
+ int state)
+{
+ const char *status;
+
+ if (state > POWER_SUPPLY_STATUS_FULL) {
+ dev_warn(ddata->dev, "unknown state: %i\n", state);
+
+ return;
+ }
+
+ ddata->status = state;
+
+ switch (state) {
+ case POWER_SUPPLY_STATUS_DISCHARGING:
+ status = "DISCONNECTED";
+ break;
+ case POWER_SUPPLY_STATUS_NOT_CHARGING:
+ status = "DETECTING";
+ break;
+ case POWER_SUPPLY_STATUS_CHARGING:
+ status = "CHARGING";
+ break;
+ case POWER_SUPPLY_STATUS_FULL:
+ status = "DONE";
+ break;
+ default:
+ return;
+ }
+
+ dev_dbg(ddata->dev, "state: %s\n", status);
+}
+
static int cpcap_charger_set_state(struct cpcap_charger_ddata *ddata,
int max_voltage, int charge_current,
int trickle_current)
@@ -402,11 +434,13 @@ static int cpcap_charger_set_state(struct cpcap_charger_ddata *ddata,
CPCAP_REG_CRM_FET_OVRD |
CPCAP_REG_CRM_FET_CTRL);
if (error) {
- ddata->status = POWER_SUPPLY_STATUS_UNKNOWN;
+ cpcap_charger_update_state(ddata,
+ POWER_SUPPLY_STATUS_UNKNOWN);
goto out_err;
}
- ddata->status = POWER_SUPPLY_STATUS_DISCHARGING;
+ cpcap_charger_update_state(ddata,
+ POWER_SUPPLY_STATUS_DISCHARGING);
return 0;
}
@@ -419,11 +453,13 @@ static int cpcap_charger_set_state(struct cpcap_charger_ddata *ddata,
max_voltage |
charge_current);
if (error) {
- ddata->status = POWER_SUPPLY_STATUS_UNKNOWN;
+ cpcap_charger_update_state(ddata,
+ POWER_SUPPLY_STATUS_UNKNOWN);
goto out_err;
}
- ddata->status = POWER_SUPPLY_STATUS_CHARGING;
+ cpcap_charger_update_state(ddata,
+ POWER_SUPPLY_STATUS_CHARGING);
return 0;
@@ -555,39 +591,6 @@ static int cpcap_charger_get_ints_state(struct cpcap_charger_ddata *ddata,
return 0;
}
-static void cpcap_charger_update_state(struct cpcap_charger_ddata *ddata,
- int state)
-{
- const char *status;
-
- if (state > POWER_SUPPLY_STATUS_FULL) {
- dev_warn(ddata->dev, "unknown state: %i\n", state);
-
- return;
- }
-
- ddata->state = state;
-
- switch (state) {
- case POWER_SUPPLY_STATUS_DISCHARGING:
- status = "DISCONNECTED";
- break;
- case POWER_SUPPLY_STATUS_NOT_CHARGING:
- status = "DETECTING";
- break;
- case POWER_SUPPLY_STATUS_CHARGING:
- status = "CHARGING";
- break;
- case POWER_SUPPLY_STATUS_FULL:
- status = "DONE";
- break;
- default:
- return;
- }
-
- dev_dbg(ddata->dev, "state: %s\n", status);
-}
-
static int cpcap_charger_voltage_to_regval(int voltage)
{
int offset;
@@ -662,7 +665,7 @@ static void cpcap_usb_detect(struct work_struct *work)
}
/* Throttle chrgcurr2 interrupt for charger done and retry */
- switch (ddata->state) {
+ switch (ddata->status) {
case POWER_SUPPLY_STATUS_CHARGING:
if (s.chrgcurr2)
break;