diff options
author | Simon Wilson <simonwilson@google.com> | 2010-10-06 20:02:08 -0700 |
---|---|---|
committer | Arve Hjønnevåg <arve@android.com> | 2011-11-17 17:47:09 -0800 |
commit | 1dc6775b3f4408a01118954fbc6d3ad290747af1 (patch) | |
tree | 2e1744a52844b694065ffe495989042616560964 /drivers/power | |
parent | 3ac8d830cd1d51ef951faa63ac3082743e643262 (diff) | |
download | kernel_samsung_aries-1dc6775b3f4408a01118954fbc6d3ad290747af1.zip kernel_samsung_aries-1dc6775b3f4408a01118954fbc6d3ad290747af1.tar.gz kernel_samsung_aries-1dc6775b3f4408a01118954fbc6d3ad290747af1.tar.bz2 |
power: charger: get voltage and capacity from platform data
Diffstat (limited to 'drivers/power')
-rw-r--r-- | drivers/power/s5pc110_battery.c | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/drivers/power/s5pc110_battery.c b/drivers/power/s5pc110_battery.c index 5ab1b34..e13db75 100644 --- a/drivers/power/s5pc110_battery.c +++ b/drivers/power/s5pc110_battery.c @@ -24,6 +24,7 @@ #include <linux/irq.h> #include <linux/jiffies.h> #include <linux/kernel.h> +#include <linux/mfd/max8998.h> #include <linux/mfd/max8998-private.h> #include <linux/module.h> #include <linux/mutex.h> @@ -84,6 +85,7 @@ struct chg_data { struct device *dev; struct max8998_dev *iodev; struct delayed_work bat_work; + struct max8998_charger_data *pdata; struct power_supply psy_bat; struct power_supply psy_usb; @@ -111,6 +113,9 @@ static enum power_supply_property max8998_battery_props[] = { POWER_SUPPLY_PROP_HEALTH, POWER_SUPPLY_PROP_PRESENT, POWER_SUPPLY_PROP_TEMP, + POWER_SUPPLY_PROP_ONLINE, + POWER_SUPPLY_PROP_VOLTAGE_NOW, + POWER_SUPPLY_PROP_CAPACITY, }; static enum power_supply_property s3c_power_properties[] = { @@ -166,6 +171,18 @@ static int s3c_bat_get_property(struct power_supply *bat_ps, val->intval = chg->bat_info.batt_temp; pr_info("psp = %d\n", chg->bat_info.batt_temp); break; + case POWER_SUPPLY_PROP_ONLINE: + /* battery is always online */ + val->intval = 1; + break; + case POWER_SUPPLY_PROP_VOLTAGE_NOW: + case POWER_SUPPLY_PROP_CAPACITY: + if (chg->pdata && chg->pdata->psy_fuelgauge && + chg->pdata->psy_fuelgauge->get_property && + chg->pdata->psy_fuelgauge->get_property(chg->pdata->psy_fuelgauge, + psp, (union power_supply_propval *)&val->intval) < 0) + return -EINVAL; + break; default: return -EINVAL; } @@ -509,6 +526,7 @@ err: static __devinit int max8998_charger_probe(struct platform_device *pdev) { struct max8998_dev *iodev = dev_get_drvdata(pdev->dev.parent); + struct max8998_platform_data *pdata = dev_get_platdata(iodev->dev); struct chg_data *chg; int ret = 0; @@ -519,6 +537,7 @@ static __devinit int max8998_charger_probe(struct platform_device *pdev) return -ENOMEM; chg->iodev = iodev; + chg->pdata = pdata->charger; chg->psy_bat.name = "battery", chg->psy_bat.type = POWER_SUPPLY_TYPE_BATTERY, |