mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-15 16:24:13 +08:00
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: acpi-wmi: unsigned cannot be less than 0 thinkpad-acpi: fix module autoloading for older models acer-wmi: Unmark as 'experimental' acpi-wmi: Unmark as 'experimental' acer-wmi: double free in acer_rfkill_exit() platform/x86: depends instead of select for laptop platform drivers asus-laptop: use select instead of depends on eeepc-laptop: restore acpi_generate_proc_event() asus-laptop: restore acpi_generate_proc_event() acpi: check for pxm_to_node_map overflow ACPI: remove doubled status checking ACPI suspend: Blacklist Toshiba Satellite L300 that requires to set SCI_EN directly on resume Revert "ACPI: make some IO ports off-limits to AML" suspend: switch the Asus Pundit P1-AH2 to old ACPI sleep ordering
This commit is contained in:
commit
19695ec03d
@ -758,8 +758,7 @@ static int __init acpi_bus_init(void)
|
|||||||
acpi_status status = AE_OK;
|
acpi_status status = AE_OK;
|
||||||
extern acpi_status acpi_os_initialize1(void);
|
extern acpi_status acpi_os_initialize1(void);
|
||||||
|
|
||||||
|
acpi_os_initialize1();
|
||||||
status = acpi_os_initialize1();
|
|
||||||
|
|
||||||
status =
|
status =
|
||||||
acpi_enable_subsystem(ACPI_NO_HARDWARE_INIT | ACPI_NO_ACPI_ENABLE);
|
acpi_enable_subsystem(ACPI_NO_HARDWARE_INIT | ACPI_NO_ACPI_ENABLE);
|
||||||
@ -769,12 +768,6 @@ static int __init acpi_bus_init(void)
|
|||||||
goto error1;
|
goto error1;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (ACPI_FAILURE(status)) {
|
|
||||||
printk(KERN_ERR PREFIX
|
|
||||||
"Unable to initialize ACPI OS objects\n");
|
|
||||||
goto error1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* ACPI 2.0 requires the EC driver to be loaded and work before
|
* ACPI 2.0 requires the EC driver to be loaded and work before
|
||||||
* the EC device is found in the namespace (i.e. before acpi_initialize_objects()
|
* the EC device is found in the namespace (i.e. before acpi_initialize_objects()
|
||||||
|
@ -277,7 +277,7 @@ int acpi_get_node(acpi_handle *handle)
|
|||||||
int pxm, node = -1;
|
int pxm, node = -1;
|
||||||
|
|
||||||
pxm = acpi_get_pxm(handle);
|
pxm = acpi_get_pxm(handle);
|
||||||
if (pxm >= 0)
|
if (pxm >= 0 && pxm < MAX_PXM_DOMAINS)
|
||||||
node = acpi_map_pxm_to_node(pxm);
|
node = acpi_map_pxm_to_node(pxm);
|
||||||
|
|
||||||
return node;
|
return node;
|
||||||
|
@ -1317,54 +1317,6 @@ acpi_os_validate_interface (char *interface)
|
|||||||
return AE_SUPPORT;
|
return AE_SUPPORT;
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef CONFIG_X86
|
|
||||||
|
|
||||||
struct aml_port_desc {
|
|
||||||
uint start;
|
|
||||||
uint end;
|
|
||||||
char* name;
|
|
||||||
char warned;
|
|
||||||
};
|
|
||||||
|
|
||||||
static struct aml_port_desc aml_invalid_port_list[] = {
|
|
||||||
{0x20, 0x21, "PIC0", 0},
|
|
||||||
{0xA0, 0xA1, "PIC1", 0},
|
|
||||||
{0x4D0, 0x4D1, "ELCR", 0}
|
|
||||||
};
|
|
||||||
|
|
||||||
/*
|
|
||||||
* valid_aml_io_address()
|
|
||||||
*
|
|
||||||
* if valid, return true
|
|
||||||
* else invalid, warn once, return false
|
|
||||||
*/
|
|
||||||
static bool valid_aml_io_address(uint address, uint length)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
int entries = sizeof(aml_invalid_port_list) / sizeof(struct aml_port_desc);
|
|
||||||
|
|
||||||
for (i = 0; i < entries; ++i) {
|
|
||||||
if ((address >= aml_invalid_port_list[i].start &&
|
|
||||||
address <= aml_invalid_port_list[i].end) ||
|
|
||||||
(address + length >= aml_invalid_port_list[i].start &&
|
|
||||||
address + length <= aml_invalid_port_list[i].end))
|
|
||||||
{
|
|
||||||
if (!aml_invalid_port_list[i].warned)
|
|
||||||
{
|
|
||||||
printk(KERN_ERR "ACPI: Denied BIOS AML access"
|
|
||||||
" to invalid port 0x%x+0x%x (%s)\n",
|
|
||||||
address, length,
|
|
||||||
aml_invalid_port_list[i].name);
|
|
||||||
aml_invalid_port_list[i].warned = 1;
|
|
||||||
}
|
|
||||||
return false; /* invalid */
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return true; /* valid */
|
|
||||||
}
|
|
||||||
#else
|
|
||||||
static inline bool valid_aml_io_address(uint address, uint length) { return true; }
|
|
||||||
#endif
|
|
||||||
/******************************************************************************
|
/******************************************************************************
|
||||||
*
|
*
|
||||||
* FUNCTION: acpi_os_validate_address
|
* FUNCTION: acpi_os_validate_address
|
||||||
@ -1394,8 +1346,6 @@ acpi_os_validate_address (
|
|||||||
|
|
||||||
switch (space_id) {
|
switch (space_id) {
|
||||||
case ACPI_ADR_SPACE_SYSTEM_IO:
|
case ACPI_ADR_SPACE_SYSTEM_IO:
|
||||||
if (!valid_aml_io_address(address, length))
|
|
||||||
return AE_AML_ILLEGAL_ADDRESS;
|
|
||||||
case ACPI_ADR_SPACE_SYSTEM_MEMORY:
|
case ACPI_ADR_SPACE_SYSTEM_MEMORY:
|
||||||
/* Only interference checks against SystemIO and SytemMemory
|
/* Only interference checks against SystemIO and SytemMemory
|
||||||
are needed */
|
are needed */
|
||||||
|
@ -378,6 +378,22 @@ static struct dmi_system_id __initdata acpisleep_dmi_table[] = {
|
|||||||
DMI_MATCH(DMI_PRODUCT_NAME, "Macmini1,1"),
|
DMI_MATCH(DMI_PRODUCT_NAME, "Macmini1,1"),
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.callback = init_old_suspend_ordering,
|
||||||
|
.ident = "Asus Pundit P1-AH2 (M2N8L motherboard)",
|
||||||
|
.matches = {
|
||||||
|
DMI_MATCH(DMI_BOARD_VENDOR, "ASUSTek Computer INC."),
|
||||||
|
DMI_MATCH(DMI_BOARD_NAME, "M2N8L"),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.callback = init_set_sci_en_on_resume,
|
||||||
|
.ident = "Toshiba Satellite L300",
|
||||||
|
.matches = {
|
||||||
|
DMI_MATCH(DMI_SYS_VENDOR, "TOSHIBA"),
|
||||||
|
DMI_MATCH(DMI_PRODUCT_NAME, "Satellite L300"),
|
||||||
|
},
|
||||||
|
},
|
||||||
{},
|
{},
|
||||||
};
|
};
|
||||||
#endif /* CONFIG_SUSPEND */
|
#endif /* CONFIG_SUSPEND */
|
||||||
|
@ -15,8 +15,7 @@ menuconfig X86_PLATFORM_DEVICES
|
|||||||
if X86_PLATFORM_DEVICES
|
if X86_PLATFORM_DEVICES
|
||||||
|
|
||||||
config ACER_WMI
|
config ACER_WMI
|
||||||
tristate "Acer WMI Laptop Extras (EXPERIMENTAL)"
|
tristate "Acer WMI Laptop Extras"
|
||||||
depends on EXPERIMENTAL
|
|
||||||
depends on ACPI
|
depends on ACPI
|
||||||
depends on LEDS_CLASS
|
depends on LEDS_CLASS
|
||||||
depends on NEW_LEDS
|
depends on NEW_LEDS
|
||||||
@ -39,9 +38,9 @@ config ASUS_LAPTOP
|
|||||||
tristate "Asus Laptop Extras (EXPERIMENTAL)"
|
tristate "Asus Laptop Extras (EXPERIMENTAL)"
|
||||||
depends on ACPI
|
depends on ACPI
|
||||||
depends on EXPERIMENTAL && !ACPI_ASUS
|
depends on EXPERIMENTAL && !ACPI_ASUS
|
||||||
depends on LEDS_CLASS
|
select LEDS_CLASS
|
||||||
depends on NEW_LEDS
|
select NEW_LEDS
|
||||||
depends on BACKLIGHT_CLASS_DEVICE
|
select BACKLIGHT_CLASS_DEVICE
|
||||||
depends on INPUT
|
depends on INPUT
|
||||||
---help---
|
---help---
|
||||||
This is the new Linux driver for Asus laptops. It may also support some
|
This is the new Linux driver for Asus laptops. It may also support some
|
||||||
@ -185,11 +184,11 @@ config SONYPI_COMPAT
|
|||||||
config THINKPAD_ACPI
|
config THINKPAD_ACPI
|
||||||
tristate "ThinkPad ACPI Laptop Extras"
|
tristate "ThinkPad ACPI Laptop Extras"
|
||||||
depends on ACPI
|
depends on ACPI
|
||||||
|
depends on INPUT
|
||||||
select BACKLIGHT_LCD_SUPPORT
|
select BACKLIGHT_LCD_SUPPORT
|
||||||
select BACKLIGHT_CLASS_DEVICE
|
select BACKLIGHT_CLASS_DEVICE
|
||||||
select HWMON
|
select HWMON
|
||||||
select NVRAM
|
select NVRAM
|
||||||
select INPUT
|
|
||||||
select NEW_LEDS
|
select NEW_LEDS
|
||||||
select LEDS_CLASS
|
select LEDS_CLASS
|
||||||
select NET
|
select NET
|
||||||
@ -315,9 +314,8 @@ config EEEPC_LAPTOP
|
|||||||
|
|
||||||
|
|
||||||
config ACPI_WMI
|
config ACPI_WMI
|
||||||
tristate "WMI (EXPERIMENTAL)"
|
tristate "WMI"
|
||||||
depends on ACPI
|
depends on ACPI
|
||||||
depends on EXPERIMENTAL
|
|
||||||
help
|
help
|
||||||
This driver adds support for the ACPI-WMI (Windows Management
|
This driver adds support for the ACPI-WMI (Windows Management
|
||||||
Instrumentation) mapper device (PNP0C14) found on some systems.
|
Instrumentation) mapper device (PNP0C14) found on some systems.
|
||||||
|
@ -1026,7 +1026,7 @@ static void acer_rfkill_exit(void)
|
|||||||
kfree(wireless_rfkill->data);
|
kfree(wireless_rfkill->data);
|
||||||
rfkill_unregister(wireless_rfkill);
|
rfkill_unregister(wireless_rfkill);
|
||||||
if (has_cap(ACER_CAP_BLUETOOTH)) {
|
if (has_cap(ACER_CAP_BLUETOOTH)) {
|
||||||
kfree(wireless_rfkill->data);
|
kfree(bluetooth_rfkill->data);
|
||||||
rfkill_unregister(bluetooth_rfkill);
|
rfkill_unregister(bluetooth_rfkill);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
|
@ -815,6 +815,7 @@ static int asus_setkeycode(struct input_dev *dev, int scancode, int keycode)
|
|||||||
static void asus_hotk_notify(acpi_handle handle, u32 event, void *data)
|
static void asus_hotk_notify(acpi_handle handle, u32 event, void *data)
|
||||||
{
|
{
|
||||||
static struct key_entry *key;
|
static struct key_entry *key;
|
||||||
|
u16 count;
|
||||||
|
|
||||||
/* TODO Find a better way to handle events count. */
|
/* TODO Find a better way to handle events count. */
|
||||||
if (!hotk)
|
if (!hotk)
|
||||||
@ -832,9 +833,11 @@ static void asus_hotk_notify(acpi_handle handle, u32 event, void *data)
|
|||||||
lcd_blank(FB_BLANK_POWERDOWN);
|
lcd_blank(FB_BLANK_POWERDOWN);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
count = hotk->event_count[event % 128]++;
|
||||||
|
acpi_bus_generate_proc_event(hotk->device, event, count);
|
||||||
acpi_bus_generate_netlink_event(hotk->device->pnp.device_class,
|
acpi_bus_generate_netlink_event(hotk->device->pnp.device_class,
|
||||||
dev_name(&hotk->device->dev), event,
|
dev_name(&hotk->device->dev), event,
|
||||||
hotk->event_count[event % 128]++);
|
count);
|
||||||
|
|
||||||
if (hotk->inputdev) {
|
if (hotk->inputdev) {
|
||||||
key = asus_get_entry_by_scancode(event);
|
key = asus_get_entry_by_scancode(event);
|
||||||
|
@ -557,13 +557,17 @@ static void eeepc_rfkill_notify(acpi_handle handle, u32 event, void *data)
|
|||||||
static void eeepc_hotk_notify(acpi_handle handle, u32 event, void *data)
|
static void eeepc_hotk_notify(acpi_handle handle, u32 event, void *data)
|
||||||
{
|
{
|
||||||
static struct key_entry *key;
|
static struct key_entry *key;
|
||||||
|
u16 count;
|
||||||
|
|
||||||
if (!ehotk)
|
if (!ehotk)
|
||||||
return;
|
return;
|
||||||
if (event >= NOTIFY_BRN_MIN && event <= NOTIFY_BRN_MAX)
|
if (event >= NOTIFY_BRN_MIN && event <= NOTIFY_BRN_MAX)
|
||||||
notify_brn();
|
notify_brn();
|
||||||
|
count = ehotk->event_count[event % 128]++;
|
||||||
|
acpi_bus_generate_proc_event(ehotk->device, event, count);
|
||||||
acpi_bus_generate_netlink_event(ehotk->device->pnp.device_class,
|
acpi_bus_generate_netlink_event(ehotk->device->pnp.device_class,
|
||||||
dev_name(&ehotk->device->dev), event,
|
dev_name(&ehotk->device->dev), event,
|
||||||
ehotk->event_count[event % 128]++);
|
count);
|
||||||
if (ehotk->inputdev) {
|
if (ehotk->inputdev) {
|
||||||
key = eepc_get_entry_by_scancode(event);
|
key = eepc_get_entry_by_scancode(event);
|
||||||
if (key) {
|
if (key) {
|
||||||
|
@ -7532,7 +7532,7 @@ MODULE_ALIAS(TPACPI_DRVR_SHORTNAME);
|
|||||||
* if it is not there yet.
|
* if it is not there yet.
|
||||||
*/
|
*/
|
||||||
#define IBM_BIOS_MODULE_ALIAS(__type) \
|
#define IBM_BIOS_MODULE_ALIAS(__type) \
|
||||||
MODULE_ALIAS("dmi:bvnIBM:bvr" __type "ET??WW")
|
MODULE_ALIAS("dmi:bvnIBM:bvr" __type "ET??WW*")
|
||||||
|
|
||||||
/* Non-ancient thinkpads */
|
/* Non-ancient thinkpads */
|
||||||
MODULE_ALIAS("dmi:bvnIBM:*:svnIBM:*:pvrThinkPad*:rvnIBM:*");
|
MODULE_ALIAS("dmi:bvnIBM:*:svnIBM:*:pvrThinkPad*:rvnIBM:*");
|
||||||
@ -7541,9 +7541,9 @@ MODULE_ALIAS("dmi:bvnLENOVO:*:svnLENOVO:*:pvrThinkPad*:rvnLENOVO:*");
|
|||||||
/* Ancient thinkpad BIOSes have to be identified by
|
/* Ancient thinkpad BIOSes have to be identified by
|
||||||
* BIOS type or model number, and there are far less
|
* BIOS type or model number, and there are far less
|
||||||
* BIOS types than model numbers... */
|
* BIOS types than model numbers... */
|
||||||
IBM_BIOS_MODULE_ALIAS("I[B,D,H,I,M,N,O,T,W,V,Y,Z]");
|
IBM_BIOS_MODULE_ALIAS("I[BDHIMNOTWVYZ]");
|
||||||
IBM_BIOS_MODULE_ALIAS("1[0,3,6,8,A-G,I,K,M-P,S,T]");
|
IBM_BIOS_MODULE_ALIAS("1[0368A-GIKM-PST]");
|
||||||
IBM_BIOS_MODULE_ALIAS("K[U,X-Z]");
|
IBM_BIOS_MODULE_ALIAS("K[UX-Z]");
|
||||||
|
|
||||||
MODULE_AUTHOR("Borislav Deianov, Henrique de Moraes Holschuh");
|
MODULE_AUTHOR("Borislav Deianov, Henrique de Moraes Holschuh");
|
||||||
MODULE_DESCRIPTION(TPACPI_DESC);
|
MODULE_DESCRIPTION(TPACPI_DESC);
|
||||||
|
@ -708,7 +708,7 @@ static int __init acpi_wmi_add(struct acpi_device *device)
|
|||||||
|
|
||||||
static int __init acpi_wmi_init(void)
|
static int __init acpi_wmi_init(void)
|
||||||
{
|
{
|
||||||
acpi_status result;
|
int result;
|
||||||
|
|
||||||
INIT_LIST_HEAD(&wmi_blocks.list);
|
INIT_LIST_HEAD(&wmi_blocks.list);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user