diff options
author | Ilya A. Volynets-Evenbakh <ilya@total-knowledge.com> | 2007-02-19 15:19:31 -0800 |
---|---|---|
committer | Len Brown <len.brown@intel.com> | 2007-03-09 21:40:23 -0500 |
commit | ac122bb64b0d51f0512185d3522a75f3f3a80bc9 (patch) | |
tree | 4322b5556d296e6443a73bae197af9c753b6bba7 /drivers | |
parent | a967e127d0233f2472af64597de3f3920872310c (diff) | |
download | linux-ac122bb64b0d51f0512185d3522a75f3f3a80bc9.tar.gz linux-ac122bb64b0d51f0512185d3522a75f3f3a80bc9.tar.bz2 linux-ac122bb64b0d51f0512185d3522a75f3f3a80bc9.zip |
ACPI: dock: add access to ACPI docking station UID
It is useful to know whether your laptop is docked or not,
but it is even more useful to know which docking station it's
docked to. Attached patch adds "uid" file to sysfs.
Tested on Dell Latitude D600 with D/Dock.
Patch is against official 2.6.20 release.
Signed-off-by: Len Brown <len.brown@intel.com>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/acpi/dock.c | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/drivers/acpi/dock.c b/drivers/acpi/dock.c index 54a697f9aa18..811b1aac65d5 100644 --- a/drivers/acpi/dock.c +++ b/drivers/acpi/dock.c @@ -667,6 +667,23 @@ static ssize_t write_undock(struct device *dev, struct device_attribute *attr, } DEVICE_ATTR(undock, S_IWUSR, NULL, write_undock); +/* + * show_dock_uid - read method for "uid" file in sysfs + */ +static ssize_t show_dock_uid(struct device *dev, + struct device_attribute *attr, char *buf) +{ + unsigned long lbuf; + acpi_status status = acpi_evaluate_integer(dock_station->handle, "_UID", 0, &lbuf); + if(ACPI_FAILURE(status)) { + return 0; + } + return snprintf(buf, PAGE_SIZE, "%lx\n", lbuf); +} +DEVICE_ATTR(uid, S_IRUGO, show_dock_uid, NULL); + + + /** * dock_add - add a new dock station * @handle: the dock station handle @@ -715,6 +732,13 @@ static int dock_add(acpi_handle handle) kfree(dock_station); return ret; } + ret = device_create_file(&dock_device.dev, &dev_attr_uid); + if (ret) { + printk("Error %d adding sysfs file\n", ret); + platform_device_unregister(&dock_device); + kfree(dock_station); + return ret; + } /* Find dependent devices */ acpi_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT, |