static int mc13892_battery_read_status(struct mc13892_dev_info *di) { int retval; int coulomb; retval = pmic_get_batt_voltage(&(di->voltage_raw)); if (retval == 0) di->voltage_uV = di->voltage_raw * PMIC_BAT_VOLTAGE_UNIT_UV; retval = pmic_get_batt_current(&(di->current_raw)); if (retval == 0) { if (di->current_raw & 0x200) di->current_uA = (0x1FF - (di->current_raw & 0x1FF)) * PMIC_BAT_CURRENT_UNIT_UA * (-1); else di->current_uA = (di->current_raw & 0x1FF) * PMIC_BAT_CURRENT_UNIT_UA; } retval = pmic_get_charger_coulomb(&coulomb); if (retval == 0) di->accum_current_uAh = COULOMB_TO_UAH(coulomb); else di->accum_current_uAh = -1; return retval; }
static int mc13892_battery_read_status(struct mc13892_dev_info *di) { int retval; #ifdef CONFIG_MACH_MX51_ERDOS /* set voltage */ retval = pmic_get_batt_voltage(&(di->voltage_raw), 0); if (retval == 0) { di->voltage_uV = di->voltage_raw * 1000; /* mV -> uV */ } #else int coulomb; retval = pmic_get_batt_voltage(&(di->voltage_raw)); if (retval == 0) di->voltage_uV = di->voltage_raw * BAT_VOLTAGE_UNIT_UV; retval = pmic_get_batt_current(&(di->current_raw)); if (retval == 0) { if (di->current_raw & 0x200) di->current_uA = (0x1FF - (di->current_raw & 0x1FF)) * BAT_CURRENT_UNIT_UA * (-1); else di->current_uA = (di->current_raw & 0x1FF) * BAT_CURRENT_UNIT_UA; } retval = pmic_get_charger_coulomb(&coulomb); if (retval == 0) di->accum_current_uAh = COULOMB_TO_UAH(coulomb); #endif /* CONFIG_MACH_MX51_ERDOS */ return retval; }