summaryrefslogtreecommitdiffstats
path: root/include/acpi
diff options
context:
space:
mode:
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>2013-04-28 01:53:34 +0200
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2013-04-28 01:53:34 +0200
commit929c6dd4195f6b4daf9887da34b3d7fbd0f2e2f5 (patch)
tree1eb36e31b2e3ca5a747d86689b9fa92dec227272 /include/acpi
parent60d509fa6a9c4653a86ad830e4c4b30360b23f0e (diff)
parentfd4655c259fa91b3b207345eb7b4d9faa1b6bc8d (diff)
downloadlinux-929c6dd4195f6b4daf9887da34b3d7fbd0f2e2f5.tar.gz
linux-929c6dd4195f6b4daf9887da34b3d7fbd0f2e2f5.tar.bz2
linux-929c6dd4195f6b4daf9887da34b3d7fbd0f2e2f5.zip
Merge branch 'acpi-hotplug'
* acpi-hotplug: ACPI / memhotplug: Remove info->failed bit ACPI / memhotplug: set info->enabled for memory present at boot time ACPI: Verify device status after eject acpi: remove reference to ACPI_HOTPLUG_IO ACPI: Update _OST handling for notify ACPI: Update PNPID match handling for notify ACPI: Update PNPID set/free interfaces ACPI: Remove acpi_device dependency in acpi_device_set_id() ACPI / hotplug: Make acpi_hotplug_profile_ktype static ACPI / scan: Make memory hotplug driver use struct acpi_scan_handler ACPI / container: Use hotplug profile user space interface ACPI / hotplug: Introduce user space interface for hotplug profiles ACPI / scan: Introduce acpi_scan_handler_matching() ACPI / container: Use common hotplug code ACPI / scan: Introduce common code for ACPI-based device hotplug ACPI / scan: Introduce acpi_scan_match_handler()
Diffstat (limited to 'include/acpi')
-rw-r--r--include/acpi/acpi_bus.h33
1 files changed, 29 insertions, 4 deletions
diff --git a/include/acpi/acpi_bus.h b/include/acpi/acpi_bus.h
index 22ba56e834e2..98db31d9f9b4 100644
--- a/include/acpi/acpi_bus.h
+++ b/include/acpi/acpi_bus.h
@@ -88,11 +88,30 @@ struct acpi_device;
* -----------------
*/
+enum acpi_hotplug_mode {
+ AHM_GENERIC = 0,
+ AHM_CONTAINER,
+ AHM_COUNT
+};
+
+struct acpi_hotplug_profile {
+ struct kobject kobj;
+ bool enabled:1;
+ enum acpi_hotplug_mode mode;
+};
+
+static inline struct acpi_hotplug_profile *to_acpi_hotplug_profile(
+ struct kobject *kobj)
+{
+ return container_of(kobj, struct acpi_hotplug_profile, kobj);
+}
+
struct acpi_scan_handler {
const struct acpi_device_id *ids;
struct list_head list_node;
int (*attach)(struct acpi_device *dev, const struct acpi_device_id *id);
void (*detach)(struct acpi_device *dev);
+ struct acpi_hotplug_profile hotplug;
};
/*
@@ -142,7 +161,6 @@ struct acpi_device_status {
struct acpi_device_flags {
u32 dynamic_status:1;
- u32 bus_address:1;
u32 removable:1;
u32 ejectable:1;
u32 suprise_removal_ok:1;
@@ -150,7 +168,7 @@ struct acpi_device_flags {
u32 performance_manageable:1;
u32 eject_pending:1;
u32 match_driver:1;
- u32 reserved:23;
+ u32 reserved:24;
};
/* File System */
@@ -173,10 +191,17 @@ struct acpi_hardware_id {
char *id;
};
+struct acpi_pnp_type {
+ u32 hardware_id:1;
+ u32 bus_address:1;
+ u32 reserved:30;
+};
+
struct acpi_device_pnp {
- acpi_bus_id bus_id; /* Object name */
+ acpi_bus_id bus_id; /* Object name */
+ struct acpi_pnp_type type; /* ID type */
acpi_bus_address bus_address; /* _ADR */
- char *unique_id; /* _UID */
+ char *unique_id; /* _UID */
struct list_head ids; /* _HID and _CIDs */
acpi_device_name device_name; /* Driver-determined */
acpi_device_class device_class; /* " */