ACPI: Battery: Add alarm sysfs support
From: Alexey Starikovskiy <[email protected]>
Signed-off-by Alexey Starikovskiy <[email protected]>
---
drivers/acpi/battery.c | 36 +++++++++++++++++++++++++++++++++++- 1 files changed, 35 insertions(+), 1 deletions(-)
drivers/acpi/battery.c +35 -1
@@ -697,6 +697,37 @@ static void acpi_battery_remove_fs(struct acpi_device *device) }#endif + +#ifdef ENABLE_POWER_SUPPLY + +static ssize_t acpi_battery_alarm_show (struct device *dev, +struct device_attribute *attr, +char *buf) +{ +struct acpi_battery *battery =to_acpi_battery (dev_get_drvdata (dev)); +return sprintf (buf,"%d\n" , battery->alarm *1000 ); +} + +static ssize_t acpi_battery_alarm_store (struct device *dev, +struct device_attribute *attr, +const char *buf,size_t count) +{ +unsigned long x; +struct acpi_battery *battery =to_acpi_battery (dev_get_drvdata (dev)); +if (sscanf (buf,"%ld\n" , &x) ==1 ) + battery->alarm = x/1000 ; +if (acpi_battery_present (battery)) +acpi_battery_set_alarm (battery); +return count; +} + +static struct device_attribute alarm_attr = { + .attr = {.name ="alarm" , .mode =0644 , .owner =THIS_MODULE }, + .show = acpi_battery_alarm_show, + .store = acpi_battery_alarm_store, +}; + +#endif /* -------------------------------------------------------------------------- Driver Interface -------------------------------------------------------------------------- */
@@ -740,6 +771,7 @@ static int acpi_battery_add(struct acpi_device *device) battery->bat.type =POWER_SUPPLY_TYPE_BATTERY ; battery->bat.get_property = acpi_battery_get_property; result =power_supply_register (&battery->device->dev, &battery->bat); + result =device_create_file (battery->bat.dev, &alarm_attr);#endif status = acpi_install_notify_handler(device->handle, ACPI_ALL_NOTIFY,
@@ -777,8 +809,10 @@ static int acpi_battery_remove(struct acpi_device *device, int type)acpi_battery_remove_fs (device);#endif #ifdef ENABLE_POWER_SUPPLY -if (battery->bat.dev) +if (battery->bat.dev) { +device_remove_file (battery->bat.dev, &alarm_attr);power_supply_unregister (&battery->bat); + }#endif mutex_destroy (&battery->lock);kfree (battery);
ACPI: SBS: Add sysfs alarm
Signed-off-by Alexey Starikovskiy <[email protected]>
---
drivers/acpi/sbs.c | 36 ++++++++++++++++++++++++++++++++++++ 1 files changed, 36 insertions(+), 0 deletions(-)
drivers/acpi/sbs.c +36 -0
@@ -447,6 +447,40 @@ static int acpi_ac_get_present(struct acpi_sbs *sbs)return result; } +#ifdef ENABLE_POWER_SUPPLY + +static ssize_t acpi_battery_alarm_show (struct device *dev, +struct device_attribute *attr, +char *buf) +{ +struct acpi_battery *battery =to_acpi_battery (dev_get_drvdata (dev)); +acpi_battery_get_alarm (battery); +return sprintf (buf,"%d\n" , battery->alarm_capacity * +acpi_battery_scale (battery) *1000 ); +} + +static ssize_t acpi_battery_alarm_store (struct device *dev, +struct device_attribute *attr, +const char *buf,size_t count) +{ +unsigned long x; +struct acpi_battery *battery =to_acpi_battery (dev_get_drvdata (dev)); +if (sscanf (buf,"%ld\n" , &x) ==1 ) + battery->alarm_capacity = x / + (1000 *acpi_battery_scale (battery)); +if (battery->present) +acpi_battery_set_alarm (battery); +return count; +} + +static struct device_attribute alarm_attr = { + .attr = {.name ="alarm" , .mode =0644 , .owner =THIS_MODULE }, + .show = acpi_battery_alarm_show, + .store = acpi_battery_alarm_store, +}; + +#endif +/* -------------------------------------------------------------------------- FS Interface (/proc/acpi) -------------------------------------------------------------------------- */
@@ -792,6 +826,7 @@ static int acpi_battery_add(struct acpi_sbs *sbs, int id) } battery->bat.get_property = acpi_sbs_battery_get_property; result =power_supply_register (&sbs->device->dev, &battery->bat); +device_create_file (battery->bat.dev, &alarm_attr);#endif printk(KERN_INFO PREFIX "%s [%s]: Battery Slot [%s] (battery %s)\n", ACPI_SBS_DEVICE_NAME, acpi_device_bid(sbs->device),
@@ -803,6 +838,7 @@ static void acpi_battery_remove(struct acpi_sbs *sbs, int id) {#ifdef ENABLE_POWER_SUPPLY if (sbs->battery[id].bat.dev) +device_remove_file (sbs->battery[id].bat.dev, &alarm_attr);power_supply_unregister (&sbs->battery[id].bat);#endif #ifdef CONFIG_ACPI_PROCFS