diff options
| author | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2013-06-07 12:35:23 +0200 | 
|---|---|---|
| committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2013-06-07 12:35:23 +0200 | 
| commit | 2314b69253a42f8814cd6e3830b8538b815f1c11 (patch) | |
| tree | 5113d59410630b78c37bebd513e0f7fe9391e710 | |
| parent | d683b96b072dc4680fc74964eca77e6a23d1fa6e (diff) | |
| parent | 7cd8407d53ef5fb0280fcbe34f42311472f90feb (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()
| -rw-r--r-- | drivers/acpi/apei/ghes.c | 7 | ||||
| -rw-r--r-- | drivers/acpi/device_pm.c | 10 | ||||
| -rw-r--r-- | drivers/acpi/scan.c | 4 | ||||
| -rw-r--r-- | drivers/acpi/video.c | 16 | ||||
| -rw-r--r-- | drivers/platform/x86/hp-wmi.c | 2 | 
5 files changed, 31 insertions, 8 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)  		break;  	case ACPI_HEST_NOTIFY_EXTERNAL:  		/* External interrupt vector is GSI */ -		if (acpi_gsi_to_irq(generic->notify.vector, &ghes->irq)) { +		rc = acpi_gsi_to_irq(generic->notify.vector, &ghes->irq); +		if (rc) {  			pr_err(GHES_PFX "Failed to map GSI to IRQ for generic hardware error source: %d\n",  			       generic->header.source_id);  			goto err_edac_unreg;  		} -		if (request_irq(ghes->irq, ghes_irq_func, -				0, "GHES IRQ", ghes)) { +		rc = request_irq(ghes->irq, ghes_irq_func, 0, "GHES IRQ", ghes); +		if (rc) {  			pr_err(GHES_PFX "Failed to register IRQ for generic hardware error source: %d\n",  			       generic->header.source_id);  			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)  		if (result)  			return result;  	} else if (state == ACPI_STATE_UNKNOWN) { -		/* No power resources and missing _PSC? Try to force D0. */ +		/* +		 * No power resources and missing _PSC?  Cross fingers and make +		 * it D0 in hope that this is what the BIOS put the device into. +		 * [We tried to force D0 here by executing _PS0, but that broke +		 * Toshiba P870-303 in a nasty way.] +		 */  		state = ACPI_STATE_D0; -		result = acpi_dev_pm_explicit_set(device, state); -		if (result) -			return result;  	}  	device->power.state = state;  	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)  	struct acpi_device *acpi_dev = to_acpi_device(dev);  	struct acpi_driver *acpi_drv = to_acpi_driver(drv); +	/* Skip ACPI device objects with scan handlers attached. */ +	if (acpi_dev->handler) +		return 0; +  	return acpi_dev->flags.match_driver  		&& !acpi_match_device_ids(acpi_dev, acpi_drv->ids);  } 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 = {  	},  	{  	 .callback = video_ignore_initial_backlight, +	 .ident = "HP Pavilion g6 Notebook PC", +	 .matches = { +		 DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"), +		 DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion g6 Notebook PC"), +		}, +	}, +	{ +	 .callback = video_ignore_initial_backlight,  	 .ident = "HP 1000 Notebook PC",  	 .matches = {  		DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"),  		DMI_MATCH(DMI_PRODUCT_NAME, "HP 1000 Notebook PC"),  		},  	}, +	{ +	 .callback = video_ignore_initial_backlight, +	 .ident = "HP Pavilion m4", +	 .matches = { +		DMI_MATCH(DMI_BOARD_VENDOR, "Hewlett-Packard"), +		DMI_MATCH(DMI_PRODUCT_NAME, "HP Pavilion m4 Notebook PC"), +		}, +	},  	{}  }; diff --git a/drivers/platform/x86/hp-wmi.c b/drivers/platform/x86/hp-wmi.c index 8df0c5a21be2..d111c8687f9b 100644 --- a/drivers/platform/x86/hp-wmi.c +++ b/drivers/platform/x86/hp-wmi.c @@ -703,7 +703,7 @@ static int hp_wmi_rfkill_setup(struct platform_device *device)  		}  		rfkill_init_sw_state(gps_rfkill,  				     hp_wmi_get_sw_state(HPWMI_GPS)); -		rfkill_set_hw_state(bluetooth_rfkill, +		rfkill_set_hw_state(gps_rfkill,  				    hp_wmi_get_hw_state(HPWMI_GPS));  		err = rfkill_register(gps_rfkill);  		if (err)  | 
