diff options
-rw-r--r-- | drivers/acpi/acpi_processor.c | 2 | ||||
-rw-r--r-- | drivers/acpi/acpica/acglobal.h | 2 | ||||
-rw-r--r-- | drivers/acpi/bus.c | 9 | ||||
-rw-r--r-- | drivers/acpi/device_pm.c | 24 | ||||
-rw-r--r-- | drivers/acpi/processor_core.c | 26 | ||||
-rw-r--r-- | drivers/acpi/scan.c | 1 | ||||
-rw-r--r-- | drivers/acpi/sysfs.c | 2 | ||||
-rw-r--r-- | include/acpi/acpixf.h | 2 |
8 files changed, 33 insertions, 35 deletions
diff --git a/drivers/acpi/acpi_processor.c b/drivers/acpi/acpi_processor.c index c9311be29a64..c29c2c3ec0ad 100644 --- a/drivers/acpi/acpi_processor.c +++ b/drivers/acpi/acpi_processor.c | |||
@@ -261,7 +261,7 @@ static int acpi_processor_get_info(struct acpi_device *device) | |||
261 | 261 | ||
262 | apic_id = acpi_get_apicid(pr->handle, device_declaration, pr->acpi_id); | 262 | apic_id = acpi_get_apicid(pr->handle, device_declaration, pr->acpi_id); |
263 | if (apic_id < 0) { | 263 | if (apic_id < 0) { |
264 | acpi_handle_err(pr->handle, "failed to get CPU APIC ID.\n"); | 264 | acpi_handle_debug(pr->handle, "failed to get CPU APIC ID.\n"); |
265 | return -ENODEV; | 265 | return -ENODEV; |
266 | } | 266 | } |
267 | pr->apic_id = apic_id; | 267 | pr->apic_id = apic_id; |
diff --git a/drivers/acpi/acpica/acglobal.h b/drivers/acpi/acpica/acglobal.h index 24db8e153bf0..4ed1aa384df2 100644 --- a/drivers/acpi/acpica/acglobal.h +++ b/drivers/acpi/acpica/acglobal.h | |||
@@ -108,7 +108,7 @@ u8 ACPI_INIT_GLOBAL(acpi_gbl_use_default_register_widths, TRUE); | |||
108 | /* | 108 | /* |
109 | * Optionally enable output from the AML Debug Object. | 109 | * Optionally enable output from the AML Debug Object. |
110 | */ | 110 | */ |
111 | bool ACPI_INIT_GLOBAL(acpi_gbl_enable_aml_debug_object, FALSE); | 111 | u8 ACPI_INIT_GLOBAL(acpi_gbl_enable_aml_debug_object, FALSE); |
112 | 112 | ||
113 | /* | 113 | /* |
114 | * Optionally copy the entire DSDT to local memory (instead of simply | 114 | * Optionally copy the entire DSDT to local memory (instead of simply |
diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c index 384da5ab5955..fcb59c21c68d 100644 --- a/drivers/acpi/bus.c +++ b/drivers/acpi/bus.c | |||
@@ -33,6 +33,7 @@ | |||
33 | #include <linux/proc_fs.h> | 33 | #include <linux/proc_fs.h> |
34 | #include <linux/acpi.h> | 34 | #include <linux/acpi.h> |
35 | #include <linux/slab.h> | 35 | #include <linux/slab.h> |
36 | #include <linux/regulator/machine.h> | ||
36 | #ifdef CONFIG_X86 | 37 | #ifdef CONFIG_X86 |
37 | #include <asm/mpspec.h> | 38 | #include <asm/mpspec.h> |
38 | #endif | 39 | #endif |
@@ -509,6 +510,14 @@ void __init acpi_early_init(void) | |||
509 | goto error0; | 510 | goto error0; |
510 | } | 511 | } |
511 | 512 | ||
513 | /* | ||
514 | * If the system is using ACPI then we can be reasonably | ||
515 | * confident that any regulators are managed by the firmware | ||
516 | * so tell the regulator core it has everything it needs to | ||
517 | * know. | ||
518 | */ | ||
519 | regulator_has_full_constraints(); | ||
520 | |||
512 | return; | 521 | return; |
513 | 522 | ||
514 | error0: | 523 | error0: |
diff --git a/drivers/acpi/device_pm.c b/drivers/acpi/device_pm.c index d49f1e464703..c14a00d3dca6 100644 --- a/drivers/acpi/device_pm.c +++ b/drivers/acpi/device_pm.c | |||
@@ -727,18 +727,6 @@ int acpi_pm_device_sleep_wake(struct device *dev, bool enable) | |||
727 | #endif /* CONFIG_PM_SLEEP */ | 727 | #endif /* CONFIG_PM_SLEEP */ |
728 | 728 | ||
729 | /** | 729 | /** |
730 | * acpi_dev_pm_get_node - Get ACPI device node for the given physical device. | ||
731 | * @dev: Device to get the ACPI node for. | ||
732 | */ | ||
733 | struct acpi_device *acpi_dev_pm_get_node(struct device *dev) | ||
734 | { | ||
735 | acpi_handle handle = ACPI_HANDLE(dev); | ||
736 | struct acpi_device *adev; | ||
737 | |||
738 | return handle && !acpi_bus_get_device(handle, &adev) ? adev : NULL; | ||
739 | } | ||
740 | |||
741 | /** | ||
742 | * acpi_dev_pm_low_power - Put ACPI device into a low-power state. | 730 | * acpi_dev_pm_low_power - Put ACPI device into a low-power state. |
743 | * @dev: Device to put into a low-power state. | 731 | * @dev: Device to put into a low-power state. |
744 | * @adev: ACPI device node corresponding to @dev. | 732 | * @adev: ACPI device node corresponding to @dev. |
@@ -778,7 +766,7 @@ static int acpi_dev_pm_full_power(struct acpi_device *adev) | |||
778 | */ | 766 | */ |
779 | int acpi_dev_runtime_suspend(struct device *dev) | 767 | int acpi_dev_runtime_suspend(struct device *dev) |
780 | { | 768 | { |
781 | struct acpi_device *adev = acpi_dev_pm_get_node(dev); | 769 | struct acpi_device *adev = ACPI_COMPANION(dev); |
782 | bool remote_wakeup; | 770 | bool remote_wakeup; |
783 | int error; | 771 | int error; |
784 | 772 | ||
@@ -809,7 +797,7 @@ EXPORT_SYMBOL_GPL(acpi_dev_runtime_suspend); | |||
809 | */ | 797 | */ |
810 | int acpi_dev_runtime_resume(struct device *dev) | 798 | int acpi_dev_runtime_resume(struct device *dev) |
811 | { | 799 | { |
812 | struct acpi_device *adev = acpi_dev_pm_get_node(dev); | 800 | struct acpi_device *adev = ACPI_COMPANION(dev); |
813 | int error; | 801 | int error; |
814 | 802 | ||
815 | if (!adev) | 803 | if (!adev) |
@@ -862,7 +850,7 @@ EXPORT_SYMBOL_GPL(acpi_subsys_runtime_resume); | |||
862 | */ | 850 | */ |
863 | int acpi_dev_suspend_late(struct device *dev) | 851 | int acpi_dev_suspend_late(struct device *dev) |
864 | { | 852 | { |
865 | struct acpi_device *adev = acpi_dev_pm_get_node(dev); | 853 | struct acpi_device *adev = ACPI_COMPANION(dev); |
866 | u32 target_state; | 854 | u32 target_state; |
867 | bool wakeup; | 855 | bool wakeup; |
868 | int error; | 856 | int error; |
@@ -894,7 +882,7 @@ EXPORT_SYMBOL_GPL(acpi_dev_suspend_late); | |||
894 | */ | 882 | */ |
895 | int acpi_dev_resume_early(struct device *dev) | 883 | int acpi_dev_resume_early(struct device *dev) |
896 | { | 884 | { |
897 | struct acpi_device *adev = acpi_dev_pm_get_node(dev); | 885 | struct acpi_device *adev = ACPI_COMPANION(dev); |
898 | int error; | 886 | int error; |
899 | 887 | ||
900 | if (!adev) | 888 | if (!adev) |
@@ -985,7 +973,7 @@ static struct dev_pm_domain acpi_general_pm_domain = { | |||
985 | */ | 973 | */ |
986 | int acpi_dev_pm_attach(struct device *dev, bool power_on) | 974 | int acpi_dev_pm_attach(struct device *dev, bool power_on) |
987 | { | 975 | { |
988 | struct acpi_device *adev = acpi_dev_pm_get_node(dev); | 976 | struct acpi_device *adev = ACPI_COMPANION(dev); |
989 | 977 | ||
990 | if (!adev) | 978 | if (!adev) |
991 | return -ENODEV; | 979 | return -ENODEV; |
@@ -1017,7 +1005,7 @@ EXPORT_SYMBOL_GPL(acpi_dev_pm_attach); | |||
1017 | */ | 1005 | */ |
1018 | void acpi_dev_pm_detach(struct device *dev, bool power_off) | 1006 | void acpi_dev_pm_detach(struct device *dev, bool power_off) |
1019 | { | 1007 | { |
1020 | struct acpi_device *adev = acpi_dev_pm_get_node(dev); | 1008 | struct acpi_device *adev = ACPI_COMPANION(dev); |
1021 | 1009 | ||
1022 | if (adev && dev->pm_domain == &acpi_general_pm_domain) { | 1010 | if (adev && dev->pm_domain == &acpi_general_pm_domain) { |
1023 | dev->pm_domain = NULL; | 1011 | dev->pm_domain = NULL; |
diff --git a/drivers/acpi/processor_core.c b/drivers/acpi/processor_core.c index 34e7b3c6a08d..a4eea9a508d3 100644 --- a/drivers/acpi/processor_core.c +++ b/drivers/acpi/processor_core.c | |||
@@ -44,13 +44,13 @@ static int map_lapic_id(struct acpi_subtable_header *entry, | |||
44 | (struct acpi_madt_local_apic *)entry; | 44 | (struct acpi_madt_local_apic *)entry; |
45 | 45 | ||
46 | if (!(lapic->lapic_flags & ACPI_MADT_ENABLED)) | 46 | if (!(lapic->lapic_flags & ACPI_MADT_ENABLED)) |
47 | return 0; | 47 | return -ENODEV; |
48 | 48 | ||
49 | if (lapic->processor_id != acpi_id) | 49 | if (lapic->processor_id != acpi_id) |
50 | return 0; | 50 | return -EINVAL; |
51 | 51 | ||
52 | *apic_id = lapic->id; | 52 | *apic_id = lapic->id; |
53 | return 1; | 53 | return 0; |
54 | } | 54 | } |
55 | 55 | ||
56 | static int map_x2apic_id(struct acpi_subtable_header *entry, | 56 | static int map_x2apic_id(struct acpi_subtable_header *entry, |
@@ -60,14 +60,14 @@ static int map_x2apic_id(struct acpi_subtable_header *entry, | |||
60 | (struct acpi_madt_local_x2apic *)entry; | 60 | (struct acpi_madt_local_x2apic *)entry; |
61 | 61 | ||
62 | if (!(apic->lapic_flags & ACPI_MADT_ENABLED)) | 62 | if (!(apic->lapic_flags & ACPI_MADT_ENABLED)) |
63 | return 0; | 63 | return -ENODEV; |
64 | 64 | ||
65 | if (device_declaration && (apic->uid == acpi_id)) { | 65 | if (device_declaration && (apic->uid == acpi_id)) { |
66 | *apic_id = apic->local_apic_id; | 66 | *apic_id = apic->local_apic_id; |
67 | return 1; | 67 | return 0; |
68 | } | 68 | } |
69 | 69 | ||
70 | return 0; | 70 | return -EINVAL; |
71 | } | 71 | } |
72 | 72 | ||
73 | static int map_lsapic_id(struct acpi_subtable_header *entry, | 73 | static int map_lsapic_id(struct acpi_subtable_header *entry, |
@@ -77,16 +77,16 @@ static int map_lsapic_id(struct acpi_subtable_header *entry, | |||
77 | (struct acpi_madt_local_sapic *)entry; | 77 | (struct acpi_madt_local_sapic *)entry; |
78 | 78 | ||
79 | if (!(lsapic->lapic_flags & ACPI_MADT_ENABLED)) | 79 | if (!(lsapic->lapic_flags & ACPI_MADT_ENABLED)) |
80 | return 0; | 80 | return -ENODEV; |
81 | 81 | ||
82 | if (device_declaration) { | 82 | if (device_declaration) { |
83 | if ((entry->length < 16) || (lsapic->uid != acpi_id)) | 83 | if ((entry->length < 16) || (lsapic->uid != acpi_id)) |
84 | return 0; | 84 | return -EINVAL; |
85 | } else if (lsapic->processor_id != acpi_id) | 85 | } else if (lsapic->processor_id != acpi_id) |
86 | return 0; | 86 | return -EINVAL; |
87 | 87 | ||
88 | *apic_id = (lsapic->id << 8) | lsapic->eid; | 88 | *apic_id = (lsapic->id << 8) | lsapic->eid; |
89 | return 1; | 89 | return 0; |
90 | } | 90 | } |
91 | 91 | ||
92 | static int map_madt_entry(int type, u32 acpi_id) | 92 | static int map_madt_entry(int type, u32 acpi_id) |
@@ -116,13 +116,13 @@ static int map_madt_entry(int type, u32 acpi_id) | |||
116 | struct acpi_subtable_header *header = | 116 | struct acpi_subtable_header *header = |
117 | (struct acpi_subtable_header *)entry; | 117 | (struct acpi_subtable_header *)entry; |
118 | if (header->type == ACPI_MADT_TYPE_LOCAL_APIC) { | 118 | if (header->type == ACPI_MADT_TYPE_LOCAL_APIC) { |
119 | if (map_lapic_id(header, acpi_id, &apic_id)) | 119 | if (!map_lapic_id(header, acpi_id, &apic_id)) |
120 | break; | 120 | break; |
121 | } else if (header->type == ACPI_MADT_TYPE_LOCAL_X2APIC) { | 121 | } else if (header->type == ACPI_MADT_TYPE_LOCAL_X2APIC) { |
122 | if (map_x2apic_id(header, type, acpi_id, &apic_id)) | 122 | if (!map_x2apic_id(header, type, acpi_id, &apic_id)) |
123 | break; | 123 | break; |
124 | } else if (header->type == ACPI_MADT_TYPE_LOCAL_SAPIC) { | 124 | } else if (header->type == ACPI_MADT_TYPE_LOCAL_SAPIC) { |
125 | if (map_lsapic_id(header, type, acpi_id, &apic_id)) | 125 | if (!map_lsapic_id(header, type, acpi_id, &apic_id)) |
126 | break; | 126 | break; |
127 | } | 127 | } |
128 | entry += header->length; | 128 | entry += header->length; |
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c index e00365ccb897..7384158c7f87 100644 --- a/drivers/acpi/scan.c +++ b/drivers/acpi/scan.c | |||
@@ -2105,6 +2105,7 @@ void acpi_bus_trim(struct acpi_device *adev) | |||
2105 | list_for_each_entry_reverse(child, &adev->children, node) | 2105 | list_for_each_entry_reverse(child, &adev->children, node) |
2106 | acpi_bus_trim(child); | 2106 | acpi_bus_trim(child); |
2107 | 2107 | ||
2108 | adev->flags.match_driver = false; | ||
2108 | if (handler) { | 2109 | if (handler) { |
2109 | if (handler->detach) | 2110 | if (handler->detach) |
2110 | handler->detach(adev); | 2111 | handler->detach(adev); |
diff --git a/drivers/acpi/sysfs.c b/drivers/acpi/sysfs.c index 443dc9366052..91a32cefb11f 100644 --- a/drivers/acpi/sysfs.c +++ b/drivers/acpi/sysfs.c | |||
@@ -226,7 +226,7 @@ module_param_call(trace_state, param_set_trace_state, param_get_trace_state, | |||
226 | /* /sys/modules/acpi/parameters/aml_debug_output */ | 226 | /* /sys/modules/acpi/parameters/aml_debug_output */ |
227 | 227 | ||
228 | module_param_named(aml_debug_output, acpi_gbl_enable_aml_debug_object, | 228 | module_param_named(aml_debug_output, acpi_gbl_enable_aml_debug_object, |
229 | bool, 0644); | 229 | byte, 0644); |
230 | MODULE_PARM_DESC(aml_debug_output, | 230 | MODULE_PARM_DESC(aml_debug_output, |
231 | "To enable/disable the ACPI Debug Object output."); | 231 | "To enable/disable the ACPI Debug Object output."); |
232 | 232 | ||
diff --git a/include/acpi/acpixf.h b/include/acpi/acpixf.h index d2f16f14b419..fea6773f87fc 100644 --- a/include/acpi/acpixf.h +++ b/include/acpi/acpixf.h | |||
@@ -77,7 +77,7 @@ extern u8 acpi_gbl_create_osi_method; | |||
77 | extern u8 acpi_gbl_disable_auto_repair; | 77 | extern u8 acpi_gbl_disable_auto_repair; |
78 | extern u8 acpi_gbl_disable_ssdt_table_load; | 78 | extern u8 acpi_gbl_disable_ssdt_table_load; |
79 | extern u8 acpi_gbl_do_not_use_xsdt; | 79 | extern u8 acpi_gbl_do_not_use_xsdt; |
80 | extern bool acpi_gbl_enable_aml_debug_object; | 80 | extern u8 acpi_gbl_enable_aml_debug_object; |
81 | extern u8 acpi_gbl_enable_interpreter_slack; | 81 | extern u8 acpi_gbl_enable_interpreter_slack; |
82 | extern u32 acpi_gbl_trace_flags; | 82 | extern u32 acpi_gbl_trace_flags; |
83 | extern acpi_name acpi_gbl_trace_method_name; | 83 | extern acpi_name acpi_gbl_trace_method_name; |