Commit 19695ec0 authored by Linus Torvalds's avatar Linus Torvalds

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
parents 8e91f178 1b958a3e
...@@ -758,8 +758,7 @@ static int __init acpi_bus_init(void) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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 ( ...@@ -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[] = { ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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 ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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); ...@@ -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:*"); ...@@ -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) ...@@ -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);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment