Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ac122bb6 authored by Ilya A. Volynets-Evenbakh's avatar Ilya A. Volynets-Evenbakh Committed by Len Brown
Browse files

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: default avatarLen Brown <len.brown@intel.com>
parent a967e127
Loading
Loading
Loading
Loading
+24 −0
Original line number Original line Diff line number Diff line
@@ -667,6 +667,23 @@ static ssize_t write_undock(struct device *dev, struct device_attribute *attr,
}
}
DEVICE_ATTR(undock, S_IWUSR, NULL, write_undock);
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
 * dock_add - add a new dock station
 * @handle: the dock station handle
 * @handle: the dock station handle
@@ -715,6 +732,13 @@ static int dock_add(acpi_handle handle)
		kfree(dock_station);
		kfree(dock_station);
		return ret;
		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 */
	/* Find dependent devices */
	acpi_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT,
	acpi_walk_namespace(ACPI_TYPE_DEVICE, ACPI_ROOT_OBJECT,