* ACPI: Battery: Add alarm sysfs support
@ 2007-08-16 20:43 Alexey Starikovskiy
2007-08-17 8:30 ` ACPI: SBS: Add sysfs alarm Alexey Starikovskiy
0 siblings, 1 reply; 2+ messages in thread
From: Alexey Starikovskiy @ 2007-08-16 20:43 UTC (permalink / raw)
To: Len Brown, ACPI Devel Maling List
From: Alexey Starikovskiy <astarikivskiy@suse.de>
Signed-off-by: Alexey Starikovskiy <astarikovskiy@suse.de>
---
drivers/acpi/battery.c | 36 +++++++++++++++++++++++++++++++++++-
1 files changed, 35 insertions(+), 1 deletions(-)
diff --git a/drivers/acpi/battery.c b/drivers/acpi/battery.c
index 2be9f45..3968d3b 100644
--- a/drivers/acpi/battery.c
+++ b/drivers/acpi/battery.c
@@ -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);
^ permalink raw reply related [flat|nested] 2+ messages in thread* ACPI: SBS: Add sysfs alarm
2007-08-16 20:43 ACPI: Battery: Add alarm sysfs support Alexey Starikovskiy
@ 2007-08-17 8:30 ` Alexey Starikovskiy
0 siblings, 0 replies; 2+ messages in thread
From: Alexey Starikovskiy @ 2007-08-17 8:30 UTC (permalink / raw)
To: Alexey Starikovskiy; +Cc: Len Brown, ACPI Devel Maling List
Signed-off-by: Alexey Starikovskiy <astarikovskiy@suse.de>
---
drivers/acpi/sbs.c | 36 ++++++++++++++++++++++++++++++++++++
1 files changed, 36 insertions(+), 0 deletions(-)
diff --git a/drivers/acpi/sbs.c b/drivers/acpi/sbs.c
index abf7b94..80a8e00 100644
--- a/drivers/acpi/sbs.c
+++ b/drivers/acpi/sbs.c
@@ -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
^ permalink raw reply related [flat|nested] 2+ messages in thread
end of thread, other threads:[~2007-08-17 8:30 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-08-16 20:43 ACPI: Battery: Add alarm sysfs support Alexey Starikovskiy
2007-08-17 8:30 ` ACPI: SBS: Add sysfs alarm Alexey Starikovskiy
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.