On Thu, 2011-11-10 at 09:56 +0100, Heiko Stübner wrote: > Userspace programs like upower seem to depend on the presence of the > POWER_SUPPLY_PROP_PRESENT property. > > The real presence of the battery cannot be sensed and all other > routines of s3c-adc-battery simply expect it to be present. > > Therefore we simply return 1, unless the battery struct is not present at all. Looks OK for me, > Signed-off-by: Heiko Stuebner <heiko@xxxxxxxxx> Acked-by: Vasily Khoruzhick <anarsoul@xxxxxxxxx> > --- > drivers/power/s3c_adc_battery.c | 18 ++++++++++++++++++ > 1 files changed, 18 insertions(+), 0 deletions(-) > > diff --git a/drivers/power/s3c_adc_battery.c b/drivers/power/s3c_adc_battery.c > index d32d0d7..42d1f92 100644 > --- a/drivers/power/s3c_adc_battery.c > +++ b/drivers/power/s3c_adc_battery.c > @@ -51,6 +51,7 @@ static enum power_supply_property s3c_adc_backup_bat_props[] = { > POWER_SUPPLY_PROP_VOLTAGE_NOW, > POWER_SUPPLY_PROP_VOLTAGE_MIN, > POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN, > + POWER_SUPPLY_PROP_PRESENT, > }; > > static int s3c_adc_backup_bat_get_property(struct power_supply *psy, > @@ -60,6 +61,11 @@ static int s3c_adc_backup_bat_get_property(struct power_supply *psy, > struct s3c_adc_bat *bat = container_of(psy, struct s3c_adc_bat, psy); > > if (!bat) { > + if (psp == POWER_SUPPLY_PROP_PRESENT) { > + val->intval = 0; > + return 0; > + } > + > dev_err(psy->dev, "%s: no battery infos ?!\n", __func__); > return -EINVAL; > } > @@ -83,6 +89,9 @@ static int s3c_adc_backup_bat_get_property(struct power_supply *psy, > case POWER_SUPPLY_PROP_VOLTAGE_MAX_DESIGN: > val->intval = bat->pdata->backup_volt_max; > return 0; > + case POWER_SUPPLY_PROP_PRESENT: > + val->intval = 1; > + return 0; > default: > return -EINVAL; > } > @@ -106,6 +115,7 @@ static enum power_supply_property s3c_adc_main_bat_props[] = { > POWER_SUPPLY_PROP_CHARGE_NOW, > POWER_SUPPLY_PROP_VOLTAGE_NOW, > POWER_SUPPLY_PROP_CURRENT_NOW, > + POWER_SUPPLY_PROP_PRESENT, > }; > > static int calc_full_volt(int volt_val, int cur_val, int impedance) > @@ -132,6 +142,11 @@ static int s3c_adc_bat_get_property(struct power_supply *psy, > unsigned int lut_size = bat->pdata->lut_noac_cnt; > > if (!bat) { > + if (psp == POWER_SUPPLY_PROP_PRESENT) { > + val->intval = 0; > + return 0; > + } > + > dev_err(psy->dev, "no battery infos ?!\n"); > return -EINVAL; > } > @@ -205,6 +220,9 @@ static int s3c_adc_bat_get_property(struct power_supply *psy, > case POWER_SUPPLY_PROP_CURRENT_NOW: > val->intval = bat->cur_value; > return 0; > + case POWER_SUPPLY_PROP_PRESENT: > + val->intval = 1; > + return 0; > default: > return -EINVAL; > } _______________________________________________ linux-pm mailing list linux-pm@xxxxxxxxxxxxxxxxxxxxxxxxxx https://lists.linuxfoundation.org/mailman/listinfo/linux-pm