From 2489007e7d740ccbc3e0a202914e243ad5178787 Mon Sep 17 00:00:00 2001 From: codeworkx Date: Sat, 22 Sep 2012 09:48:20 +0200 Subject: merge opensource jb u5 Change-Id: I1aaec157aa196f3448eff8636134fce89a814cf2 --- drivers/power/sec_battery_u1.c | 93 ++++++++++++++++++++++++++++++++---------- 1 file changed, 72 insertions(+), 21 deletions(-) (limited to 'drivers/power/sec_battery_u1.c') diff --git a/drivers/power/sec_battery_u1.c b/drivers/power/sec_battery_u1.c index a442251..3dcd150 100644 --- a/drivers/power/sec_battery_u1.c +++ b/drivers/power/sec_battery_u1.c @@ -39,8 +39,13 @@ #if defined(CONFIG_TARGET_LOCALE_NAATT) #define VF_CHECK_INTERVAL (5 * 1000) +#if defined(CONFIG_MACH_U1_NA_SPR) || defined(CONFIG_MACH_U1_NA_USCC) +#define MAX_VF 1500 +#define MIN_VF 1350 +#else #define MAX_VF 1800 #define MIN_VF 1100 +#endif #define VF_COUNT 1 #elif defined(CONFIG_MACH_Q1_BD) #define VF_CHECK_INTERVAL (5 * 1000) @@ -126,6 +131,17 @@ #define LOW_BLOCK_TEMP_ADC_LPM 521 #define HIGH_RECOVER_TEMP_ADC_LPM 714 #define LOW_RECOVER_TEMP_ADC_LPM 522 +#elif defined(CONFIG_MACH_U1_NA_USCC) +#define EVENT_BLOCK_TEMP_ADC 770 +#define HIGH_BLOCK_TEMP_ADC 770 +#define LOW_BLOCK_TEMP_ADC 502 +#define HIGH_RECOVER_TEMP_ADC 699 +#define LOW_RECOVER_TEMP_ADC 516 + +#define HIGH_BLOCK_TEMP_ADC_LPM 710 +#define LOW_BLOCK_TEMP_ADC_LPM 506 +#define HIGH_RECOVER_TEMP_ADC_LPM 702 +#define LOW_RECOVER_TEMP_ADC_LPM 512 #else #define EVENT_BLOCK_TEMP_ADC 777 #define HIGH_BLOCK_TEMP_ADC 729 @@ -367,6 +383,10 @@ static enum power_supply_property sec_battery_props[] = { POWER_SUPPLY_PROP_TECHNOLOGY, POWER_SUPPLY_PROP_VOLTAGE_NOW, POWER_SUPPLY_PROP_CAPACITY, +#ifdef CONFIG_SLP + POWER_SUPPLY_PROP_CHARGE_NOW, + POWER_SUPPLY_PROP_CHARGE_FULL, +#endif POWER_SUPPLY_PROP_TEMP, POWER_SUPPLY_PROP_CURRENT_AVG, }; @@ -492,6 +512,20 @@ static int sec_bat_get_property(struct power_supply *ps, if (val->intval == -1) return -EINVAL; break; +#ifdef CONFIG_SLP + case POWER_SUPPLY_PROP_CHARGE_FULL: + if (info->charging_status == POWER_SUPPLY_STATUS_FULL) + val->intval = true; + else + val->intval = false; + break; + case POWER_SUPPLY_PROP_CHARGE_NOW: + if (info->charging_status == POWER_SUPPLY_STATUS_CHARGING) + val->intval = true; + else + val->intval = false; + break; +#endif case POWER_SUPPLY_PROP_CAPACITY: #ifdef CONFIG_TARGET_LOCALE_NA if (info->charging_status != POWER_SUPPLY_STATUS_FULL @@ -513,7 +547,7 @@ static int sec_bat_get_property(struct power_supply *ps, val->intval = POWER_SUPPLY_TECHNOLOGY_LION; break; case POWER_SUPPLY_PROP_CURRENT_AVG: - val->intval = -1; + val->intval = 1; break; default: return -EINVAL; @@ -783,12 +817,16 @@ static int is_event_end_timer_running(struct sec_bat_info *info) if (time_after(passed_time, (unsigned long)EVENT_OVER_TIME)) { info->event_end_time = 0xFFFFFFFF; + #ifndef PRODUCT_SHIP dev_info(info->dev, "%s: Event timer is over 10 min\n", __func__); + #endif return false; } else { + #ifndef PRODUCT_SHIP dev_info(info->dev, "%s: Event timer is running(%u s)\n", __func__, jiffies_to_msecs(passed_time) / 1000); + #endif return true; } @@ -816,13 +854,17 @@ static int is_event_end_timer_running(struct sec_bat_info *info) if (time_after(passed_time, (unsigned long)BAT_USE_TIMER_EXPIRE)) { info->event_expired_time = 0xFFFFFFFF; + #ifndef PRODUCT_SHIP dev_info(info->dev, "[SPR_NA] %s: Event timer is over 10 min\n", __func__); + #endif return false; } else { +#ifndef PRODUCT_SHIP dev_info(info->dev, "[SPR_NA] %s: Event timer is running(%u s)\n", __func__, jiffies_to_msecs(passed_time) / 1000); +#endif return true; } @@ -932,9 +974,11 @@ static int sec_bat_check_temper(struct sec_bat_info *info) } else { if ((info->batt_event_status) || (is_event_end_timer_running(info))) { +#ifndef PRODUCT_SHIP dev_info(info->dev, - "[NA_SPR] Changed Put off Current", + "%s: [NA_SPR] Changed Put off Current", __func__); +#endif if (temp_radc >= EVENT_BLOCK_TEMP_ADC) { if (health != POWER_SUPPLY_HEALTH_OVERHEAT @@ -943,7 +987,7 @@ static int sec_bat_check_temper(struct sec_bat_info *info) if (info->batt_temp_high_cnt < TEMP_BLOCK_COUNT) info-> - batt_temp_high_cnt++; + batt_temp_high_cnt++; dev_info(info->dev, "%s: high count = %d\n", __func__, @@ -962,7 +1006,7 @@ static int sec_bat_check_temper(struct sec_bat_info *info) batt_temp_recover_cnt < TEMP_BLOCK_COUNT) info-> - batt_temp_recover_cnt++; + batt_temp_recover_cnt++; dev_info(info->dev, "%s: recovery count = %d\n", __func__, @@ -995,7 +1039,7 @@ static int sec_bat_check_temper(struct sec_bat_info *info) if (info->batt_temp_high_cnt < TEMP_BLOCK_COUNT) info-> - batt_temp_high_cnt++; + batt_temp_high_cnt++; dev_info(info->dev, "%s: high count = %d\n", __func__, @@ -1015,7 +1059,7 @@ static int sec_bat_check_temper(struct sec_bat_info *info) batt_temp_recover_cnt < TEMP_BLOCK_COUNT) info-> - batt_temp_recover_cnt++; + batt_temp_recover_cnt++; dev_info(info->dev, "%s: recovery count = %d\n", __func__, @@ -1073,9 +1117,9 @@ static int sec_bat_check_temper(struct sec_bat_info *info) __func__, ret); } } - +#ifndef PRODUCT_SHIP dev_info(info->dev, "%s: temp=%d, adc=%d\n", __func__, temp, temp_adc); - +#endif return temp; } @@ -1263,8 +1307,9 @@ static int sec_bat_check_temper(struct sec_bat_info *info) __func__, ret); } } - +#ifndef PRODUCT_SHIP dev_info(info->dev, "%s: temp=%d, adc=%d\n", __func__, temp, temp_adc); +#endif return temp; } @@ -1350,9 +1395,9 @@ static int sec_bat_check_temper(struct sec_bat_info *info) __func__, ret); } } - +#ifndef PRODUCT_SHIP dev_info(info->dev, "%s: temp=%d, adc=%d\n", __func__, temp, temp_adc); - +#endif return temp; } #endif @@ -1729,9 +1774,10 @@ static bool sec_bat_charging_time_management(struct sec_bat_info *info) dev_info(info->dev, "%s: Undefine Battery Status\n", __func__); return false; } - +#ifndef PRODUCT_SHIP dev_info(info->dev, "Time past : %u secs\n", jiffies_to_msecs(info->charging_passed_time) / 1000); +#endif return false; } @@ -1953,9 +1999,9 @@ static bool sec_bat_check_ing_level_trigger(struct sec_bat_info *info) charging_int_full_count >= FULL_CHG_COND_COUNT) { info-> - charging_int_full_count + charging_int_full_count = 0; - sec_bat_handle_charger_topoff + sec_bat_handle_charger_topoff (info); return true; } @@ -1963,7 +2009,7 @@ static bool sec_bat_check_ing_level_trigger(struct sec_bat_info *info) "%s : full interrupt cnt = %d\n", __func__, info-> - charging_int_full_count); + charging_int_full_count); } else { info->charging_int_full_count = 0; @@ -2042,9 +2088,9 @@ static bool sec_bat_check_ing_level_trigger(struct sec_bat_info *info) charging_int_full_count >= FULL_CHG_COND_COUNT) { info-> - charging_int_full_count + charging_int_full_count = 0; - sec_bat_handle_charger_topoff + sec_bat_handle_charger_topoff (info); return true; } @@ -2052,13 +2098,14 @@ static bool sec_bat_check_ing_level_trigger(struct sec_bat_info *info) "%s : full interrupt cnt = %d\n", __func__, info-> - charging_int_full_count); + charging_int_full_count); } else { info->charging_int_full_count = 0; /*reactivate charging in */ /*next monitor work */ - /*for abnormal full-charged status */ + /*for abnormal + full-charged status */ info->charging_next_time = info->charging_passed_time + HZ; @@ -2230,12 +2277,14 @@ static void sec_bat_monitor_work(struct work_struct *work) info->batt_temp / 10, info->charging_status, info->batt_health, info->batt_vf_adc); #else +#ifndef PRODUCT_SHIP dev_info(info->dev, "soc(%d), vfocv(%d), vcell(%d), temp(%d), charging(%d), health(%d), chg_adc(%d)\n", info->batt_soc, info->batt_vfocv, info->batt_vcell / 1000, info->batt_temp / 10, info->charging_status, info->batt_health, info->batt_current_adc); #endif +#endif power_supply_changed(&info->psy_bat); @@ -2449,10 +2498,10 @@ static void sec_bat_check_event_status(struct sec_bat_info *info, int mode, if (info->batt_event_status & offset) info->batt_event_status &= ~offset; } - +#ifndef PRODUCT_SHIP printk(KERN_DEBUG "[%s] current batt_event_status = 0x%x\n", __func__, info->batt_event_status); - +#endif if ((info->batt_event_status == 0) && (is_event_running == 1)) info->event_expired_time = jiffies; @@ -2463,6 +2512,7 @@ int sec_bat_use_wimax(int onoff) { struct sec_bat_info *info = pchg; sec_bat_check_event_status(info, onoff, USE_WIMAX); + return 0; } EXPORT_SYMBOL(sec_bat_use_wimax); #endif @@ -2916,6 +2966,7 @@ static ssize_t sec_bat_store(struct device *dev, case BATT_CAMERA: /* TODO */ if (sscanf(buf, "%d\n", &x) == 1) { + info->use_camera = x; dev_info(info->dev, "[NA_SPR]%s: CAMERA(%d)\n", __func__, x); ret = count; -- cgit v1.1