diff options
author | Bill Richardson <wfrichar@chromium.org> | 2014-03-19 10:27:05 -0700 |
---|---|---|
committer | chrome-internal-fetch <chrome-internal-fetch@google.com> | 2014-03-20 23:51:00 +0000 |
commit | a025f18673583e1c030aa006e0f0cebeea18c062 (patch) | |
tree | f534c379664bcfee544555e8e305e96a91e36b57 /include/charge_state.h | |
parent | 0a35a979d470f64263d153521b4641b9d7dbdbef (diff) | |
download | chrome-ec-a025f18673583e1c030aa006e0f0cebeea18c062.tar.gz |
Rename charge_state.[ch] to charge_state_v1.[ch]
Making room for a new charge_state implementation.
BRANCH=ToT
BUG=chrome-os-partner:23776
TEST=make buildall -j
No new functionality, just renaming some files.
Change-Id: I80ce861f09129a518e180cac20d32e867a93cd46
Signed-off-by: Bill Richardson <wfrichar@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/190852
Reviewed-by: Randall Spangler <rspangler@chromium.org>
Diffstat (limited to 'include/charge_state.h')
-rw-r--r-- | include/charge_state.h | 165 |
1 files changed, 16 insertions, 149 deletions
diff --git a/include/charge_state.h b/include/charge_state.h index b9795391b1..8c0f73952c 100644 --- a/include/charge_state.h +++ b/include/charge_state.h @@ -1,159 +1,26 @@ -/* Copyright (c) 2013 The Chromium OS Authors. All rights reserved. +/* Copyright (c) 2014 The Chromium OS Authors. All rights reserved. * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ - -#include "battery.h" -#include "timer.h" - #ifndef __CROS_EC_CHARGE_STATE_H #define __CROS_EC_CHARGE_STATE_H -/* Update period to prevent charger watchdog timeout */ -#define CHARGER_UPDATE_PERIOD (SECOND * 10) - -/* Power state task polling periods in usec */ -#define POLL_PERIOD_VERY_LONG MINUTE -#define POLL_PERIOD_LONG (MSEC * 500) -#define POLL_PERIOD_CHARGE (MSEC * 250) -#define POLL_PERIOD_SHORT (MSEC * 100) -#define MIN_SLEEP_USEC (MSEC * 50) -#define MAX_SLEEP_USEC SECOND - -/* Power state error flags */ -#define F_CHARGER_INIT (1 << 0) /* Charger initialization */ -#define F_CHARGER_VOLTAGE (1 << 1) /* Charger maximum output voltage */ -#define F_CHARGER_CURRENT (1 << 2) /* Charger maximum output current */ -#define F_BATTERY_VOLTAGE (1 << 3) /* Battery voltage */ -#define F_BATTERY_MODE (1 << 8) /* Battery mode */ -#define F_BATTERY_CAPACITY (1 << 9) /* Battery capacity */ -#define F_BATTERY_STATE_OF_CHARGE (1 << 10) /* State of charge, percentage */ -#define F_BATTERY_UNRESPONSIVE (1 << 11) /* Battery not responding */ -#define F_BATTERY_NOT_CONNECTED (1 << 12) /* Battery not connected */ -#define F_BATTERY_GET_PARAMS (1 << 13) /* Any battery parameter bad */ - -#define F_BATTERY_MASK (F_BATTERY_VOLTAGE | \ - F_BATTERY_MODE | \ - F_BATTERY_CAPACITY | F_BATTERY_STATE_OF_CHARGE | \ - F_BATTERY_UNRESPONSIVE | F_BATTERY_NOT_CONNECTED | \ - F_BATTERY_GET_PARAMS) -#define F_CHARGER_MASK (F_CHARGER_VOLTAGE | F_CHARGER_CURRENT | \ - F_CHARGER_INIT) - -/* Power states */ -enum charge_state { - /* Meta-state; unchanged from previous time through task loop */ - PWR_STATE_UNCHANGE = 0, - /* Initializing charge state machine at boot */ - PWR_STATE_INIT, - /* Re-initializing charge state machine */ - PWR_STATE_REINIT, - /* Just transitioned from init to idle */ - PWR_STATE_IDLE0, - /* Idle; AC present */ - PWR_STATE_IDLE, - /* Discharging */ - PWR_STATE_DISCHARGE, - /* Charging */ - PWR_STATE_CHARGE, - /* Charging, almost fully charged */ - PWR_STATE_CHARGE_NEAR_FULL, - /* Charging state machine error */ - PWR_STATE_ERROR -}; +#include "common.h" -/* Charge state flags */ -/* Forcing idle state */ -#define CHARGE_FLAG_FORCE_IDLE (1 << 0) -/* External (AC) power is present */ -#define CHARGE_FLAG_EXTERNAL_POWER (1 << 1) - -/* Debugging constants, in the same order as enum charge_state. This string - * table was moved here to sync with enum above. - */ -#define CHARGE_STATE_NAME_TABLE { \ - "unchange", \ - "init", \ - "reinit", \ - "idle0", \ - "idle", \ - "discharge", \ - "charge", \ - "charge_near_full", \ - "error" \ - } - /* End of CHARGE_STATE_NAME_TABLE macro */ - -/* Power state data - * Status collection of charging state machine. - */ -struct charge_state_data { - int ac; - int charging_voltage; - int charging_current; - struct batt_params batt; - enum charge_state state; - uint32_t error; - timestamp_t ts; -}; - -/* State context - * The shared context for state handler. The context contains current and - * previous state. - */ -struct charge_state_context { - struct charge_state_data curr; - struct charge_state_data prev; - timestamp_t charge_state_updated_time; - uint32_t *memmap_batt_volt; - uint32_t *memmap_batt_rate; - uint32_t *memmap_batt_cap; - uint8_t *memmap_batt_flags; - /* Charger and battery pack info */ - const struct charger_info *charger; - const struct battery_info *battery; - /* Charging timestamps */ - timestamp_t charger_update_time; - timestamp_t trickle_charging_time; - timestamp_t voltage_debounce_time; - timestamp_t shutdown_warning_time; - int battery_responsive; -}; +/* Stuff that's common to all charger implementations can go here. */ -/** - * Return current charge state. - */ -enum charge_state charge_get_state(void); - -/** - * Return non-zero if battery is so low we want to keep AP off. - */ -int charge_keep_power_off(void); - -/** - * Return current charge state flags (CHARGE_FLAG_*) - */ -uint32_t charge_get_flags(void); - -/** - * Return current battery charge percentage. - */ -int charge_get_percent(void); - -/** - * Return non-zero if discharging and battery so low we should shut down. - */ -int charge_want_shutdown(void); - -/** - * Get the last polled battery/charger temperature. - * - * @param idx Sensor index to read. - * @param temp_ptr Destination for temperature in K. - * - * @return EC_SUCCESS if successful, non-zero if error. - */ -int charge_temp_sensor_get_val(int idx, int *temp_ptr); -#endif /* __CROS_EC_CHARGE_STATE_H */ +/* Pick the right implementation */ +#ifdef CONFIG_CHARGER_V1 +#ifdef CONFIG_CHARGER_V2 +#error "Choose either CONFIG_CHARGER_V1 or CONFIG_CHARGER_V2, not both" +#else +#include "charge_state_v1.h" +#endif +#else /* not V1 */ +#ifdef CONFIG_CHARGER_V2 +#include "charge_state_v2.h" +#endif +#endif /* CONFIG_CHARGER_V1 */ +#endif /* __CROS_EC_CHARGE_STATE_H */ |