diff options
| -rw-r--r-- | drivers/acpi/acpi_processor.c | 7 | ||||
| -rw-r--r-- | drivers/acpi/ec.c | 21 | ||||
| -rw-r--r-- | drivers/cpufreq/longhaul.c | 36 | ||||
| -rw-r--r-- | drivers/cpufreq/powernow-k6.c | 23 | ||||
| -rw-r--r-- | drivers/cpufreq/powernow-k7.c | 4 | ||||
| -rw-r--r-- | drivers/cpufreq/ppc-corenet-cpufreq.c | 5 | ||||
| -rw-r--r-- | drivers/pnp/pnpacpi/core.c | 44 | ||||
| -rw-r--r-- | drivers/pnp/quirks.c | 4 |
8 files changed, 85 insertions, 59 deletions
diff --git a/drivers/acpi/acpi_processor.c b/drivers/acpi/acpi_processor.c index c29c2c3ec0ad..b06f5f55ada9 100644 --- a/drivers/acpi/acpi_processor.c +++ b/drivers/acpi/acpi_processor.c | |||
| @@ -170,6 +170,9 @@ static int acpi_processor_hotadd_init(struct acpi_processor *pr) | |||
| 170 | acpi_status status; | 170 | acpi_status status; |
| 171 | int ret; | 171 | int ret; |
| 172 | 172 | ||
| 173 | if (pr->apic_id == -1) | ||
| 174 | return -ENODEV; | ||
| 175 | |||
| 173 | status = acpi_evaluate_integer(pr->handle, "_STA", NULL, &sta); | 176 | status = acpi_evaluate_integer(pr->handle, "_STA", NULL, &sta); |
| 174 | if (ACPI_FAILURE(status) || !(sta & ACPI_STA_DEVICE_PRESENT)) | 177 | if (ACPI_FAILURE(status) || !(sta & ACPI_STA_DEVICE_PRESENT)) |
| 175 | return -ENODEV; | 178 | return -ENODEV; |
| @@ -260,10 +263,8 @@ static int acpi_processor_get_info(struct acpi_device *device) | |||
| 260 | } | 263 | } |
| 261 | 264 | ||
| 262 | apic_id = acpi_get_apicid(pr->handle, device_declaration, pr->acpi_id); | 265 | apic_id = acpi_get_apicid(pr->handle, device_declaration, pr->acpi_id); |
| 263 | if (apic_id < 0) { | 266 | if (apic_id < 0) |
| 264 | acpi_handle_debug(pr->handle, "failed to get CPU APIC ID.\n"); | 267 | acpi_handle_debug(pr->handle, "failed to get CPU APIC ID.\n"); |
| 265 | return -ENODEV; | ||
| 266 | } | ||
| 267 | pr->apic_id = apic_id; | 268 | pr->apic_id = apic_id; |
| 268 | 269 | ||
| 269 | cpu_index = acpi_map_cpuid(pr->apic_id, pr->acpi_id); | 270 | cpu_index = acpi_map_cpuid(pr->apic_id, pr->acpi_id); |
diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c index d7d32c28829b..ad11ba4a412d 100644 --- a/drivers/acpi/ec.c +++ b/drivers/acpi/ec.c | |||
| @@ -206,13 +206,13 @@ unlock: | |||
| 206 | spin_unlock_irqrestore(&ec->lock, flags); | 206 | spin_unlock_irqrestore(&ec->lock, flags); |
| 207 | } | 207 | } |
| 208 | 208 | ||
| 209 | static int acpi_ec_sync_query(struct acpi_ec *ec); | 209 | static int acpi_ec_sync_query(struct acpi_ec *ec, u8 *data); |
| 210 | 210 | ||
| 211 | static int ec_check_sci_sync(struct acpi_ec *ec, u8 state) | 211 | static int ec_check_sci_sync(struct acpi_ec *ec, u8 state) |
| 212 | { | 212 | { |
| 213 | if (state & ACPI_EC_FLAG_SCI) { | 213 | if (state & ACPI_EC_FLAG_SCI) { |
| 214 | if (!test_and_set_bit(EC_FLAGS_QUERY_PENDING, &ec->flags)) | 214 | if (!test_and_set_bit(EC_FLAGS_QUERY_PENDING, &ec->flags)) |
| 215 | return acpi_ec_sync_query(ec); | 215 | return acpi_ec_sync_query(ec, NULL); |
| 216 | } | 216 | } |
| 217 | return 0; | 217 | return 0; |
| 218 | } | 218 | } |
| @@ -443,10 +443,8 @@ acpi_handle ec_get_handle(void) | |||
| 443 | 443 | ||
| 444 | EXPORT_SYMBOL(ec_get_handle); | 444 | EXPORT_SYMBOL(ec_get_handle); |
| 445 | 445 | ||
| 446 | static int acpi_ec_query_unlocked(struct acpi_ec *ec, u8 *data); | ||
| 447 | |||
| 448 | /* | 446 | /* |
| 449 | * Clears stale _Q events that might have accumulated in the EC. | 447 | * Process _Q events that might have accumulated in the EC. |
| 450 | * Run with locked ec mutex. | 448 | * Run with locked ec mutex. |
| 451 | */ | 449 | */ |
| 452 | static void acpi_ec_clear(struct acpi_ec *ec) | 450 | static void acpi_ec_clear(struct acpi_ec *ec) |
| @@ -455,7 +453,7 @@ static void acpi_ec_clear(struct acpi_ec *ec) | |||
| 455 | u8 value = 0; | 453 | u8 value = 0; |
| 456 | 454 | ||
| 457 | for (i = 0; i < ACPI_EC_CLEAR_MAX; i++) { | 455 | for (i = 0; i < ACPI_EC_CLEAR_MAX; i++) { |
| 458 | status = acpi_ec_query_unlocked(ec, &value); | 456 | status = acpi_ec_sync_query(ec, &value); |
| 459 | if (status || !value) | 457 | if (status || !value) |
| 460 | break; | 458 | break; |
| 461 | } | 459 | } |
| @@ -582,13 +580,18 @@ static void acpi_ec_run(void *cxt) | |||
| 582 | kfree(handler); | 580 | kfree(handler); |
| 583 | } | 581 | } |
| 584 | 582 | ||
| 585 | static int acpi_ec_sync_query(struct acpi_ec *ec) | 583 | static int acpi_ec_sync_query(struct acpi_ec *ec, u8 *data) |
| 586 | { | 584 | { |
| 587 | u8 value = 0; | 585 | u8 value = 0; |
| 588 | int status; | 586 | int status; |
| 589 | struct acpi_ec_query_handler *handler, *copy; | 587 | struct acpi_ec_query_handler *handler, *copy; |
| 590 | if ((status = acpi_ec_query_unlocked(ec, &value))) | 588 | |
| 589 | status = acpi_ec_query_unlocked(ec, &value); | ||
| 590 | if (data) | ||
| 591 | *data = value; | ||
| 592 | if (status) | ||
| 591 | return status; | 593 | return status; |
| 594 | |||
| 592 | list_for_each_entry(handler, &ec->list, node) { | 595 | list_for_each_entry(handler, &ec->list, node) { |
| 593 | if (value == handler->query_bit) { | 596 | if (value == handler->query_bit) { |
| 594 | /* have custom handler for this bit */ | 597 | /* have custom handler for this bit */ |
| @@ -612,7 +615,7 @@ static void acpi_ec_gpe_query(void *ec_cxt) | |||
| 612 | if (!ec) | 615 | if (!ec) |
| 613 | return; | 616 | return; |
| 614 | mutex_lock(&ec->mutex); | 617 | mutex_lock(&ec->mutex); |
| 615 | acpi_ec_sync_query(ec); | 618 | acpi_ec_sync_query(ec, NULL); |
| 616 | mutex_unlock(&ec->mutex); | 619 | mutex_unlock(&ec->mutex); |
| 617 | } | 620 | } |
| 618 | 621 | ||
diff --git a/drivers/cpufreq/longhaul.c b/drivers/cpufreq/longhaul.c index d00e5d1abd25..5c4369b5d834 100644 --- a/drivers/cpufreq/longhaul.c +++ b/drivers/cpufreq/longhaul.c | |||
| @@ -242,7 +242,7 @@ static void do_powersaver(int cx_address, unsigned int mults_index, | |||
| 242 | * Sets a new clock ratio. | 242 | * Sets a new clock ratio. |
| 243 | */ | 243 | */ |
| 244 | 244 | ||
| 245 | static void longhaul_setstate(struct cpufreq_policy *policy, | 245 | static int longhaul_setstate(struct cpufreq_policy *policy, |
| 246 | unsigned int table_index) | 246 | unsigned int table_index) |
| 247 | { | 247 | { |
| 248 | unsigned int mults_index; | 248 | unsigned int mults_index; |
| @@ -258,10 +258,12 @@ static void longhaul_setstate(struct cpufreq_policy *policy, | |||
| 258 | /* Safety precautions */ | 258 | /* Safety precautions */ |
| 259 | mult = mults[mults_index & 0x1f]; | 259 | mult = mults[mults_index & 0x1f]; |
| 260 | if (mult == -1) | 260 | if (mult == -1) |
| 261 | return; | 261 | return -EINVAL; |
| 262 | |||
| 262 | speed = calc_speed(mult); | 263 | speed = calc_speed(mult); |
| 263 | if ((speed > highest_speed) || (speed < lowest_speed)) | 264 | if ((speed > highest_speed) || (speed < lowest_speed)) |
| 264 | return; | 265 | return -EINVAL; |
| 266 | |||
| 265 | /* Voltage transition before frequency transition? */ | 267 | /* Voltage transition before frequency transition? */ |
| 266 | if (can_scale_voltage && longhaul_index < table_index) | 268 | if (can_scale_voltage && longhaul_index < table_index) |
| 267 | dir = 1; | 269 | dir = 1; |
| @@ -269,8 +271,6 @@ static void longhaul_setstate(struct cpufreq_policy *policy, | |||
| 269 | freqs.old = calc_speed(longhaul_get_cpu_mult()); | 271 | freqs.old = calc_speed(longhaul_get_cpu_mult()); |
| 270 | freqs.new = speed; | 272 | freqs.new = speed; |
| 271 | 273 | ||
| 272 | cpufreq_freq_transition_begin(policy, &freqs); | ||
| 273 | |||
| 274 | pr_debug("Setting to FSB:%dMHz Mult:%d.%dx (%s)\n", | 274 | pr_debug("Setting to FSB:%dMHz Mult:%d.%dx (%s)\n", |
| 275 | fsb, mult/10, mult%10, print_speed(speed/1000)); | 275 | fsb, mult/10, mult%10, print_speed(speed/1000)); |
| 276 | retry_loop: | 276 | retry_loop: |
| @@ -385,12 +385,14 @@ retry_loop: | |||
| 385 | goto retry_loop; | 385 | goto retry_loop; |
| 386 | } | 386 | } |
| 387 | } | 387 | } |
| 388 | /* Report true CPU frequency */ | ||
| 389 | cpufreq_freq_transition_end(policy, &freqs, 0); | ||
| 390 | 388 | ||
| 391 | if (!bm_timeout) | 389 | if (!bm_timeout) { |
| 392 | printk(KERN_INFO PFX "Warning: Timeout while waiting for " | 390 | printk(KERN_INFO PFX "Warning: Timeout while waiting for " |
| 393 | "idle PCI bus.\n"); | 391 | "idle PCI bus.\n"); |
| 392 | return -EBUSY; | ||
| 393 | } | ||
| 394 | |||
| 395 | return 0; | ||
| 394 | } | 396 | } |
| 395 | 397 | ||
| 396 | /* | 398 | /* |
| @@ -631,9 +633,10 @@ static int longhaul_target(struct cpufreq_policy *policy, | |||
| 631 | unsigned int i; | 633 | unsigned int i; |
| 632 | unsigned int dir = 0; | 634 | unsigned int dir = 0; |
| 633 | u8 vid, current_vid; | 635 | u8 vid, current_vid; |
| 636 | int retval = 0; | ||
| 634 | 637 | ||
| 635 | if (!can_scale_voltage) | 638 | if (!can_scale_voltage) |
| 636 | longhaul_setstate(policy, table_index); | 639 | retval = longhaul_setstate(policy, table_index); |
| 637 | else { | 640 | else { |
| 638 | /* On test system voltage transitions exceeding single | 641 | /* On test system voltage transitions exceeding single |
| 639 | * step up or down were turning motherboard off. Both | 642 | * step up or down were turning motherboard off. Both |
| @@ -648,7 +651,7 @@ static int longhaul_target(struct cpufreq_policy *policy, | |||
| 648 | while (i != table_index) { | 651 | while (i != table_index) { |
| 649 | vid = (longhaul_table[i].driver_data >> 8) & 0x1f; | 652 | vid = (longhaul_table[i].driver_data >> 8) & 0x1f; |
| 650 | if (vid != current_vid) { | 653 | if (vid != current_vid) { |
| 651 | longhaul_setstate(policy, i); | 654 | retval = longhaul_setstate(policy, i); |
| 652 | current_vid = vid; | 655 | current_vid = vid; |
| 653 | msleep(200); | 656 | msleep(200); |
| 654 | } | 657 | } |
| @@ -657,10 +660,11 @@ static int longhaul_target(struct cpufreq_policy *policy, | |||
| 657 | else | 660 | else |
| 658 | i--; | 661 | i--; |
| 659 | } | 662 | } |
| 660 | longhaul_setstate(policy, table_index); | 663 | retval = longhaul_setstate(policy, table_index); |
| 661 | } | 664 | } |
| 665 | |||
| 662 | longhaul_index = table_index; | 666 | longhaul_index = table_index; |
| 663 | return 0; | 667 | return retval; |
| 664 | } | 668 | } |
| 665 | 669 | ||
| 666 | 670 | ||
| @@ -968,7 +972,15 @@ static void __exit longhaul_exit(void) | |||
| 968 | 972 | ||
| 969 | for (i = 0; i < numscales; i++) { | 973 | for (i = 0; i < numscales; i++) { |
| 970 | if (mults[i] == maxmult) { | 974 | if (mults[i] == maxmult) { |
| 975 | struct cpufreq_freqs freqs; | ||
| 976 | |||
| 977 | freqs.old = policy->cur; | ||
| 978 | freqs.new = longhaul_table[i].frequency; | ||
| 979 | freqs.flags = 0; | ||
| 980 | |||
| 981 | cpufreq_freq_transition_begin(policy, &freqs); | ||
| 971 | longhaul_setstate(policy, i); | 982 | longhaul_setstate(policy, i); |
| 983 | cpufreq_freq_transition_end(policy, &freqs, 0); | ||
| 972 | break; | 984 | break; |
| 973 | } | 985 | } |
| 974 | } | 986 | } |
diff --git a/drivers/cpufreq/powernow-k6.c b/drivers/cpufreq/powernow-k6.c index 49f120e1bc7b..78904e6ca4a0 100644 --- a/drivers/cpufreq/powernow-k6.c +++ b/drivers/cpufreq/powernow-k6.c | |||
| @@ -138,22 +138,14 @@ static void powernow_k6_set_cpu_multiplier(unsigned int best_i) | |||
| 138 | static int powernow_k6_target(struct cpufreq_policy *policy, | 138 | static int powernow_k6_target(struct cpufreq_policy *policy, |
| 139 | unsigned int best_i) | 139 | unsigned int best_i) |
| 140 | { | 140 | { |
| 141 | struct cpufreq_freqs freqs; | ||
| 142 | 141 | ||
| 143 | if (clock_ratio[best_i].driver_data > max_multiplier) { | 142 | if (clock_ratio[best_i].driver_data > max_multiplier) { |
| 144 | printk(KERN_ERR PFX "invalid target frequency\n"); | 143 | printk(KERN_ERR PFX "invalid target frequency\n"); |
| 145 | return -EINVAL; | 144 | return -EINVAL; |
| 146 | } | 145 | } |
| 147 | 146 | ||
| 148 | freqs.old = busfreq * powernow_k6_get_cpu_multiplier(); | ||
| 149 | freqs.new = busfreq * clock_ratio[best_i].driver_data; | ||
| 150 | |||
| 151 | cpufreq_freq_transition_begin(policy, &freqs); | ||
| 152 | |||
| 153 | powernow_k6_set_cpu_multiplier(best_i); | 147 | powernow_k6_set_cpu_multiplier(best_i); |
| 154 | 148 | ||
| 155 | cpufreq_freq_transition_end(policy, &freqs, 0); | ||
| 156 | |||
| 157 | return 0; | 149 | return 0; |
| 158 | } | 150 | } |
| 159 | 151 | ||
| @@ -227,9 +219,20 @@ have_busfreq: | |||
| 227 | static int powernow_k6_cpu_exit(struct cpufreq_policy *policy) | 219 | static int powernow_k6_cpu_exit(struct cpufreq_policy *policy) |
| 228 | { | 220 | { |
| 229 | unsigned int i; | 221 | unsigned int i; |
| 230 | for (i = 0; i < 8; i++) { | 222 | |
| 231 | if (i == max_multiplier) | 223 | for (i = 0; (clock_ratio[i].frequency != CPUFREQ_TABLE_END); i++) { |
| 224 | if (clock_ratio[i].driver_data == max_multiplier) { | ||
| 225 | struct cpufreq_freqs freqs; | ||
| 226 | |||
| 227 | freqs.old = policy->cur; | ||
| 228 | freqs.new = clock_ratio[i].frequency; | ||
| 229 | freqs.flags = 0; | ||
| 230 | |||
| 231 | cpufreq_freq_transition_begin(policy, &freqs); | ||
| 232 | powernow_k6_target(policy, i); | 232 | powernow_k6_target(policy, i); |
| 233 | cpufreq_freq_transition_end(policy, &freqs, 0); | ||
| 234 | break; | ||
| 235 | } | ||
| 233 | } | 236 | } |
| 234 | return 0; | 237 | return 0; |
| 235 | } | 238 | } |
diff --git a/drivers/cpufreq/powernow-k7.c b/drivers/cpufreq/powernow-k7.c index f911645c3f6d..e61e224475ad 100644 --- a/drivers/cpufreq/powernow-k7.c +++ b/drivers/cpufreq/powernow-k7.c | |||
| @@ -269,8 +269,6 @@ static int powernow_target(struct cpufreq_policy *policy, unsigned int index) | |||
| 269 | 269 | ||
| 270 | freqs.new = powernow_table[index].frequency; | 270 | freqs.new = powernow_table[index].frequency; |
| 271 | 271 | ||
| 272 | cpufreq_freq_transition_begin(policy, &freqs); | ||
| 273 | |||
| 274 | /* Now do the magic poking into the MSRs. */ | 272 | /* Now do the magic poking into the MSRs. */ |
| 275 | 273 | ||
| 276 | if (have_a0 == 1) /* A0 errata 5 */ | 274 | if (have_a0 == 1) /* A0 errata 5 */ |
| @@ -290,8 +288,6 @@ static int powernow_target(struct cpufreq_policy *policy, unsigned int index) | |||
| 290 | if (have_a0 == 1) | 288 | if (have_a0 == 1) |
| 291 | local_irq_enable(); | 289 | local_irq_enable(); |
| 292 | 290 | ||
| 293 | cpufreq_freq_transition_end(policy, &freqs, 0); | ||
| 294 | |||
| 295 | return 0; | 291 | return 0; |
| 296 | } | 292 | } |
| 297 | 293 | ||
diff --git a/drivers/cpufreq/ppc-corenet-cpufreq.c b/drivers/cpufreq/ppc-corenet-cpufreq.c index a1ca3dd04a8e..0af618abebaf 100644 --- a/drivers/cpufreq/ppc-corenet-cpufreq.c +++ b/drivers/cpufreq/ppc-corenet-cpufreq.c | |||
| @@ -138,6 +138,7 @@ static int corenet_cpufreq_cpu_init(struct cpufreq_policy *policy) | |||
| 138 | struct cpufreq_frequency_table *table; | 138 | struct cpufreq_frequency_table *table; |
| 139 | struct cpu_data *data; | 139 | struct cpu_data *data; |
| 140 | unsigned int cpu = policy->cpu; | 140 | unsigned int cpu = policy->cpu; |
| 141 | u64 transition_latency_hz; | ||
| 141 | 142 | ||
| 142 | np = of_get_cpu_node(cpu, NULL); | 143 | np = of_get_cpu_node(cpu, NULL); |
| 143 | if (!np) | 144 | if (!np) |
| @@ -205,8 +206,10 @@ static int corenet_cpufreq_cpu_init(struct cpufreq_policy *policy) | |||
| 205 | for_each_cpu(i, per_cpu(cpu_mask, cpu)) | 206 | for_each_cpu(i, per_cpu(cpu_mask, cpu)) |
| 206 | per_cpu(cpu_data, i) = data; | 207 | per_cpu(cpu_data, i) = data; |
| 207 | 208 | ||
| 209 | transition_latency_hz = 12ULL * NSEC_PER_SEC; | ||
| 208 | policy->cpuinfo.transition_latency = | 210 | policy->cpuinfo.transition_latency = |
| 209 | (12ULL * NSEC_PER_SEC) / fsl_get_sys_freq(); | 211 | do_div(transition_latency_hz, fsl_get_sys_freq()); |
| 212 | |||
| 210 | of_node_put(np); | 213 | of_node_put(np); |
| 211 | 214 | ||
| 212 | return 0; | 215 | return 0; |
diff --git a/drivers/pnp/pnpacpi/core.c b/drivers/pnp/pnpacpi/core.c index 9f611cbbc294..c31aa07b3ba5 100644 --- a/drivers/pnp/pnpacpi/core.c +++ b/drivers/pnp/pnpacpi/core.c | |||
| @@ -83,8 +83,7 @@ static int pnpacpi_set_resources(struct pnp_dev *dev) | |||
| 83 | { | 83 | { |
| 84 | struct acpi_device *acpi_dev; | 84 | struct acpi_device *acpi_dev; |
| 85 | acpi_handle handle; | 85 | acpi_handle handle; |
| 86 | struct acpi_buffer buffer; | 86 | int ret = 0; |
| 87 | int ret; | ||
| 88 | 87 | ||
| 89 | pnp_dbg(&dev->dev, "set resources\n"); | 88 | pnp_dbg(&dev->dev, "set resources\n"); |
| 90 | 89 | ||
| @@ -97,19 +96,26 @@ static int pnpacpi_set_resources(struct pnp_dev *dev) | |||
| 97 | if (WARN_ON_ONCE(acpi_dev != dev->data)) | 96 | if (WARN_ON_ONCE(acpi_dev != dev->data)) |
| 98 | dev->data = acpi_dev; | 97 | dev->data = acpi_dev; |
| 99 | 98 | ||
| 100 | ret = pnpacpi_build_resource_template(dev, &buffer); | 99 | if (acpi_has_method(handle, METHOD_NAME__SRS)) { |
| 101 | if (ret) | 100 | struct acpi_buffer buffer; |
| 102 | return ret; | 101 | |
| 103 | ret = pnpacpi_encode_resources(dev, &buffer); | 102 | ret = pnpacpi_build_resource_template(dev, &buffer); |
| 104 | if (ret) { | 103 | if (ret) |
| 104 | return ret; | ||
| 105 | |||
| 106 | ret = pnpacpi_encode_resources(dev, &buffer); | ||
| 107 | if (!ret) { | ||
| 108 | acpi_status status; | ||
| 109 | |||
| 110 | status = acpi_set_current_resources(handle, &buffer); | ||
| 111 | if (ACPI_FAILURE(status)) | ||
| 112 | ret = -EIO; | ||
| 113 | } | ||
| 105 | kfree(buffer.pointer); | 114 | kfree(buffer.pointer); |
| 106 | return ret; | ||
| 107 | } | 115 | } |
| 108 | if (ACPI_FAILURE(acpi_set_current_resources(handle, &buffer))) | 116 | if (!ret && acpi_bus_power_manageable(handle)) |
| 109 | ret = -EINVAL; | ||
| 110 | else if (acpi_bus_power_manageable(handle)) | ||
| 111 | ret = acpi_bus_set_power(handle, ACPI_STATE_D0); | 117 | ret = acpi_bus_set_power(handle, ACPI_STATE_D0); |
| 112 | kfree(buffer.pointer); | 118 | |
| 113 | return ret; | 119 | return ret; |
| 114 | } | 120 | } |
| 115 | 121 | ||
| @@ -117,7 +123,7 @@ static int pnpacpi_disable_resources(struct pnp_dev *dev) | |||
| 117 | { | 123 | { |
| 118 | struct acpi_device *acpi_dev; | 124 | struct acpi_device *acpi_dev; |
| 119 | acpi_handle handle; | 125 | acpi_handle handle; |
| 120 | int ret; | 126 | acpi_status status; |
| 121 | 127 | ||
| 122 | dev_dbg(&dev->dev, "disable resources\n"); | 128 | dev_dbg(&dev->dev, "disable resources\n"); |
| 123 | 129 | ||
| @@ -128,13 +134,15 @@ static int pnpacpi_disable_resources(struct pnp_dev *dev) | |||
| 128 | } | 134 | } |
| 129 | 135 | ||
| 130 | /* acpi_unregister_gsi(pnp_irq(dev, 0)); */ | 136 | /* acpi_unregister_gsi(pnp_irq(dev, 0)); */ |
| 131 | ret = 0; | ||
| 132 | if (acpi_bus_power_manageable(handle)) | 137 | if (acpi_bus_power_manageable(handle)) |
| 133 | acpi_bus_set_power(handle, ACPI_STATE_D3_COLD); | 138 | acpi_bus_set_power(handle, ACPI_STATE_D3_COLD); |
| 134 | /* continue even if acpi_bus_set_power() fails */ | 139 | |
| 135 | if (ACPI_FAILURE(acpi_evaluate_object(handle, "_DIS", NULL, NULL))) | 140 | /* continue even if acpi_bus_set_power() fails */ |
| 136 | ret = -ENODEV; | 141 | status = acpi_evaluate_object(handle, "_DIS", NULL, NULL); |
| 137 | return ret; | 142 | if (ACPI_FAILURE(status) && status != AE_NOT_FOUND) |
| 143 | return -ENODEV; | ||
| 144 | |||
| 145 | return 0; | ||
| 138 | } | 146 | } |
| 139 | 147 | ||
| 140 | #ifdef CONFIG_ACPI_SLEEP | 148 | #ifdef CONFIG_ACPI_SLEEP |
diff --git a/drivers/pnp/quirks.c b/drivers/pnp/quirks.c index 3736bc408adb..ebf0d6710b5a 100644 --- a/drivers/pnp/quirks.c +++ b/drivers/pnp/quirks.c | |||
| @@ -335,7 +335,7 @@ static void quirk_amd_mmconfig_area(struct pnp_dev *dev) | |||
| 335 | } | 335 | } |
| 336 | #endif | 336 | #endif |
| 337 | 337 | ||
| 338 | #ifdef CONFIG_X86 | 338 | #ifdef CONFIG_PCI |
| 339 | /* Device IDs of parts that have 32KB MCH space */ | 339 | /* Device IDs of parts that have 32KB MCH space */ |
| 340 | static const unsigned int mch_quirk_devices[] = { | 340 | static const unsigned int mch_quirk_devices[] = { |
| 341 | 0x0154, /* Ivy Bridge */ | 341 | 0x0154, /* Ivy Bridge */ |
| @@ -440,7 +440,7 @@ static struct pnp_fixup pnp_fixups[] = { | |||
| 440 | #ifdef CONFIG_AMD_NB | 440 | #ifdef CONFIG_AMD_NB |
| 441 | {"PNP0c01", quirk_amd_mmconfig_area}, | 441 | {"PNP0c01", quirk_amd_mmconfig_area}, |
| 442 | #endif | 442 | #endif |
| 443 | #ifdef CONFIG_X86 | 443 | #ifdef CONFIG_PCI |
| 444 | {"PNP0c02", quirk_intel_mch}, | 444 | {"PNP0c02", quirk_intel_mch}, |
| 445 | #endif | 445 | #endif |
| 446 | {""} | 446 | {""} |
