static void __ds2746_clear_porf(void) { UINT8 reg_data; if (!ds2746_i2c_read_u8(®_data, 0x01)) { printk(DRIVER_ZONE " clear porf error in read.\n"); return; } if (!ds2746_i2c_write_u8((reg_data & (~DS2746_STATUS_PORF)), 0x01)) { printk(DRIVER_ZONE " clear porf error in write.\n"); return; } }
static void __ds2746_acr_update(struct battery_type *battery, int capacity_01p) { printk(DRIVER_ZONE " acr update: P=%d, C=%d.\n", capacity_01p, battery->charge_counter_adc); ds2746_i2c_write_u8((battery->charge_counter_adc & 0xFF00) >> 8, 0x10); ds2746_i2c_write_u8((battery->charge_counter_adc & 0x00FF), 0x11); if (battery->is_power_on_reset) { __ds2746_clear_porf(); } }
static void __ds2746_acr_update(struct battery_type *battery, int capacity_01p) { #if HTC_ENABLE_POWER_DEBUG printk(DRIVER_ZONE " acr update: P=%d, C=%d.\n", capacity_01p, battery->charge_counter_adc); #endif ds2746_i2c_write_u8((battery->charge_counter_adc & 0xFF00) >> 8, 0x10); ds2746_i2c_write_u8((battery->charge_counter_adc & 0x00FF), 0x11); if (battery->is_prediction) { __ds2746_clear_porf(); } }
static void __ds2746_init_config(struct battery_type *battery) { UINT8 reg_data; if (!ds2746_i2c_read_u8(®_data, 0x01)) { printk(DRIVER_ZONE " init config error in read.\n"); return; } /* Erase SMOD and NBEN value in DS2746 status/config register*/ reg_data &= ~(DS2746_STATUS_SMOD | DS2746_STATUS_NBEN); if (!ds2746_i2c_write_u8(reg_data, 0x01)) { printk(DRIVER_ZONE " init config error in write.\n"); return; } }