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-- | drivers/cpufreq/acpi-cpufreq.c | 7 | ||||
| -rw-r--r-- | drivers/devfreq/Kconfig | 2 | ||||
| -rw-r--r-- | include/acpi/acpixf.h | 2 |
10 files changed, 38 insertions, 39 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/drivers/cpufreq/acpi-cpufreq.c b/drivers/cpufreq/acpi-cpufreq.c index 79e5608e71b5..18448a7e9f86 100644 --- a/drivers/cpufreq/acpi-cpufreq.c +++ b/drivers/cpufreq/acpi-cpufreq.c | |||
| @@ -919,7 +919,7 @@ static void __init acpi_cpufreq_boost_init(void) | |||
| 919 | } | 919 | } |
| 920 | } | 920 | } |
| 921 | 921 | ||
| 922 | static void __exit acpi_cpufreq_boost_exit(void) | 922 | static void acpi_cpufreq_boost_exit(void) |
| 923 | { | 923 | { |
| 924 | if (msrs) { | 924 | if (msrs) { |
| 925 | unregister_cpu_notifier(&boost_nb); | 925 | unregister_cpu_notifier(&boost_nb); |
| @@ -969,9 +969,10 @@ static int __init acpi_cpufreq_init(void) | |||
| 969 | acpi_cpufreq_boost_init(); | 969 | acpi_cpufreq_boost_init(); |
| 970 | 970 | ||
| 971 | ret = cpufreq_register_driver(&acpi_cpufreq_driver); | 971 | ret = cpufreq_register_driver(&acpi_cpufreq_driver); |
| 972 | if (ret) | 972 | if (ret) { |
| 973 | free_acpi_perf_data(); | 973 | free_acpi_perf_data(); |
| 974 | 974 | acpi_cpufreq_boost_exit(); | |
| 975 | } | ||
| 975 | return ret; | 976 | return ret; |
| 976 | } | 977 | } |
| 977 | 978 | ||
diff --git a/drivers/devfreq/Kconfig b/drivers/devfreq/Kconfig index 31f3adba4cf3..7d2f43550700 100644 --- a/drivers/devfreq/Kconfig +++ b/drivers/devfreq/Kconfig | |||
| @@ -67,7 +67,7 @@ comment "DEVFREQ Drivers" | |||
| 67 | 67 | ||
| 68 | config ARM_EXYNOS4_BUS_DEVFREQ | 68 | config ARM_EXYNOS4_BUS_DEVFREQ |
| 69 | bool "ARM Exynos4210/4212/4412 Memory Bus DEVFREQ Driver" | 69 | bool "ARM Exynos4210/4212/4412 Memory Bus DEVFREQ Driver" |
| 70 | depends on CPU_EXYNOS4210 || SOC_EXYNOS4212 || SOC_EXYNOS4412 | 70 | depends on (CPU_EXYNOS4210 || SOC_EXYNOS4212 || SOC_EXYNOS4412) && !ARCH_MULTIPLATFORM |
| 71 | select ARCH_HAS_OPP | 71 | select ARCH_HAS_OPP |
| 72 | select DEVFREQ_GOV_SIMPLE_ONDEMAND | 72 | select DEVFREQ_GOV_SIMPLE_ONDEMAND |
| 73 | help | 73 | help |
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; |
