Pull now into release branch

Len Brown fcf75356 f285e3d3

+126 -113
+11 -14
Documentation/thinkpad-acpi.txt
··· 138 -------- 139 140 procfs: /proc/acpi/ibm/hotkey 141 - sysfs device attribute: hotkey/* 142 143 Without this driver, only the Fn-F4 key (sleep button) generates an 144 ACPI event. With the driver loaded, the hotkey feature enabled and the ··· 196 197 sysfs notes: 198 199 - The hot keys attributes are in a hotkey/ subdirectory off the 200 - thinkpad device. 201 - 202 - bios_enabled: 203 Returns the status of the hot keys feature when 204 thinkpad-acpi was loaded. Upon module unload, the hot 205 key feature status will be restored to this value. ··· 204 0: hot keys were disabled 205 1: hot keys were enabled 206 207 - bios_mask: 208 Returns the hot keys mask when thinkpad-acpi was loaded. 209 Upon module unload, the hot keys mask will be restored 210 to this value. 211 212 - enable: 213 Enables/disables the hot keys feature, and reports 214 current status of the hot keys feature. 215 216 0: disables the hot keys feature / feature disabled 217 1: enables the hot keys feature / feature enabled 218 219 - mask: 220 bit mask to enable ACPI event generation for each hot 221 key (see above). Returns the current status of the hot 222 keys mask, and allows one to modify it. ··· 226 --------- 227 228 procfs: /proc/acpi/ibm/bluetooth 229 - sysfs device attribute: bluetooth/enable 230 231 This feature shows the presence and current state of a ThinkPad 232 Bluetooth device in the internal ThinkPad CDC slot. ··· 241 Sysfs notes: 242 243 If the Bluetooth CDC card is installed, it can be enabled / 244 - disabled through the "bluetooth/enable" thinkpad-acpi device 245 attribute, and its current status can also be queried. 246 247 enable: ··· 249 1: enables Bluetooth / Bluetooth is enabled. 250 251 Note: this interface will be probably be superseeded by the 252 - generic rfkill class. 253 254 Video output control -- /proc/acpi/ibm/video 255 -------------------------------------------- ··· 895 ----------------- 896 897 procfs: /proc/acpi/ibm/wan 898 - sysfs device attribute: wwan/enable 899 900 This feature is marked EXPERIMENTAL because the implementation 901 directly accesses hardware registers and may not work as expected. USE ··· 918 Sysfs notes: 919 920 If the W-WAN card is installed, it can be enabled / 921 - disabled through the "wwan/enable" thinkpad-acpi device 922 attribute, and its current status can also be queried. 923 924 enable: ··· 926 1: enables WWAN card / WWAN card is enabled. 927 928 Note: this interface will be probably be superseeded by the 929 - generic rfkill class. 930 931 Multiple Commands, Module Parameters 932 ------------------------------------
··· 138 -------- 139 140 procfs: /proc/acpi/ibm/hotkey 141 + sysfs device attribute: hotkey_* 142 143 Without this driver, only the Fn-F4 key (sleep button) generates an 144 ACPI event. With the driver loaded, the hotkey feature enabled and the ··· 196 197 sysfs notes: 198 199 + hotkey_bios_enabled: 200 Returns the status of the hot keys feature when 201 thinkpad-acpi was loaded. Upon module unload, the hot 202 key feature status will be restored to this value. ··· 207 0: hot keys were disabled 208 1: hot keys were enabled 209 210 + hotkey_bios_mask: 211 Returns the hot keys mask when thinkpad-acpi was loaded. 212 Upon module unload, the hot keys mask will be restored 213 to this value. 214 215 + hotkey_enable: 216 Enables/disables the hot keys feature, and reports 217 current status of the hot keys feature. 218 219 0: disables the hot keys feature / feature disabled 220 1: enables the hot keys feature / feature enabled 221 222 + hotkey_mask: 223 bit mask to enable ACPI event generation for each hot 224 key (see above). Returns the current status of the hot 225 keys mask, and allows one to modify it. ··· 229 --------- 230 231 procfs: /proc/acpi/ibm/bluetooth 232 + sysfs device attribute: bluetooth_enable 233 234 This feature shows the presence and current state of a ThinkPad 235 Bluetooth device in the internal ThinkPad CDC slot. ··· 244 Sysfs notes: 245 246 If the Bluetooth CDC card is installed, it can be enabled / 247 + disabled through the "bluetooth_enable" thinkpad-acpi device 248 attribute, and its current status can also be queried. 249 250 enable: ··· 252 1: enables Bluetooth / Bluetooth is enabled. 253 254 Note: this interface will be probably be superseeded by the 255 + generic rfkill class, so it is NOT to be considered stable yet. 256 257 Video output control -- /proc/acpi/ibm/video 258 -------------------------------------------- ··· 898 ----------------- 899 900 procfs: /proc/acpi/ibm/wan 901 + sysfs device attribute: wwan_enable 902 903 This feature is marked EXPERIMENTAL because the implementation 904 directly accesses hardware registers and may not work as expected. USE ··· 921 Sysfs notes: 922 923 If the W-WAN card is installed, it can be enabled / 924 + disabled through the "wwan_enable" thinkpad-acpi device 925 attribute, and its current status can also be queried. 926 927 enable: ··· 929 1: enables WWAN card / WWAN card is enabled. 930 931 Note: this interface will be probably be superseeded by the 932 + generic rfkill class, so it is NOT to be considered stable yet. 933 934 Multiple Commands, Module Parameters 935 ------------------------------------
+1 -1
drivers/acpi/numa.c
··· 59 return node_to_pxm_map[node]; 60 } 61 62 - int __cpuinit acpi_map_pxm_to_node(int pxm) 63 { 64 int node = pxm_to_node_map[pxm]; 65
··· 59 return node_to_pxm_map[node]; 60 } 61 62 + int acpi_map_pxm_to_node(int pxm) 63 { 64 int node = pxm_to_node_map[pxm]; 65
+4 -4
drivers/acpi/tables/tbinstal.c
··· 123 } 124 } 125 126 - /* The table must be either an SSDT or a PSDT */ 127 128 if ((!ACPI_COMPARE_NAME(table_desc->pointer->signature, ACPI_SIG_PSDT)) 129 && 130 - (!ACPI_COMPARE_NAME(table_desc->pointer->signature, ACPI_SIG_SSDT))) 131 - { 132 ACPI_ERROR((AE_INFO, 133 - "Table has invalid signature [%4.4s], must be SSDT or PSDT", 134 table_desc->pointer->signature)); 135 return_ACPI_STATUS(AE_BAD_SIGNATURE); 136 }
··· 123 } 124 } 125 126 + /* The table must be either an SSDT or a PSDT or an OEMx */ 127 128 if ((!ACPI_COMPARE_NAME(table_desc->pointer->signature, ACPI_SIG_PSDT)) 129 && 130 + (!ACPI_COMPARE_NAME(table_desc->pointer->signature, ACPI_SIG_SSDT)) 131 + && (strncmp(table_desc->pointer->signature, "OEM", 3))) { 132 ACPI_ERROR((AE_INFO, 133 + "Table has invalid signature [%4.4s], must be SSDT, PSDT or OEMx", 134 table_desc->pointer->signature)); 135 return_ACPI_STATUS(AE_BAD_SIGNATURE); 136 }
+7 -6
drivers/acpi/thermal.c
··· 827 static int acpi_thermal_trip_seq_show(struct seq_file *seq, void *offset) 828 { 829 struct acpi_thermal *tz = seq->private; 830 int i = 0; 831 int j = 0; 832 ··· 850 tz->trips.passive.tc1, tz->trips.passive.tc2, 851 tz->trips.passive.tsp); 852 for (j = 0; j < tz->trips.passive.devices.count; j++) { 853 - 854 - seq_printf(seq, "0x%p ", 855 - tz->trips.passive.devices.handles[j]); 856 } 857 seq_puts(seq, "\n"); 858 } ··· 862 seq_printf(seq, "active[%d]: %ld C: devices=", 863 i, 864 KELVIN_TO_CELSIUS(tz->trips.active[i].temperature)); 865 - for (j = 0; j < tz->trips.active[i].devices.count; j++) 866 - seq_printf(seq, "0x%p ", 867 - tz->trips.active[i].devices.handles[j]); 868 seq_puts(seq, "\n"); 869 } 870
··· 827 static int acpi_thermal_trip_seq_show(struct seq_file *seq, void *offset) 828 { 829 struct acpi_thermal *tz = seq->private; 830 + struct acpi_device *device; 831 int i = 0; 832 int j = 0; 833 ··· 849 tz->trips.passive.tc1, tz->trips.passive.tc2, 850 tz->trips.passive.tsp); 851 for (j = 0; j < tz->trips.passive.devices.count; j++) { 852 + acpi_bus_get_device(tz->trips.passive.devices.handles[j], &device); 853 + seq_printf(seq, "%4.4s ", acpi_device_bid(device)); 854 } 855 seq_puts(seq, "\n"); 856 } ··· 862 seq_printf(seq, "active[%d]: %ld C: devices=", 863 i, 864 KELVIN_TO_CELSIUS(tz->trips.active[i].temperature)); 865 + for (j = 0; j < tz->trips.active[i].devices.count; j++){ 866 + acpi_bus_get_device(tz->trips.active[i].devices.handles[j], &device); 867 + seq_printf(seq, "%4.4s ", acpi_device_bid(device)); 868 + } 869 seq_puts(seq, "\n"); 870 } 871
+51 -71
drivers/acpi/utilities/utcopy.c
··· 68 union acpi_operand_object **return_obj); 69 70 static acpi_status 71 acpi_ut_copy_simple_object(union acpi_operand_object *source_desc, 72 union acpi_operand_object *dest_desc); 73 ··· 522 return_ACPI_STATUS(AE_NO_MEMORY); 523 } 524 525 - #ifdef ACPI_FUTURE_IMPLEMENTATION 526 - /* Code to convert packages that are parameters to control methods */ 527 - 528 /******************************************************************************* 529 * 530 * FUNCTION: acpi_ut_copy_epackage_to_ipackage 531 * 532 - * PARAMETERS: *internal_object - Pointer to the object we are returning 533 - * *Buffer - Where the object is returned 534 - * *space_used - Where the length of the object is returned 535 * 536 * RETURN: Status 537 * 538 - * DESCRIPTION: This function is called to place a package object in a user 539 - * buffer. A package object by definition contains other objects. 540 - * 541 - * The buffer is assumed to have sufficient space for the object. 542 - * The caller must have verified the buffer length needed using the 543 - * acpi_ut_get_object_size function before calling this function. 544 * 545 ******************************************************************************/ 546 547 static acpi_status 548 - acpi_ut_copy_epackage_to_ipackage(union acpi_operand_object *internal_object, 549 - u8 * buffer, u32 * space_used) 550 { 551 - u8 *free_space; 552 - union acpi_object *external_object; 553 - u32 length = 0; 554 - u32 this_index; 555 - u32 object_space = 0; 556 - union acpi_operand_object *this_internal_obj; 557 - union acpi_object *this_external_obj; 558 559 ACPI_FUNCTION_TRACE(ut_copy_epackage_to_ipackage); 560 561 - /* 562 - * First package at head of the buffer 563 - */ 564 - external_object = (union acpi_object *)buffer; 565 566 /* 567 - * Free space begins right after the first package 568 */ 569 - free_space = buffer + sizeof(union acpi_object); 570 571 - external_object->type = ACPI_GET_OBJECT_TYPE(internal_object); 572 - external_object->package.count = internal_object->package.count; 573 - external_object->package.elements = (union acpi_object *)free_space; 574 575 - /* 576 - * Build an array of ACPI_OBJECTS in the buffer 577 - * and move the free space past it 578 - */ 579 - free_space += 580 - external_object->package.count * sizeof(union acpi_object); 581 582 - /* Call walk_package */ 583 - 584 } 585 - 586 - #endif /* Future implementation */ 587 588 /******************************************************************************* 589 * 590 * FUNCTION: acpi_ut_copy_eobject_to_iobject 591 * 592 - * PARAMETERS: *internal_object - The external object to be converted 593 - * *buffer_ptr - Where the internal object is returned 594 * 595 - * RETURN: Status - the status of the call 596 * 597 * DESCRIPTION: Converts an external object to an internal object. 598 * ··· 603 ACPI_FUNCTION_TRACE(ut_copy_eobject_to_iobject); 604 605 if (external_object->type == ACPI_TYPE_PACKAGE) { 606 - /* 607 - * Packages as external input to control methods are not supported, 608 - */ 609 - ACPI_ERROR((AE_INFO, 610 - "Packages as parameters not implemented!")); 611 - 612 - return_ACPI_STATUS(AE_NOT_IMPLEMENTED); 613 - } 614 - 615 - else { 616 /* 617 * Build a simple object (no nested objects) 618 */ ··· 797 * Create and build the package object 798 */ 799 target_object = 800 - acpi_ut_create_internal_object(ACPI_TYPE_PACKAGE); 801 if (!target_object) { 802 return (AE_NO_MEMORY); 803 } 804 805 - target_object->package.count = source_object->package.count; 806 target_object->common.flags = source_object->common.flags; 807 808 - /* 809 - * Create the object array 810 - */ 811 - target_object->package.elements = 812 - ACPI_ALLOCATE_ZEROED(((acpi_size) source_object->package. 813 - count + 1) * sizeof(void *)); 814 - if (!target_object->package.elements) { 815 - status = AE_NO_MEMORY; 816 - goto error_exit; 817 - } 818 819 - /* 820 - * Pass the new package object back to the package walk routine 821 - */ 822 state->pkg.this_target_obj = target_object; 823 824 - /* 825 - * Store the object pointer in the parent package object 826 - */ 827 *this_target_ptr = target_object; 828 break; 829
··· 68 union acpi_operand_object **return_obj); 69 70 static acpi_status 71 + acpi_ut_copy_epackage_to_ipackage(union acpi_object *external_object, 72 + union acpi_operand_object **internal_object); 73 + 74 + static acpi_status 75 acpi_ut_copy_simple_object(union acpi_operand_object *source_desc, 76 union acpi_operand_object *dest_desc); 77 ··· 518 return_ACPI_STATUS(AE_NO_MEMORY); 519 } 520 521 /******************************************************************************* 522 * 523 * FUNCTION: acpi_ut_copy_epackage_to_ipackage 524 * 525 + * PARAMETERS: external_object - The external object to be converted 526 + * internal_object - Where the internal object is returned 527 * 528 * RETURN: Status 529 * 530 + * DESCRIPTION: Copy an external package object to an internal package. 531 + * Handles nested packages. 532 * 533 ******************************************************************************/ 534 535 static acpi_status 536 + acpi_ut_copy_epackage_to_ipackage(union acpi_object *external_object, 537 + union acpi_operand_object **internal_object) 538 { 539 + acpi_status status = AE_OK; 540 + union acpi_operand_object *package_object; 541 + union acpi_operand_object **package_elements; 542 + acpi_native_uint i; 543 544 ACPI_FUNCTION_TRACE(ut_copy_epackage_to_ipackage); 545 546 + /* Create the package object */ 547 + 548 + package_object = 549 + acpi_ut_create_package_object(external_object->package.count); 550 + if (!package_object) { 551 + return_ACPI_STATUS(AE_NO_MEMORY); 552 + } 553 + 554 + package_elements = package_object->package.elements; 555 556 /* 557 + * Recursive implementation. Probably ok, since nested external packages 558 + * as parameters should be very rare. 559 */ 560 + for (i = 0; i < external_object->package.count; i++) { 561 + status = 562 + acpi_ut_copy_eobject_to_iobject(&external_object->package. 563 + elements[i], 564 + &package_elements[i]); 565 + if (ACPI_FAILURE(status)) { 566 567 + /* Truncate package and delete it */ 568 569 + package_object->package.count = i; 570 + package_elements[i] = NULL; 571 + acpi_ut_remove_reference(package_object); 572 + return_ACPI_STATUS(status); 573 + } 574 + } 575 576 + *internal_object = package_object; 577 + return_ACPI_STATUS(status); 578 } 579 580 /******************************************************************************* 581 * 582 * FUNCTION: acpi_ut_copy_eobject_to_iobject 583 * 584 + * PARAMETERS: external_object - The external object to be converted 585 + * internal_object - Where the internal object is returned 586 * 587 + * RETURN: Status - the status of the call 588 * 589 * DESCRIPTION: Converts an external object to an internal object. 590 * ··· 603 ACPI_FUNCTION_TRACE(ut_copy_eobject_to_iobject); 604 605 if (external_object->type == ACPI_TYPE_PACKAGE) { 606 + status = 607 + acpi_ut_copy_epackage_to_ipackage(external_object, 608 + internal_object); 609 + } else { 610 /* 611 * Build a simple object (no nested objects) 612 */ ··· 803 * Create and build the package object 804 */ 805 target_object = 806 + acpi_ut_create_package_object(source_object->package.count); 807 if (!target_object) { 808 return (AE_NO_MEMORY); 809 } 810 811 target_object->common.flags = source_object->common.flags; 812 813 + /* Pass the new package object back to the package walk routine */ 814 815 state->pkg.this_target_obj = target_object; 816 817 + /* Store the object pointer in the parent package object */ 818 + 819 *this_target_ptr = target_object; 820 break; 821
+42
drivers/acpi/utilities/utobject.c
··· 146 147 /******************************************************************************* 148 * 149 * FUNCTION: acpi_ut_create_buffer_object 150 * 151 * PARAMETERS: buffer_size - Size of buffer to be created
··· 146 147 /******************************************************************************* 148 * 149 + * FUNCTION: acpi_ut_create_package_object 150 + * 151 + * PARAMETERS: Count - Number of package elements 152 + * 153 + * RETURN: Pointer to a new Package object, null on failure 154 + * 155 + * DESCRIPTION: Create a fully initialized package object 156 + * 157 + ******************************************************************************/ 158 + 159 + union acpi_operand_object *acpi_ut_create_package_object(u32 count) 160 + { 161 + union acpi_operand_object *package_desc; 162 + union acpi_operand_object **package_elements; 163 + 164 + ACPI_FUNCTION_TRACE_U32(ut_create_package_object, count); 165 + 166 + /* Create a new Package object */ 167 + 168 + package_desc = acpi_ut_create_internal_object(ACPI_TYPE_PACKAGE); 169 + if (!package_desc) { 170 + return_PTR(NULL); 171 + } 172 + 173 + /* 174 + * Create the element array. Count+1 allows the array to be null 175 + * terminated. 176 + */ 177 + package_elements = ACPI_ALLOCATE_ZEROED((acpi_size) 178 + (count + 1) * sizeof(void *)); 179 + if (!package_elements) { 180 + ACPI_FREE(package_desc); 181 + return_PTR(NULL); 182 + } 183 + 184 + package_desc->package.count = count; 185 + package_desc->package.elements = package_elements; 186 + return_PTR(package_desc); 187 + } 188 + 189 + /******************************************************************************* 190 + * 191 * FUNCTION: acpi_ut_create_buffer_object 192 * 193 * PARAMETERS: buffer_size - Size of buffer to be created
+7 -10
drivers/misc/thinkpad_acpi.c
··· 740 } 741 742 static struct device_attribute dev_attr_hotkey_enable = 743 - __ATTR(enable, S_IWUSR | S_IRUGO, 744 hotkey_enable_show, hotkey_enable_store); 745 746 /* sysfs hotkey mask --------------------------------------------------- */ ··· 775 } 776 777 static struct device_attribute dev_attr_hotkey_mask = 778 - __ATTR(mask, S_IWUSR | S_IRUGO, 779 hotkey_mask_show, hotkey_mask_store); 780 781 /* sysfs hotkey bios_enabled ------------------------------------------- */ ··· 787 } 788 789 static struct device_attribute dev_attr_hotkey_bios_enabled = 790 - __ATTR(bios_enabled, S_IRUGO, hotkey_bios_enabled_show, NULL); 791 792 /* sysfs hotkey bios_mask ---------------------------------------------- */ 793 static ssize_t hotkey_bios_mask_show(struct device *dev, ··· 798 } 799 800 static struct device_attribute dev_attr_hotkey_bios_mask = 801 - __ATTR(bios_mask, S_IRUGO, hotkey_bios_mask_show, NULL); 802 803 /* --------------------------------------------------------------------- */ 804 ··· 824 str_supported(tp_features.hotkey)); 825 826 if (tp_features.hotkey) { 827 - hotkey_dev_attributes = create_attr_set(4, 828 - TPACPI_HOTKEY_SYSFS_GROUP); 829 if (!hotkey_dev_attributes) 830 return -ENOMEM; 831 res = add_to_attr_set(hotkey_dev_attributes, ··· 1049 } 1050 1051 static struct device_attribute dev_attr_bluetooth_enable = 1052 - __ATTR(enable, S_IWUSR | S_IRUGO, 1053 bluetooth_enable_show, bluetooth_enable_store); 1054 1055 /* --------------------------------------------------------------------- */ ··· 1060 }; 1061 1062 static const struct attribute_group bluetooth_attr_group = { 1063 - .name = TPACPI_BLUETH_SYSFS_GROUP, 1064 .attrs = bluetooth_attributes, 1065 }; 1066 ··· 1213 } 1214 1215 static struct device_attribute dev_attr_wan_enable = 1216 - __ATTR(enable, S_IWUSR | S_IRUGO, 1217 wan_enable_show, wan_enable_store); 1218 1219 /* --------------------------------------------------------------------- */ ··· 1224 }; 1225 1226 static const struct attribute_group wan_attr_group = { 1227 - .name = TPACPI_WAN_SYSFS_GROUP, 1228 .attrs = wan_attributes, 1229 }; 1230
··· 740 } 741 742 static struct device_attribute dev_attr_hotkey_enable = 743 + __ATTR(hotkey_enable, S_IWUSR | S_IRUGO, 744 hotkey_enable_show, hotkey_enable_store); 745 746 /* sysfs hotkey mask --------------------------------------------------- */ ··· 775 } 776 777 static struct device_attribute dev_attr_hotkey_mask = 778 + __ATTR(hotkey_mask, S_IWUSR | S_IRUGO, 779 hotkey_mask_show, hotkey_mask_store); 780 781 /* sysfs hotkey bios_enabled ------------------------------------------- */ ··· 787 } 788 789 static struct device_attribute dev_attr_hotkey_bios_enabled = 790 + __ATTR(hotkey_bios_enabled, S_IRUGO, hotkey_bios_enabled_show, NULL); 791 792 /* sysfs hotkey bios_mask ---------------------------------------------- */ 793 static ssize_t hotkey_bios_mask_show(struct device *dev, ··· 798 } 799 800 static struct device_attribute dev_attr_hotkey_bios_mask = 801 + __ATTR(hotkey_bios_mask, S_IRUGO, hotkey_bios_mask_show, NULL); 802 803 /* --------------------------------------------------------------------- */ 804 ··· 824 str_supported(tp_features.hotkey)); 825 826 if (tp_features.hotkey) { 827 + hotkey_dev_attributes = create_attr_set(4, NULL); 828 if (!hotkey_dev_attributes) 829 return -ENOMEM; 830 res = add_to_attr_set(hotkey_dev_attributes, ··· 1050 } 1051 1052 static struct device_attribute dev_attr_bluetooth_enable = 1053 + __ATTR(bluetooth_enable, S_IWUSR | S_IRUGO, 1054 bluetooth_enable_show, bluetooth_enable_store); 1055 1056 /* --------------------------------------------------------------------- */ ··· 1061 }; 1062 1063 static const struct attribute_group bluetooth_attr_group = { 1064 .attrs = bluetooth_attributes, 1065 }; 1066 ··· 1215 } 1216 1217 static struct device_attribute dev_attr_wan_enable = 1218 + __ATTR(wwan_enable, S_IWUSR | S_IRUGO, 1219 wan_enable_show, wan_enable_store); 1220 1221 /* --------------------------------------------------------------------- */ ··· 1226 }; 1227 1228 static const struct attribute_group wan_attr_group = { 1229 .attrs = wan_attributes, 1230 }; 1231
-6
drivers/misc/thinkpad_acpi.h
··· 278 * Bluetooth subdriver 279 */ 280 281 - #define TPACPI_BLUETH_SYSFS_GROUP "bluetooth" 282 - 283 enum { 284 /* ACPI GBDC/SBDC bits */ 285 TP_ACPI_BLUETOOTH_HWPRESENT = 0x01, /* Bluetooth hw available */ ··· 414 * Hotkey subdriver 415 */ 416 417 - #define TPACPI_HOTKEY_SYSFS_GROUP "hotkey" 418 - 419 static int hotkey_orig_status; 420 static int hotkey_orig_mask; 421 ··· 548 /* 549 * Wan subdriver 550 */ 551 - 552 - #define TPACPI_WAN_SYSFS_GROUP "wwan" 553 554 enum { 555 /* ACPI GWAN/SWAN bits */
··· 278 * Bluetooth subdriver 279 */ 280 281 enum { 282 /* ACPI GBDC/SBDC bits */ 283 TP_ACPI_BLUETOOTH_HWPRESENT = 0x01, /* Bluetooth hw available */ ··· 416 * Hotkey subdriver 417 */ 418 419 static int hotkey_orig_status; 420 static int hotkey_orig_mask; 421 ··· 552 /* 553 * Wan subdriver 554 */ 555 556 enum { 557 /* ACPI GWAN/SWAN bits */
+1 -1
include/acpi/acpi_numa.h
··· 13 14 extern int pxm_to_node(int); 15 extern int node_to_pxm(int); 16 - extern int __cpuinit acpi_map_pxm_to_node(int); 17 extern void __cpuinit acpi_unmap_pxm_to_node(int); 18 19 #endif /* CONFIG_ACPI_NUMA */
··· 13 14 extern int pxm_to_node(int); 15 extern int node_to_pxm(int); 16 + extern int acpi_map_pxm_to_node(int); 17 extern void __cpuinit acpi_unmap_pxm_to_node(int); 18 19 #endif /* CONFIG_ACPI_NUMA */
+2
include/acpi/acutils.h
··· 390 391 u8 acpi_ut_valid_internal_object(void *object); 392 393 union acpi_operand_object *acpi_ut_create_buffer_object(acpi_size buffer_size); 394 395 union acpi_operand_object *acpi_ut_create_string_object(acpi_size string_size);
··· 390 391 u8 acpi_ut_valid_internal_object(void *object); 392 393 + union acpi_operand_object *acpi_ut_create_package_object(u32 count); 394 + 395 union acpi_operand_object *acpi_ut_create_buffer_object(acpi_size buffer_size); 396 397 union acpi_operand_object *acpi_ut_create_string_object(acpi_size string_size);