/* * max17050_fuelgauge.h * Samsung MAX17050 Fuel Gauge Header * * Copyright (C) 2012 Samsung Electronics, Inc. * * This software is licensed under the terms of the GNU General Public * License version 2, as published by the Free Software Foundation, and * may be copied, distributed, and modified under those terms. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * */ #ifndef __MAX17050_FUELGAUGE_H #define __MAX17050_FUELGAUGE_H __FILE__ #include /* Slave address should be shifted to the right 1bit. * R/W bit should NOT be included. */ #define SEC_FUELGAUGE_I2C_SLAVEADDR 0x36 #if defined(CONFIG_FUELGAUGE_MAX17050_VOLTAGE_TRACKING) #define MAX17050_REG_STATUS 0x00 #define MAX17050_REG_VALRT_TH 0x01 #define MAX17050_REG_TALRT_TH 0x02 #define MAX17050_REG_SALRT_TH 0x03 #define MAX17050_REG_VCELL 0x09 #define MAX17050_REG_TEMPERATURE 0x08 #define MAX17050_REG_AVGVCELL 0x19 #define MAX17050_REG_CONFIG 0x1D #define MAX17050_REG_VERSION 0x21 #define MAX17050_REG_LEARNCFG 0x28 #define MAX17050_REG_FILTERCFG 0x29 #define MAX17050_REG_MISCCFG 0x2B #define MAX17050_REG_CGAIN 0x2E #define MAX17050_REG_RCOMP 0x38 #define MAX17050_REG_VFOCV 0xFB #define MAX17050_REG_SOC_VF 0xFF struct sec_fg_info { bool dummy; }; #endif #if defined(CONFIG_FUELGAUGE_MAX17050_COULOMB_COUNTING) #define PRINT_COUNT 10 /* Register address */ #define STATUS_REG 0x00 #define VALRT_THRESHOLD_REG 0x01 #define TALRT_THRESHOLD_REG 0x02 #define SALRT_THRESHOLD_REG 0x03 #define REMCAP_REP_REG 0x05 #define SOCREP_REG 0x06 #define TEMPERATURE_REG 0x08 #define VCELL_REG 0x09 #define CURRENT_REG 0x0A #define AVG_CURRENT_REG 0x0B #define SOCMIX_REG 0x0D #define SOCAV_REG 0x0E #define REMCAP_MIX_REG 0x0F #define FULLCAP_REG 0x10 #define RFAST_REG 0x15 #define AVR_TEMPERATURE_REG 0x16 #define CYCLES_REG 0x17 #define DESIGNCAP_REG 0x18 #define AVR_VCELL_REG 0x19 #define CONFIG_REG 0x1D #define REMCAP_AV_REG 0x1F #define FULLCAP_NOM_REG 0x23 #define MISCCFG_REG 0x2B #define RCOMP_REG 0x38 #define FSTAT_REG 0x3D #define DQACC_REG 0x45 #define DPACC_REG 0x46 #define OCV_REG 0xEE #define VFOCV_REG 0xFB #define VFSOC_REG 0xFF #define FG_LEVEL 0 #define FG_TEMPERATURE 1 #define FG_VOLTAGE 2 #define FG_CURRENT 3 #define FG_CURRENT_AVG 4 #define FG_CHECK_STATUS 5 #define FG_VF_SOC 6 #define FG_AV_SOC 7 #define LOW_BATT_COMP_RANGE_NUM 5 #define LOW_BATT_COMP_LEVEL_NUM 2 #define MAX_LOW_BATT_CHECK_CNT 10 enum { POSITIVE = 0, NEGATIVE, }; enum { RANGE = 0, SLOPE, OFFSET, TABLE_MAX }; #define CURRENT_RANGE_MAX_NUM 5 #define TEMP_RANGE_MAX_NUM 3 struct battery_data_t { u16 Capacity; u16 low_battery_comp_voltage; s32 low_battery_table[CURRENT_RANGE_MAX_NUM][TABLE_MAX]; s32 temp_adjust_table[TEMP_RANGE_MAX_NUM][TABLE_MAX]; u8 *type_str; }; struct sec_fg_info { /* test print count */ int pr_cnt; /* full charge comp */ struct delayed_work full_comp_work; u32 previous_fullcap; u32 previous_vffullcap; /* low battery comp */ int low_batt_comp_cnt[LOW_BATT_COMP_RANGE_NUM][LOW_BATT_COMP_LEVEL_NUM]; int low_batt_comp_flag; /* low battery boot */ int low_batt_boot_flag; bool is_low_batt_alarm; /* battery info */ u32 soc; /* miscellaneous */ unsigned long fullcap_check_interval; int full_check_flag; bool is_first_check; }; /* FullCap learning setting */ #define VFFULLCAP_CHECK_INTERVAL 300 /* sec */ /* soc should be 0.1% unit */ #define VFSOC_FOR_FULLCAP_LEARNING 950 #define LOW_CURRENT_FOR_FULLCAP_LEARNING 20 #define HIGH_CURRENT_FOR_FULLCAP_LEARNING 120 #define LOW_AVGCURRENT_FOR_FULLCAP_LEARNING 20 #define HIGH_AVGCURRENT_FOR_FULLCAP_LEARNING 100 /* power off margin */ /* soc should be 0.1% unit */ #define POWER_OFF_SOC_HIGH_MARGIN 20 #define POWER_OFF_VOLTAGE_HIGH_MARGIN 3500 #define POWER_OFF_VOLTAGE_LOW_MARGIN 3400 /* FG recovery handler */ /* soc should be 0.1% unit */ #define STABLE_LOW_BATTERY_DIFF 30 #define STABLE_LOW_BATTERY_DIFF_LOWBATT 10 #define LOW_BATTERY_SOC_REDUCE_UNIT 10 #endif #endif /* __MAX17050_FUELGAUGE_H */