iBoot/include/drivers/gasgauge.h

70 lines
2.2 KiB
C

/*
* Copyright (C) 2009 Apple Computer, Inc. All rights reserved.
*
* This document is the property of Apple Computer, Inc.
* It is considered confidential and proprietary.
*
* This document may not be reproduced or transmitted in any form,
* in whole or in part, without the express written permission of
* Apple Computer, Inc.
*/
#ifndef __DRIVERS_GASGAUGE_H
#define __DRIVERS_GASGAUGE_H
#include <sys/types.h>
#include <drivers/power.h>
__BEGIN_DECLS
void gasgauge_init(void);
void gasgauge_late_init(void);
void gasgauge_print_status(void);
#define GG_NEEDS_PRECHARGE (1<<0)
#define GG_NEEDS_RESET (1<<1)
#define GG_COMMS_WD (1<<2)
int gasgauge_needs_precharge(int debug_print_level, bool debug_show_target);
void gasgauge_will_shutdown(void);
bool gasgauge_full(void);
int gasgauge_get_battery_id(u_int8_t *buf, int size);
bool gasgauge_check_health(unsigned int vbat_mv);
bool gasgauge_read_charge_table(struct power_charge_limits *table, size_t num_elems);
// gasgauge_read_temperature: returns 0 on success
int gasgauge_read_temperature(int *centiCelsiusTemperature);
// gasgauge_read_voltage: returns 0 on success
int gasgauge_read_voltage(unsigned int *milliVolt);
int gasgauge_read_design_capacity(unsigned int *milliAmpHours);
int gasgauge_read_soc(unsigned int *soc);
int gasgauge_reset_timer(int debug_print_level, unsigned int timeout);
// Gas Gauge Flags
enum {
kHDQRegFlagsMaskOTC = (1 << 15),
kHDQRegFlagsMaskOTD = (1 << 14),
kHDQRegFlagsMaskCHG_INH = (1 << 11),
kHDQRegFlagsMaskXCHG = (1 << 10),
kHDQRegFlagsMaskIMAXOK = (1 << 13), // Aquarius
kHDQRegFlagsMaskTC2 = (1 << 11), // 0x800 Aquarius
kHDQRegFlagsMaskTC1 = (1 << 10), // 0x400 Aquarius
kHDQRegFlagsMaskFC = (1 << 9),
kHDQRegFlagsMaskCHG = (1 << 8),
kHDQRegFlagsMaskCCA_REQ = (1 << 5), // Aquarius
kHDQRegFlagsMaskLOWV = (1 << 4), // A4
kHDQRegFlagsMaskSOC1 = (1 << 2),
kHDQRegFlagsMaskSOCF = (1 << 1),
kHDQRegFlagsMaskDSG = (1 << 0),
};
__END_DECLS
#if (WITH_HW_GASGAUGE && DEBUG_BUILD)
// define BATTERY_TRAP_DEBUG for full gas gauge register dump in gasgauge_needs_precharge
#define BATTERY_TRAP_DEBUG
#endif
#endif /* __DRIVERS_GAUGE_H */