summaryrefslogtreecommitdiff
path: root/include/battery.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/battery.h')
-rw-r--r--include/battery.h448
1 files changed, 0 insertions, 448 deletions
diff --git a/include/battery.h b/include/battery.h
deleted file mode 100644
index 7052e2d663..0000000000
--- a/include/battery.h
+++ /dev/null
@@ -1,448 +0,0 @@
-/* Copyright 2013 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.
- *
- * Battery charging parameters and constraints
- */
-
-#ifndef __CROS_EC_BATTERY_H
-#define __CROS_EC_BATTERY_H
-
-#include "common.h"
-#include "host_command.h"
-
-/* Battery index, only used with CONFIG_BATTERY_V2. */
-enum battery_index {
- BATT_IDX_INVALID = -1,
- BATT_IDX_MAIN = 0,
- BATT_IDX_BASE = 1,
-};
-
-#ifdef CONFIG_BATTERY_V2
-extern struct ec_response_battery_static_info
- battery_static[CONFIG_BATTERY_COUNT];
-extern struct ec_response_battery_dynamic_info
- battery_dynamic[CONFIG_BATTERY_COUNT];
-#endif
-
-/* Stop charge when charging and battery level >= this percentage */
-#define BATTERY_LEVEL_FULL 100
-
-/* Tell host we're charged when battery level >= this percentage */
-#ifdef CONFIG_BATTERY_LEVEL_NEAR_FULL
-#define BATTERY_LEVEL_NEAR_FULL CONFIG_BATTERY_LEVEL_NEAR_FULL
-#else
-#define BATTERY_LEVEL_NEAR_FULL 97
-#endif
-
-/*
- * Send battery-low host event when discharging and battery level <= this level
- */
-#define BATTERY_LEVEL_LOW 10
-
-/*
- * Send battery-critical host event when discharging and battery level <= this
- * level.
- */
-#define BATTERY_LEVEL_CRITICAL 5
-
-/*
- * Shut down main processor and/or hibernate EC when discharging and battery
- * level < this level.
- */
-#define BATTERY_LEVEL_SHUTDOWN 3
-
-/*
- * Sometimes we have hardware to detect battery present, sometimes we have to
- * wait until we've been able to talk to the battery.
- */
-enum battery_present {
- BP_NOT_INIT = -1,
- BP_NO = 0,
- BP_YES = 1,
- BP_NOT_SURE,
-};
-
-enum battery_cutoff_states {
- BATTERY_CUTOFF_STATE_NORMAL = 0,
- BATTERY_CUTOFF_STATE_CUT_OFF,
- BATTERY_CUTOFF_STATE_PENDING,
-};
-
-enum battery_disconnect_state {
- BATTERY_DISCONNECTED = 0,
- BATTERY_NOT_DISCONNECTED,
- BATTERY_DISCONNECT_ERROR,
-};
-
-/* Battery parameters */
-struct batt_params {
- int temperature; /* Temperature in 0.1 K */
- int state_of_charge; /* State of charge (percent, 0-100) */
- int voltage; /* Battery voltage (mV) */
- int current; /* Battery current (mA); negative=discharging */
- int desired_voltage; /* Charging voltage desired by battery (mV) */
- int desired_current; /* Charging current desired by battery (mA) */
- int remaining_capacity; /* Remaining capacity in mAh */
- int full_capacity; /* Capacity in mAh (might change occasionally) */
- int display_charge; /* Display charge in 10ths of a % (1000=100.0%) */
- int status; /* Battery status */
- enum battery_present is_present; /* Is the battery physically present */
- int flags; /* Flags */
-};
-
-/*
- * Provide a 1 minute average of the current and voltage on the battery.
- * Does not check for flags or whether those values are bad readings.
- * See driver/battery/[your_driver].h/c for details on implementation and
- * how the average is calculated.
- */
-
-int battery_get_avg_current(void); /* in mA */
-int battery_get_avg_voltage(void); /* in mV */
-
-/* Flags for batt_params */
-
-/* Battery wants to be charged */
-#define BATT_FLAG_WANT_CHARGE 0x00000001
-
-/* Battery is responsive (talking to us via I2C) */
-#define BATT_FLAG_RESPONSIVE 0x00000002
-
-/* Bits to indicate which parameter(s) could not be read */
-#define BATT_FLAG_BAD_TEMPERATURE 0x00000004
-#define BATT_FLAG_BAD_STATE_OF_CHARGE 0x00000008
-#define BATT_FLAG_BAD_VOLTAGE 0x00000010
-#define BATT_FLAG_BAD_CURRENT 0x00000020
-#define BATT_FLAG_BAD_DESIRED_VOLTAGE 0x00000040
-#define BATT_FLAG_BAD_DESIRED_CURRENT 0x00000080
-#define BATT_FLAG_BAD_REMAINING_CAPACITY 0x00000100
-#define BATT_FLAG_BAD_FULL_CAPACITY 0x00000200
-#define BATT_FLAG_BAD_STATUS 0x00000400
-#define BATT_FLAG_IMBALANCED_CELL 0x00000800
-/* All of the above BATT_FLAG_BAD_* bits */
-#define BATT_FLAG_BAD_ANY 0x000007fc
-
-/* Battery constants */
-struct battery_info {
- /* Operation voltage in mV */
- int voltage_max;
- int voltage_normal;
- int voltage_min;
- /* (TODO(chromium:756700): add desired_charging_current */
- /**
- * Pre-charge to fast charge threshold in mV,
- * default to voltage_min if not specified.
- * This option is only available on isl923x and rt946x.
- */
- int precharge_voltage;
- /* Pre-charge current in mA */
- int precharge_current;
- /* Working temperature ranges in degrees C */
- int8_t start_charging_min_c;
- int8_t start_charging_max_c;
- int8_t charging_min_c;
- int8_t charging_max_c;
- int8_t discharging_min_c;
- int8_t discharging_max_c;
-};
-
-/**
- * Return vendor-provided battery constants.
- */
-const struct battery_info *battery_get_info(void);
-
-/**
- * Get current battery parameters.
- *
- * Error conditions are reported via batt.flags.
- *
- * @param batt Destination for battery data
- */
-void battery_get_params(struct batt_params *batt);
-
-/**
- * Modify battery parameters to match vendor charging profile.
- *
- * @param batt Battery parameters to modify
- */
-void battery_override_params(struct batt_params *batt);
-
-/**
- * Check for presence of battery.
- *
- * @return Whether there is a battery attached or not, or if we can't tell.
- */
-enum battery_present battery_is_present(void);
-
-/**
- * Check for physical presence of battery.
- *
- * @return Whether there is a battery physically present, but possibly
- * in a disconnected or cut off state, or if we can't tell;
- */
-enum battery_present battery_hw_present(void);
-
-/**
- * Check for battery initialization status.
- *
- * @return zero if not initialized.
- */
-int board_battery_initialized(void);
-
-/**
- * Get battery mode.
- *
- * See MODE_* constants in battery_smart.h
- *
- * @param mode Destination for current mode.
- * @return non-zero if error.
- */
-int battery_get_mode(int *mode);
-
-/**
- * Read nominal voltage battery is designed to supply.
- *
- * @param voltage Destination for voltage in mW
- * @return non-zero if error.
- */
-int battery_design_voltage(int *voltage);
-
-/**
- * Read absolute state of charge.
- *
- * @param percent Destination for charge in percent
- * @return non-zero if error.
- */
-int battery_state_of_charge_abs(int *percent);
-
-/**
- * Read battery remaining capacity.
- *
- * @param capacity Destination for capacity in mAh
- * @return non-zero if error.
- */
-int battery_remaining_capacity(int *capacity);
-
-/**
- * Read battery full charge capacity.
- *
- * @param capacity Destination for capacity in mAh
- * @return non-zero if error.
- */
-int battery_full_charge_capacity(int *capacity);
-
-/**
- * Read the nominal capacity the battery is designed to supply when new.
- *
- * @param capacity Destination for capacity in mAh
- * @return non-zero if error.
- */
-int battery_design_capacity(int *capacity);
-
-/**
- * Read time in minutes left when discharging.
- *
- * @param capacity Destination for remaining time in minutes.
- * @return non-zero if error.
- */
-int battery_time_to_empty(int *minutes);
-
-/**
- * Read run time in minutes left when discharging.
- *
- * @param capacity Destination for remaining time in minutes.
- * @return non-zero if error.
- */
-int battery_run_time_to_empty(int *minutes);
-
-/**
- * Read time in minutes left to full capacity when charging.
- *
- * @param capacity Destination for remaining time in minutes.
- * @return non-zero if error.
- */
-int battery_time_to_full(int *minutes);
-
-/**
- * Calculate battery time in minutes, under an assumed current.
- *
- * @param rate Current to use for calculation, in mA.
- * If > 0, calculates charging time; if < 0, calculates
- * discharging time; 0 is invalid and sets minutes=0.
- * @param minutes Destination for calculated time in minutes.
- * @return non-zero if error.
- */
-int battery_time_at_rate(int rate, int *minutes);
-
-/**
- * Read battery status.
- *
- * @param status Destination for status; see STATUS_* in battery_smart.h.
- * @return non-zero if error.
- */
-int battery_status(int *status);
-
-/**
- * Read battery charge cycle count.
- *
- * @param count Destination for count.
- * @return non-zero if error.
- */
-int battery_cycle_count(int *count);
-
-/**
- * Read battery serial number.
- *
- * @param serial Destination for serial number.
- * @return non-zero if error.
- */
-int battery_serial_number(int *serial);
-
-/**
- * Read manufacturer name.
- *
- * @param dest Destination buffer.
- * @param size Length of destination buffer in chars.
- * @return non-zero if error.
- */
-int battery_manufacturer_name(char *dest, int size);
-
-/**
- * Read manufacturer name.
- *
- * This can be overridden to return a chip or board custom string.
- *
- * @param dest Destination buffer.
- * @param size Length of destination buffer in chars.
- * @return non-zero if error.
- */
-int get_battery_manufacturer_name(char *dest, int size);
-
-/**
- * Read device name.
- *
- * @param dest Destination buffer.
- * @param size Length of destination buffer in chars.
- * @return non-zero if error.
- */
-int battery_device_name(char *dest, int size);
-
-/**
- * Read battery type/chemistry.
- *
- * @param dest Destination buffer.
- * @param size Length of destination buffer in chars.
- * @return non-zero if error.
- */
-int battery_device_chemistry(char *dest, int size);
-
-/**
- * Read device manufacture date.
- *
- * @param year Destination for year
- * @param month Destination for month
- * @param day Destination for day
- * @return non-zero if error.
- */
-int battery_manufacturer_date(int *year, int *month, int *day);
-
-/**
- * Report the absolute difference between the highest and lowest cell voltage in
- * the battery pack, in millivolts. On error or unimplemented, returns '0'.
- */
-int battery_imbalance_mv(void);
-
-/**
- * Call board-specific cut-off function.
- *
- * @return EC_RES_INVALID_COMMAND if the battery doesn't support.
- */
-int board_cut_off_battery(void);
-
-/**
- * Return if the battery has been cut off.
- */
-int battery_is_cut_off(void);
-
-/**
- * Read battery vendor parameter.
- *
- * Vendor parameter handlers are implemented in a board-specific battery.c
- *
- * @param param Parameter identifier.
- * @param value Location to store retrieved value.
- * @return non-zero if error.
- */
-int battery_get_vendor_param(uint32_t param, uint32_t *value);
-
-/**
- * Write battery vendor parameter.
- *
- * Vendor parameter handlers are implemented in a board-specific battery.c
- *
- * @param param Parameter identifier.
- * @param value Value to write to the battery.
- * @return non-zero if error.
- */
-int battery_set_vendor_param(uint32_t param, uint32_t value);
-
-/**
- * Wait for battery stable.
- *
- * @return non-zero if error.
- */
-int battery_wait_for_stable(void);
-
-/**
- * Print all battery info for debugging purposes
- */
-void print_battery_debug(void);
-
-/**
- * Get the disconnect state of the battery.
- */
-enum battery_disconnect_state battery_get_disconnect_state(void);
-
-#ifdef CONFIG_BATTERY_V2
-/**
- * Refresh battery information in host memory mapped region, if index is
- * currently presented.
- */
-void battery_memmap_refresh(enum battery_index index);
-
-/**
- * Set which index to present in host memory mapped region.
- */
-void battery_memmap_set_index(enum battery_index index);
-#endif /* CONFIG_BATTERY_V2 */
-
-#ifdef CONFIG_CMD_I2C_STRESS_TEST_BATTERY
-extern struct i2c_stress_test_dev battery_i2c_stress_test_dev;
-#endif
-
-/*
- * If remaining charge is more than x% of the full capacity, the
- * remaining charge is raised to the full capacity before it's
- * reported to the rest of the system.
- *
- * Some batteries don't update full capacity timely or don't update it
- * at all. On such systems, compensation is required to guarantee
- * the remaining charge will be equal to the full capacity eventually.
- *
- * On some systems, Rohm charger generates audio noise when the battery
- * is fully charged and AC is plugged. A workaround is to do charge-
- * discharge cycles between 93 and 100%. On such systems, compensation
- * was also applied to mask this cycle from users.
- *
- * This used to be done in ACPI, thus, all software components except EC
- * was seeing the compensated charge. Now we do it in EC. It has more
- * knowledge on the charger and the battery. So, it can perform more
- * granular and precise compensation.
- *
- * TODO: Currently, this is applied only to smart battery. Apply it to other
- * battery drivers as needed.
- */
-void battery_compensate_params(struct batt_params *batt);
-
-#endif /* __CROS_EC_BATTERY_H */