diff options
Diffstat (limited to 'drivers/power')
| -rw-r--r-- | drivers/power/bq27x00_battery.c | 24 | 
1 files changed, 17 insertions, 7 deletions
| diff --git a/drivers/power/bq27x00_battery.c b/drivers/power/bq27x00_battery.c index 9a491f027a2..1cc928fe2c9 100644 --- a/drivers/power/bq27x00_battery.c +++ b/drivers/power/bq27x00_battery.c @@ -232,6 +232,7 @@ static __initdata u8 bq276xx_regs[NUM_REGS] = {  #define BQ27XXX_FLAG_DSC		BIT(0)  #define BQ27XXX_FLAG_SOCF		BIT(1) /* State-of-Charge threshold final */  #define BQ27XXX_FLAG_SOC1		BIT(2) /* State-of-Charge threshold 1 */ +#define BQ27XXX_FLAG_CHG		BIT(8)  #define BQ27XXX_FLAG_FC			BIT(9)  #define BQ27XXX_FLAG_OTD		BIT(14)  #define BQ27XXX_FLAG_OTC		BIT(15) @@ -411,12 +412,15 @@ static __initdata enum power_supply_property bq276xx_battery_props[] = {   * Customize these values and, if necessary, add more based on system needs.   */  static struct dm_reg bq274xx_dm_regs[] = { +	{36, 6, 1, 90}, 	/* FC Clear % */  	{82, 0, 2, 16384},	/* Qmax */ -	{82, 5, 1, 0x81},	/* Load Select */ +	{82, 3, 2, 15},		/* Reserve Cap-mAh */ +	{82, 5, 1, 0x01},	/* Load Select */  	{82, 10, 2, 300},	/* Design Capacity */  	{82, 12, 2, 1140},	/* Design Energy */ -	{82, 16, 2, 3090},	/* Terminate Voltage */ -	{82, 27, 2, 40},	/* Taper rate */ +	{82, 16, 2, 3100},	/* Terminate Voltage */ +	{82, 26, 1, 5}, 	/* SOC Delta (5%) */ +	{82, 27, 2, 75},	/* Taper rate */  };  static struct dm_reg bq276xx_dm_regs[] = { @@ -1203,6 +1207,10 @@ static int bq27x00_charger_status(struct bq27x00_device_info *di) {  	olio_debug("Got client data for dev %s\n", dev_name(ts81001->dev)); +	if(di->cache.flags & BQ27XXX_FLAG_CHG) { +		ts81001->ops->request_charge(ts81001); +	} +  	state = ts81001->ops->get_status(ts81001);  	olio_debug("Got status\n");	 @@ -1241,12 +1249,14 @@ static int bq27x00_battery_status(struct bq27x00_device_info *di,  		else  			status = POWER_SUPPLY_STATUS_DISCHARGING;  	} else { +	#ifdef CONFIG_OLIO_TS81001 +		status = bq27x00_charger_status (di); +		if(status != POWER_SUPPLY_STATUS_DISCHARGING && di->cache.flags & BQ27XXX_FLAG_FC) { +			status = POWER_SUPPLY_STATUS_FULL; +		} +	#else  		if (di->cache.flags & BQ27XXX_FLAG_FC)  			status = POWER_SUPPLY_STATUS_FULL; -#ifdef CONFIG_OLIO_TS81001 -		else  -			status = bq27x00_charger_status (di); -#else  		else if (di->cache.flags & BQ27XXX_FLAG_DSC)  			status = POWER_SUPPLY_STATUS_DISCHARGING;  		else |