diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2011-05-29 14:44:33 -0400 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-05-29 14:44:33 -0400 |
| commit | 2ba781ced93922e249dee2ac0751faccb4fb0656 (patch) | |
| tree | 8b62346278b60d1bc9765dc6691f07219a27d894 /drivers/platform | |
| parent | 6345d24daf0c1fffe6642081d783cdf653ebaa5c (diff) | |
| parent | 437cb0dbd104a1564e0e78f0d486b97677f80909 (diff) | |
Merge branch 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mjg59/platform-drivers-x86
* 'for_linus' of git://git.kernel.org/pub/scm/linux/kernel/git/mjg59/platform-drivers-x86: (43 commits)
acer-wmi: support integer return type from WMI methods
msi-laptop: fix section mismatch in reference from the function load_scm_model_init
acer-wmi: support to set communication device state by new wmid method
acer-wmi: allow 64-bits return buffer from WMI methods
acer-wmi: check the existence of internal 3G device when set capability
platform/x86:delete two unused variables
support wlan hotkey on Acer Travelmate 5735Z
platform-x86: intel_mid_thermal: Fix memory leak
platform/x86: Fix Makefile for intel_mid_powerbtn
platform/x86: Simplify intel_mid_powerbtn
acer-wmi: Delete out-of-date documentation
acerhdf: Clean up includes
acerhdf: Drop pointless dependency on THERMAL_HWMON
acer-wmi: Update MAINTAINERS
wmi: Orphan ACPI-WMI driver
tc1100-wmi: Orphan driver
acer-wmi: does not allow negative number set to initial device state
platform/oaktrail: ACPI EC Extra driver for Oaktrail
thinkpad_acpi: Convert printks to pr_<level>
thinkpad_acpi: Correct !CONFIG_THINKPAD_ACPI_VIDEO warning
...
Diffstat (limited to 'drivers/platform')
33 files changed, 1390 insertions, 1000 deletions
diff --git a/drivers/platform/x86/Kconfig b/drivers/platform/x86/Kconfig index 5cb999b50f95..45e0191c35dd 100644 --- a/drivers/platform/x86/Kconfig +++ b/drivers/platform/x86/Kconfig | |||
| @@ -39,7 +39,7 @@ config ACER_WMI | |||
| 39 | 39 | ||
| 40 | config ACERHDF | 40 | config ACERHDF |
| 41 | tristate "Acer Aspire One temperature and fan driver" | 41 | tristate "Acer Aspire One temperature and fan driver" |
| 42 | depends on THERMAL && THERMAL_HWMON && ACPI | 42 | depends on THERMAL && ACPI |
| 43 | ---help--- | 43 | ---help--- |
| 44 | This is a driver for Acer Aspire One netbooks. It allows to access | 44 | This is a driver for Acer Aspire One netbooks. It allows to access |
| 45 | the temperature sensor and to control the fan. | 45 | the temperature sensor and to control the fan. |
| @@ -760,4 +760,13 @@ config MXM_WMI | |||
| 760 | MXM is a standard for laptop graphics cards, the WMI interface | 760 | MXM is a standard for laptop graphics cards, the WMI interface |
| 761 | is required for switchable nvidia graphics machines | 761 | is required for switchable nvidia graphics machines |
| 762 | 762 | ||
| 763 | config INTEL_OAKTRAIL | ||
| 764 | tristate "Intel Oaktrail Platform Extras" | ||
| 765 | depends on ACPI | ||
| 766 | depends on RFKILL && BACKLIGHT_CLASS_DEVICE && ACPI | ||
| 767 | ---help--- | ||
| 768 | Intel Oaktrail platform need this driver to provide interfaces to | ||
| 769 | enable/disable the Camera, WiFi, BT etc. devices. If in doubt, say Y | ||
| 770 | here; it will only load on supported platforms. | ||
| 771 | |||
| 763 | endif # X86_PLATFORM_DEVICES | 772 | endif # X86_PLATFORM_DEVICES |
diff --git a/drivers/platform/x86/Makefile b/drivers/platform/x86/Makefile index a7ab3bc7b3a1..afc1f832aa67 100644 --- a/drivers/platform/x86/Makefile +++ b/drivers/platform/x86/Makefile | |||
| @@ -41,5 +41,6 @@ obj-$(CONFIG_XO1_RFKILL) += xo1-rfkill.o | |||
| 41 | obj-$(CONFIG_XO15_EBOOK) += xo15-ebook.o | 41 | obj-$(CONFIG_XO15_EBOOK) += xo15-ebook.o |
| 42 | obj-$(CONFIG_IBM_RTL) += ibm_rtl.o | 42 | obj-$(CONFIG_IBM_RTL) += ibm_rtl.o |
| 43 | obj-$(CONFIG_SAMSUNG_LAPTOP) += samsung-laptop.o | 43 | obj-$(CONFIG_SAMSUNG_LAPTOP) += samsung-laptop.o |
| 44 | obj-$(CONFIG_INTEL_MFLD_THERMAL) += intel_mid_thermal.o | ||
| 45 | obj-$(CONFIG_MXM_WMI) += mxm-wmi.o | 44 | obj-$(CONFIG_MXM_WMI) += mxm-wmi.o |
| 45 | obj-$(CONFIG_INTEL_MID_POWER_BUTTON) += intel_mid_powerbtn.o | ||
| 46 | obj-$(CONFIG_INTEL_OAKTRAIL) += intel_oaktrail.o | ||
diff --git a/drivers/platform/x86/acer-wmi.c b/drivers/platform/x86/acer-wmi.c index ac4e7f83ce6c..005417bd429e 100644 --- a/drivers/platform/x86/acer-wmi.c +++ b/drivers/platform/x86/acer-wmi.c | |||
| @@ -98,13 +98,26 @@ enum acer_wmi_event_ids { | |||
| 98 | 98 | ||
| 99 | static const struct key_entry acer_wmi_keymap[] = { | 99 | static const struct key_entry acer_wmi_keymap[] = { |
| 100 | {KE_KEY, 0x01, {KEY_WLAN} }, /* WiFi */ | 100 | {KE_KEY, 0x01, {KEY_WLAN} }, /* WiFi */ |
| 101 | {KE_KEY, 0x03, {KEY_WLAN} }, /* WiFi */ | ||
| 101 | {KE_KEY, 0x12, {KEY_BLUETOOTH} }, /* BT */ | 102 | {KE_KEY, 0x12, {KEY_BLUETOOTH} }, /* BT */ |
| 102 | {KE_KEY, 0x21, {KEY_PROG1} }, /* Backup */ | 103 | {KE_KEY, 0x21, {KEY_PROG1} }, /* Backup */ |
| 103 | {KE_KEY, 0x22, {KEY_PROG2} }, /* Arcade */ | 104 | {KE_KEY, 0x22, {KEY_PROG2} }, /* Arcade */ |
| 104 | {KE_KEY, 0x23, {KEY_PROG3} }, /* P_Key */ | 105 | {KE_KEY, 0x23, {KEY_PROG3} }, /* P_Key */ |
| 105 | {KE_KEY, 0x24, {KEY_PROG4} }, /* Social networking_Key */ | 106 | {KE_KEY, 0x24, {KEY_PROG4} }, /* Social networking_Key */ |
| 107 | {KE_IGNORE, 0x41, {KEY_MUTE} }, | ||
| 108 | {KE_IGNORE, 0x42, {KEY_PREVIOUSSONG} }, | ||
| 109 | {KE_IGNORE, 0x43, {KEY_NEXTSONG} }, | ||
| 110 | {KE_IGNORE, 0x44, {KEY_PLAYPAUSE} }, | ||
| 111 | {KE_IGNORE, 0x45, {KEY_STOP} }, | ||
| 112 | {KE_IGNORE, 0x48, {KEY_VOLUMEUP} }, | ||
| 113 | {KE_IGNORE, 0x49, {KEY_VOLUMEDOWN} }, | ||
| 114 | {KE_IGNORE, 0x61, {KEY_SWITCHVIDEOMODE} }, | ||
| 115 | {KE_IGNORE, 0x62, {KEY_BRIGHTNESSUP} }, | ||
| 116 | {KE_IGNORE, 0x63, {KEY_BRIGHTNESSDOWN} }, | ||
| 106 | {KE_KEY, 0x64, {KEY_SWITCHVIDEOMODE} }, /* Display Switch */ | 117 | {KE_KEY, 0x64, {KEY_SWITCHVIDEOMODE} }, /* Display Switch */ |
| 118 | {KE_IGNORE, 0x81, {KEY_SLEEP} }, | ||
| 107 | {KE_KEY, 0x82, {KEY_TOUCHPAD_TOGGLE} }, /* Touch Pad On/Off */ | 119 | {KE_KEY, 0x82, {KEY_TOUCHPAD_TOGGLE} }, /* Touch Pad On/Off */ |
| 120 | {KE_IGNORE, 0x83, {KEY_TOUCHPAD_TOGGLE} }, | ||
| 108 | {KE_END, 0} | 121 | {KE_END, 0} |
| 109 | }; | 122 | }; |
| 110 | 123 | ||
| @@ -122,6 +135,7 @@ struct event_return_value { | |||
| 122 | */ | 135 | */ |
| 123 | #define ACER_WMID3_GDS_WIRELESS (1<<0) /* WiFi */ | 136 | #define ACER_WMID3_GDS_WIRELESS (1<<0) /* WiFi */ |
| 124 | #define ACER_WMID3_GDS_THREEG (1<<6) /* 3G */ | 137 | #define ACER_WMID3_GDS_THREEG (1<<6) /* 3G */ |
| 138 | #define ACER_WMID3_GDS_WIMAX (1<<7) /* WiMAX */ | ||
| 125 | #define ACER_WMID3_GDS_BLUETOOTH (1<<11) /* BT */ | 139 | #define ACER_WMID3_GDS_BLUETOOTH (1<<11) /* BT */ |
| 126 | 140 | ||
| 127 | struct lm_input_params { | 141 | struct lm_input_params { |
| @@ -737,8 +751,11 @@ WMI_execute_u32(u32 method_id, u32 in, u32 *out) | |||
| 737 | 751 | ||
| 738 | obj = (union acpi_object *) result.pointer; | 752 | obj = (union acpi_object *) result.pointer; |
| 739 | if (obj && obj->type == ACPI_TYPE_BUFFER && | 753 | if (obj && obj->type == ACPI_TYPE_BUFFER && |
| 740 | obj->buffer.length == sizeof(u32)) { | 754 | (obj->buffer.length == sizeof(u32) || |
| 755 | obj->buffer.length == sizeof(u64))) { | ||
| 741 | tmp = *((u32 *) obj->buffer.pointer); | 756 | tmp = *((u32 *) obj->buffer.pointer); |
| 757 | } else if (obj->type == ACPI_TYPE_INTEGER) { | ||
| 758 | tmp = (u32) obj->integer.value; | ||
| 742 | } else { | 759 | } else { |
| 743 | tmp = 0; | 760 | tmp = 0; |
| 744 | } | 761 | } |
| @@ -866,8 +883,11 @@ static acpi_status WMID_set_capabilities(void) | |||
| 866 | 883 | ||
| 867 | obj = (union acpi_object *) out.pointer; | 884 | obj = (union acpi_object *) out.pointer; |
| 868 | if (obj && obj->type == ACPI_TYPE_BUFFER && | 885 | if (obj && obj->type == ACPI_TYPE_BUFFER && |
| 869 | obj->buffer.length == sizeof(u32)) { | 886 | (obj->buffer.length == sizeof(u32) || |
| 887 | obj->buffer.length == sizeof(u64))) { | ||
| 870 | devices = *((u32 *) obj->buffer.pointer); | 888 | devices = *((u32 *) obj->buffer.pointer); |
| 889 | } else if (obj->type == ACPI_TYPE_INTEGER) { | ||
| 890 | devices = (u32) obj->integer.value; | ||
| 871 | } else { | 891 | } else { |
| 872 | kfree(out.pointer); | 892 | kfree(out.pointer); |
| 873 | return AE_ERROR; | 893 | return AE_ERROR; |
| @@ -876,7 +896,8 @@ static acpi_status WMID_set_capabilities(void) | |||
| 876 | dmi_walk(type_aa_dmi_decode, NULL); | 896 | dmi_walk(type_aa_dmi_decode, NULL); |
| 877 | if (!has_type_aa) { | 897 | if (!has_type_aa) { |
| 878 | interface->capability |= ACER_CAP_WIRELESS; | 898 | interface->capability |= ACER_CAP_WIRELESS; |
| 879 | interface->capability |= ACER_CAP_THREEG; | 899 | if (devices & 0x40) |
| 900 | interface->capability |= ACER_CAP_THREEG; | ||
| 880 | if (devices & 0x10) | 901 | if (devices & 0x10) |
| 881 | interface->capability |= AC | ||
