]> 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 3eb9de3188240a7b4da6cdfbeafd79ad999bff8f..0daa0fbd865437ab12a756535e8c2432c363bf35 100644 (file)
@@ -54,37 +54,8 @@ acpi_status
 acpi_evaluate_hotplug_ost(acpi_handle handle, u32 source_event,
                        u32 status_code, struct acpi_buffer *status_buf);
 
-struct acpi_pld {
-       unsigned int revision:7; /* 0 */
-       unsigned int ignore_colour:1; /* 7 */
-       unsigned int colour:24; /* 8 */
-       unsigned int width:16; /* 32 */
-       unsigned int height:16; /* 48 */
-       unsigned int user_visible:1; /* 64 */
-       unsigned int dock:1; /* 65 */
-       unsigned int lid:1; /* 66 */
-       unsigned int panel:3; /* 67 */
-       unsigned int vertical_pos:2; /* 70 */
-       unsigned int horizontal_pos:2; /* 72 */
-       unsigned int shape:4; /* 74 */
-       unsigned int group_orientation:1; /* 78 */
-       unsigned int group_token:8; /* 79 */
-       unsigned int group_position:8; /* 87 */
-       unsigned int bay:1; /* 95 */
-       unsigned int ejectable:1; /* 96 */
-       unsigned int ospm_eject_required:1; /* 97 */
-       unsigned int cabinet_number:8; /* 98 */
-       unsigned int card_cage_number:8; /* 106 */
-       unsigned int reference:1; /* 114 */
-       unsigned int rotation:4; /* 115 */
-       unsigned int order:5; /* 119 */
-       unsigned int reserved:4; /* 124 */
-       unsigned int vertical_offset:16; /* 128 */
-       unsigned int horizontal_offset:16; /* 144 */
-} __attribute__((__packed__));
-
 acpi_status
-acpi_get_physical_device_location(acpi_handle handle, struct acpi_pld *pld);
+acpi_get_physical_device_location(acpi_handle handle, struct acpi_pld_info **pld);
 #ifdef CONFIG_ACPI
 
 #include <linux/proc_fs.h>
@@ -283,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 */
@@ -305,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)
@@ -382,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
  */
@@ -395,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;