]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - include/acpi/acpi_bus.h
Merge branches 'acpica', 'acpidump', 'intel-idle', 'misc', 'module_acpi_driver-simpli...
[karo-tx-linux.git] / include / acpi / acpi_bus.h
index 0c1fcd4a2b4235ee360a975a8b1a55eba033222f..0daa0fbd865437ab12a756535e8c2432c363bf35 100644 (file)
@@ -179,6 +179,7 @@ struct acpi_device_pnp {
        struct list_head ids;           /* _HID and _CIDs */
        acpi_device_name device_name;   /* Driver-determined */
        acpi_device_class device_class; /*        "          */
+       union acpi_object *str_obj;     /* unicode string for _STR method */
 };
 
 #define acpi_device_bid(d)     ((d)->pnp.bus_id)
@@ -253,8 +254,16 @@ struct acpi_device_wakeup {
        int prepare_count;
 };
 
-/* Device */
+struct acpi_device_physical_node {
+       u8 node_id;
+       struct list_head node;
+       struct device *dev;
+};
 
+/* set maximum of physical nodes to 32 for expansibility */
+#define ACPI_MAX_PHYSICAL_NODE 32
+
+/* Device */
 struct acpi_device {
        int device_type;
        acpi_handle handle;             /* no handle for fixed hardware */
@@ -275,6 +284,10 @@ struct acpi_device {
        struct device dev;
        struct acpi_bus_ops bus_ops;    /* workaround for different code path for hotplug */
        enum acpi_bus_removal_type removal_type;        /* indicate for different removal type */
+       u8 physical_node_count;
+       struct list_head physical_node_list;
+       struct mutex physical_node_lock;
+       DECLARE_BITMAP(physical_node_id_bitmap, ACPI_MAX_PHYSICAL_NODE);
 };
 
 static inline void *acpi_driver_data(struct acpi_device *d)
@@ -352,6 +365,19 @@ int acpi_match_device_ids(struct acpi_device *device,
 int acpi_create_dir(struct acpi_device *);
 void acpi_remove_dir(struct acpi_device *);
 
+
+/**
+ * module_acpi_driver(acpi_driver) - Helper macro for registering an ACPI driver
+ * @__acpi_driver: acpi_driver struct
+ *
+ * Helper macro for ACPI drivers which do not do anything special in module
+ * init/exit. This eliminates a lot of boilerplate. Each module may only
+ * use this macro once, and calling it replaces module_init() and module_exit()
+ */
+#define module_acpi_driver(__acpi_driver) \
+       module_driver(__acpi_driver, acpi_bus_register_driver, \
+                     acpi_bus_unregister_driver)
+
 /*
  * Bind physical devices with ACPI devices
  */
@@ -365,7 +391,6 @@ struct acpi_bus_type {
 };
 int register_acpi_bus_type(struct acpi_bus_type *);
 int unregister_acpi_bus_type(struct acpi_bus_type *);
-struct device *acpi_get_physical_device(acpi_handle);
 
 struct acpi_pci_root {
        struct list_head node;