Merge branch 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6
* 'release' of git://git.kernel.org/pub/scm/linux/kernel/git/lenb/linux-acpi-2.6: Merge branches 'release' and 'buildfix' into release acer-wmi - Add documentation sonypi - Move sonypi.txt to Documentation/laptops sony-laptop - Move sony-laptop.txt to Documentation/laptops thinkpad-acpi - Move thinkpad-acpi.txt to Documentation/laptops Documentation - Create laptops sub-directory ACPI: thermal: buildfix for CONFIG_THERMAL=n cpuidle: build fix for non-x86 acer-wmi: Fix backlight on AMW0 (V1) laptops tc1100-wmi: Mark as experimental ACPI: SBS: Host controller must initialize before SBS.
This commit is contained in:
commit
acac103e2d
|
@ -227,6 +227,8 @@ kref.txt
|
|||
- docs on adding reference counters (krefs) to kernel objects.
|
||||
laptop-mode.txt
|
||||
- how to conserve battery power using laptop-mode.
|
||||
laptops/
|
||||
- directory with laptop related info and laptop driver documentation.
|
||||
ldm.txt
|
||||
- a brief description of LDM (Windows Dynamic Disks).
|
||||
leds-class.txt
|
||||
|
@ -351,10 +353,6 @@ sh/
|
|||
- directory with info on porting Linux to a new architecture.
|
||||
smart-config.txt
|
||||
- description of the Smart Config makefile feature.
|
||||
sony-laptop.txt
|
||||
- Sony Notebook Control Driver (SNC) Readme.
|
||||
sonypi.txt
|
||||
- info on Linux Sony Programmable I/O Device support.
|
||||
sound/
|
||||
- directory with info on sound card support.
|
||||
sparc/
|
||||
|
@ -385,8 +383,6 @@ sysrq.txt
|
|||
- info on the magic SysRq key.
|
||||
telephony/
|
||||
- directory with info on telephony (e.g. voice over IP) support.
|
||||
thinkpad-acpi.txt
|
||||
- information on the (IBM and Lenovo) ThinkPad ACPI Extras driver.
|
||||
time_interpolators.txt
|
||||
- info on time interpolators.
|
||||
tipar.txt
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
00-INDEX
|
||||
- This file
|
||||
acer-wmi.txt
|
||||
- information on the Acer Laptop WMI Extras driver.
|
||||
sony-laptop.txt
|
||||
- Sony Notebook Control Driver (SNC) Readme.
|
||||
sonypi.txt
|
||||
- info on Linux Sony Programmable I/O Device support.
|
||||
thinkpad-acpi.txt
|
||||
- information on the (IBM and Lenovo) ThinkPad ACPI Extras driver.
|
|
@ -0,0 +1,202 @@
|
|||
Acer Laptop WMI Extras Driver
|
||||
http://code.google.com/p/aceracpi
|
||||
Version 0.1
|
||||
9th February 2008
|
||||
|
||||
Copyright 2007-2008 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
|
||||
******************
|
||||
|
||||
Please see the website for the current list of known working hardare:
|
||||
|
||||
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/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
|
||||
bcm43xx/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.
|
||||
|
||||
To read the status of the wireless radio (0=off, 1=on):
|
||||
cat /sys/devices/platform/acer-wmi/wireless
|
||||
|
||||
To enable the wireless radio:
|
||||
echo 1 > /sys/devices/platform/acer-wmi/wireless
|
||||
|
||||
To disable the wireless radio:
|
||||
echo 0 > /sys/devices/platform/acer-wmi/wireless
|
||||
|
||||
To set the state of the wireless radio when loading acer-wmi, pass:
|
||||
wireless=X (where X is 0 or 1)
|
||||
|
||||
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.
|
||||
|
||||
To read the status of the bluetooth module (0=off, 1=on):
|
||||
cat /sys/devices/platform/acer-wmi/wireless
|
||||
|
||||
To enable the bluetooth module:
|
||||
echo 1 > /sys/devices/platform/acer-wmi/bluetooth
|
||||
|
||||
To disable the bluetooth module:
|
||||
echo 0 > /sys/devices/platform/acer-wmi/bluetooth
|
||||
|
||||
To set the state of the bluetooth module when loading acer-wmi, pass:
|
||||
bluetooth=X (where X is 0 or 1)
|
||||
|
||||
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-mail:green/
|
||||
|
||||
The mail LED is autodetected, so if you don't have one, the LED device won't
|
||||
be registered.
|
||||
|
||||
If you have a mail LED that is not green, please report this to me.
|
||||
|
||||
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.informatik.hu-berlin.de/~tauber/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.
|
|
@ -114,4 +114,3 @@ Bugs/Limitations:
|
|||
sonypi driver (through /dev/sonypi) does not try to use the
|
||||
sony-laptop driver. In the future, spicctrl could try sonypi first,
|
||||
and if it isn't present, try sony-laptop instead.
|
||||
|
|
@ -102,6 +102,9 @@ config ARCH_HAS_ILOG2_U32
|
|||
config ARCH_HAS_ILOG2_U64
|
||||
def_bool n
|
||||
|
||||
config ARCH_HAS_CPU_IDLE_WAIT
|
||||
def_bool y
|
||||
|
||||
config GENERIC_CALIBRATE_DELAY
|
||||
def_bool y
|
||||
|
||||
|
|
|
@ -60,5 +60,5 @@ obj-$(CONFIG_ACPI_ASUS) += asus_acpi.o
|
|||
obj-$(CONFIG_ACPI_TOSHIBA) += toshiba_acpi.o
|
||||
obj-$(CONFIG_ACPI_HOTPLUG_MEMORY) += acpi_memhotplug.o
|
||||
obj-$(CONFIG_ACPI_PROCFS_POWER) += cm_sbs.o
|
||||
obj-$(CONFIG_ACPI_SBS) += sbs.o
|
||||
obj-$(CONFIG_ACPI_SBS) += sbshc.o
|
||||
obj-$(CONFIG_ACPI_SBS) += sbs.o
|
||||
|
|
|
@ -827,7 +827,7 @@ static int acpi_battery_add(struct acpi_sbs *sbs, int id)
|
|||
#endif
|
||||
printk(KERN_INFO PREFIX "%s [%s]: Battery Slot [%s] (battery %s)\n",
|
||||
ACPI_SBS_DEVICE_NAME, acpi_device_bid(sbs->device),
|
||||
battery->name, sbs->battery->present ? "present" : "absent");
|
||||
battery->name, battery->present ? "present" : "absent");
|
||||
return result;
|
||||
}
|
||||
|
||||
|
|
|
@ -117,6 +117,11 @@ static int acpi_smbus_transaction(struct acpi_smb_hc *hc, u8 protocol,
|
|||
int ret = -EFAULT, i;
|
||||
u8 temp, sz = 0;
|
||||
|
||||
if (!hc) {
|
||||
printk(KERN_ERR PREFIX "host controller is not configured\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
mutex_lock(&hc->lock);
|
||||
if (smb_hc_read(hc, ACPI_SMB_PROTOCOL, &temp))
|
||||
goto end;
|
||||
|
@ -292,6 +297,7 @@ static int acpi_smbus_hc_remove(struct acpi_device *device, int type)
|
|||
hc = acpi_driver_data(device);
|
||||
acpi_ec_remove_query_handler(hc->ec, hc->query_bit);
|
||||
kfree(hc);
|
||||
acpi_driver_data(device) = NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -875,7 +875,7 @@ config SONYPI
|
|||
Device which can be found in many (all ?) Sony Vaio laptops.
|
||||
|
||||
If you have one of those laptops, read
|
||||
<file:Documentation/sonypi.txt>, and say Y or M here.
|
||||
<file:Documentation/laptops/sonypi.txt>, and say Y or M here.
|
||||
|
||||
To compile this driver as a module, choose M here: the
|
||||
module will be called sonypi.
|
||||
|
|
|
@ -27,6 +27,17 @@ static void (*pm_idle_old)(void);
|
|||
|
||||
static int enabled_devices;
|
||||
|
||||
#if defined(CONFIG_ARCH_HAS_CPU_IDLE_WAIT)
|
||||
static void cpuidle_kick_cpus(void)
|
||||
{
|
||||
cpu_idle_wait();
|
||||
}
|
||||
#elif defined(CONFIG_SMP)
|
||||
# error "Arch needs cpu_idle_wait() equivalent here"
|
||||
#else /* !CONFIG_ARCH_HAS_CPU_IDLE_WAIT && !CONFIG_SMP */
|
||||
static void cpuidle_kick_cpus(void) {}
|
||||
#endif
|
||||
|
||||
/**
|
||||
* cpuidle_idle_call - the main idle loop
|
||||
*
|
||||
|
@ -83,7 +94,7 @@ void cpuidle_uninstall_idle_handler(void)
|
|||
{
|
||||
if (enabled_devices && (pm_idle != pm_idle_old)) {
|
||||
pm_idle = pm_idle_old;
|
||||
cpu_idle_wait();
|
||||
cpuidle_kick_cpus();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -114,6 +114,9 @@ config ACER_WMI
|
|||
wireless radio and bluetooth control, and on some laptops,
|
||||
exposes the mail LED and LCD backlight.
|
||||
|
||||
For more information about this driver see
|
||||
<file:Documentation/laptops/acer-wmi.txt>
|
||||
|
||||
If you have an ACPI-WMI compatible Acer/ Wistron laptop, say Y or M
|
||||
here.
|
||||
|
||||
|
@ -152,8 +155,9 @@ config FUJITSU_LAPTOP
|
|||
If you have a Fujitsu laptop, say Y or M here.
|
||||
|
||||
config TC1100_WMI
|
||||
tristate "HP Compaq TC1100 Tablet WMI Extras"
|
||||
tristate "HP Compaq TC1100 Tablet WMI Extras (EXPERIMENTAL)"
|
||||
depends on X86 && !X86_64
|
||||
depends on EXPERIMENTAL
|
||||
depends on ACPI
|
||||
select ACPI_WMI
|
||||
---help---
|
||||
|
@ -192,7 +196,7 @@ config SONY_LAPTOP
|
|||
screen brightness control, Fn keys and allows powering on/off some
|
||||
devices.
|
||||
|
||||
Read <file:Documentation/sony-laptop.txt> for more information.
|
||||
Read <file:Documentation/laptops/sony-laptop.txt> for more information.
|
||||
|
||||
config SONYPI_COMPAT
|
||||
bool "Sonypi compatibility"
|
||||
|
@ -211,8 +215,9 @@ config THINKPAD_ACPI
|
|||
This is a driver for the IBM and Lenovo ThinkPad laptops. It adds
|
||||
support for Fn-Fx key combinations, Bluetooth control, video
|
||||
output switching, ThinkLight control, UltraBay eject and more.
|
||||
For more information about this driver see
|
||||
<file:Documentation/thinkpad-acpi.txt> and <http://ibm-acpi.sf.net/> .
|
||||
For more information about this driver see
|
||||
<file:Documentation/laptops/thinkpad-acpi.txt> and
|
||||
<http://ibm-acpi.sf.net/> .
|
||||
|
||||
This driver was formerly known as ibm-acpi.
|
||||
|
||||
|
|
|
@ -428,11 +428,9 @@ static acpi_status AMW0_set_u32(u32 value, u32 cap, struct wmi_interface *iface)
|
|||
if (value > max_brightness)
|
||||
return AE_BAD_PARAMETER;
|
||||
switch (quirks->brightness) {
|
||||
case 1:
|
||||
return ec_write(0x83, value);
|
||||
default:
|
||||
return AE_BAD_ADDRESS;
|
||||
break;
|
||||
return ec_write(0x83, value);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
return AE_BAD_ADDRESS;
|
||||
|
|
|
@ -79,7 +79,9 @@ struct thermal_zone_device {
|
|||
};
|
||||
|
||||
struct thermal_zone_device *thermal_zone_device_register(char *, int, void *,
|
||||
struct thermal_zone_device_ops *);
|
||||
struct
|
||||
thermal_zone_device_ops
|
||||
*);
|
||||
void thermal_zone_device_unregister(struct thermal_zone_device *);
|
||||
|
||||
int thermal_zone_bind_cooling_device(struct thermal_zone_device *, int,
|
||||
|
@ -87,8 +89,23 @@ int thermal_zone_bind_cooling_device(struct thermal_zone_device *, int,
|
|||
int thermal_zone_unbind_cooling_device(struct thermal_zone_device *, int,
|
||||
struct thermal_cooling_device *);
|
||||
|
||||
#ifdef CONFIG_THERMAL
|
||||
struct thermal_cooling_device *thermal_cooling_device_register(char *, void *,
|
||||
struct thermal_cooling_device_ops *);
|
||||
struct
|
||||
thermal_cooling_device_ops
|
||||
*);
|
||||
void thermal_cooling_device_unregister(struct thermal_cooling_device *);
|
||||
#else
|
||||
static inline struct thermal_cooling_device
|
||||
*thermal_cooling_device_register(char *c, void *v,
|
||||
struct thermal_cooling_device_ops *t)
|
||||
{
|
||||
return NULL;
|
||||
}
|
||||
static inline
|
||||
void thermal_cooling_device_unregister(struct thermal_cooling_device *t)
|
||||
{
|
||||
};
|
||||
#endif
|
||||
|
||||
#endif /* __THERMAL_H__ */
|
||||
#endif /* __THERMAL_H__ */
|
||||
|
|
Loading…
Reference in New Issue