/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Copyright (c) 2010 High Tech Computer Corporation Module Name: ds2746_param_config.c Abstract: This module tells batt_param.c module what the battery characteristic is. And also which charger/gauge component hardware uses, to decide if software/hardware function is available. Original Auther: Andy.ys Wang June-01-2010 ---------------------------------------------------------------------------------*/ #ifndef __BATT_PARAM_CONFIG_H__ #define __BATT_PARAM_CONFIG_H__ #define HTC_BATT_BOARD_NAME "ACE" /*======================================================================================== battery parameter defines (depend on board design) ========================================================================================*/ static BOOL support_ds2746_gauge_ic = TRUE; enum BATTERY_ID_ENUM { BATTERY_ID_UNKNOWN = 0, BATTERY_ID_SONY_1300MAH_FORMOSA, BATTERY_ID_SONY_1300MAH_HTE, BATTERY_ID_SANYO_1300MAH_HTE, BATTERY_ID_SANYO_1300MAH_TWS, BATTERY_ID_HTC_EXTENDED_2300MAH_FORMOSA, BATTERY_ID_NUM /* include unknown battery*/ }; UINT32 ID_RANGE[] = { /* id resister range = [min, max)*/ 7150, 15500, /* Sony 1300mAh (Formosa) */ /* 7.1k~15k */ 27500, 49500, /* Sony 1300mAh (HTE) */ /* 28k~49.5k */ 15500, 27500, /* Sanyo 1300mAh (HTE) */ /* 16k~27k */ 100, 7150, /* Samsung 1230mAh */ /* 0.1k~7k */ 0, 100, /* HTC Extended 2300mAh */ /* 0k~0.1k */ }; /*This table is calculated according to temp formula for temp mapping. If temp_adc is located on 0-95, then the temp_01c is 700. 96-99, then the temp_01c is 690. 100-102, then the temp_01c is 680. ... 1117777777-1145, then the temp_01c is 0. 1146-1175, then the temp_01c is -1. ... 1433-2046, then the temp_01c is -11. */ UINT32 TEMP_MAP_300K[] = { 0, 96, 100, 103, 107, 111, 115, 119, 123, 127, 133, 137, 143, 148, 154, 159, 165, 172, 178, 185, 192, 199, 207, 215, 223, 232, 241, 250, 260, 270, 280, 291, 301, 314, 326, 339, 352, 366, 380, 394, 410, 425, 442, 458, 476, 494, 512, 531, 551, 571, 592, 614, 636, 659, 682, 706, 730, 755, 780, 806, 833, 860, 887, 942, 943, 971, 1000, 1028, 1058, 1087, 1117, 1146, 1176, 1205, 1234, 1264, 1293, 1321, 1350, 1378, 1406, 1433, 2047, }; UINT32 TEMP_MAP_600K[] = { 0,56,59,60,63,65,68,70,73,75,78,81,84,87,91,94,98, 102,105,110,114,118,123,128,133,138,144,149,156,161, 168,175,181,189,197,205,213,222,231,240,250,260,270, 281,293,304,317,329,343,356,371,385,401,417,433,450, 467,486,504,523,543,563,584,616,628,650,674,697,721, 746,772,798,824,851,878,906,934,962,991,1020, 1050,1079,2047, }; UINT32 TEMP_MAP_1000K[] = { 0, 30, 31, 32, 34, 35, 36, 38, 39, 40, 42, 44, 45, 47, 49, 51, 53, 55, 57, 60, 62, 64, 67, 70, 73, 76, 79, 82, 86, 89, 93, 97, 101, 106, 111, 115, 120, 126, 131, 137, 143, 150, 156, 163, 171, 178, 187, 195, 204, 213, 223, 233, 244, 255, 267, 279, 292, 306, 320, 334, 350, 365, 382, 399, 418, 436, 456, 476, 497, 519, 542, 566, 590, 615, 641, 668, 695, 723, 752, 782, 812, 843, 2047, }; UINT32 *TEMP_MAP = TEMP_MAP_300K; UINT32 FL_25[] = { 2300, /* Unknown battery */ 1280, /* Sony 1300mAh (Formosa) */ 1280, /* Sony 1300mAh (HTE) */ 1250, /* Sanyo 1300mAh (HTE) */ 1230, /* Samsung 1230mAh */ 2300, /* HTC Extended 2300mAh */ }; UINT32 PD_M_COEF[] = { /* for TAO PMA, this is defined as PD_M; for TPE PMA, this is defined as FT or t*/ 24, /* Unknown battery */ 24, /* Sony 1300mAh (Formosa) */ 24, /* Sony 1300mAh (HTE) */ 27, /* Sanyo 1300mAh (HTE) */ 30, /* Samsung 1230mAh */ 30, /* HTC Extended 2300mAh */ }; UINT32 PD_M_RESL[] = { /* for TAO PMA, this is defined as PD_M; for TPE PMA, this is defined as FT or t*/ 100, /* Unknown battery */ 100, /* Sony 1300mAh (Formosa) */ 100, /* Sony 1300mAh (HTE) */ 100, /* Sanyo 1300mAh (HTE) */ 100, /* Samsung 1230mAh */ 100, /* HTC Extended 2300mAh */ }; UINT32 PD_T_COEF[] = { /* Ex: 140 -> 0.014, 156 -> 0.0156*/ 140, /* Unknown battery */ 140, /* Sony 1300mAh (Formosa) */ 140, /* Sony 1300mAh (HTE) */ 156, /* Sanyo 1300mAh (HTE) */ 250, /* Samsung 1230mAh */ 250, /* HTC Extended 2300mAh */ }; /*! star_lee 20100426 - update KADC discharge parameter */ UINT32 M_PARAMETER_SONY_1300MAH_FORMOSA[] = { /* capacity (in 0.01%) -> voltage (in mV)*/ 10000, 4100, 5500, 3839, 2400, 3759, 400, 3667, 0, 3397, }; UINT32 M_PARAMETER_Samsung_1230MAH_FORMOSA[] = { /* capacity (in 0.01%) -> voltage (in mV)*/ 10000, 4135, 7500, 3960, 4700, 3800, 1700, 3727, 900, 3674, 300, 3640, 0, 3420, }; UINT32 M_PARAMETER_HTC_2300MAH_FORMOSA[] = { /* capacity (in 0.01%) -> voltage (in mV)*/ 10000, 4135, 7500, 3960, 4700, 3800, 1700, 3727, 900, 3674, 300, 3640, 0, 3420, }; UINT32 *M_PARAMTER_TABLE[] = { /* Unknown battery */ (UINT32 *) (M_PARAMETER_SONY_1300MAH_FORMOSA), /* same as Sony 1300mAh (Formosa) currently... */ /* Sony 1300mAh (Formosa) */ (UINT32 *) (M_PARAMETER_SONY_1300MAH_FORMOSA), /* Sony 1300mAh (HTE) */ (UINT32 *) (M_PARAMETER_SONY_1300MAH_FORMOSA), /* same as Sony 1300mAh (Formosa) currently... */ /* Sanyo 1300mAh (HTE) */ (UINT32 *) (M_PARAMETER_SONY_1300MAH_FORMOSA), /* same as Sony 1300mAh (Formosa) currently... */ /* Samsung 1230mAh */ (UINT32 *) (M_PARAMETER_Samsung_1230MAH_FORMOSA), /* HTC Extended 2300mAh */ (UINT32 *) (M_PARAMETER_HTC_2300MAH_FORMOSA), }; INT32 TEMP_RANGE[] = { /* mapping temp to temp_index*/ 200, /* ~20C */ 100, /* 20~10C */ 50, /* 10~5C */ 0, /* 5~0C */ -5, /* 0~-5C */ -10, /* -5~-10C */ -3000, /* -10C~ */ }; UINT32 *PD_M_COEF_TABLE_BOOT[] = { /* mapping current to pd_m_coef table when booting*/ (UINT32 *) (PD_M_COEF), /* ~20C, using PD_M_COEF */ (UINT32 *) (PD_M_COEF), /* 20~10C, using PD_M_COEF */ (UINT32 *) (PD_M_COEF), /* 10~5C, using PD_M_COEF */ (UINT32 *) (PD_M_COEF), /* 5~0C, using PD_M_COEF */ (UINT32 *) (PD_M_COEF), /* 0~-5C, using PD_M_COEF */ (UINT32 *) (PD_M_COEF), /* -5~-10C, using PD_M_COEF */ (UINT32 *) (PD_M_COEF), /* -10C~, using PD_M_COEF */ }; UINT32 *PD_M_COEF_TABLE[] = { /* mapping current to pd_m_coef table*/ (UINT32 *) (PD_M_COEF), /* ~20C, using PD_M_COEF */ (UINT32 *) (PD_M_COEF), /* 20~10C, using PD_M_COEF */ (UINT32 *) (PD_M_COEF), /* 10~5C, using PD_M_COEF */ (UINT32 *) (PD_M_COEF), /* 5~0C, using PD_M_COEF */ (UINT32 *) (PD_M_COEF), /* 0~-5C, using PD_M_COEF */ (UINT32 *) (PD_M_COEF), /* -5~-10C, using PD_M_COEF */ (UINT32 *) (PD_M_COEF), /* -10C~, using PD_M_COEF */ }; UINT32 *PD_M_RESL_TABLE_BOOT[] = { /* mapping current to pd_m_coef table when booting*/ (UINT32 *) (PD_M_RESL), /* ~20C, using PD_M_RESL */ (UINT32 *) (PD_M_RESL), /* 20~10C, using PD_M_RESL */ (UINT32 *) (PD_M_RESL), /* 10~5C, using PD_M_RESL */ (UINT32 *) (PD_M_RESL), /* 5~0C, using PD_M_RESL */ (UINT32 *) (PD_M_RESL), /* 0~-5C, using PD_M_RESL */ (UINT32 *) (PD_M_RESL), /* -5~-10C, using PD_M_RESL */ (UINT32 *) (PD_M_RESL), /* -10C~, using PD_M_RESL */ }; UINT32 *PD_M_RESL_TABLE[] = { /* mapping current to pd_m_coef table*/ (UINT32 *) (PD_M_RESL), /* ~20C, using PD_M_RESL */ (UINT32 *) (PD_M_RESL), /* 20~10C, using PD_M_RESL */ (UINT32 *) (PD_M_RESL), /* 10~5C, using PD_M_RESL */ (UINT32 *) (PD_M_RESL), /* 5~0C, using PD_M_RESL */ (UINT32 *) (PD_M_RESL), /* 0~-5C, using PD_M_RESL */ (UINT32 *) (PD_M_RESL), /* -5~-10C, using PD_M_RESL */ (UINT32 *) (PD_M_RESL), /* -10C~, using PD_M_RESL */ }; UINT32 CAPACITY_DEDUCTION_01p[] = { 0, /* ~20C, upper capacity 100 is usable */ 0, /* 20~10C, upper capacity 95 is usable */ 0, /* 10~5C, upper capacity 92 is usable */ 0, /* 5~0C, upper capacity 90 is usable */ 0, /* 0~-5C, upper capacity 87 is usable */ 0, /* -5~-10C, upper capacity 85 is usable */ 0, /* -10C~, upper capacity 85 is usable */ }; /*======================================================================================== battery formula coef definition, can be re-programable ========================================================================================*/ /* adc converter*/ static INT32 voltage_adc_to_mv_coef = 244; static INT32 voltage_adc_to_mv_resl = 100; static INT32 current_adc_to_mv_coef = 625; static INT32 current_adc_to_mv_resl = 1580; static INT32 discharge_adc_to_mv_coef = 625; static INT32 discharge_adc_to_mv_resl = 1580; static INT32 acr_adc_to_mv_coef = 625; static INT32 acr_adc_to_mv_resl = 1580; static INT32 charge_counter_zero_base_mAh = 500; static INT32 id_adc_resl = 2047; static INT32 temp_adc_resl = 2047; /* kadc parameter*/ static INT32 pd_m_bias_mA; /* the bias current when calculating pd_m*/ /* over temperature algorithm*/ static INT32 over_high_temp_lock_01c = 450; static INT32 over_high_temp_release_01c = 420; static INT32 over_low_temp_lock_01c; /*over_low_temp_lock_01c = 0*/ static INT32 over_low_temp_release_01c = 30; /* function config*/ static BOOL is_allow_batt_id_change = FALSE; /*boot up voltage*/ /*dead battery is voltage < M_0*/ #define BATTERY_DEAD_VOLTAGE_LEVEL 3420 #define BATTERY_DEAD_VOLTAGE_RELEASE 3450 #define TEMP_MAX 70 #define TEMP_MIN -11 #define TEMP_NUM 83 #endif