aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/acpi
diff options
context:
space:
mode:
authorRafael J. Wysocki <rafael.j.wysocki@intel.com>2013-06-07 06:35:23 -0400
committerRafael J. Wysocki <rafael.j.wysocki@intel.com>2013-06-07 06:35:23 -0400
commit2314b69253a42f8814cd6e3830b8538b815f1c11 (patch)
tree5113d59410630b78c37bebd513e0f7fe9391e710 /drivers/acpi
parentd683b96b072dc4680fc74964eca77e6a23d1fa6e (diff)
parent7cd8407d53ef5fb0280fcbe34f42311472f90feb (diff)
Merge branch 'acpi-fixes'
* acpi-fixes: ACPI / PM: Do not execute _PS0 for devices without _PSC during initialization ACPI / scan: do not match drivers against objects having scan handlers ACPI / APEI: fix error return code in ghes_probe() ACPI / video: ignore BIOS initial backlight value for HP Pavilion g6 ACPI / video: ignore BIOS initial backlight value for HP m4 x86 / platform / hp_wmi: Fix bluetooth_rfkill misuse in hp_wmi_rfkill_setup()
Diffstat (limited to 'drivers/acpi')
-rw-r--r--drivers/acpi/apei/ghes.c7
-rw-r--r--drivers/acpi/device_pm.c10
-rw-r--r--drivers/acpi/scan.c4
-rw-r--r--drivers/acpi/video.c16
4 files changed, 30 insertions, 7 deletions
diff --git a/drivers/acpi/apei/ghes.c b/drivers/acpi/apei/ghes.c
index 403baf4dffc1..fcd7d91cec34 100644
--- a/drivers/acpi/apei/ghes.c
+++ b/drivers/acpi/apei/ghes.c
@@ -919,13 +919,14 @@ static int ghes_probe(struct platform_device *ghes_dev)
919 break; 919 break;
920 case ACPI_HEST_NOTIFY_EXTERNAL: 920 case ACPI_HEST_NOTIFY_EXTERNAL:
921 /* External interrupt vector is GSI */ 921 /* External interrupt vector is GSI */
922 if (acpi_gsi_to_irq(generic->notify.vector, &ghes->irq)) { 922 rc = acpi_gsi_to_irq(generic->notify.vector, &ghes->irq);
923 if (rc) {
923 pr_err(GHES_PFX "Failed to map GSI to IRQ for generic hardware error source: %d\n", 924 pr_err(GHES_PFX "Failed to map GSI to IRQ for generic hardware error source: %d\n",
924 generic->header.source_id); 925 generic->header.source_id);
925 goto err_edac_unreg; 926 goto err_edac_unreg;
926 } 927 }
927 if (request_irq(ghes->irq, ghes_irq_func, 928 rc = request_irq(ghes->irq, ghes_irq_func, 0, "GHES IRQ", ghes);
928 0, "GHES IRQ", ghes)) { 929 if (rc) {
929 pr_err(GHES_PFX "Failed to register IRQ for generic hardware error source: %d\n", 930 pr_err(GHES_PFX "Failed to register IRQ for generic hardware error source: %d\n",
930 generic->header.source_id); 931 generic->header.source_id);
931 goto err_edac_unreg; 932 goto err_edac_unreg;
diff --git a/drivers/acpi/device_pm.c b/drivers/acpi/device_pm.c
index bc493aa3af19..318fa32a141e 100644
--- a/drivers/acpi/device_pm.c
+++ b/drivers/acpi/device_pm.c
@@ -278,11 +278,13 @@ int acpi_bus_init_power(struct acpi_device *device)
278 if (result) 278 if (result)
279 return result; 279 return result;
280 } else if (state == ACPI_STATE_UNKNOWN) { 280 } else if (state == ACPI_STATE_UNKNOWN) {
281 /* No power resources and missing _PSC? Try to force D0. */ 281 /*
282 * No power resources and missing _PSC? Cross fingers and make
283 * it D0 in hope that this is what the BIOS put the device into.
284 * [We tried to force D0 here by executing _PS0, but that broke
285 * Toshiba P870-303 in a nasty way.]
286 */
282 state = ACPI_STATE_D0; 287 state = ACPI_STATE_D0;
283 result = acpi_dev_pm_explicit_set(device, state);
284 if (result)
285 return result;
286 } 288 }
287 device->power.state = state; 289 device->power.state = state;
288 return 0; 290 return 0;
diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c
index 44225cb15f3a..90c5759e1355 100644
--- a/drivers/acpi/scan.c
+++ b/drivers/acpi/scan.c
@@ -740,6 +740,10 @@ static int acpi_bus_match(struct device *dev, struct device_driver *drv)
740 struct acpi_device *acpi_dev = to_acpi_device(dev); 740 struct acpi_device *acpi_dev = to_acpi_device(dev);
741 struct acpi_driver *acpi_drv = to_acpi_driver(drv); 741 struct acpi_driver *acpi_drv = to_acpi_driver(drv);
742 742
743 /* Skip ACPI device objects with scan handlers attached. */
744 if (acpi_dev->handler)
745 return 0;
746
743 return acpi_dev->flags.match_driver 747 return acpi_dev->flags.match_driver
744 && !acpi_match_device_ids(acpi_dev, acpi_drv->ids); 748 && !acpi_match_device_ids(acpi_dev, acpi_drv->ids);
745} 749}
diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c
index 5b32e15a65ce..5d7075d25700 100644
--- a/drivers/acpi/video.c
+++ b/drivers/acpi/video.c
@@ -458,12 +458,28 @@ static struct dmi_system_id video_dmi_table[] __initdata = {
458 }, 458 },
459 { 459 {
460 .callback = video_ignore_initial_backlight, 460 .callback = video_ignore_initial_backlight,
461 .ident = "HP Pavilion g6 Notebook PC",
462 .matches = {
463 DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"),
464 DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion g6 Notebook PC"),
465 },
466 },
467 {
468 .callback = video_ignore_initial_backlight,
461 .ident = "HP 1000 Notebook PC", 469 .ident = "HP 1000 Notebook PC",
462 .matches = { 470 .matches = {
463 DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"), 471 DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"),
464 DMI_MATCH(DMI_PRODUCT_NAME, "HP 1000 Notebook PC"), 472 DMI_MATCH(DMI_PRODUCT_NAME, "HP 1000 Notebook PC"),
465 }, 473 },
466 }, 474 },
475 {
476 .callback = video_ignore_initial_backlight,
477 .ident = "HP Pavilion m4",
478 .matches = {
479 DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"),
480 DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion m4 Notebook PC"),
481 },
482 },
467 {} 483 {}
468}; 484};
469 485