diff options
-rw-r--r-- | MAINTAINERS | 5 | ||||
-rw-r--r-- | arch/x86/kernel/acpi/boot.c | 2 | ||||
-rw-r--r-- | arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c | 12 | ||||
-rw-r--r-- | drivers/acpi/dock.c | 3 | ||||
-rw-r--r-- | drivers/acpi/pci_irq.c | 16 | ||||
-rw-r--r-- | drivers/acpi/processor_throttling.c | 6 | ||||
-rw-r--r-- | drivers/acpi/sleep.c | 9 | ||||
-rw-r--r-- | drivers/platform/x86/panasonic-laptop.c | 9 | ||||
-rw-r--r-- | drivers/platform/x86/tc1100-wmi.c | 7 |
9 files changed, 43 insertions, 26 deletions
diff --git a/MAINTAINERS b/MAINTAINERS index 4ee59641c16c..e40379e31921 100644 --- a/MAINTAINERS +++ b/MAINTAINERS | |||
@@ -4291,10 +4291,7 @@ W: http://sourceforge.net/projects/tlan/ | |||
4291 | S: Maintained | 4291 | S: Maintained |
4292 | 4292 | ||
4293 | TOSHIBA ACPI EXTRAS DRIVER | 4293 | TOSHIBA ACPI EXTRAS DRIVER |
4294 | P: John Belmonte | 4294 | S: Orphan |
4295 | M: toshiba_acpi@memebeam.org | ||
4296 | W: http://memebeam.org/toys/ToshibaAcpiDriver | ||
4297 | S: Maintained | ||
4298 | 4295 | ||
4299 | TOSHIBA SMM DRIVER | 4296 | TOSHIBA SMM DRIVER |
4300 | P: Jonathan Buzzard | 4297 | P: Jonathan Buzzard |
diff --git a/arch/x86/kernel/acpi/boot.c b/arch/x86/kernel/acpi/boot.c index 565e70c7ca93..4f942096291d 100644 --- a/arch/x86/kernel/acpi/boot.c +++ b/arch/x86/kernel/acpi/boot.c | |||
@@ -1548,7 +1548,7 @@ static int __init dmi_ignore_irq0_timer_override(const struct dmi_system_id *d) | |||
1548 | 1548 | ||
1549 | /* | 1549 | /* |
1550 | * If your system is blacklisted here, but you find that acpi=force | 1550 | * If your system is blacklisted here, but you find that acpi=force |
1551 | * works for you, please contact acpi-devel@sourceforge.net | 1551 | * works for you, please contact linux-acpi@vger.kernel.org |
1552 | */ | 1552 | */ |
1553 | static struct dmi_system_id __initdata acpi_dmi_table[] = { | 1553 | static struct dmi_system_id __initdata acpi_dmi_table[] = { |
1554 | /* | 1554 | /* |
diff --git a/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c b/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c index 4b1c319d30c3..89c676d6caf7 100644 --- a/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c +++ b/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.c | |||
@@ -680,6 +680,18 @@ static int acpi_cpufreq_cpu_init(struct cpufreq_policy *policy) | |||
680 | perf->states[i].transition_latency * 1000; | 680 | perf->states[i].transition_latency * 1000; |
681 | } | 681 | } |
682 | 682 | ||
683 | /* Check for high latency (>20uS) from buggy BIOSes, like on T42 */ | ||
684 | if (perf->control_register.space_id == ACPI_ADR_SPACE_FIXED_HARDWARE && | ||
685 | policy->cpuinfo.transition_latency > 20 * 1000) { | ||
686 | static int print_once; | ||
687 | policy->cpuinfo.transition_latency = 20 * 1000; | ||
688 | if (!print_once) { | ||
689 | print_once = 1; | ||
690 | printk(KERN_INFO "Capping off P-state tranision latency" | ||
691 | " at 20 uS\n"); | ||
692 | } | ||
693 | } | ||
694 | |||
683 | data->max_freq = perf->states[0].core_frequency * 1000; | 695 | data->max_freq = perf->states[0].core_frequency * 1000; |
684 | /* table init */ | 696 | /* table init */ |
685 | for (i=0; i<perf->state_count; i++) { | 697 | for (i=0; i<perf->state_count; i++) { |
diff --git a/drivers/acpi/dock.c b/drivers/acpi/dock.c index 35094f230b1e..8f62fa01a9c7 100644 --- a/drivers/acpi/dock.c +++ b/drivers/acpi/dock.c | |||
@@ -1146,9 +1146,10 @@ static int __init dock_init(void) | |||
1146 | static void __exit dock_exit(void) | 1146 | static void __exit dock_exit(void) |
1147 | { | 1147 | { |
1148 | struct dock_station *dock_station; | 1148 | struct dock_station *dock_station; |
1149 | struct dock_station *tmp; | ||
1149 | 1150 | ||
1150 | unregister_acpi_bus_notifier(&dock_acpi_notifier); | 1151 | unregister_acpi_bus_notifier(&dock_acpi_notifier); |
1151 | list_for_each_entry(dock_station, &dock_stations, sibiling) | 1152 | list_for_each_entry_safe(dock_station, tmp, &dock_stations, sibiling) |
1152 | dock_remove(dock_station); | 1153 | dock_remove(dock_station); |
1153 | } | 1154 | } |
1154 | 1155 | ||
diff --git a/drivers/acpi/pci_irq.c b/drivers/acpi/pci_irq.c index be6b9093f8df..51b9f8280f88 100644 --- a/drivers/acpi/pci_irq.c +++ b/drivers/acpi/pci_irq.c | |||
@@ -86,7 +86,7 @@ static struct acpi_prt_entry *acpi_pci_irq_find_prt_entry(struct pci_dev *dev, | |||
86 | } | 86 | } |
87 | 87 | ||
88 | /* http://bugzilla.kernel.org/show_bug.cgi?id=4773 */ | 88 | /* http://bugzilla.kernel.org/show_bug.cgi?id=4773 */ |
89 | static struct dmi_system_id medion_md9580[] = { | 89 | static const struct dmi_system_id medion_md9580[] = { |
90 | { | 90 | { |
91 | .ident = "Medion MD9580-F laptop", | 91 | .ident = "Medion MD9580-F laptop", |
92 | .matches = { | 92 | .matches = { |
@@ -98,7 +98,7 @@ static struct dmi_system_id medion_md9580[] = { | |||
98 | }; | 98 | }; |
99 | 99 | ||
100 | /* http://bugzilla.kernel.org/show_bug.cgi?id=5044 */ | 100 | /* http://bugzilla.kernel.org/show_bug.cgi?id=5044 */ |
101 | static struct dmi_system_id dell_optiplex[] = { | 101 | static const struct dmi_system_id dell_optiplex[] = { |
102 | { | 102 | { |
103 | .ident = "Dell Optiplex GX1", | 103 | .ident = "Dell Optiplex GX1", |
104 | .matches = { | 104 | .matches = { |
@@ -110,7 +110,7 @@ static struct dmi_system_id dell_optiplex[] = { | |||
110 | }; | 110 | }; |
111 | 111 | ||
112 | /* http://bugzilla.kernel.org/show_bug.cgi?id=10138 */ | 112 | /* http://bugzilla.kernel.org/show_bug.cgi?id=10138 */ |
113 | static struct dmi_system_id hp_t5710[] = { | 113 | static const struct dmi_system_id hp_t5710[] = { |
114 | { | 114 | { |
115 | .ident = "HP t5710", | 115 | .ident = "HP t5710", |
116 | .matches = { | 116 | .matches = { |
@@ -123,13 +123,13 @@ static struct dmi_system_id hp_t5710[] = { | |||
123 | }; | 123 | }; |
124 | 124 | ||
125 | struct prt_quirk { | 125 | struct prt_quirk { |
126 | struct dmi_system_id *system; | 126 | const struct dmi_system_id *system; |
127 | unsigned int segment; | 127 | unsigned int segment; |
128 | unsigned int bus; | 128 | unsigned int bus; |
129 | unsigned int device; | 129 | unsigned int device; |
130 | unsigned char pin; | 130 | unsigned char pin; |
131 | char *source; /* according to BIOS */ | 131 | const char *source; /* according to BIOS */ |
132 | char *actual_source; | 132 | const char *actual_source; |
133 | }; | 133 | }; |
134 | 134 | ||
135 | #define PCI_INTX_PIN(c) (c - 'A' + 1) | 135 | #define PCI_INTX_PIN(c) (c - 'A' + 1) |
@@ -139,7 +139,7 @@ struct prt_quirk { | |||
139 | * interrupt at the listed segment/bus/device/pin is connected to the first | 139 | * interrupt at the listed segment/bus/device/pin is connected to the first |
140 | * link device, but it is actually connected to the second. | 140 | * link device, but it is actually connected to the second. |
141 | */ | 141 | */ |
142 | static struct prt_quirk prt_quirks[] = { | 142 | static const struct prt_quirk prt_quirks[] = { |
143 | { medion_md9580, 0, 0, 9, PCI_INTX_PIN('A'), | 143 | { medion_md9580, 0, 0, 9, PCI_INTX_PIN('A'), |
144 | "\\_SB_.PCI0.ISA_.LNKA", | 144 | "\\_SB_.PCI0.ISA_.LNKA", |
145 | "\\_SB_.PCI0.ISA_.LNKB"}, | 145 | "\\_SB_.PCI0.ISA_.LNKB"}, |
@@ -155,7 +155,7 @@ static void do_prt_fixups(struct acpi_prt_entry *entry, | |||
155 | struct acpi_pci_routing_table *prt) | 155 | struct acpi_pci_routing_table *prt) |
156 | { | 156 | { |
157 | int i; | 157 | int i; |
158 | struct prt_quirk *quirk; | 158 | const struct prt_quirk *quirk; |
159 | 159 | ||
160 | for (i = 0; i < ARRAY_SIZE(prt_quirks); i++) { | 160 | for (i = 0; i < ARRAY_SIZE(prt_quirks); i++) { |
161 | quirk = &prt_quirks[i]; | 161 | quirk = &prt_quirks[i]; |
diff --git a/drivers/acpi/processor_throttling.c b/drivers/acpi/processor_throttling.c index 73aed5f5b973..d0d1f4d50434 100644 --- a/drivers/acpi/processor_throttling.c +++ b/drivers/acpi/processor_throttling.c | |||
@@ -783,11 +783,9 @@ static int acpi_get_throttling_state(struct acpi_processor *pr, | |||
783 | (struct acpi_processor_tx_tss *)&(pr->throttling. | 783 | (struct acpi_processor_tx_tss *)&(pr->throttling. |
784 | states_tss[i]); | 784 | states_tss[i]); |
785 | if (tx->control == value) | 785 | if (tx->control == value) |
786 | break; | 786 | return i; |
787 | } | 787 | } |
788 | if (i > pr->throttling.state_count) | 788 | return -1; |
789 | i = -1; | ||
790 | return i; | ||
791 | } | 789 | } |
792 | 790 | ||
793 | static int acpi_get_throttling_value(struct acpi_processor *pr, | 791 | static int acpi_get_throttling_value(struct acpi_processor *pr, |
diff --git a/drivers/acpi/sleep.c b/drivers/acpi/sleep.c index 91a284b54dbf..779e4e500df4 100644 --- a/drivers/acpi/sleep.c +++ b/drivers/acpi/sleep.c | |||
@@ -396,6 +396,15 @@ static struct dmi_system_id __initdata acpisleep_dmi_table[] = { | |||
396 | DMI_MATCH(DMI_PRODUCT_NAME, "Satellite L300"), | 396 | DMI_MATCH(DMI_PRODUCT_NAME, "Satellite L300"), |
397 | }, | 397 | }, |
398 | }, | 398 | }, |
399 | { | ||
400 | .callback = init_old_suspend_ordering, | ||
401 | .ident = "Panasonic CF51-2L", | ||
402 | .matches = { | ||
403 | DMI_MATCH(DMI_BOARD_VENDOR, | ||
404 | "Matsushita Electric Industrial Co.,Ltd."), | ||
405 | DMI_MATCH(DMI_BOARD_NAME, "CF51-2L"), | ||
406 | }, | ||
407 | }, | ||
399 | {}, | 408 | {}, |
400 | }; | 409 | }; |
401 | #endif /* CONFIG_SUSPEND */ | 410 | #endif /* CONFIG_SUSPEND */ |
diff --git a/drivers/platform/x86/panasonic-laptop.c b/drivers/platform/x86/panasonic-laptop.c index c47a44dcb702..a5ce4bc202e3 100644 --- a/drivers/platform/x86/panasonic-laptop.c +++ b/drivers/platform/x86/panasonic-laptop.c | |||
@@ -184,6 +184,7 @@ static const struct acpi_device_id pcc_device_ids[] = { | |||
184 | { "MAT0019", 0}, | 184 | { "MAT0019", 0}, |
185 | { "", 0}, | 185 | { "", 0}, |
186 | }; | 186 | }; |
187 | MODULE_DEVICE_TABLE(acpi, pcc_device_ids); | ||
187 | 188 | ||
188 | static struct acpi_driver acpi_pcc_driver = { | 189 | static struct acpi_driver acpi_pcc_driver = { |
189 | .name = ACPI_PCC_DRIVER_NAME, | 190 | .name = ACPI_PCC_DRIVER_NAME, |
@@ -366,7 +367,7 @@ static ssize_t show_numbatt(struct device *dev, struct device_attribute *attr, | |||
366 | if (!acpi_pcc_retrieve_biosdata(pcc, pcc->sinf)) | 367 | if (!acpi_pcc_retrieve_biosdata(pcc, pcc->sinf)) |
367 | return -EIO; | 368 | return -EIO; |
368 | 369 | ||
369 | return sprintf(buf, "%u\n", pcc->sinf[SINF_NUM_BATTERIES]); | 370 | return snprintf(buf, PAGE_SIZE, "%u\n", pcc->sinf[SINF_NUM_BATTERIES]); |
370 | } | 371 | } |
371 | 372 | ||
372 | static ssize_t show_lcdtype(struct device *dev, struct device_attribute *attr, | 373 | static ssize_t show_lcdtype(struct device *dev, struct device_attribute *attr, |
@@ -378,7 +379,7 @@ static ssize_t show_lcdtype(struct device *dev, struct device_attribute *attr, | |||
378 | if (!acpi_pcc_retrieve_biosdata(pcc, pcc->sinf)) | 379 | if (!acpi_pcc_retrieve_biosdata(pcc, pcc->sinf)) |
379 | return -EIO; | 380 | return -EIO; |
380 | 381 | ||
381 | return sprintf(buf, "%u\n", pcc->sinf[SINF_LCD_TYPE]); | 382 | return snprintf(buf, PAGE_SIZE, "%u\n", pcc->sinf[SINF_LCD_TYPE]); |
382 | } | 383 | } |
383 | 384 | ||
384 | static ssize_t show_mute(struct device *dev, struct device_attribute *attr, | 385 | static ssize_t show_mute(struct device *dev, struct device_attribute *attr, |
@@ -390,7 +391,7 @@ static ssize_t show_mute(struct device *dev, struct device_attribute *attr, | |||
390 | if (!acpi_pcc_retrieve_biosdata(pcc, pcc->sinf)) | 391 | if (!acpi_pcc_retrieve_biosdata(pcc, pcc->sinf)) |
391 | return -EIO; | 392 | return -EIO; |
392 | 393 | ||
393 | return sprintf(buf, "%u\n", pcc->sinf[SINF_MUTE]); | 394 | return snprintf(buf, PAGE_SIZE, "%u\n", pcc->sinf[SINF_MUTE]); |
394 | } | 395 | } |
395 | 396 | ||
396 | static ssize_t show_sticky(struct device *dev, struct device_attribute *attr, | 397 | static ssize_t show_sticky(struct device *dev, struct device_attribute *attr, |
@@ -402,7 +403,7 @@ static ssize_t show_sticky(struct device *dev, struct device_attribute *attr, | |||
402 | if (!acpi_pcc_retrieve_biosdata(pcc, pcc->sinf)) | 403 | if (!acpi_pcc_retrieve_biosdata(pcc, pcc->sinf)) |
403 | return -EIO; | 404 | return -EIO; |
404 | 405 | ||
405 | return sprintf(buf, "%u\n", pcc->sinf[SINF_STICKY_KEY]); | 406 | return snprintf(buf, PAGE_SIZE, "%u\n", pcc->sinf[SINF_STICKY_KEY]); |
406 | } | 407 | } |
407 | 408 | ||
408 | static ssize_t set_sticky(struct device *dev, struct device_attribute *attr, | 409 | static ssize_t set_sticky(struct device *dev, struct device_attribute *attr, |
diff --git a/drivers/platform/x86/tc1100-wmi.c b/drivers/platform/x86/tc1100-wmi.c index b4a4aa9ee482..44166003d4ef 100644 --- a/drivers/platform/x86/tc1100-wmi.c +++ b/drivers/platform/x86/tc1100-wmi.c | |||
@@ -94,9 +94,8 @@ static int get_state(u32 *out, u8 instance) | |||
94 | return -ENODEV; | 94 | return -ENODEV; |
95 | 95 | ||
96 | obj = (union acpi_object *) result.pointer; | 96 | obj = (union acpi_object *) result.pointer; |
97 | if (obj && obj->type == ACPI_TYPE_BUFFER && | 97 | if (obj && obj->type == ACPI_TYPE_INTEGER) { |
98 | obj->buffer.length == sizeof(u32)) { | 98 | tmp = obj->integer.value; |
99 | tmp = *((u32 *) obj->buffer.pointer); | ||
100 | } else { | 99 | } else { |
101 | tmp = 0; | 100 | tmp = 0; |
102 | } | 101 | } |
@@ -109,7 +108,7 @@ static int get_state(u32 *out, u8 instance) | |||
109 | *out = (tmp == 3) ? 1 : 0; | 108 | *out = (tmp == 3) ? 1 : 0; |
110 | return 0; | 109 | return 0; |
111 | case TC1100_INSTANCE_JOGDIAL: | 110 | case TC1100_INSTANCE_JOGDIAL: |
112 | *out = (tmp == 1) ? 1 : 0; | 111 | *out = (tmp == 1) ? 0 : 1; |
113 | return 0; | 112 | return 0; |
114 | default: | 113 | default: |
115 | return -ENODEV; | 114 | return -ENODEV; |