示例#1
0
static void __ds2746_clear_porf(void)
{
	UINT8 reg_data;
	if (!ds2746_i2c_read_u8(&reg_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;
	}
}
示例#2
0
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();
	}
}
示例#3
0
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();
	}
}
示例#4
0
static void __ds2746_init_config(struct battery_type *battery)
{
	UINT8 reg_data;

	if (!ds2746_i2c_read_u8(&reg_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;
	}
}