ACPI / battery: Do not export energy_full[_design] on devices without full_charge_cap...
[sfrench/cifs-2.6.git] / drivers / acpi / battery.c
index cb664e87cde82e0fc6db1c1ab0ae76df1eb5c3b7..cb97b6105f5286fa6c11c8bf787a3e1b49baf52c 100644 (file)
@@ -364,6 +364,20 @@ static enum power_supply_property energy_battery_props[] = {
        POWER_SUPPLY_PROP_SERIAL_NUMBER,
 };
 
+static enum power_supply_property energy_battery_full_cap_broken_props[] = {
+       POWER_SUPPLY_PROP_STATUS,
+       POWER_SUPPLY_PROP_PRESENT,
+       POWER_SUPPLY_PROP_TECHNOLOGY,
+       POWER_SUPPLY_PROP_CYCLE_COUNT,
+       POWER_SUPPLY_PROP_VOLTAGE_MIN_DESIGN,
+       POWER_SUPPLY_PROP_VOLTAGE_NOW,
+       POWER_SUPPLY_PROP_POWER_NOW,
+       POWER_SUPPLY_PROP_ENERGY_NOW,
+       POWER_SUPPLY_PROP_MODEL_NAME,
+       POWER_SUPPLY_PROP_MANUFACTURER,
+       POWER_SUPPLY_PROP_SERIAL_NUMBER,
+};
+
 /* --------------------------------------------------------------------------
                                Battery Management
    -------------------------------------------------------------------------- */
@@ -798,6 +812,11 @@ static int sysfs_add_battery(struct acpi_battery *battery)
                battery->bat_desc.properties = charge_battery_props;
                battery->bat_desc.num_properties =
                        ARRAY_SIZE(charge_battery_props);
+       } else if (battery->full_charge_capacity == 0) {
+               battery->bat_desc.properties =
+                       energy_battery_full_cap_broken_props;
+               battery->bat_desc.num_properties =
+                       ARRAY_SIZE(energy_battery_full_cap_broken_props);
        } else {
                battery->bat_desc.properties = energy_battery_props;
                battery->bat_desc.num_properties =