mirror of https://gitee.com/openkylin/linux.git
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;
|
||||
extern acpi_status acpi_os_initialize1(void);
|
||||
|
||||
|
||||
status = acpi_os_initialize1();
|
||||
acpi_os_initialize1();
|
||||
|
||||
status =
|
||||
acpi_enable_subsystem(ACPI_NO_HARDWARE_INIT | ACPI_NO_ACPI_ENABLE);
|
||||
|
@ -769,12 +768,6 @@ static int __init acpi_bus_init(void)
|
|||
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
|
||||
* 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;
|
||||
|
||||
pxm = acpi_get_pxm(handle);
|
||||
if (pxm >= 0)
|
||||
if (pxm >= 0 && pxm < MAX_PXM_DOMAINS)
|
||||
node = acpi_map_pxm_to_node(pxm);
|
||||
|
||||
return node;
|
||||
|
|
|
@ -1317,54 +1317,6 @@ acpi_os_validate_interface (char *interface)
|
|||
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
|
||||
|
@ -1394,8 +1346,6 @@ acpi_os_validate_address (
|
|||
|
||||
switch (space_id) {
|
||||
case ACPI_ADR_SPACE_SYSTEM_IO:
|
||||
if (!valid_aml_io_address(address, length))
|
||||
return AE_AML_ILLEGAL_ADDRESS;
|
||||
case ACPI_ADR_SPACE_SYSTEM_MEMORY:
|
||||
/* Only interference checks against SystemIO and SytemMemory
|
||||
are needed */
|
||||
|
|
|
@ -378,6 +378,22 @@ static struct dmi_system_id __initdata acpisleep_dmi_table[] = {
|
|||
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 */
|
||||
|
|
|
@ -15,8 +15,7 @@ menuconfig X86_PLATFORM_DEVICES
|
|||
if X86_PLATFORM_DEVICES
|
||||
|
||||
config ACER_WMI
|
||||
tristate "Acer WMI Laptop Extras (EXPERIMENTAL)"
|
||||
depends on EXPERIMENTAL
|
||||
tristate "Acer WMI Laptop Extras"
|
||||
depends on ACPI
|
||||
depends on LEDS_CLASS
|
||||
depends on NEW_LEDS
|
||||
|
@ -39,9 +38,9 @@ config ASUS_LAPTOP
|
|||
tristate "Asus Laptop Extras (EXPERIMENTAL)"
|
||||
depends on ACPI
|
||||
depends on EXPERIMENTAL && !ACPI_ASUS
|
||||
depends on LEDS_CLASS
|
||||
depends on NEW_LEDS
|
||||
depends on BACKLIGHT_CLASS_DEVICE
|
||||
select LEDS_CLASS
|
||||
select NEW_LEDS
|
||||
select BACKLIGHT_CLASS_DEVICE
|
||||
depends on INPUT
|
||||
---help---
|
||||
This is the new Linux driver for Asus laptops. It may also support some
|
||||
|
@ -185,11 +184,11 @@ config SONYPI_COMPAT
|
|||
config THINKPAD_ACPI
|
||||
tristate "ThinkPad ACPI Laptop Extras"
|
||||
depends on ACPI
|
||||
depends on INPUT
|
||||
select BACKLIGHT_LCD_SUPPORT
|
||||
select BACKLIGHT_CLASS_DEVICE
|
||||
select HWMON
|
||||
select NVRAM
|
||||
select INPUT
|
||||
select NEW_LEDS
|
||||
select LEDS_CLASS
|
||||
select NET
|
||||
|
@ -315,9 +314,8 @@ config EEEPC_LAPTOP
|
|||
|
||||
|
||||
config ACPI_WMI
|
||||
tristate "WMI (EXPERIMENTAL)"
|
||||
tristate "WMI"
|
||||
depends on ACPI
|
||||
depends on EXPERIMENTAL
|
||||
help
|
||||
This driver adds support for the ACPI-WMI (Windows Management
|
||||
Instrumentation) mapper device (PNP0C14) found on some systems.
|
||||
|
|
|
@ -1026,7 +1026,7 @@ static void acer_rfkill_exit(void)
|
|||
kfree(wireless_rfkill->data);
|
||||
rfkill_unregister(wireless_rfkill);
|
||||
if (has_cap(ACER_CAP_BLUETOOTH)) {
|
||||
kfree(wireless_rfkill->data);
|
||||
kfree(bluetooth_rfkill->data);
|
||||
rfkill_unregister(bluetooth_rfkill);
|
||||
}
|
||||
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 struct key_entry *key;
|
||||
u16 count;
|
||||
|
||||
/* TODO Find a better way to handle events count. */
|
||||
if (!hotk)
|
||||
|
@ -832,9 +833,11 @@ static void asus_hotk_notify(acpi_handle handle, u32 event, void *data)
|
|||
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,
|
||||
dev_name(&hotk->device->dev), event,
|
||||
hotk->event_count[event % 128]++);
|
||||
count);
|
||||
|
||||
if (hotk->inputdev) {
|
||||
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 struct key_entry *key;
|
||||
u16 count;
|
||||
|
||||
if (!ehotk)
|
||||
return;
|
||||
if (event >= NOTIFY_BRN_MIN && event <= NOTIFY_BRN_MAX)
|
||||
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,
|
||||
dev_name(&ehotk->device->dev), event,
|
||||
ehotk->event_count[event % 128]++);
|
||||
count);
|
||||
if (ehotk->inputdev) {
|
||||
key = eepc_get_entry_by_scancode(event);
|
||||
if (key) {
|
||||
|
|
|
@ -7532,7 +7532,7 @@ MODULE_ALIAS(TPACPI_DRVR_SHORTNAME);
|
|||
* if it is not there yet.
|
||||
*/
|
||||
#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 */
|
||||
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
|
||||
* BIOS type or model number, and there are far less
|
||||
* 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("1[0,3,6,8,A-G,I,K,M-P,S,T]");
|
||||
IBM_BIOS_MODULE_ALIAS("K[U,X-Z]");
|
||||
IBM_BIOS_MODULE_ALIAS("I[BDHIMNOTWVYZ]");
|
||||
IBM_BIOS_MODULE_ALIAS("1[0368A-GIKM-PST]");
|
||||
IBM_BIOS_MODULE_ALIAS("K[UX-Z]");
|
||||
|
||||
MODULE_AUTHOR("Borislav Deianov, Henrique de Moraes Holschuh");
|
||||
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)
|
||||
{
|
||||
acpi_status result;
|
||||
int result;
|
||||
|
||||
INIT_LIST_HEAD(&wmi_blocks.list);
|
||||
|
||||
|
|
Loading…
Reference in New Issue