You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
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 ...
This commit is contained in:
@@ -1,184 +0,0 @@
|
||||
Acer Laptop WMI Extras Driver
|
||||
http://code.google.com/p/aceracpi
|
||||
Version 0.3
|
||||
4th April 2009
|
||||
|
||||
Copyright 2007-2009 Carlos Corbacho <carlos@strangeworlds.co.uk>
|
||||
|
||||
acer-wmi is a driver to allow you to control various parts of your Acer laptop
|
||||
hardware under Linux which are exposed via ACPI-WMI.
|
||||
|
||||
This driver completely replaces the old out-of-tree acer_acpi, which I am
|
||||
currently maintaining for bug fixes only on pre-2.6.25 kernels. All development
|
||||
work is now focused solely on acer-wmi.
|
||||
|
||||
Disclaimer
|
||||
**********
|
||||
|
||||
Acer and Wistron have provided nothing towards the development acer_acpi or
|
||||
acer-wmi. All information we have has been through the efforts of the developers
|
||||
and the users to discover as much as possible about the hardware.
|
||||
|
||||
As such, I do warn that this could break your hardware - this is extremely
|
||||
unlikely of course, but please bear this in mind.
|
||||
|
||||
Background
|
||||
**********
|
||||
|
||||
acer-wmi is derived from acer_acpi, originally developed by Mark
|
||||
Smith in 2005, then taken over by Carlos Corbacho in 2007, in order to activate
|
||||
the wireless LAN card under a 64-bit version of Linux, as acerhk[1] (the
|
||||
previous solution to the problem) relied on making 32 bit BIOS calls which are
|
||||
not possible in kernel space from a 64 bit OS.
|
||||
|
||||
[1] acerhk: http://www.cakey.de/acerhk/
|
||||
|
||||
Supported Hardware
|
||||
******************
|
||||
|
||||
NOTE: The Acer Aspire One is not supported hardware. It cannot work with
|
||||
acer-wmi until Acer fix their ACPI-WMI implementation on them, so has been
|
||||
blacklisted until that happens.
|
||||
|
||||
Please see the website for the current list of known working hardware:
|
||||
|
||||
http://code.google.com/p/aceracpi/wiki/SupportedHardware
|
||||
|
||||
If your laptop is not listed, or listed as unknown, and works with acer-wmi,
|
||||
please contact me with a copy of the DSDT.
|
||||
|
||||
If your Acer laptop doesn't work with acer-wmi, I would also like to see the
|
||||
DSDT.
|
||||
|
||||
To send me the DSDT, as root/sudo:
|
||||
|
||||
cat /sys/firmware/acpi/tables/DSDT > dsdt
|
||||
|
||||
And send me the resulting 'dsdt' file.
|
||||
|
||||
Usage
|
||||
*****
|
||||
|
||||
On Acer laptops, acer-wmi should already be autoloaded based on DMI matching.
|
||||
For non-Acer laptops, until WMI based autoloading support is added, you will
|
||||
need to manually load acer-wmi.
|
||||
|
||||
acer-wmi creates /sys/devices/platform/acer-wmi, and fills it with various
|
||||
files whose usage is detailed below, which enables you to control some of the
|
||||
following (varies between models):
|
||||
|
||||
* the wireless LAN card radio
|
||||
* inbuilt Bluetooth adapter
|
||||
* inbuilt 3G card
|
||||
* mail LED of your laptop
|
||||
* brightness of the LCD panel
|
||||
|
||||
Wireless
|
||||
********
|
||||
|
||||
With regards to wireless, all acer-wmi does is enable the radio on the card. It
|
||||
is not responsible for the wireless LED - once the radio is enabled, this is
|
||||
down to the wireless driver for your card. So the behaviour of the wireless LED,
|
||||
once you enable the radio, will depend on your hardware and driver combination.
|
||||
|
||||
e.g. With the BCM4318 on the Acer Aspire 5020 series:
|
||||
|
||||
ndiswrapper: Light blinks on when transmitting
|
||||
b43: Solid light, blinks off when transmitting
|
||||
|
||||
Wireless radio control is unconditionally enabled - all Acer laptops that support
|
||||
acer-wmi come with built-in wireless. However, should you feel so inclined to
|
||||
ever wish to remove the card, or swap it out at some point, please get in touch
|
||||
with me, as we may well be able to gain some data on wireless card detection.
|
||||
|
||||
The wireless radio is exposed through rfkill.
|
||||
|
||||
Bluetooth
|
||||
*********
|
||||
|
||||
For bluetooth, this is an internal USB dongle, so once enabled, you will get
|
||||
a USB device connection event, and a new USB device appears. When you disable
|
||||
bluetooth, you get the reverse - a USB device disconnect event, followed by the
|
||||
device disappearing again.
|
||||
|
||||
Bluetooth is autodetected by acer-wmi, so if you do not have a bluetooth module
|
||||
installed in your laptop, this file won't exist (please be aware that it is
|
||||
quite common for Acer not to fit bluetooth to their laptops - so just because
|
||||
you have a bluetooth button on the laptop, doesn't mean that bluetooth is
|
||||
installed).
|
||||
|
||||
For the adventurously minded - if you want to buy an internal bluetooth
|
||||
module off the internet that is compatible with your laptop and fit it, then
|
||||
it will work just fine with acer-wmi.
|
||||
|
||||
Bluetooth is exposed through rfkill.
|
||||
|
||||
3G
|
||||
**
|
||||
|
||||
3G is currently not autodetected, so the 'threeg' file is always created under
|
||||
sysfs. So far, no-one in possession of an Acer laptop with 3G built-in appears to
|
||||
have tried Linux, or reported back, so we don't have any information on this.
|
||||
|
||||
If you have an Acer laptop that does have a 3G card in, please contact me so we
|
||||
can properly detect these, and find out a bit more about them.
|
||||
|
||||
To read the status of the 3G card (0=off, 1=on):
|
||||
cat /sys/devices/platform/acer-wmi/threeg
|
||||
|
||||
To enable the 3G card:
|
||||
echo 1 > /sys/devices/platform/acer-wmi/threeg
|
||||
|
||||
To disable the 3G card:
|
||||
echo 0 > /sys/devices/platform/acer-wmi/threeg
|
||||
|
||||
To set the state of the 3G card when loading acer-wmi, pass:
|
||||
threeg=X (where X is 0 or 1)
|
||||
|
||||
Mail LED
|
||||
********
|
||||
|
||||
This can be found in most older Acer laptops supported by acer-wmi, and many
|
||||
newer ones - it is built into the 'mail' button, and blinks when active.
|
||||
|
||||
On newer (WMID) laptops though, we have no way of detecting the mail LED. If
|
||||
your laptop identifies itself in dmesg as a WMID model, then please try loading
|
||||
acer_acpi with:
|
||||
|
||||
force_series=2490
|
||||
|
||||
This will use a known alternative method of reading/ writing the mail LED. If
|
||||
it works, please report back to me with the DMI data from your laptop so this
|
||||
can be added to acer-wmi.
|
||||
|
||||
The LED is exposed through the LED subsystem, and can be found in:
|
||||
|
||||
/sys/devices/platform/acer-wmi/leds/acer-wmi::mail/
|
||||
|
||||
The mail LED is autodetected, so if you don't have one, the LED device won't
|
||||
be registered.
|
||||
|
||||
Backlight
|
||||
*********
|
||||
|
||||
The backlight brightness control is available on all acer-wmi supported
|
||||
hardware. The maximum brightness level is usually 15, but on some newer laptops
|
||||
it's 10 (this is again autodetected).
|
||||
|
||||
The backlight is exposed through the backlight subsystem, and can be found in:
|
||||
|
||||
/sys/devices/platform/acer-wmi/backlight/acer-wmi/
|
||||
|
||||
Credits
|
||||
*******
|
||||
|
||||
Olaf Tauber, who did the real hard work when he developed acerhk
|
||||
http://www.cakey.de/acerhk/
|
||||
All the authors of laptop ACPI modules in the kernel, whose work
|
||||
was an inspiration in the early days of acer_acpi
|
||||
Mathieu Segaud, who solved the problem with having to modprobe the driver
|
||||
twice in acer_acpi 0.2.
|
||||
Jim Ramsay, who added support for the WMID interface
|
||||
Mark Smith, who started the original acer_acpi
|
||||
|
||||
And the many people who have used both acer_acpi and acer-wmi.
|
||||
+3
-8
@@ -223,10 +223,8 @@ S: Maintained
|
||||
F: drivers/platform/x86/acerhdf.c
|
||||
|
||||
ACER WMI LAPTOP EXTRAS
|
||||
M: Carlos Corbacho <carlos@strangeworlds.co.uk>
|
||||
L: aceracpi@googlegroups.com (subscribers-only)
|
||||
M: Joey Lee <jlee@novell.com>
|
||||
L: platform-driver-x86@vger.kernel.org
|
||||
W: http://code.google.com/p/aceracpi
|
||||
S: Maintained
|
||||
F: drivers/platform/x86/acer-wmi.c
|
||||
|
||||
@@ -271,10 +269,8 @@ S: Supported
|
||||
F: drivers/acpi/video.c
|
||||
|
||||
ACPI WMI DRIVER
|
||||
M: Carlos Corbacho <carlos@strangeworlds.co.uk>
|
||||
L: platform-driver-x86@vger.kernel.org
|
||||
W: http://www.lesswatts.org/projects/acpi/
|
||||
S: Maintained
|
||||
S: Orphan
|
||||
F: drivers/platform/x86/wmi.c
|
||||
|
||||
AD1889 ALSA SOUND DRIVER
|
||||
@@ -3033,9 +3029,8 @@ S: Maintained
|
||||
F: drivers/net/wireless/hostap/
|
||||
|
||||
HP COMPAQ TC1100 TABLET WMI EXTRAS DRIVER
|
||||
M: Carlos Corbacho <carlos@strangeworlds.co.uk>
|
||||
L: platform-driver-x86@vger.kernel.org
|
||||
S: Odd Fixes
|
||||
S: Orphan
|
||||
F: drivers/platform/x86/tc1100-wmi.c
|
||||
|
||||
HP100: Driver for HP 10/100 Mbit/s Voice Grade Network Adapter Series
|
||||
|
||||
@@ -39,7 +39,7 @@ config ACER_WMI
|
||||
|
||||
config ACERHDF
|
||||
tristate "Acer Aspire One temperature and fan driver"
|
||||
depends on THERMAL && THERMAL_HWMON && ACPI
|
||||
depends on THERMAL && ACPI
|
||||
---help---
|
||||
This is a driver for Acer Aspire One netbooks. It allows to access
|
||||
the temperature sensor and to control the fan.
|
||||
@@ -760,4 +760,13 @@ config MXM_WMI
|
||||
MXM is a standard for laptop graphics cards, the WMI interface
|
||||
is required for switchable nvidia graphics machines
|
||||
|
||||
config INTEL_OAKTRAIL
|
||||
tristate "Intel Oaktrail Platform Extras"
|
||||
depends on ACPI
|
||||
depends on RFKILL && BACKLIGHT_CLASS_DEVICE && ACPI
|
||||
---help---
|
||||
Intel Oaktrail platform need this driver to provide interfaces to
|
||||
enable/disable the Camera, WiFi, BT etc. devices. If in doubt, say Y
|
||||
here; it will only load on supported platforms.
|
||||
|
||||
endif # X86_PLATFORM_DEVICES
|
||||
|
||||
@@ -41,5 +41,6 @@ obj-$(CONFIG_XO1_RFKILL) += xo1-rfkill.o
|
||||
obj-$(CONFIG_XO15_EBOOK) += xo15-ebook.o
|
||||
obj-$(CONFIG_IBM_RTL) += ibm_rtl.o
|
||||
obj-$(CONFIG_SAMSUNG_LAPTOP) += samsung-laptop.o
|
||||
obj-$(CONFIG_INTEL_MFLD_THERMAL) += intel_mid_thermal.o
|
||||
obj-$(CONFIG_MXM_WMI) += mxm-wmi.o
|
||||
obj-$(CONFIG_INTEL_MID_POWER_BUTTON) += intel_mid_powerbtn.o
|
||||
obj-$(CONFIG_INTEL_OAKTRAIL) += intel_oaktrail.o
|
||||
|
||||
+159
-25
@@ -98,13 +98,26 @@ enum acer_wmi_event_ids {
|
||||
|
||||
static const struct key_entry acer_wmi_keymap[] = {
|
||||
{KE_KEY, 0x01, {KEY_WLAN} }, /* WiFi */
|
||||
{KE_KEY, 0x03, {KEY_WLAN} }, /* WiFi */
|
||||
{KE_KEY, 0x12, {KEY_BLUETOOTH} }, /* BT */
|
||||
{KE_KEY, 0x21, {KEY_PROG1} }, /* Backup */
|
||||
{KE_KEY, 0x22, {KEY_PROG2} }, /* Arcade */
|
||||
{KE_KEY, 0x23, {KEY_PROG3} }, /* P_Key */
|
||||
{KE_KEY, 0x24, {KEY_PROG4} }, /* Social networking_Key */
|
||||
{KE_IGNORE, 0x41, {KEY_MUTE} },
|
||||
{KE_IGNORE, 0x42, {KEY_PREVIOUSSONG} },
|
||||
{KE_IGNORE, 0x43, {KEY_NEXTSONG} },
|
||||
{KE_IGNORE, 0x44, {KEY_PLAYPAUSE} },
|
||||
{KE_IGNORE, 0x45, {KEY_STOP} },
|
||||
{KE_IGNORE, 0x48, {KEY_VOLUMEUP} },
|
||||
{KE_IGNORE, 0x49, {KEY_VOLUMEDOWN} },
|
||||
{KE_IGNORE, 0x61, {KEY_SWITCHVIDEOMODE} },
|
||||
{KE_IGNORE, 0x62, {KEY_BRIGHTNESSUP} },
|
||||
{KE_IGNORE, 0x63, {KEY_BRIGHTNESSDOWN} },
|
||||
{KE_KEY, 0x64, {KEY_SWITCHVIDEOMODE} }, /* Display Switch */
|
||||
{KE_IGNORE, 0x81, {KEY_SLEEP} },
|
||||
{KE_KEY, 0x82, {KEY_TOUCHPAD_TOGGLE} }, /* Touch Pad On/Off */
|
||||
{KE_IGNORE, 0x83, {KEY_TOUCHPAD_TOGGLE} },
|
||||
{KE_END, 0}
|
||||
};
|
||||
|
||||
@@ -122,6 +135,7 @@ struct event_return_value {
|
||||
*/
|
||||
#define ACER_WMID3_GDS_WIRELESS (1<<0) /* WiFi */
|
||||
#define ACER_WMID3_GDS_THREEG (1<<6) /* 3G */
|
||||
#define ACER_WMID3_GDS_WIMAX (1<<7) /* WiMAX */
|
||||
#define ACER_WMID3_GDS_BLUETOOTH (1<<11) /* BT */
|
||||
|
||||
struct lm_input_params {
|
||||
@@ -737,8 +751,11 @@ WMI_execute_u32(u32 method_id, u32 in, u32 *out)
|
||||
|
||||
obj = (union acpi_object *) result.pointer;
|
||||
if (obj && obj->type == ACPI_TYPE_BUFFER &&
|
||||
obj->buffer.length == sizeof(u32)) {
|
||||
(obj->buffer.length == sizeof(u32) ||
|
||||
obj->buffer.length == sizeof(u64))) {
|
||||
tmp = *((u32 *) obj->buffer.pointer);
|
||||
} else if (obj->type == ACPI_TYPE_INTEGER) {
|
||||
tmp = (u32) obj->integer.value;
|
||||
} else {
|
||||
tmp = 0;
|
||||
}
|
||||
@@ -866,8 +883,11 @@ static acpi_status WMID_set_capabilities(void)
|
||||
|
||||
obj = (union acpi_object *) out.pointer;
|
||||
if (obj && obj->type == ACPI_TYPE_BUFFER &&
|
||||
obj->buffer.length == sizeof(u32)) {
|
||||
(obj->buffer.length == sizeof(u32) ||
|
||||
obj->buffer.length == sizeof(u64))) {
|
||||
devices = *((u32 *) obj->buffer.pointer);
|
||||
} else if (obj->type == ACPI_TYPE_INTEGER) {
|
||||
devices = (u32) obj->integer.value;
|
||||
} else {
|
||||
kfree(out.pointer);
|
||||
return AE_ERROR;
|
||||
@@ -876,7 +896,8 @@ static acpi_status WMID_set_capabilities(void)
|
||||
dmi_walk(type_aa_dmi_decode, NULL);
|
||||
if (!has_type_aa) {
|
||||
interface->capability |= ACER_CAP_WIRELESS;
|
||||
interface->capability |= ACER_CAP_THREEG;
|
||||
if (devices & 0x40)
|
||||
interface->capability |= ACER_CAP_THREEG;
|
||||
if (devices & 0x10)
|
||||
interface->capability |= ACER_CAP_BLUETOOTH;
|
||||
}
|
||||
@@ -961,10 +982,12 @@ static void __init acer_commandline_init(void)
|
||||
* These will all fail silently if the value given is invalid, or the
|
||||
* capability isn't available on the given interface
|
||||
*/
|
||||
set_u32(mailled, ACER_CAP_MAILLED);
|
||||
if (!has_type_aa)
|
||||
if (mailled >= 0)
|
||||
set_u32(mailled, ACER_CAP_MAILLED);
|
||||
if (!has_type_aa && threeg >= 0)
|
||||
set_u32(threeg, ACER_CAP_THREEG);
|
||||
set_u32(brightness, ACER_CAP_BRIGHTNESS);
|
||||
if (brightness >= 0)
|
||||
set_u32(brightness, ACER_CAP_BRIGHTNESS);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1081,7 +1104,7 @@ static acpi_status wmid3_get_device_status(u32 *value, u16 device)
|
||||
return AE_ERROR;
|
||||
}
|
||||
if (obj->buffer.length != 8) {
|
||||
pr_warning("Unknown buffer length %d\n", obj->buffer.length);
|
||||
pr_warn("Unknown buffer length %d\n", obj->buffer.length);
|
||||
kfree(obj);
|
||||
return AE_ERROR;
|
||||
}
|
||||
@@ -1090,8 +1113,8 @@ static acpi_status wmid3_get_device_status(u32 *value, u16 device)
|
||||
kfree(obj);
|
||||
|
||||
if (return_value.error_code || return_value.ec_return_value)
|
||||
pr_warning("Get Device Status failed: "
|
||||
"0x%x - 0x%x\n", return_value.error_code,
|
||||
pr_warn("Get Device Status failed: 0x%x - 0x%x\n",
|
||||
return_value.error_code,
|
||||
return_value.ec_return_value);
|
||||
else
|
||||
*value = !!(return_value.devices & device);
|
||||
@@ -1124,6 +1147,114 @@ static acpi_status get_device_status(u32 *value, u32 cap)
|
||||
}
|
||||
}
|
||||
|
||||
static acpi_status wmid3_set_device_status(u32 value, u16 device)
|
||||
{
|
||||
struct wmid3_gds_return_value return_value;
|
||||
acpi_status status;
|
||||
union acpi_object *obj;
|
||||
u16 devices;
|
||||
struct wmid3_gds_input_param params = {
|
||||
.function_num = 0x1,
|
||||
.hotkey_number = 0x01,
|
||||
.devices = ACER_WMID3_GDS_WIRELESS &
|
||||
ACER_WMID3_GDS_THREEG &
|
||||
ACER_WMID3_GDS_WIMAX &
|
||||
ACER_WMID3_GDS_BLUETOOTH,
|
||||
};
|
||||
struct acpi_buffer input = {
|
||||
sizeof(struct wmid3_gds_input_param),
|
||||
¶ms
|
||||
};
|
||||
struct acpi_buffer output = { ACPI_ALLOCATE_BUFFER, NULL };
|
||||
struct acpi_buffer output2 = { ACPI_ALLOCATE_BUFFER, NULL };
|
||||
|
||||
status = wmi_evaluate_method(WMID_GUID3, 0, 0x2, &input, &output);
|
||||
if (ACPI_FAILURE(status))
|
||||
return status;
|
||||
|
||||
obj = output.pointer;
|
||||
|
||||
if (!obj)
|
||||
return AE_ERROR;
|
||||
else if (obj->type != ACPI_TYPE_BUFFER) {
|
||||
kfree(obj);
|
||||
return AE_ERROR;
|
||||
}
|
||||
if (obj->buffer.length != 8) {
|
||||
pr_warning("Unknown buffer length %d\n", obj->buffer.length);
|
||||
kfree(obj);
|
||||
return AE_ERROR;
|
||||
}
|
||||
|
||||
return_value = *((struct wmid3_gds_return_value *)obj->buffer.pointer);
|
||||
kfree(obj);
|
||||
|
||||
if (return_value.error_code || return_value.ec_return_value) {
|
||||
pr_warning("Get Current Device Status failed: "
|
||||
"0x%x - 0x%x\n", return_value.error_code,
|
||||
return_value.ec_return_value);
|
||||
return status;
|
||||
}
|
||||
|
||||
devices = return_value.devices;
|
||||
params.function_num = 0x2;
|
||||
params.hotkey_number = 0x01;
|
||||
params.devices = (value) ? (devices | device) : (devices & ~device);
|
||||
|
||||
status = wmi_evaluate_method(WMID_GUID3, 0, 0x1, &input, &output2);
|
||||
if (ACPI_FAILURE(status))
|
||||
return status;
|
||||
|
||||
obj = output2.pointer;
|
||||
|
||||
if (!obj)
|
||||
return AE_ERROR;
|
||||
else if (obj->type != ACPI_TYPE_BUFFER) {
|
||||
kfree(obj);
|
||||
return AE_ERROR;
|
||||
}
|
||||
if (obj->buffer.length != 4) {
|
||||
pr_warning("Unknown buffer length %d\n", obj->buffer.length);
|
||||
kfree(obj);
|
||||
return AE_ERROR;
|
||||
}
|
||||
|
||||
return_value = *((struct wmid3_gds_return_value *)obj->buffer.pointer);
|
||||
kfree(obj);
|
||||
|
||||
if (return_value.error_code || return_value.ec_return_value)
|
||||
pr_warning("Set Device Status failed: "
|
||||
"0x%x - 0x%x\n", return_value.error_code,
|
||||
return_value.ec_return_value);
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
static acpi_status set_device_status(u32 value, u32 cap)
|
||||
{
|
||||
if (wmi_has_guid(WMID_GUID3)) {
|
||||
u16 device;
|
||||
|
||||
switch (cap) {
|
||||
case ACER_CAP_WIRELESS:
|
||||
device = ACER_WMID3_GDS_WIRELESS;
|
||||
break;
|
||||
case ACER_CAP_BLUETOOTH:
|
||||
device = ACER_WMID3_GDS_BLUETOOTH;
|
||||
break;
|
||||
case ACER_CAP_THREEG:
|
||||
device = ACER_WMID3_GDS_THREEG;
|
||||
break;
|
||||
default:
|
||||
return AE_ERROR;
|
||||
}
|
||||
return wmid3_set_device_status(value, device);
|
||||
|
||||
} else {
|
||||
return set_u32(value, cap);
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Rfkill devices
|
||||
*/
|
||||
@@ -1160,7 +1291,7 @@ static int acer_rfkill_set(void *data, bool blocked)
|
||||
u32 cap = (unsigned long)data;
|
||||
|
||||
if (rfkill_inited) {
|
||||
status = set_u32(!blocked, cap);
|
||||
status = set_device_status(!blocked, cap);
|
||||
if (ACPI_FAILURE(status))
|
||||
return -ENODEV;
|
||||
}
|
||||
@@ -1317,7 +1448,7 @@ static void acer_wmi_notify(u32 value, void *context)
|
||||
|
||||
status = wmi_get_event_data(value, &response);
|
||||
if (status != AE_OK) {
|
||||
pr_warning("bad event status 0x%x\n", status);
|
||||
pr_warn("bad event status 0x%x\n", status);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1326,12 +1457,12 @@ static void acer_wmi_notify(u32 value, void *context)
|
||||
if (!obj)
|
||||
return;
|
||||
if (obj->type != ACPI_TYPE_BUFFER) {
|
||||
pr_warning("Unknown response received %d\n", obj->type);
|
||||
pr_warn("Unknown response received %d\n", obj->type);
|
||||
kfree(obj);
|
||||
return;
|
||||
}
|
||||
if (obj->buffer.length != 8) {
|
||||
pr_warning("Unknown buffer length %d\n", obj->buffer.length);
|
||||
pr_warn("Unknown buffer length %d\n", obj->buffer.length);
|
||||
kfree(obj);
|
||||
return;
|
||||
}
|
||||
@@ -1343,7 +1474,7 @@ static void acer_wmi_notify(u32 value, void *context)
|
||||
case WMID_HOTKEY_EVENT:
|
||||
if (return_value.device_state) {
|
||||
u16 device_state = return_value.device_state;
|
||||
pr_debug("deivces states: 0x%x\n", device_state);
|
||||
pr_debug("device state: 0x%x\n", device_state);
|
||||
if (has_cap(ACER_CAP_WIRELESS))
|
||||
rfkill_set_sw_state(wireless_rfkill,
|
||||
!(device_state & ACER_WMID3_GDS_WIRELESS));
|
||||
@@ -1356,11 +1487,11 @@ static void acer_wmi_notify(u32 value, void *context)
|
||||
}
|
||||
if (!sparse_keymap_report_event(acer_wmi_input_dev,
|
||||
return_value.key_num, 1, true))
|
||||
pr_warning("Unknown key number - 0x%x\n",
|
||||
pr_warn("Unknown key number - 0x%x\n",
|
||||
return_value.key_num);
|
||||
break;
|
||||
default:
|
||||
pr_warning("Unknown function number - %d - %d\n",
|
||||
pr_warn("Unknown function number - %d - %d\n",
|
||||
return_value.function, return_value.key_num);
|
||||
break;
|
||||
}
|
||||
@@ -1389,7 +1520,7 @@ wmid3_set_lm_mode(struct lm_input_params *params,
|
||||
return AE_ERROR;
|
||||
}
|
||||
if (obj->buffer.length != 4) {
|
||||
pr_warning("Unknown buffer length %d\n", obj->buffer.length);
|
||||
pr_warn("Unknown buffer length %d\n", obj->buffer.length);
|
||||
kfree(obj);
|
||||
return AE_ERROR;
|
||||
}
|
||||
@@ -1414,11 +1545,11 @@ static int acer_wmi_enable_ec_raw(void)
|
||||
status = wmid3_set_lm_mode(¶ms, &return_value);
|
||||
|
||||
if (return_value.error_code || return_value.ec_return_value)
|
||||
pr_warning("Enabling EC raw mode failed: "
|
||||
"0x%x - 0x%x\n", return_value.error_code,
|
||||
return_value.ec_return_value);
|
||||
pr_warn("Enabling EC raw mode failed: 0x%x - 0x%x\n",
|
||||
return_value.error_code,
|
||||
return_value.ec_return_value);
|
||||
else
|
||||
pr_info("Enabled EC raw mode");
|
||||
pr_info("Enabled EC raw mode\n");
|
||||
|
||||
return status;
|
||||
}
|
||||
@@ -1437,9 +1568,9 @@ static int acer_wmi_enable_lm(void)
|
||||
status = wmid3_set_lm_mode(¶ms, &return_value);
|
||||
|
||||
if (return_value.error_code || return_value.ec_return_value)
|
||||
pr_warning("Enabling Launch Manager failed: "
|
||||
"0x%x - 0x%x\n", return_value.error_code,
|
||||
return_value.ec_return_value);
|
||||
pr_warn("Enabling Launch Manager failed: 0x%x - 0x%x\n",
|
||||
return_value.error_code,
|
||||
return_value.ec_return_value);
|
||||
|
||||
return status;
|
||||
}
|
||||
@@ -1506,8 +1637,11 @@ static u32 get_wmid_devices(void)
|
||||
|
||||
obj = (union acpi_object *) out.pointer;
|
||||
if (obj && obj->type == ACPI_TYPE_BUFFER &&
|
||||
obj->buffer.length == sizeof(u32)) {
|
||||
(obj->buffer.length == sizeof(u32) ||
|
||||
obj->buffer.length == sizeof(u64))) {
|
||||
devices = *((u32 *) obj->buffer.pointer);
|
||||
} else if (obj->type == ACPI_TYPE_INTEGER) {
|
||||
devices = (u32) obj->integer.value;
|
||||
}
|
||||
|
||||
kfree(out.pointer);
|
||||
|
||||
@@ -35,10 +35,8 @@
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/fs.h>
|
||||
#include <linux/dmi.h>
|
||||
#include <acpi/acpi_drivers.h>
|
||||
#include <linux/sched.h>
|
||||
#include <linux/acpi.h>
|
||||
#include <linux/thermal.h>
|
||||
#include <linux/platform_device.h>
|
||||
|
||||
|
||||
@@ -318,7 +318,7 @@ static int acpi_check_handle(acpi_handle handle, const char *method,
|
||||
|
||||
if (status != AE_OK) {
|
||||
if (ret)
|
||||
pr_warning("Error finding %s\n", method);
|
||||
pr_warn("Error finding %s\n", method);
|
||||
return -ENODEV;
|
||||
}
|
||||
return 0;
|
||||
@@ -383,7 +383,7 @@ static int asus_kled_lvl(struct asus_laptop *asus)
|
||||
rv = acpi_evaluate_integer(asus->handle, METHOD_KBD_LIGHT_GET,
|
||||
¶ms, &kblv);
|
||||
if (ACPI_FAILURE(rv)) {
|
||||
pr_warning("Error reading kled level\n");
|
||||
pr_warn("Error reading kled level\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
return kblv;
|
||||
@@ -397,7 +397,7 @@ static int asus_kled_set(struct asus_laptop *asus, int kblv)
|
||||
kblv = 0;
|
||||
|
||||
if (write_acpi_int(asus->handle, METHOD_KBD_LIGHT_SET, kblv)) {
|
||||
pr_warning("Keyboard LED display write failed\n");
|
||||
pr_warn("Keyboard LED display write failed\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
return 0;
|
||||
@@ -531,7 +531,7 @@ static int asus_read_brightness(struct backlight_device *bd)
|
||||
rv = acpi_evaluate_integer(asus->handle, METHOD_BRIGHTNESS_GET,
|
||||
NULL, &value);
|
||||
if (ACPI_FAILURE(rv))
|
||||
pr_warning("Error reading brightness\n");
|
||||
pr_warn("Error reading brightness\n");
|
||||
|
||||
return value;
|
||||
}
|
||||
@@ -541,7 +541,7 @@ static int asus_set_brightness(struct backlight_device *bd, int value)
|
||||
struct asus_laptop *asus = bl_get_data(bd);
|
||||
|
||||
if (write_acpi_int(asus->handle, METHOD_BRIGHTNESS_SET, value)) {
|
||||
pr_warning("Error changing brightness\n");
|
||||
pr_warn("Error changing brightness\n");
|
||||
return -EIO;
|
||||
}
|
||||
return 0;
|
||||
@@ -730,7 +730,7 @@ static ssize_t store_ledd(struct device *dev, struct device_attribute *attr,
|
||||
rv = parse_arg(buf, count, &value);
|
||||
if (rv > 0) {
|
||||
if (write_acpi_int(asus->handle, METHOD_LEDD, value)) {
|
||||
pr_warning("LED display write failed\n");
|
||||
pr_warn("LED display write failed\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
asus->ledd_status = (u32) value;
|
||||
@@ -752,7 +752,7 @@ static int asus_wireless_status(struct asus_laptop *asus, int mask)
|
||||
rv = acpi_evaluate_integer(asus->handle, METHOD_WL_STATUS,
|
||||
NULL, &status);
|
||||
if (ACPI_FAILURE(rv)) {
|
||||
pr_warning("Error reading Wireless status\n");
|
||||
pr_warn("Error reading Wireless status\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
return !!(status & mask);
|
||||
@@ -764,7 +764,7 @@ static int asus_wireless_status(struct asus_laptop *asus, int mask)
|
||||
static int asus_wlan_set(struct asus_laptop *asus, int status)
|
||||
{
|
||||
if (write_acpi_int(asus->handle, METHOD_WLAN, !!status)) {
|
||||
pr_warning("Error setting wlan status to %d", status);
|
||||
pr_warn("Error setting wlan status to %d\n", status);
|
||||
return -EIO;
|
||||
}
|
||||
return 0;
|
||||
@@ -792,7 +792,7 @@ static ssize_t store_wlan(struct device *dev, struct device_attribute *attr,
|
||||
static int asus_bluetooth_set(struct asus_laptop *asus, int status)
|
||||
{
|
||||
if (write_acpi_int(asus->handle, METHOD_BLUETOOTH, !!status)) {
|
||||
pr_warning("Error setting bluetooth status to %d", status);
|
||||
pr_warn("Error setting bluetooth status to %d\n", status);
|
||||
return -EIO;
|
||||
}
|
||||
return 0;
|
||||
@@ -821,7 +821,7 @@ static ssize_t store_bluetooth(struct device *dev,
|
||||
static int asus_wimax_set(struct asus_laptop *asus, int status)
|
||||
{
|
||||
if (write_acpi_int(asus->handle, METHOD_WIMAX, !!status)) {
|
||||
pr_warning("Error setting wimax status to %d", status);
|
||||
pr_warn("Error setting wimax status to %d\n", status);
|
||||
return -EIO;
|
||||
}
|
||||
return 0;
|
||||
@@ -850,7 +850,7 @@ static ssize_t store_wimax(struct device *dev,
|
||||
static int asus_wwan_set(struct asus_laptop *asus, int status)
|
||||
{
|
||||
if (write_acpi_int(asus->handle, METHOD_WWAN, !!status)) {
|
||||
pr_warning("Error setting wwan status to %d", status);
|
||||
pr_warn("Error setting wwan status to %d\n", status);
|
||||
return -EIO;
|
||||
}
|
||||
return 0;
|
||||
@@ -880,7 +880,7 @@ static void asus_set_display(struct asus_laptop *asus, int value)
|
||||
{
|
||||
/* no sanity check needed for now */
|
||||
if (write_acpi_int(asus->handle, METHOD_SWITCH_DISPLAY, value))
|
||||
pr_warning("Error setting display\n");
|
||||
pr_warn("Error setting display\n");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -909,7 +909,7 @@ static ssize_t store_disp(struct device *dev, struct device_attribute *attr,
|
||||
static void asus_als_switch(struct asus_laptop *asus, int value)
|
||||
{
|
||||
if (write_acpi_int(asus->handle, METHOD_ALS_CONTROL, value))
|
||||
pr_warning("Error setting light sensor switch\n");
|
||||
pr_warn("Error setting light sensor switch\n");
|
||||
asus->light_switch = value;
|
||||
}
|
||||
|
||||
@@ -937,7 +937,7 @@ static ssize_t store_lssw(struct device *dev, struct device_attribute *attr,
|
||||
static void asus_als_level(struct asus_laptop *asus, int value)
|
||||
{
|
||||
if (write_acpi_int(asus->handle, METHOD_ALS_LEVEL, value))
|
||||
pr_warning("Error setting light sensor level\n");
|
||||
pr_warn("Error setting light sensor level\n");
|
||||
asus->light_level = value;
|
||||
}
|
||||
|
||||
@@ -976,7 +976,7 @@ static int asus_gps_status(struct asus_laptop *asus)
|
||||
rv = acpi_evaluate_integer(asus->handle, METHOD_GPS_STATUS,
|
||||
NULL, &status);
|
||||
if (ACPI_FAILURE(rv)) {
|
||||
pr_warning("Error reading GPS status\n");
|
||||
pr_warn("Error reading GPS status\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
return !!status;
|
||||
@@ -1284,7 +1284,7 @@ static int asus_laptop_get_info(struct asus_laptop *asus)
|
||||
*/
|
||||
status = acpi_get_table(ACPI_SIG_DSDT, 1, &asus->dsdt_info);
|
||||
if (ACPI_FAILURE(status))
|
||||
pr_warning("Couldn't get the DSDT table header\n");
|
||||
pr_warn("Couldn't get the DSDT table header\n");
|
||||
|
||||
/* We have to write 0 on init this far for all ASUS models */
|
||||
if (write_acpi_int_ret(asus->handle, "INIT", 0, &buffer)) {
|
||||
@@ -1296,7 +1296,7 @@ static int asus_laptop_get_info(struct asus_laptop *asus)
|
||||
status =
|
||||
acpi_evaluate_integer(asus->handle, "BSTS", NULL, &bsts_result);
|
||||
if (ACPI_FAILURE(status))
|
||||
pr_warning("Error calling BSTS\n");
|
||||
pr_warn("Error calling BSTS\n");
|
||||
else if (bsts_result)
|
||||
pr_notice("BSTS called, 0x%02x returned\n",
|
||||
(uint) bsts_result);
|
||||
|
||||
@@ -425,7 +425,7 @@ static void asus_rfkill_hotplug(struct asus_wmi *asus)
|
||||
if (asus->hotplug_slot) {
|
||||
bus = pci_find_bus(0, 1);
|
||||
if (!bus) {
|
||||
pr_warning("Unable to find PCI bus 1?\n");
|
||||
pr_warn("Unable to find PCI bus 1?\n");
|
||||
goto out_unlock;
|
||||
}
|
||||
|
||||
@@ -436,12 +436,12 @@ static void asus_rfkill_hotplug(struct asus_wmi *asus)
|
||||
absent = (l == 0xffffffff);
|
||||
|
||||
if (blocked != absent) {
|
||||
pr_warning("BIOS says wireless lan is %s, "
|
||||
"but the pci device is %s\n",
|
||||
blocked ? "blocked" : "unblocked",
|
||||
absent ? "absent" : "present");
|
||||
pr_warning("skipped wireless hotplug as probably "
|
||||
"inappropriate for this model\n");
|
||||
pr_warn("BIOS says wireless lan is %s, "
|
||||
"but the pci device is %s\n",
|
||||
blocked ? "blocked" : "unblocked",
|
||||
absent ? "absent" : "present");
|
||||
pr_warn("skipped wireless hotplug as probably "
|
||||
"inappropriate for this model\n");
|
||||
goto out_unlock;
|
||||
}
|
||||
|
||||
@@ -500,7 +500,7 @@ static int asus_register_rfkill_notifier(struct asus_wmi *asus, char *node)
|
||||
ACPI_SYSTEM_NOTIFY,
|
||||
asus_rfkill_notify, asus);
|
||||
if (ACPI_FAILURE(status))
|
||||
pr_warning("Failed to register notify on %s\n", node);
|
||||
pr_warn("Failed to register notify on %s\n", node);
|
||||
} else
|
||||
return -ENODEV;
|
||||
|
||||
@@ -1223,7 +1223,7 @@ static int asus_wmi_sysfs_init(struct platform_device *device)
|
||||
/*
|
||||
* Platform device
|
||||
*/
|
||||
static int __init asus_wmi_platform_init(struct asus_wmi *asus)
|
||||
static int asus_wmi_platform_init(struct asus_wmi *asus)
|
||||
{
|
||||
int rv;
|
||||
|
||||
@@ -1583,12 +1583,12 @@ static int asus_wmi_probe(struct platform_device *pdev)
|
||||
int ret;
|
||||
|
||||
if (!wmi_has_guid(ASUS_WMI_MGMT_GUID)) {
|
||||
pr_warning("Management GUID not found\n");
|
||||
pr_warn("Management GUID not found\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
if (wdrv->event_guid && !wmi_has_guid(wdrv->event_guid)) {
|
||||
pr_warning("Event GUID not found\n");
|
||||
pr_warn("Event GUID not found\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
|
||||
@@ -30,6 +30,8 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/slab.h>
|
||||
@@ -581,8 +583,7 @@ static int read_led(const char *ledname, int ledmask)
|
||||
if (read_acpi_int(NULL, ledname, &led_status))
|
||||
return led_status;
|
||||
else
|
||||
printk(KERN_WARNING "Asus ACPI: Error reading LED "
|
||||
"status\n");
|
||||
pr_warn("Error reading LED status\n");
|
||||
}
|
||||
return (hotk->status & ledmask) ? 1 : 0;
|
||||
}
|
||||
@@ -621,8 +622,7 @@ write_led(const char __user *buffer, unsigned long count,
|
||||
led_out = !led_out;
|
||||
|
||||
if (!write_acpi_int(hotk->handle, ledname, led_out, NULL))
|
||||
printk(KERN_WARNING "Asus ACPI: LED (%s) write failed\n",
|
||||
ledname);
|
||||
pr_warn("LED (%s) write failed\n", ledname);
|
||||
|
||||
return rv;
|
||||
}
|
||||
@@ -679,8 +679,7 @@ static ssize_t ledd_proc_write(struct file *file, const char __user *buffer,
|
||||
if (rv > 0) {
|
||||
if (!write_acpi_int
|
||||
(hotk->handle, hotk->methods->mt_ledd, value, NULL))
|
||||
printk(KERN_WARNING
|
||||
"Asus ACPI: LED display write failed\n");
|
||||
pr_warn("LED display write failed\n");
|
||||
else
|
||||
hotk->ledd_status = (u32) value;
|
||||
}
|
||||
@@ -838,8 +837,7 @@ static int get_lcd_state(void)
|
||||
} else {
|
||||
/* We don't have to check anything if we are here */
|
||||
if (!read_acpi_int(NULL, hotk->methods->lcd_status, &lcd))
|
||||
printk(KERN_WARNING
|
||||
"Asus ACPI: Error reading LCD status\n");
|
||||
pr_warn("Error reading LCD status\n");
|
||||
|
||||
if (hotk->model == L2D)
|
||||
lcd = ~lcd;
|
||||
@@ -871,7 +869,7 @@ static int set_lcd_state(int value)
|
||||
the exact behaviour is simulated here */
|
||||
}
|
||||
if (ACPI_FAILURE(status))
|
||||
printk(KERN_WARNING "Asus ACPI: Error switching LCD\n");
|
||||
pr_warn("Error switching LCD\n");
|
||||
}
|
||||
return 0;
|
||||
|
||||
@@ -915,13 +913,11 @@ static int read_brightness(struct backlight_device *bd)
|
||||
if (hotk->methods->brightness_get) { /* SPLV/GPLV laptop */
|
||||
if (!read_acpi_int(hotk->handle, hotk->methods->brightness_get,
|
||||
&value))
|
||||
printk(KERN_WARNING
|
||||
"Asus ACPI: Error reading brightness\n");
|
||||
pr_warn("Error reading brightness\n");
|
||||
} else if (hotk->methods->brightness_status) { /* For D1 for example */
|
||||
if (!read_acpi_int(NULL, hotk->methods->brightness_status,
|
||||
&value))
|
||||
printk(KERN_WARNING
|
||||
"Asus ACPI: Error reading brightness\n");
|
||||
pr_warn("Error reading brightness\n");
|
||||
} else /* No GPLV method */
|
||||
value = hotk->brightness;
|
||||
return value;
|
||||
@@ -939,8 +935,7 @@ static int set_brightness(int value)
|
||||
if (hotk->methods->brightness_set) {
|
||||
if (!write_acpi_int(hotk->handle, hotk->methods->brightness_set,
|
||||
value, NULL)) {
|
||||
printk(KERN_WARNING
|
||||
"Asus ACPI: Error changing brightness\n");
|
||||
pr_warn("Error changing brightness\n");
|
||||
ret = -EIO;
|
||||
}
|
||||
goto out;
|
||||
@@ -955,8 +950,7 @@ static int set_brightness(int value)
|
||||
NULL, NULL);
|
||||
(value > 0) ? value-- : value++;
|
||||
if (ACPI_FAILURE(status)) {
|
||||
printk(KERN_WARNING
|
||||
"Asus ACPI: Error changing brightness\n");
|
||||
pr_warn("Error changing brightness\n");
|
||||
ret = -EIO;
|
||||
}
|
||||
}
|
||||
@@ -1008,7 +1002,7 @@ static void set_display(int value)
|
||||
/* no sanity check needed for now */
|
||||
if (!write_acpi_int(hotk->handle, hotk->methods->display_set,
|
||||
value, NULL))
|
||||
printk(KERN_WARNING "Asus ACPI: Error setting display\n");
|
||||
pr_warn("Error setting display\n");
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -1021,8 +1015,7 @@ static int disp_proc_show(struct seq_file *m, void *v)
|
||||
int value = 0;
|
||||
|
||||
if (!read_acpi_int(hotk->handle, hotk->methods->display_get, &value))
|
||||
printk(KERN_WARNING
|
||||
"Asus ACPI: Error reading display status\n");
|
||||
pr_warn("Error reading display status\n");
|
||||
value &= 0x07; /* needed for some models, shouldn't hurt others */
|
||||
seq_printf(m, "%d\n", value);
|
||||
return 0;
|
||||
@@ -1068,7 +1061,7 @@ asus_proc_add(char *name, const struct file_operations *proc_fops, mode_t mode,
|
||||
proc = proc_create_data(name, mode, acpi_device_dir(device),
|
||||
proc_fops, acpi_driver_data(device));
|
||||
if (!proc) {
|
||||
printk(KERN_WARNING " Unable to create %s fs entry\n", name);
|
||||
pr_warn(" Unable to create %s fs entry\n", name);
|
||||
return -1;
|
||||
}
|
||||
proc->uid = asus_uid;
|
||||
@@ -1085,8 +1078,8 @@ static int asus_hotk_add_fs(struct acpi_device *device)
|
||||
mode = S_IFREG | S_IRUGO | S_IWUSR | S_IWGRP;
|
||||
} else {
|
||||
mode = S_IFREG | S_IRUSR | S_IRGRP | S_IWUSR | S_IWGRP;
|
||||
printk(KERN_WARNING " asus_uid and asus_gid parameters are "
|
||||
"deprecated, use chown and chmod instead!\n");
|
||||
pr_warn(" asus_uid and asus_gid parameters are "
|
||||
"deprecated, use chown and chmod instead!\n");
|
||||
}
|
||||
|
||||
acpi_device_dir(device) = asus_proc_dir;
|
||||
@@ -1099,8 +1092,7 @@ static int asus_hotk_add_fs(struct acpi_device *device)
|
||||
proc->uid = asus_uid;
|
||||
proc->gid = asus_gid;
|
||||
} else {
|
||||
printk(KERN_WARNING " Unable to create " PROC_INFO
|
||||
" fs entry\n");
|
||||
pr_warn(" Unable to create " PROC_INFO " fs entry\n");
|
||||
}
|
||||
|
||||
if (hotk->methods->mt_wled) {
|
||||
@@ -1283,20 +1275,19 @@ static int asus_hotk_get_info(void)
|
||||
*/
|
||||
status = acpi_get_table(ACPI_SIG_DSDT, 1, &asus_info);
|
||||
if (ACPI_FAILURE(status))
|
||||
printk(KERN_WARNING " Couldn't get the DSDT table header\n");
|
||||
pr_warn(" Couldn't get the DSDT table header\n");
|
||||
|
||||
/* We have to write 0 on init this far for all ASUS models */
|
||||
if (!write_acpi_int(hotk->handle, "INIT", 0, &buffer)) {
|
||||
printk(KERN_ERR " Hotkey initialization failed\n");
|
||||
pr_err(" Hotkey initialization failed\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
/* This needs to be called for some laptops to init properly */
|
||||
if (!read_acpi_int(hotk->handle, "BSTS", &bsts_result))
|
||||
printk(KERN_WARNING " Error calling BSTS\n");
|
||||
pr_warn(" Error calling BSTS\n");
|
||||
else if (bsts_result)
|
||||
printk(KERN_NOTICE " BSTS called, 0x%02x returned\n",
|
||||
bsts_result);
|
||||
pr_notice(" BSTS called, 0x%02x returned\n", bsts_result);
|
||||
|
||||
/*
|
||||
* Try to match the object returned by INIT to the specific model.
|
||||
@@ -1324,23 +1315,21 @@ static int asus_hotk_get_info(void)
|
||||
if (asus_info &&
|
||||
strncmp(asus_info->oem_table_id, "ODEM", 4) == 0) {
|
||||
hotk->model = P30;
|
||||
printk(KERN_NOTICE
|
||||
" Samsung P30 detected, supported\n");
|
||||
pr_notice(" Samsung P30 detected, supported\n");
|
||||
hotk->methods = &model_conf[hotk->model];
|
||||
kfree(model);
|
||||
return 0;
|
||||
} else {
|
||||
hotk->model = M2E;
|
||||
printk(KERN_NOTICE " unsupported model %s, trying "
|
||||
"default values\n", string);
|
||||
printk(KERN_NOTICE
|
||||
" send /proc/acpi/dsdt to the developers\n");
|
||||
pr_notice(" unsupported model %s, trying default values\n",
|
||||
string);
|
||||
pr_notice(" send /proc/acpi/dsdt to the developers\n");
|
||||
kfree(model);
|
||||
return -ENODEV;
|
||||
}
|
||||
}
|
||||
hotk->methods = &model_conf[hotk->model];
|
||||
printk(KERN_NOTICE " %s model detected, supported\n", string);
|
||||
pr_notice(" %s model detected, supported\n", string);
|
||||
|
||||
/* Sort of per-model blacklist */
|
||||
if (strncmp(string, "L2B", 3) == 0)
|
||||
@@ -1385,7 +1374,7 @@ static int asus_hotk_check(void)
|
||||
if (hotk->device->status.present) {
|
||||
result = asus_hotk_get_info();
|
||||
} else {
|
||||
printk(KERN_ERR " Hotkey device not present, aborting\n");
|
||||
pr_err(" Hotkey device not present, aborting\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@@ -1399,8 +1388,7 @@ static int asus_hotk_add(struct acpi_device *device)
|
||||
acpi_status status = AE_OK;
|
||||
int result;
|
||||
|
||||
printk(KERN_NOTICE "Asus Laptop ACPI Extras version %s\n",
|
||||
ASUS_ACPI_VERSION);
|
||||
pr_notice("Asus Laptop ACPI Extras version %s\n", ASUS_ACPI_VERSION);
|
||||
|
||||
hotk = kzalloc(sizeof(struct asus_hotk), GFP_KERNEL);
|
||||
if (!hotk)
|
||||
@@ -1428,15 +1416,14 @@ static int asus_hotk_add(struct acpi_device *device)
|
||||
acpi_evaluate_object(NULL, hotk->methods->brightness_down,
|
||||
NULL, NULL);
|
||||
if (ACPI_FAILURE(status))
|
||||
printk(KERN_WARNING " Error changing brightness\n");
|
||||
pr_warn(" Error changing brightness\n");
|
||||
else {
|
||||
status =
|
||||
acpi_evaluate_object(NULL,
|
||||
hotk->methods->brightness_up,
|
||||
NULL, NULL);
|
||||
if (ACPI_FAILURE(status))
|
||||
printk(KERN_WARNING " Strange, error changing"
|
||||
" brightness\n");
|
||||
pr_warn(" Strange, error changing brightness\n");
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1488,7 +1475,7 @@ static int __init asus_acpi_init(void)
|
||||
|
||||
asus_proc_dir = proc_mkdir(PROC_ASUS, acpi_root_dir);
|
||||
if (!asus_proc_dir) {
|
||||
printk(KERN_ERR "Asus ACPI: Unable to create /proc entry\n");
|
||||
pr_err("Unable to create /proc entry\n");
|
||||
acpi_bus_unregister_driver(&asus_hotk_driver);
|
||||
return -ENODEV;
|
||||
}
|
||||
@@ -1513,7 +1500,7 @@ static int __init asus_acpi_init(void)
|
||||
&asus_backlight_data,
|
||||
&props);
|
||||
if (IS_ERR(asus_backlight_device)) {
|
||||
printk(KERN_ERR "Could not register asus backlight device\n");
|
||||
pr_err("Could not register asus backlight device\n");
|
||||
asus_backlight_device = NULL;
|
||||
asus_acpi_exit();
|
||||
return -ENODEV;
|
||||
|
||||
@@ -68,6 +68,8 @@
|
||||
* only enabled on a JHL90 board until it is verified that they work on the
|
||||
* other boards too. See the extra_features variable. */
|
||||
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
@@ -760,16 +762,14 @@ static struct rfkill *bt_rfkill;
|
||||
|
||||
static int dmi_check_cb(const struct dmi_system_id *id)
|
||||
{
|
||||
printk(KERN_INFO DRIVER_NAME": Identified laptop model '%s'\n",
|
||||
id->ident);
|
||||
pr_info("Identified laptop model '%s'\n", id->ident);
|
||||
extra_features = false;
|
||||
return 1;
|
||||
}
|
||||
|
||||
static int dmi_check_cb_extra(const struct dmi_system_id *id)
|
||||
{
|
||||
printk(KERN_INFO DRIVER_NAME": Identified laptop model '%s', "
|
||||
"enabling extra features\n",
|
||||
pr_info("Identified laptop model '%s', enabling extra features\n",
|
||||
id->ident);
|
||||
extra_features = true;
|
||||
return 1;
|
||||
@@ -956,14 +956,12 @@ static int __init compal_init(void)
|
||||
int ret;
|
||||
|
||||
if (acpi_disabled) {
|
||||
printk(KERN_ERR DRIVER_NAME": ACPI needs to be enabled for "
|
||||
"this driver to work!\n");
|
||||
pr_err("ACPI needs to be enabled for this driver to work!\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
if (!force && !dmi_check_system(compal_dmi_table)) {
|
||||
printk(KERN_ERR DRIVER_NAME": Motherboard not recognized (You "
|
||||
"could try the module's force-parameter)");
|
||||
pr_err("Motherboard not recognized (You could try the module's force-parameter)\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
@@ -998,8 +996,7 @@ static int __init compal_init(void)
|
||||
if (ret)
|
||||
goto err_rfkill;
|
||||
|
||||
printk(KERN_INFO DRIVER_NAME": Driver "DRIVER_VERSION
|
||||
" successfully loaded\n");
|
||||
pr_info("Driver " DRIVER_VERSION " successfully loaded\n");
|
||||
return 0;
|
||||
|
||||
err_rfkill:
|
||||
@@ -1064,7 +1061,7 @@ static void __exit compal_cleanup(void)
|
||||
rfkill_destroy(wifi_rfkill);
|
||||
rfkill_destroy(bt_rfkill);
|
||||
|
||||
printk(KERN_INFO DRIVER_NAME": Driver unloaded\n");
|
||||
pr_info("Driver unloaded\n");
|
||||
}
|
||||
|
||||
static int __devexit compal_remove(struct platform_device *pdev)
|
||||
@@ -1074,8 +1071,7 @@ static int __devexit compal_remove(struct platform_device *pdev)
|
||||
if (!extra_features)
|
||||
return 0;
|
||||
|
||||
printk(KERN_INFO DRIVER_NAME": Unloading: resetting fan control "
|
||||
"to motherboard\n");
|
||||
pr_info("Unloading: resetting fan control to motherboard\n");
|
||||
pwm_disable_control();
|
||||
|
||||
data = platform_get_drvdata(pdev);
|
||||
|
||||
@@ -11,6 +11,8 @@
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
@@ -434,8 +436,7 @@ static int __init dell_setup_rfkill(void)
|
||||
int ret;
|
||||
|
||||
if (dmi_check_system(dell_blacklist)) {
|
||||
printk(KERN_INFO "dell-laptop: Blacklisted hardware detected - "
|
||||
"not enabling rfkill\n");
|
||||
pr_info("Blacklisted hardware detected - not enabling rfkill\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -606,7 +607,7 @@ static int __init dell_init(void)
|
||||
dmi_walk(find_tokens, NULL);
|
||||
|
||||
if (!da_tokens) {
|
||||
printk(KERN_INFO "dell-laptop: Unable to find dmi tokens\n");
|
||||
pr_info("Unable to find dmi tokens\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
@@ -636,14 +637,13 @@ static int __init dell_init(void)
|
||||
ret = dell_setup_rfkill();
|
||||
|
||||
if (ret) {
|
||||
printk(KERN_WARNING "dell-laptop: Unable to setup rfkill\n");
|
||||
pr_warn("Unable to setup rfkill\n");
|
||||
goto fail_rfkill;
|
||||
}
|
||||
|
||||
ret = i8042_install_filter(dell_laptop_i8042_filter);
|
||||
if (ret) {
|
||||
printk(KERN_WARNING
|
||||
"dell-laptop: Unable to install key filter\n");
|
||||
pr_warn("Unable to install key filter\n");
|
||||
goto fail_filter;
|
||||
}
|
||||
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/kernel.h>
|
||||
@@ -138,7 +139,7 @@ static int __init dell_wmi_aio_init(void)
|
||||
|
||||
guid = dell_wmi_aio_find();
|
||||
if (!guid) {
|
||||
pr_warning("No known WMI GUID found\n");
|
||||
pr_warn("No known WMI GUID found\n");
|
||||
return -ENXIO;
|
||||
}
|
||||
|
||||
|
||||
@@ -23,6 +23,8 @@
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/init.h>
|
||||
@@ -141,7 +143,7 @@ static void dell_wmi_notify(u32 value, void *context)
|
||||
|
||||
status = wmi_get_event_data(value, &response);
|
||||
if (status != AE_OK) {
|
||||
printk(KERN_INFO "dell-wmi: bad event status 0x%x\n", status);
|
||||
pr_info("bad event status 0x%x\n", status);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -153,8 +155,8 @@ static void dell_wmi_notify(u32 value, void *context)
|
||||
u16 *buffer_entry = (u16 *)obj->buffer.pointer;
|
||||
|
||||
if (dell_new_hk_type && (buffer_entry[1] != 0x10)) {
|
||||
printk(KERN_INFO "dell-wmi: Received unknown WMI event"
|
||||
" (0x%x)\n", buffer_entry[1]);
|
||||
pr_info("Received unknown WMI event (0x%x)\n",
|
||||
buffer_entry[1]);
|
||||
kfree(obj);
|
||||
return;
|
||||
}
|
||||
@@ -167,8 +169,7 @@ static void dell_wmi_notify(u32 value, void *context)
|
||||
key = sparse_keymap_entry_from_scancode(dell_wmi_input_dev,
|
||||
reported_key);
|
||||
if (!key) {
|
||||
printk(KERN_INFO "dell-wmi: Unknown key %x pressed\n",
|
||||
reported_key);
|
||||
pr_info("Unknown key %x pressed\n", reported_key);
|
||||
} else if ((key->keycode == KEY_BRIGHTNESSUP ||
|
||||
key->keycode == KEY_BRIGHTNESSDOWN) && acpi_video) {
|
||||
/* Don't report brightness notifications that will also
|
||||
@@ -275,7 +276,7 @@ static int __init dell_wmi_init(void)
|
||||
acpi_status status;
|
||||
|
||||
if (!wmi_has_guid(DELL_EVENT_GUID)) {
|
||||
printk(KERN_WARNING "dell-wmi: No known WMI GUID found\n");
|
||||
pr_warn("No known WMI GUID found\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
@@ -290,9 +291,7 @@ static int __init dell_wmi_init(void)
|
||||
dell_wmi_notify, NULL);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
dell_wmi_input_destroy();
|
||||
printk(KERN_ERR
|
||||
"dell-wmi: Unable to register notify handler - %d\n",
|
||||
status);
|
||||
pr_err("Unable to register notify handler - %d\n", status);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
|
||||
@@ -228,7 +228,7 @@ static int set_acpi(struct eeepc_laptop *eeepc, int cm, int value)
|
||||
return -ENODEV;
|
||||
|
||||
if (write_acpi_int(eeepc->handle, method, value))
|
||||
pr_warning("Error writing %s\n", method);
|
||||
pr_warn("Error writing %s\n", method);
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -243,7 +243,7 @@ static int get_acpi(struct eeepc_laptop *eeepc, int cm)
|
||||
return -ENODEV;
|
||||
|
||||
if (read_acpi_int(eeepc->handle, method, &value))
|
||||
pr_warning("Error reading %s\n", method);
|
||||
pr_warn("Error reading %s\n", method);
|
||||
return value;
|
||||
}
|
||||
|
||||
@@ -261,7 +261,7 @@ static int acpi_setter_handle(struct eeepc_laptop *eeepc, int cm,
|
||||
status = acpi_get_handle(eeepc->handle, (char *)method,
|
||||
handle);
|
||||
if (status != AE_OK) {
|
||||
pr_warning("Error finding %s\n", method);
|
||||
pr_warn("Error finding %s\n", method);
|
||||
return -ENODEV;
|
||||
}
|
||||
return 0;
|
||||
@@ -417,7 +417,7 @@ static ssize_t store_cpufv_disabled(struct device *dev,
|
||||
switch (value) {
|
||||
case 0:
|
||||
if (eeepc->cpufv_disabled)
|
||||
pr_warning("cpufv enabled (not officially supported "
|
||||
pr_warn("cpufv enabled (not officially supported "
|
||||
"on this model)\n");
|
||||
eeepc->cpufv_disabled = false;
|
||||
return rv;
|
||||
@@ -609,7 +609,7 @@ static void eeepc_rfkill_hotplug(struct eeepc_laptop *eeepc, acpi_handle handle)
|
||||
bus = port->subordinate;
|
||||
|
||||
if (!bus) {
|
||||
pr_warning("Unable to find PCI bus?\n");
|
||||
pr_warn("Unable to find PCI bus 1?\n");
|
||||
goto out_unlock;
|
||||
}
|
||||
|
||||
@@ -621,12 +621,12 @@ static void eeepc_rfkill_hotplug(struct eeepc_laptop *eeepc, acpi_handle handle)
|
||||
absent = (l == 0xffffffff);
|
||||
|
||||
if (blocked != absent) {
|
||||
pr_warning("BIOS says wireless lan is %s, "
|
||||
"but the pci device is %s\n",
|
||||
pr_warn("BIOS says wireless lan is %s, "
|
||||
"but the pci device is %s\n",
|
||||
blocked ? "blocked" : "unblocked",
|
||||
absent ? "absent" : "present");
|
||||
pr_warning("skipped wireless hotplug as probably "
|
||||
"inappropriate for this model\n");
|
||||
pr_warn("skipped wireless hotplug as probably "
|
||||
"inappropriate for this model\n");
|
||||
goto out_unlock;
|
||||
}
|
||||
|
||||
@@ -691,7 +691,8 @@ static int eeepc_register_rfkill_notifier(struct eeepc_laptop *eeepc,
|
||||
eeepc_rfkill_notify,
|
||||
eeepc);
|
||||
if (ACPI_FAILURE(status))
|
||||
pr_warning("Failed to register notify on %s\n", node);
|
||||
pr_warn("Failed to register notify on %s\n", node);
|
||||
|
||||
/*
|
||||
* Refresh pci hotplug in case the rfkill state was
|
||||
* changed during setup.
|
||||
|
||||
@@ -84,7 +84,7 @@ static const struct key_entry eeepc_wmi_keymap[] = {
|
||||
static acpi_status eeepc_wmi_parse_device(acpi_handle handle, u32 level,
|
||||
void *context, void **retval)
|
||||
{
|
||||
pr_warning("Found legacy ATKD device (%s)", EEEPC_ACPI_HID);
|
||||
pr_warn("Found legacy ATKD device (%s)\n", EEEPC_ACPI_HID);
|
||||
*(bool *)context = true;
|
||||
return AE_CTRL_TERMINATE;
|
||||
}
|
||||
@@ -105,12 +105,12 @@ static int eeepc_wmi_check_atkd(void)
|
||||
static int eeepc_wmi_probe(struct platform_device *pdev)
|
||||
{
|
||||
if (eeepc_wmi_check_atkd()) {
|
||||
pr_warning("WMI device present, but legacy ATKD device is also "
|
||||
"present and enabled.");
|
||||
pr_warning("You probably booted with acpi_osi=\"Linux\" or "
|
||||
"acpi_osi=\"!Windows 2009\"");
|
||||
pr_warning("Can't load eeepc-wmi, use default acpi_osi "
|
||||
"(preferred) or eeepc-laptop");
|
||||
pr_warn("WMI device present, but legacy ATKD device is also "
|
||||
"present and enabled\n");
|
||||
pr_warn("You probably booted with acpi_osi=\"Linux\" or "
|
||||
"acpi_osi=\"!Windows 2009\"\n");
|
||||
pr_warn("Can't load eeepc-wmi, use default acpi_osi "
|
||||
"(preferred) or eeepc-laptop\n");
|
||||
return -EBUSY;
|
||||
}
|
||||
return 0;
|
||||
|
||||
@@ -56,6 +56,8 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/module.h>
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/init.h>
|
||||
@@ -585,8 +587,7 @@ static struct platform_driver fujitsupf_driver = {
|
||||
static void dmi_check_cb_common(const struct dmi_system_id *id)
|
||||
{
|
||||
acpi_handle handle;
|
||||
printk(KERN_INFO "fujitsu-laptop: Identified laptop model '%s'.\n",
|
||||
id->ident);
|
||||
pr_info("Identified laptop model '%s'\n", id->ident);
|
||||
if (use_alt_lcd_levels == -1) {
|
||||
if (ACPI_SUCCESS(acpi_get_handle(NULL,
|
||||
"\\_SB.PCI0.LPCB.FJEX.SBL2", &handle)))
|
||||
@@ -691,11 +692,11 @@ static int acpi_fujitsu_add(struct acpi_device *device)
|
||||
|
||||
result = acpi_bus_update_power(fujitsu->acpi_handle, &state);
|
||||
if (result) {
|
||||
printk(KERN_ERR "Error reading power state\n");
|
||||
pr_err("Error reading power state\n");
|
||||
goto err_unregister_input_dev;
|
||||
}
|
||||
|
||||
printk(KERN_INFO "ACPI: %s [%s] (%s)\n",
|
||||
pr_info("ACPI: %s [%s] (%s)\n",
|
||||
acpi_device_name(device), acpi_device_bid(device),
|
||||
!device->power.state ? "on" : "off");
|
||||
|
||||
@@ -707,7 +708,7 @@ static int acpi_fujitsu_add(struct acpi_device *device)
|
||||
if (ACPI_FAILURE
|
||||
(acpi_evaluate_object
|
||||
(device->handle, METHOD_NAME__INI, NULL, NULL)))
|
||||
printk(KERN_ERR "_INI Method failed\n");
|
||||
pr_err("_INI Method failed\n");
|
||||
}
|
||||
|
||||
/* do config (detect defaults) */
|
||||
@@ -827,7 +828,7 @@ static int acpi_fujitsu_hotkey_add(struct acpi_device *device)
|
||||
error = kfifo_alloc(&fujitsu_hotkey->fifo, RINGBUFFERSIZE * sizeof(int),
|
||||
GFP_KERNEL);
|
||||
if (error) {
|
||||
printk(KERN_ERR "kfifo_alloc failed\n");
|
||||
pr_err("kfifo_alloc failed\n");
|
||||
goto err_stop;
|
||||
}
|
||||
|
||||
@@ -859,13 +860,13 @@ static int acpi_fujitsu_hotkey_add(struct acpi_device *device)
|
||||
|
||||
result = acpi_bus_update_power(fujitsu_hotkey->acpi_handle, &state);
|
||||
if (result) {
|
||||
printk(KERN_ERR "Error reading power state\n");
|
||||
pr_err("Error reading power state\n");
|
||||
goto err_unregister_input_dev;
|
||||
}
|
||||
|
||||
printk(KERN_INFO "ACPI: %s [%s] (%s)\n",
|
||||
acpi_device_name(device), acpi_device_bid(device),
|
||||
!device->power.state ? "on" : "off");
|
||||
pr_info("ACPI: %s [%s] (%s)\n",
|
||||
acpi_device_name(device), acpi_device_bid(device),
|
||||
!device->power.state ? "on" : "off");
|
||||
|
||||
fujitsu_hotkey->dev = device;
|
||||
|
||||
@@ -875,7 +876,7 @@ static int acpi_fujitsu_hotkey_add(struct acpi_device *device)
|
||||
if (ACPI_FAILURE
|
||||
(acpi_evaluate_object
|
||||
(device->handle, METHOD_NAME__INI, NULL, NULL)))
|
||||
printk(KERN_ERR "_INI Method failed\n");
|
||||
pr_err("_INI Method failed\n");
|
||||
}
|
||||
|
||||
i = 0;
|
||||
@@ -897,8 +898,7 @@ static int acpi_fujitsu_hotkey_add(struct acpi_device *device)
|
||||
call_fext_func(FUNC_RFKILL, 0x4, 0x0, 0x0);
|
||||
|
||||
/* Suspect this is a keymap of the application panel, print it */
|
||||
printk(KERN_INFO "fujitsu-laptop: BTNI: [0x%x]\n",
|
||||
call_fext_func(FUNC_BUTTONS, 0x0, 0x0, 0x0));
|
||||
pr_info("BTNI: [0x%x]\n", call_fext_func(FUNC_BUTTONS, 0x0, 0x0, 0x0));
|
||||
|
||||
#if defined(CONFIG_LEDS_CLASS) || defined(CONFIG_LEDS_CLASS_MODULE)
|
||||
if (call_fext_func(FUNC_LEDS, 0x0, 0x0, 0x0) & LOGOLAMP_POWERON) {
|
||||
@@ -907,8 +907,8 @@ static int acpi_fujitsu_hotkey_add(struct acpi_device *device)
|
||||
if (result == 0) {
|
||||
fujitsu_hotkey->logolamp_registered = 1;
|
||||
} else {
|
||||
printk(KERN_ERR "fujitsu-laptop: Could not register "
|
||||
"LED handler for logo lamp, error %i\n", result);
|
||||
pr_err("Could not register LED handler for logo lamp, error %i\n",
|
||||
result);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -919,8 +919,8 @@ static int acpi_fujitsu_hotkey_add(struct acpi_device *device)
|
||||
if (result == 0) {
|
||||
fujitsu_hotkey->kblamps_registered = 1;
|
||||
} else {
|
||||
printk(KERN_ERR "fujitsu-laptop: Could not register "
|
||||
"LED handler for keyboard lamps, error %i\n", result);
|
||||
pr_err("Could not register LED handler for keyboard lamps, error %i\n",
|
||||
result);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
@@ -1169,8 +1169,7 @@ static int __init fujitsu_init(void)
|
||||
fujitsu->bl_device->props.power = 0;
|
||||
}
|
||||
|
||||
printk(KERN_INFO "fujitsu-laptop: driver " FUJITSU_DRIVER_VERSION
|
||||
" successfully loaded.\n");
|
||||
pr_info("driver " FUJITSU_DRIVER_VERSION " successfully loaded\n");
|
||||
|
||||
return 0;
|
||||
|
||||
@@ -1216,7 +1215,7 @@ static void __exit fujitsu_cleanup(void)
|
||||
|
||||
kfree(fujitsu);
|
||||
|
||||
printk(KERN_INFO "fujitsu-laptop: driver unloaded.\n");
|
||||
pr_info("driver unloaded\n");
|
||||
}
|
||||
|
||||
module_init(fujitsu_init);
|
||||
|
||||
@@ -26,6 +26,8 @@
|
||||
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
|
||||
*/
|
||||
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/delay.h>
|
||||
#include <linux/platform_device.h>
|
||||
#include <linux/input-polldev.h>
|
||||
@@ -238,7 +240,7 @@ static int hdaps_device_init(void)
|
||||
__check_latch(0x1611, 0x01))
|
||||
goto out;
|
||||
|
||||
printk(KERN_DEBUG "hdaps: initial latch check good (0x%02x).\n",
|
||||
printk(KERN_DEBUG "hdaps: initial latch check good (0x%02x)\n",
|
||||
__get_latch(0x1611));
|
||||
|
||||
outb(0x17, 0x1610);
|
||||
@@ -299,7 +301,7 @@ static int hdaps_probe(struct platform_device *dev)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
printk(KERN_INFO "hdaps: device successfully initialized.\n");
|
||||
pr_info("device successfully initialized\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -480,7 +482,7 @@ static struct attribute_group hdaps_attribute_group = {
|
||||
/* hdaps_dmi_match - found a match. return one, short-circuiting the hunt. */
|
||||
static int __init hdaps_dmi_match(const struct dmi_system_id *id)
|
||||
{
|
||||
printk(KERN_INFO "hdaps: %s detected.\n", id->ident);
|
||||
pr_info("%s detected\n", id->ident);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -488,8 +490,7 @@ static int __init hdaps_dmi_match(const struct dmi_system_id *id)
|
||||
static int __init hdaps_dmi_match_invert(const struct dmi_system_id *id)
|
||||
{
|
||||
hdaps_invert = (unsigned long)id->driver_data;
|
||||
printk(KERN_INFO "hdaps: inverting axis (%u) readings.\n",
|
||||
hdaps_invert);
|
||||
pr_info("inverting axis (%u) readings\n", hdaps_invert);
|
||||
return hdaps_dmi_match(id);
|
||||
}
|
||||
|
||||
@@ -543,7 +544,7 @@ static int __init hdaps_init(void)
|
||||
int ret;
|
||||
|
||||
if (!dmi_check_system(hdaps_whitelist)) {
|
||||
printk(KERN_WARNING "hdaps: supported laptop not found!\n");
|
||||
pr_warn("supported laptop not found!\n");
|
||||
ret = -ENODEV;
|
||||
goto out;
|
||||
}
|
||||
@@ -595,7 +596,7 @@ static int __init hdaps_init(void)
|
||||
if (ret)
|
||||
goto out_idev;
|
||||
|
||||
printk(KERN_INFO "hdaps: driver successfully loaded.\n");
|
||||
pr_info("driver successfully loaded\n");
|
||||
return 0;
|
||||
|
||||
out_idev:
|
||||
@@ -609,7 +610,7 @@ out_driver:
|
||||
out_region:
|
||||
release_region(HDAPS_LOW_PORT, HDAPS_NR_PORTS);
|
||||
out:
|
||||
printk(KERN_WARNING "hdaps: driver init failed (ret=%d)!\n", ret);
|
||||
pr_warn("driver init failed (ret=%d)!\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@@ -622,7 +623,7 @@ static void __exit hdaps_exit(void)
|
||||
platform_driver_unregister(&hdaps_driver);
|
||||
release_region(HDAPS_LOW_PORT, HDAPS_NR_PORTS);
|
||||
|
||||
printk(KERN_INFO "hdaps: driver unloaded.\n");
|
||||
pr_info("driver unloaded\n");
|
||||
}
|
||||
|
||||
module_init(hdaps_init);
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
|
||||
*/
|
||||
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/init.h>
|
||||
@@ -54,9 +56,6 @@ MODULE_ALIAS("wmi:5FB7F034-2C63-45e9-BE91-3D44E2C707E4");
|
||||
#define HPWMI_HOTKEY_QUERY 0xc
|
||||
#define HPWMI_WIRELESS2_QUERY 0x1b
|
||||
|
||||
#define PREFIX "HP WMI: "
|
||||
#define UNIMP "Unimplemented "
|
||||
|
||||
enum hp_wmi_radio {
|
||||
HPWMI_WIFI = 0,
|
||||
HPWMI_BLUETOOTH = 1,
|
||||
@@ -228,9 +227,8 @@ static int hp_wmi_perform_query(int query, int write, void *buffer,
|
||||
|
||||
if (bios_return->return_code) {
|
||||
if (bios_return->return_code != HPWMI_RET_UNKNOWN_CMDTYPE)
|
||||
printk(KERN_WARNING PREFIX "query 0x%x returned "
|
||||
"error 0x%x\n",
|
||||
query, bios_return->return_code);
|
||||
pr_warn("query 0x%x returned error 0x%x\n",
|
||||
query, bios_return->return_code);
|
||||
kfree(obj);
|
||||
return bios_return->return_code;
|
||||
}
|
||||
@@ -384,8 +382,7 @@ static int hp_wmi_rfkill2_refresh(void)
|
||||
|
||||
if (num >= state.count ||
|
||||
devstate->rfkill_id != rfkill2[i].id) {
|
||||
printk(KERN_WARNING PREFIX "power configuration of "
|
||||
"the wireless devices unexpectedly changed\n");
|
||||
pr_warn("power configuration of the wireless devices unexpectedly changed\n");
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -471,7 +468,7 @@ static void hp_wmi_notify(u32 value, void *context)
|
||||
|
||||
status = wmi_get_event_data(value, &response);
|
||||
if (status != AE_OK) {
|
||||
printk(KERN_INFO PREFIX "bad event status 0x%x\n", status);
|
||||
pr_info("bad event status 0x%x\n", status);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -480,8 +477,7 @@ static void hp_wmi_notify(u32 value, void *context)
|
||||
if (!obj)
|
||||
return;
|
||||
if (obj->type != ACPI_TYPE_BUFFER) {
|
||||
printk(KERN_INFO "hp-wmi: Unknown response received %d\n",
|
||||
obj->type);
|
||||
pr_info("Unknown response received %d\n", obj->type);
|
||||
kfree(obj);
|
||||
return;
|
||||
}
|
||||
@@ -498,8 +494,7 @@ static void hp_wmi_notify(u32 value, void *context)
|
||||
event_id = *location;
|
||||
event_data = *(location + 2);
|
||||
} else {
|
||||
printk(KERN_INFO "hp-wmi: Unknown buffer length %d\n",
|
||||
obj->buffer.length);
|
||||
pr_info("Unknown buffer length %d\n", obj->buffer.length);
|
||||
kfree(obj);
|
||||
return;
|
||||
}
|
||||
@@ -527,8 +522,7 @@ static void hp_wmi_notify(u32 value, void *context)
|
||||
|
||||
if (!sparse_keymap_report_event(hp_wmi_input_dev,
|
||||
key_code, 1, true))
|
||||
printk(KERN_INFO PREFIX "Unknown key code - 0x%x\n",
|
||||
key_code);
|
||||
pr_info("Unknown key code - 0x%x\n", key_code);
|
||||
break;
|
||||
case HPWMI_WIRELESS:
|
||||
if (rfkill2_count) {
|
||||
@@ -550,14 +544,12 @@ static void hp_wmi_notify(u32 value, void *context)
|
||||
hp_wmi_get_hw_state(HPWMI_WWAN));
|
||||
break;
|
||||
case HPWMI_CPU_BATTERY_THROTTLE:
|
||||
printk(KERN_INFO PREFIX UNIMP "CPU throttle because of 3 Cell"
|
||||
" battery event detected\n");
|
||||
pr_info("Unimplemented CPU throttle because of 3 Cell battery event detected\n");
|
||||
break;
|
||||
case HPWMI_LOCK_SWITCH:
|
||||
break;
|
||||
default:
|
||||
printk(KERN_INFO PREFIX "Unknown event_id - %d - 0x%x\n",
|
||||
event_id, event_data);
|
||||
pr_info("Unknown event_id - %d - 0x%x\n", event_id, event_data);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -705,7 +697,7 @@ static int __devinit hp_wmi_rfkill2_setup(struct platform_device *device)
|
||||
return err;
|
||||
|
||||
if (state.count > HPWMI_MAX_RFKILL2_DEVICES) {
|
||||
printk(KERN_WARNING PREFIX "unable to parse 0x1b query output\n");
|
||||
pr_warn("unable to parse 0x1b query output\n");
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
@@ -727,14 +719,14 @@ static int __devinit hp_wmi_rfkill2_setup(struct platform_device *device)
|
||||
name = "hp-wwan";
|
||||
break;
|
||||
default:
|
||||
printk(KERN_WARNING PREFIX "unknown device type 0x%x\n",
|
||||
state.device[i].radio_type);
|
||||
pr_warn("unknown device type 0x%x\n",
|
||||
state.device[i].radio_type);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!state.device[i].vendor_id) {
|
||||
printk(KERN_WARNING PREFIX "zero device %d while %d "
|
||||
"reported\n", i, state.count);
|
||||
pr_warn("zero device %d while %d reported\n",
|
||||
i, state.count);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -755,8 +747,7 @@ static int __devinit hp_wmi_rfkill2_setup(struct platform_device *device)
|
||||
IS_HWBLOCKED(state.device[i].power));
|
||||
|
||||
if (!(state.device[i].power & HPWMI_POWER_BIOS))
|
||||
printk(KERN_INFO PREFIX "device %s blocked by BIOS\n",
|
||||
name);
|
||||
pr_info("device %s blocked by BIOS\n", name);
|
||||
|
||||
err = rfkill_register(rfkill);
|
||||
if (err) {
|
||||
|
||||
@@ -22,6 +22,8 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/delay.h>
|
||||
#include <linux/module.h>
|
||||
@@ -69,9 +71,10 @@ struct ibm_rtl_table {
|
||||
#define RTL_SIGNATURE 0x0000005f4c54525fULL
|
||||
#define RTL_MASK 0x000000ffffffffffULL
|
||||
|
||||
#define RTL_DEBUG(A, ...) do { \
|
||||
if (debug) \
|
||||
pr_info("ibm-rtl: " A, ##__VA_ARGS__ ); \
|
||||
#define RTL_DEBUG(fmt, ...) \
|
||||
do { \
|
||||
if (debug) \
|
||||
pr_info(fmt, ##__VA_ARGS__); \
|
||||
} while (0)
|
||||
|
||||
static DEFINE_MUTEX(rtl_lock);
|
||||
@@ -114,7 +117,7 @@ static int ibm_rtl_write(u8 value)
|
||||
int ret = 0, count = 0;
|
||||
static u32 cmd_port_val;
|
||||
|
||||
RTL_DEBUG("%s(%d)\n", __FUNCTION__, value);
|
||||
RTL_DEBUG("%s(%d)\n", __func__, value);
|
||||
|
||||
value = value == 1 ? RTL_CMD_ENTER_PRTM : RTL_CMD_EXIT_PRTM;
|
||||
|
||||
@@ -144,8 +147,8 @@ static int ibm_rtl_write(u8 value)
|
||||
while (ioread8(&rtl_table->command)) {
|
||||
msleep(10);
|
||||
if (count++ > 500) {
|
||||
pr_err("ibm-rtl: Hardware not responding to "
|
||||
"mode switch request\n");
|
||||
pr_err("Hardware not responding to "
|
||||
"mode switch request\n");
|
||||
ret = -EIO;
|
||||
break;
|
||||
}
|
||||
@@ -250,7 +253,7 @@ static int __init ibm_rtl_init(void) {
|
||||
int ret = -ENODEV, i;
|
||||
|
||||
if (force)
|
||||
pr_warning("ibm-rtl: module loaded by force\n");
|
||||
pr_warn("module loaded by force\n");
|
||||
/* first ensure that we are running on IBM HW */
|
||||
else if (efi_enabled || !dmi_check_system(ibm_rtl_dmi_table))
|
||||
return -ENODEV;
|
||||
@@ -288,19 +291,19 @@ static int __init ibm_rtl_init(void) {
|
||||
if ((readq(&tmp->signature) & RTL_MASK) == RTL_SIGNATURE) {
|
||||
phys_addr_t addr;
|
||||
unsigned int plen;
|
||||
RTL_DEBUG("found RTL_SIGNATURE at %#llx\n", (u64)tmp);
|
||||
RTL_DEBUG("found RTL_SIGNATURE at %p\n", tmp);
|
||||
rtl_table = tmp;
|
||||
/* The address, value, width and offset are platform
|
||||
* dependent and found in the ibm_rtl_table */
|
||||
rtl_cmd_width = ioread8(&rtl_table->cmd_granularity);
|
||||
rtl_cmd_type = ioread8(&rtl_table->cmd_address_type);
|
||||
RTL_DEBUG("rtl_cmd_width = %u, rtl_cmd_type = %u\n",
|
||||
rtl_cmd_width, rtl_cmd_type);
|
||||
rtl_cmd_width, rtl_cmd_type);
|
||||
addr = ioread32(&rtl_table->cmd_port_address);
|
||||
RTL_DEBUG("addr = %#llx\n", (unsigned long long)addr);
|
||||
plen = rtl_cmd_width/sizeof(char);
|
||||
rtl_cmd_addr = rtl_port_map(addr, plen);
|
||||
RTL_DEBUG("rtl_cmd_addr = %#llx\n", (u64)rtl_cmd_addr);
|
||||
RTL_DEBUG("rtl_cmd_addr = %p\n", rtl_cmd_addr);
|
||||
if (!rtl_cmd_addr) {
|
||||
ret = -ENOMEM;
|
||||
break;
|
||||
|
||||
@@ -20,6 +20,8 @@
|
||||
* 02110-1301, USA.
|
||||
*/
|
||||
|
||||
#define pr_fmt(fmt) KBUILD_MODNAME ": " fmt
|
||||
|
||||
#include <linux/kernel.h>
|
||||
#include <linux/module.h>
|
||||
#include <linux/init.h>
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user