static void rk2918_battery_timer_work(struct work_struct *work) { int value = 0; int flag = 0; int dcdet = 0; rk2918_get_bat_status(gBatteryData); rk2918_get_bat_health(gBatteryData); rk2918_get_bat_present(gBatteryData); rk2918_get_bat_voltage(gBatteryData); rk2918_get_bat_capacity(gBatteryData); value = gpio_get_value(gBatteryData->charge_ok_pin); flag = gpio_get_value(RK29_PIN0_PA0); dcdet = gpio_get_value(gBatteryData->dc_det_pin); if (rk29_battery_dbg_level) { if (++AdcTestCnt >= 20) { AdcTestCnt = 0; printk("taidian-----gBatStatus = %d, adc_val = %d, TrueBatVol = %d,gBatVol = %d, gBatCap = %d, captmp = %d, sec = %lu,full_times=%d,chargeok=%d, \ flag =%d,dcdet=%d,shutdownflag=%d batteryspendcnt=%d\n", gBatStatus, AdcTestvalue, ((AdcTestvalue * BAT_2V5_VALUE * (BAT_PULL_UP_R + BAT_PULL_DOWN_R)) / (1024 * BAT_PULL_DOWN_R)), gBatVoltage, gBatCapacity, capacitytmp, batteryspendcnt1,gBatteryData->full_times/20,value,flag,dcdet,shutdownflag,batteryspendcnt1); } }
static void rk2918_battery_timer_work(struct work_struct *work) { rk2918_get_bat_status(gBatteryData); rk2918_get_bat_health(gBatteryData); rk2918_get_bat_present(gBatteryData); rk2918_get_bat_voltage(gBatteryData); //to prevent gBatCapacity be changed sharply if (gBatCapacity < 0) { gBatCapacity = 0; } else { if (gBatCapacity > 100) { gBatCapacity = 100; } } rk2918_get_bat_capacity(gBatteryData); if (rk29_battery_dbg_level) { if (++AdcTestCnt >= 20) { AdcTestCnt = 0; printk("\nchg_ok_level =%d, chg_ok= %d, gBatStatus = %d, adc_val = %d, TrueBatVol = %d,gBatVol = %d, gBatCap = %d, captmp = %d, sec = %lu, time_chg_flag = %d, first_flag = %d\n", gBatteryData->charge_ok_level, gpio_get_value(gBatteryData->charge_ok_pin), gBatStatus, AdcTestvalue, adc_to_voltage(AdcTestvalue), gBatVoltage, gBatCapacity, capacitytmp, batteryspendcnt, time_chg_flag, first_flag); } } /*update battery parameter after adc and capacity has been changed*/ if(((gBatStatus != gBatLastStatus) || (gBatPresent != gBatLastPresent) || (gBatCapacity != gBatLastCapacity))&&(suspend_flag==0)) { //for debug if (rk29_battery_dbg_level) { char _tmp_buf[250]; int buf_len = 0; struct file* fp; sprintf(_tmp_buf, "gBatStatus = %d, adc_val = %d, TrueBatVol = %d,gBatVol = %d, gBatCap = %d, captmp = %d, sec = %lu, inter_sec = %lu, time_chg_flag = %d, first_flag = %d\n", gBatStatus, AdcTestvalue, ((AdcTestvalue * BAT_2V5_VALUE * (BAT_PULL_UP_R + BAT_PULL_DOWN_R)) / (1024 * BAT_PULL_DOWN_R)), gBatVoltage, gBatCapacity, capacitytmp, batteryspendcnt, batteryspendcnt - last_batteryspendcnt, time_chg_flag, first_flag); buf_len = strlen(_tmp_buf); fp = filp_open(BATT_DBG_FILE,O_RDWR | O_APPEND | O_CREAT, 0); if(IS_ERR(fp)) { printk("bryan---->open file /data/bat_dbg_record.dat failed\n"); } else { kernel_write(fp, _tmp_buf, buf_len ,buf_offset); filp_close(fp,NULL); buf_offset += buf_len; } last_batteryspendcnt = batteryspendcnt; } gBatLastStatus = gBatStatus; gBatLastPresent = gBatPresent; gBatLastCapacity = gBatCapacity; power_supply_changed(&gBatteryData->battery); } }