diff options
Diffstat (limited to 'drivers/platform')
| -rw-r--r-- | drivers/platform/x86/acer-wmi.c | 2 | ||||
| -rw-r--r-- | drivers/platform/x86/apple-gmux.c | 24 | ||||
| -rw-r--r-- | drivers/platform/x86/asus-laptop.c | 10 | ||||
| -rw-r--r-- | drivers/platform/x86/asus-wmi.c | 4 | ||||
| -rw-r--r-- | drivers/platform/x86/eeepc-laptop.c | 10 | ||||
| -rw-r--r-- | drivers/platform/x86/samsung-laptop.c | 4 | ||||
| -rw-r--r-- | drivers/platform/x86/thinkpad_acpi.c | 13 | 
7 files changed, 31 insertions, 36 deletions
diff --git a/drivers/platform/x86/acer-wmi.c b/drivers/platform/x86/acer-wmi.c index 3782e1cd369..934d861a323 100644 --- a/drivers/platform/x86/acer-wmi.c +++ b/drivers/platform/x86/acer-wmi.c @@ -2196,10 +2196,8 @@ static int __init acer_wmi_init(void)  		interface->capability &= ~ACER_CAP_BRIGHTNESS;  		pr_info("Brightness must be controlled by acpi video driver\n");  	} else { -#ifdef CONFIG_ACPI_VIDEO  		pr_info("Disabling ACPI video driver\n");  		acpi_video_unregister(); -#endif  	}  	if (wmi_has_guid(WMID_GUID3)) { diff --git a/drivers/platform/x86/apple-gmux.c b/drivers/platform/x86/apple-gmux.c index dfb1a92ce94..db8f63841b4 100644 --- a/drivers/platform/x86/apple-gmux.c +++ b/drivers/platform/x86/apple-gmux.c @@ -101,7 +101,7 @@ static void gmux_pio_write32(struct apple_gmux_data *gmux_data, int port,  	for (i = 0; i < 4; i++) {  		tmpval = (val >> (i * 8)) & 0xff; -		outb(tmpval, port + i); +		outb(tmpval, gmux_data->iostart + port + i);  	}  } @@ -142,8 +142,9 @@ static u8 gmux_index_read8(struct apple_gmux_data *gmux_data, int port)  	u8 val;  	mutex_lock(&gmux_data->index_lock); -	outb((port & 0xff), gmux_data->iostart + GMUX_PORT_READ);  	gmux_index_wait_ready(gmux_data); +	outb((port & 0xff), gmux_data->iostart + GMUX_PORT_READ); +	gmux_index_wait_complete(gmux_data);  	val = inb(gmux_data->iostart + GMUX_PORT_VALUE);  	mutex_unlock(&gmux_data->index_lock); @@ -166,8 +167,9 @@ static u32 gmux_index_read32(struct apple_gmux_data *gmux_data, int port)  	u32 val;  	mutex_lock(&gmux_data->index_lock); -	outb((port & 0xff), gmux_data->iostart + GMUX_PORT_READ);  	gmux_index_wait_ready(gmux_data); +	outb((port & 0xff), gmux_data->iostart + GMUX_PORT_READ); +	gmux_index_wait_complete(gmux_data);  	val = inl(gmux_data->iostart + GMUX_PORT_VALUE);  	mutex_unlock(&gmux_data->index_lock); @@ -461,18 +463,22 @@ static int __devinit gmux_probe(struct pnp_dev *pnp,  	ver_release = gmux_read8(gmux_data, GMUX_PORT_VERSION_RELEASE);  	if (ver_major == 0xff && ver_minor == 0xff && ver_release == 0xff) {  		if (gmux_is_indexed(gmux_data)) { +			u32 version;  			mutex_init(&gmux_data->index_lock);  			gmux_data->indexed = true; +			version = gmux_read32(gmux_data, +				GMUX_PORT_VERSION_MAJOR); +			ver_major = (version >> 24) & 0xff; +			ver_minor = (version >> 16) & 0xff; +			ver_release = (version >> 8) & 0xff;  		} else {  			pr_info("gmux device not present\n");  			ret = -ENODEV;  			goto err_release;  		} -		pr_info("Found indexed gmux\n"); -	} else { -		pr_info("Found gmux version %d.%d.%d\n", ver_major, ver_minor, -			ver_release);  	} +	pr_info("Found gmux version %d.%d.%d [%s]\n", ver_major, ver_minor, +		ver_release, (gmux_data->indexed ? "indexed" : "classic"));  	memset(&props, 0, sizeof(props));  	props.type = BACKLIGHT_PLATFORM; @@ -505,9 +511,7 @@ static int __devinit gmux_probe(struct pnp_dev *pnp,  	 * Disable the other backlight choices.  	 */  	acpi_video_dmi_promote_vendor(); -#if defined (CONFIG_ACPI_VIDEO) || defined (CONFIG_ACPI_VIDEO_MODULE)  	acpi_video_unregister(); -#endif  	apple_bl_unregister();  	gmux_data->power_state = VGA_SWITCHEROO_ON; @@ -593,9 +597,7 @@ static void __devexit gmux_remove(struct pnp_dev *pnp)  	kfree(gmux_data);  	acpi_video_dmi_demote_vendor(); -#if defined (CONFIG_ACPI_VIDEO) || defined (CONFIG_ACPI_VIDEO_MODULE)  	acpi_video_register(); -#endif  	apple_bl_register();  } diff --git a/drivers/platform/x86/asus-laptop.c b/drivers/platform/x86/asus-laptop.c index e38f91be0b1..4b568df5664 100644 --- a/drivers/platform/x86/asus-laptop.c +++ b/drivers/platform/x86/asus-laptop.c @@ -85,7 +85,7 @@ static char *wled_type = "unknown";  static char *bled_type = "unknown";  module_param(wled_type, charp, 0444); -MODULE_PARM_DESC(wlan_status, "Set the wled type on boot " +MODULE_PARM_DESC(wled_type, "Set the wled type on boot "  		 "(unknown, led or rfkill). "  		 "default is unknown"); @@ -863,9 +863,9 @@ static ssize_t show_infos(struct device *dev,  	 * The significance of others is yet to be found.  	 * If we don't find the method, we assume the device are present.  	 */ -	rv = acpi_evaluate_integer(asus->handle, "HRWS", NULL, &temp); +	rv = acpi_evaluate_integer(asus->handle, "HWRS", NULL, &temp);  	if (!ACPI_FAILURE(rv)) -		len += sprintf(page + len, "HRWS value         : %#x\n", +		len += sprintf(page + len, "HWRS value         : %#x\n",  			       (uint) temp);  	/*  	 * Another value for userspace: the ASYM method returns 0x02 for @@ -1751,9 +1751,9 @@ static int asus_laptop_get_info(struct asus_laptop *asus)  	 * The significance of others is yet to be found.  	 */  	status = -	    acpi_evaluate_integer(asus->handle, "HRWS", NULL, &hwrs_result); +	    acpi_evaluate_integer(asus->handle, "HWRS", NULL, &hwrs_result);  	if (!ACPI_FAILURE(status)) -		pr_notice("  HRWS returned %x", (int)hwrs_result); +		pr_notice("  HWRS returned %x", (int)hwrs_result);  	if (!acpi_check_handle(asus->handle, METHOD_WL_STATUS, NULL))  		asus->have_rsts = true; diff --git a/drivers/platform/x86/asus-wmi.c b/drivers/platform/x86/asus-wmi.c index 2eb9fe8e8ef..c0e9ff489b2 100644 --- a/drivers/platform/x86/asus-wmi.c +++ b/drivers/platform/x86/asus-wmi.c @@ -47,9 +47,7 @@  #include <linux/thermal.h>  #include <acpi/acpi_bus.h>  #include <acpi/acpi_drivers.h> -#ifdef CONFIG_ACPI_VIDEO  #include <acpi/video.h> -#endif  #include "asus-wmi.h" @@ -1704,10 +1702,8 @@ static int asus_wmi_add(struct platform_device *pdev)  	if (asus->driver->quirks->wmi_backlight_power)  		acpi_video_dmi_promote_vendor();  	if (!acpi_video_backlight_support()) { -#ifdef CONFIG_ACPI_VIDEO  		pr_info("Disabling ACPI video driver\n");  		acpi_video_unregister(); -#endif  		err = asus_wmi_backlight_init(asus);  		if (err && err != -ENODEV)  			goto fail_backlight; diff --git a/drivers/platform/x86/eeepc-laptop.c b/drivers/platform/x86/eeepc-laptop.c index dab91b48d22..5ca264179f4 100644 --- a/drivers/platform/x86/eeepc-laptop.c +++ b/drivers/platform/x86/eeepc-laptop.c @@ -610,12 +610,12 @@ static void eeepc_rfkill_hotplug(struct eeepc_laptop *eeepc, acpi_handle handle)  		if (!bus) {  			pr_warn("Unable to find PCI bus 1?\n"); -			goto out_unlock; +			goto out_put_dev;  		}  		if (pci_bus_read_config_dword(bus, 0, PCI_VENDOR_ID, &l)) {  			pr_err("Unable to read PCI config space?\n"); -			goto out_unlock; +			goto out_put_dev;  		}  		absent = (l == 0xffffffff); @@ -627,7 +627,7 @@ static void eeepc_rfkill_hotplug(struct eeepc_laptop *eeepc, acpi_handle handle)  				absent ? "absent" : "present");  			pr_warn("skipped wireless hotplug as probably "  				"inappropriate for this model\n"); -			goto out_unlock; +			goto out_put_dev;  		}  		if (!blocked) { @@ -635,7 +635,7 @@ static void eeepc_rfkill_hotplug(struct eeepc_laptop *eeepc, acpi_handle handle)  			if (dev) {  				/* Device already present */  				pci_dev_put(dev); -				goto out_unlock; +				goto out_put_dev;  			}  			dev = pci_scan_single_device(bus, 0);  			if (dev) { @@ -650,6 +650,8 @@ static void eeepc_rfkill_hotplug(struct eeepc_laptop *eeepc, acpi_handle handle)  				pci_dev_put(dev);  			}  		} +out_put_dev: +		pci_dev_put(port);  	}  out_unlock: diff --git a/drivers/platform/x86/samsung-laptop.c b/drivers/platform/x86/samsung-laptop.c index c1ca7bcebb6..dd90d15f521 100644 --- a/drivers/platform/x86/samsung-laptop.c +++ b/drivers/platform/x86/samsung-laptop.c @@ -26,9 +26,7 @@  #include <linux/seq_file.h>  #include <linux/debugfs.h>  #include <linux/ctype.h> -#ifdef CONFIG_ACPI_VIDEO  #include <acpi/video.h> -#endif  /*   * This driver is needed because a number of Samsung laptops do not hook @@ -1558,9 +1556,7 @@ static int __init samsung_init(void)  		samsung->handle_backlight = false;  	} else if (samsung->quirks->broken_acpi_video) {  		pr_info("Disabling ACPI video driver\n"); -#ifdef CONFIG_ACPI_VIDEO  		acpi_video_unregister(); -#endif  	}  #endif diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c index 80e37794931..52daaa816e5 100644 --- a/drivers/platform/x86/thinkpad_acpi.c +++ b/drivers/platform/x86/thinkpad_acpi.c @@ -545,7 +545,7 @@ TPACPI_HANDLE(hkey, ec, "\\_SB.HKEY",	/* 600e/x, 770e, 770x */   */  static int acpi_evalf(acpi_handle handle, -		      void *res, char *method, char *fmt, ...) +		      int *res, char *method, char *fmt, ...)  {  	char *fmt0 = fmt;  	struct acpi_object_list params; @@ -606,7 +606,7 @@ static int acpi_evalf(acpi_handle handle,  		success = (status == AE_OK &&  			   out_obj.type == ACPI_TYPE_INTEGER);  		if (success && res) -			*(int *)res = out_obj.integer.value; +			*res = out_obj.integer.value;  		break;  	case 'v':		/* void */  		success = status == AE_OK; @@ -7386,17 +7386,18 @@ static int fan_get_status(u8 *status)  	 * Add TPACPI_FAN_RD_ACPI_FANS ? */  	switch (fan_status_access_mode) { -	case TPACPI_FAN_RD_ACPI_GFAN: +	case TPACPI_FAN_RD_ACPI_GFAN: {  		/* 570, 600e/x, 770e, 770x */ +		int res; -		if (unlikely(!acpi_evalf(gfan_handle, &s, NULL, "d"))) +		if (unlikely(!acpi_evalf(gfan_handle, &res, NULL, "d")))  			return -EIO;  		if (likely(status)) -			*status = s & 0x07; +			*status = res & 0x07;  		break; - +	}  	case TPACPI_FAN_RD_TPEC:  		/* all except 570, 600e/x, 770e, 770x */  		if (unlikely(!acpi_ec_read(fan_status_offset, &s)))  |