Skip to content

Commit

Permalink
Pull battery-sbs-ac into release branch
Browse files Browse the repository at this point in the history
  • Loading branch information
Len Brown committed Oct 10, 2007
2 parents a2883df + d5b4a3d commit e270051
Show file tree
Hide file tree
Showing 10 changed files with 1,366 additions and 1,951 deletions.
13 changes: 6 additions & 7 deletions drivers/acpi/Kconfig
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,7 @@ config ACPI_PROC_EVENT

config ACPI_AC
tristate "AC Adapter"
depends on X86
depends on X86 && POWER_SUPPLY
default y
help
This driver adds support for the AC Adapter object, which indicates
Expand All @@ -97,7 +97,7 @@ config ACPI_AC

config ACPI_BATTERY
tristate "Battery"
depends on X86
depends on X86 && POWER_SUPPLY
default y
help
This driver adds support for battery information through
Expand Down Expand Up @@ -350,12 +350,11 @@ config ACPI_HOTPLUG_MEMORY
$>modprobe acpi_memhotplug

config ACPI_SBS
tristate "Smart Battery System (EXPERIMENTAL)"
tristate "Smart Battery System"
depends on X86
depends on EXPERIMENTAL
depends on POWER_SUPPLY
help
This driver adds support for the Smart Battery System.
A "Smart Battery" is quite old and quite rare compared
to today's ACPI "Control Method" battery.
This driver adds support for the Smart Battery System, another
type of access to battery information, found on some laptops.

endif # ACPI
1 change: 1 addition & 0 deletions drivers/acpi/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -60,3 +60,4 @@ obj-$(CONFIG_ACPI_TOSHIBA) += toshiba_acpi.o
obj-$(CONFIG_ACPI_HOTPLUG_MEMORY) += acpi_memhotplug.o
obj-y += cm_sbs.o
obj-$(CONFIG_ACPI_SBS) += sbs.o
obj-$(CONFIG_ACPI_SBS) += sbshc.o
33 changes: 31 additions & 2 deletions drivers/acpi/ac.c
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
#include <linux/types.h>
#include <linux/proc_fs.h>
#include <linux/seq_file.h>
#include <linux/power_supply.h>
#include <acpi/acpi_bus.h>
#include <acpi/acpi_drivers.h>

Expand Down Expand Up @@ -72,16 +73,37 @@ static struct acpi_driver acpi_ac_driver = {
};

struct acpi_ac {
struct power_supply charger;
struct acpi_device * device;
unsigned long state;
};

#define to_acpi_ac(x) container_of(x, struct acpi_ac, charger);

static const struct file_operations acpi_ac_fops = {
.open = acpi_ac_open_fs,
.read = seq_read,
.llseek = seq_lseek,
.release = single_release,
};
static int get_ac_property(struct power_supply *psy,
enum power_supply_property psp,
union power_supply_propval *val)
{
struct acpi_ac *ac = to_acpi_ac(psy);
switch (psp) {
case POWER_SUPPLY_PROP_ONLINE:
val->intval = ac->state;
break;
default:
return -EINVAL;
}
return 0;
}

static enum power_supply_property ac_props[] = {
POWER_SUPPLY_PROP_ONLINE,
};

/* --------------------------------------------------------------------------
AC Adapter Management
Expand Down Expand Up @@ -208,6 +230,7 @@ static void acpi_ac_notify(acpi_handle handle, u32 event, void *data)
acpi_bus_generate_netlink_event(device->pnp.device_class,
device->dev.bus_id, event,
(u32) ac->state);
kobject_uevent(&ac->charger.dev->kobj, KOBJ_CHANGE);
break;
default:
ACPI_DEBUG_PRINT((ACPI_DB_INFO,
Expand Down Expand Up @@ -244,7 +267,12 @@ static int acpi_ac_add(struct acpi_device *device)
result = acpi_ac_add_fs(device);
if (result)
goto end;

ac->charger.name = acpi_device_bid(device);
ac->charger.type = POWER_SUPPLY_TYPE_MAINS;
ac->charger.properties = ac_props;
ac->charger.num_properties = ARRAY_SIZE(ac_props);
ac->charger.get_property = get_ac_property;
power_supply_register(&ac->device->dev, &ac->charger);
status = acpi_install_notify_handler(device->handle,
ACPI_ALL_NOTIFY, acpi_ac_notify,
ac);
Expand Down Expand Up @@ -279,7 +307,8 @@ static int acpi_ac_remove(struct acpi_device *device, int type)

status = acpi_remove_notify_handler(device->handle,
ACPI_ALL_NOTIFY, acpi_ac_notify);

if (ac->charger.dev)
power_supply_unregister(&ac->charger);
acpi_ac_remove_fs(device);

kfree(ac);
Expand Down
Loading

0 comments on commit e270051

Please sign in to comment.