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 '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: (94 commits) ACPICA: hide private headers ACPICA: create acpica/ directory ACPI: fix build warning ACPI : Use RSDT instead of XSDT by adding boot option of "acpi=rsdt" ACPI: Avoid array address overflow when _CST MWAIT hint bits are set fujitsu-laptop: Simplify SBLL/SBL2 backlight handling fujitsu-laptop: Add BL power, LED control and radio state information ACPICA: delete utcache.c ACPICA: delete acdisasm.h ACPICA: Update version to 20081204. ACPICA: FADT: Update error msgs for consistency ACPICA: FADT: set acpi_gbl_use_default_register_widths to TRUE by default ACPICA: FADT parsing changes and fixes ACPICA: Add ACPI_MUTEX_TYPE configuration option ACPICA: Fixes for various ACPI data tables ACPICA: Restructure includes into public/private ACPI: remove private acpica headers from driver files ACPI: reboot.c: use new acpi_reset interface ACPICA: New: acpi_reset interface - write to reset register ACPICA: Move all public H/W interfaces to new hwxface ...
This commit is contained in:
@@ -141,6 +141,7 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||
ht -- run only enough ACPI to enable Hyper Threading
|
||||
strict -- Be less tolerant of platforms that are not
|
||||
strictly ACPI specification compliant.
|
||||
rsdt -- prefer RSDT over (default) XSDT
|
||||
|
||||
See also Documentation/power/pm.txt, pci=noacpi
|
||||
|
||||
@@ -151,16 +152,20 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||
default: 0
|
||||
|
||||
acpi_sleep= [HW,ACPI] Sleep options
|
||||
Format: { s3_bios, s3_mode, s3_beep, s4_nohwsig, old_ordering }
|
||||
See Documentation/power/video.txt for s3_bios and s3_mode.
|
||||
Format: { s3_bios, s3_mode, s3_beep, s4_nohwsig,
|
||||
old_ordering, s4_nonvs }
|
||||
See Documentation/power/video.txt for information on
|
||||
s3_bios and s3_mode.
|
||||
s3_beep is for debugging; it makes the PC's speaker beep
|
||||
as soon as the kernel's real-mode entry point is called.
|
||||
s4_nohwsig prevents ACPI hardware signature from being
|
||||
used during resume from hibernation.
|
||||
old_ordering causes the ACPI 1.0 ordering of the _PTS
|
||||
control method, wrt putting devices into low power
|
||||
states, to be enforced (the ACPI 2.0 ordering of _PTS is
|
||||
used by default).
|
||||
control method, with respect to putting devices into
|
||||
low power states, to be enforced (the ACPI 2.0 ordering
|
||||
of _PTS is used by default).
|
||||
s4_nonvs prevents the kernel from saving/restoring the
|
||||
ACPI NVS memory during hibernation.
|
||||
|
||||
acpi_sci= [HW,ACPI] ACPI System Control Interrupt trigger mode
|
||||
Format: { level | edge | high | low }
|
||||
@@ -195,7 +200,7 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||
acpi_skip_timer_override [HW,ACPI]
|
||||
Recognize and ignore IRQ0/pin2 Interrupt Override.
|
||||
For broken nForce2 BIOS resulting in XT-PIC timer.
|
||||
acpi_use_timer_override [HW,ACPI}
|
||||
acpi_use_timer_override [HW,ACPI]
|
||||
Use timer override. For some broken Nvidia NF5 boards
|
||||
that require a timer override, but don't have
|
||||
HPET
|
||||
@@ -878,17 +883,19 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||
See Documentation/ide/ide.txt.
|
||||
|
||||
idle= [X86]
|
||||
Format: idle=poll or idle=mwait, idle=halt, idle=nomwait
|
||||
Poll forces a polling idle loop that can slightly improves the performance
|
||||
of waking up a idle CPU, but will use a lot of power and make the system
|
||||
run hot. Not recommended.
|
||||
idle=mwait. On systems which support MONITOR/MWAIT but the kernel chose
|
||||
to not use it because it doesn't save as much power as a normal idle
|
||||
loop use the MONITOR/MWAIT idle loop anyways. Performance should be the same
|
||||
as idle=poll.
|
||||
idle=halt. Halt is forced to be used for CPU idle.
|
||||
Format: idle=poll, idle=mwait, idle=halt, idle=nomwait
|
||||
Poll forces a polling idle loop that can slightly
|
||||
improve the performance of waking up a idle CPU, but
|
||||
will use a lot of power and make the system run hot.
|
||||
Not recommended.
|
||||
idle=mwait: On systems which support MONITOR/MWAIT but
|
||||
the kernel chose to not use it because it doesn't save
|
||||
as much power as a normal idle loop, use the
|
||||
MONITOR/MWAIT idle loop anyways. Performance should be
|
||||
the same as idle=poll.
|
||||
idle=halt: Halt is forced to be used for CPU idle.
|
||||
In such case C2/C3 won't be used again.
|
||||
idle=nomwait. Disable mwait for CPU C-states
|
||||
idle=nomwait: Disable mwait for CPU C-states
|
||||
|
||||
ide-pci-generic.all-generic-ide [HW] (E)IDE subsystem
|
||||
Claim all unknown PCI IDE storage controllers.
|
||||
@@ -1074,8 +1081,8 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||
lapic [X86-32,APIC] Enable the local APIC even if BIOS
|
||||
disabled it.
|
||||
|
||||
lapic_timer_c2_ok [X86-32,x86-64,APIC] trust the local apic timer in
|
||||
C2 power state.
|
||||
lapic_timer_c2_ok [X86-32,x86-64,APIC] trust the local apic timer
|
||||
in C2 power state.
|
||||
|
||||
libata.dma= [LIBATA] DMA control
|
||||
libata.dma=0 Disable all PATA and SATA DMA
|
||||
@@ -2303,7 +2310,8 @@ and is between 256 and 4096 characters. It is defined in the file
|
||||
|
||||
thermal.psv= [HW,ACPI]
|
||||
-1: disable all passive trip points
|
||||
<degrees C>: override all passive trip points to this value
|
||||
<degrees C>: override all passive trip points to this
|
||||
value
|
||||
|
||||
thermal.tzp= [HW,ACPI]
|
||||
Specify global default ACPI thermal zone polling rate
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
#define _ASM_IA64_ACPI_EXT_H
|
||||
|
||||
#include <linux/types.h>
|
||||
#include <acpi/actypes.h>
|
||||
|
||||
extern acpi_status hp_acpi_csr_space (acpi_handle, u64 *base, u64 *length);
|
||||
|
||||
|
||||
@@ -9,8 +9,6 @@
|
||||
#ifndef _ASM_IA64_SN_ACPI_H
|
||||
#define _ASM_IA64_SN_ACPI_H
|
||||
|
||||
#include "acpi/acglobal.h"
|
||||
|
||||
extern int sn_acpi_rev;
|
||||
#define SN_ACPI_BASE_SUPPORT() (sn_acpi_rev >= 0x20101)
|
||||
|
||||
|
||||
@@ -65,6 +65,7 @@ EXPORT_SYMBOL(pm_idle);
|
||||
void (*pm_power_off) (void);
|
||||
EXPORT_SYMBOL(pm_power_off);
|
||||
|
||||
u32 acpi_rsdt_forced;
|
||||
unsigned int acpi_cpei_override;
|
||||
unsigned int acpi_cpei_phys_cpuid;
|
||||
|
||||
|
||||
@@ -13,7 +13,6 @@
|
||||
#include <asm/sn/sn_sal.h>
|
||||
#include "xtalk/hubdev.h"
|
||||
#include <linux/acpi.h>
|
||||
#include <acpi/acnamesp.h>
|
||||
|
||||
|
||||
/*
|
||||
@@ -64,6 +63,7 @@ static acpi_status __init
|
||||
sn_acpi_hubdev_init(acpi_handle handle, u32 depth, void *context, void **ret)
|
||||
{
|
||||
struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
|
||||
struct acpi_buffer name_buffer = { ACPI_ALLOCATE_BUFFER, NULL };
|
||||
u64 addr;
|
||||
struct hubdev_info *hubdev;
|
||||
struct hubdev_info *hubdev_ptr;
|
||||
@@ -77,11 +77,12 @@ sn_acpi_hubdev_init(acpi_handle handle, u32 depth, void *context, void **ret)
|
||||
status = acpi_get_vendor_resource(handle, METHOD_NAME__CRS,
|
||||
&sn_uuid, &buffer);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
acpi_get_name(handle, ACPI_FULL_PATHNAME, &name_buffer);
|
||||
printk(KERN_ERR
|
||||
"sn_acpi_hubdev_init: acpi_get_vendor_resource() "
|
||||
"(0x%x) failed for: ", status);
|
||||
acpi_ns_print_node_pathname(handle, NULL);
|
||||
printk("\n");
|
||||
"(0x%x) failed for: %s\n", status,
|
||||
(char *)name_buffer.pointer);
|
||||
kfree(name_buffer.pointer);
|
||||
return AE_OK; /* Continue walking namespace */
|
||||
}
|
||||
|
||||
@@ -89,11 +90,12 @@ sn_acpi_hubdev_init(acpi_handle handle, u32 depth, void *context, void **ret)
|
||||
vendor = &resource->data.vendor_typed;
|
||||
if ((vendor->byte_length - sizeof(struct acpi_vendor_uuid)) !=
|
||||
sizeof(struct hubdev_info *)) {
|
||||
acpi_get_name(handle, ACPI_FULL_PATHNAME, &name_buffer);
|
||||
printk(KERN_ERR
|
||||
"sn_acpi_hubdev_init: Invalid vendor data length: %d for: ",
|
||||
vendor->byte_length);
|
||||
acpi_ns_print_node_pathname(handle, NULL);
|
||||
printk("\n");
|
||||
"sn_acpi_hubdev_init: Invalid vendor data length: "
|
||||
"%d for: %s\n",
|
||||
vendor->byte_length, (char *)name_buffer.pointer);
|
||||
kfree(name_buffer.pointer);
|
||||
goto exit;
|
||||
}
|
||||
|
||||
@@ -120,6 +122,7 @@ sn_get_bussoft_ptr(struct pci_bus *bus)
|
||||
{
|
||||
u64 addr;
|
||||
struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
|
||||
struct acpi_buffer name_buffer = { ACPI_ALLOCATE_BUFFER, NULL };
|
||||
acpi_handle handle;
|
||||
struct pcibus_bussoft *prom_bussoft_ptr;
|
||||
struct acpi_resource *resource;
|
||||
@@ -131,11 +134,11 @@ sn_get_bussoft_ptr(struct pci_bus *bus)
|
||||
status = acpi_get_vendor_resource(handle, METHOD_NAME__CRS,
|
||||
&sn_uuid, &buffer);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
acpi_get_name(handle, ACPI_FULL_PATHNAME, &name_buffer);
|
||||
printk(KERN_ERR "%s: "
|
||||
"acpi_get_vendor_resource() failed (0x%x) for: ",
|
||||
__func__, status);
|
||||
acpi_ns_print_node_pathname(handle, NULL);
|
||||
printk("\n");
|
||||
"acpi_get_vendor_resource() failed (0x%x) for: %s\n",
|
||||
__func__, status, (char *)name_buffer.pointer);
|
||||
kfree(name_buffer.pointer);
|
||||
return NULL;
|
||||
}
|
||||
resource = buffer.pointer;
|
||||
@@ -168,6 +171,7 @@ sn_extract_device_info(acpi_handle handle, struct pcidev_info **pcidev_info,
|
||||
{
|
||||
u64 addr;
|
||||
struct acpi_buffer buffer = { ACPI_ALLOCATE_BUFFER, NULL };
|
||||
struct acpi_buffer name_buffer = { ACPI_ALLOCATE_BUFFER, NULL };
|
||||
struct sn_irq_info *irq_info, *irq_info_prom;
|
||||
struct pcidev_info *pcidev_ptr, *pcidev_prom_ptr;
|
||||
struct acpi_resource *resource;
|
||||
@@ -182,11 +186,11 @@ sn_extract_device_info(acpi_handle handle, struct pcidev_info **pcidev_info,
|
||||
status = acpi_get_vendor_resource(handle, METHOD_NAME__CRS,
|
||||
&sn_uuid, &buffer);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
acpi_get_name(handle, ACPI_FULL_PATHNAME, &name_buffer);
|
||||
printk(KERN_ERR
|
||||
"%s: acpi_get_vendor_resource() failed (0x%x) for: ",
|
||||
__func__, status);
|
||||
acpi_ns_print_node_pathname(handle, NULL);
|
||||
printk("\n");
|
||||
"%s: acpi_get_vendor_resource() failed (0x%x) for: %s\n",
|
||||
__func__, status, (char *)name_buffer.pointer);
|
||||
kfree(name_buffer.pointer);
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -194,11 +198,12 @@ sn_extract_device_info(acpi_handle handle, struct pcidev_info **pcidev_info,
|
||||
vendor = &resource->data.vendor_typed;
|
||||
if ((vendor->byte_length - sizeof(struct acpi_vendor_uuid)) !=
|
||||
sizeof(struct pci_devdev_info *)) {
|
||||
acpi_get_name(handle, ACPI_FULL_PATHNAME, &name_buffer);
|
||||
printk(KERN_ERR
|
||||
"%s: Invalid vendor data length: %d for: ",
|
||||
__func__, vendor->byte_length);
|
||||
acpi_ns_print_node_pathname(handle, NULL);
|
||||
printk("\n");
|
||||
"%s: Invalid vendor data length: %d for: %s\n",
|
||||
__func__, vendor->byte_length,
|
||||
(char *)name_buffer.pointer);
|
||||
kfree(name_buffer.pointer);
|
||||
ret = 1;
|
||||
goto exit;
|
||||
}
|
||||
@@ -239,6 +244,9 @@ get_host_devfn(acpi_handle device_handle, acpi_handle rootbus_handle)
|
||||
acpi_handle parent;
|
||||
int slot;
|
||||
acpi_status status;
|
||||
struct acpi_buffer name_buffer = { ACPI_ALLOCATE_BUFFER, NULL };
|
||||
|
||||
acpi_get_name(device_handle, ACPI_FULL_PATHNAME, &name_buffer);
|
||||
|
||||
/*
|
||||
* Do an upward search to find the root bus device, and
|
||||
@@ -249,9 +257,8 @@ get_host_devfn(acpi_handle device_handle, acpi_handle rootbus_handle)
|
||||
status = acpi_get_parent(child, &parent);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
printk(KERN_ERR "%s: acpi_get_parent() failed "
|
||||
"(0x%x) for: ", __func__, status);
|
||||
acpi_ns_print_node_pathname(child, NULL);
|
||||
printk("\n");
|
||||
"(0x%x) for: %s\n", __func__, status,
|
||||
(char *)name_buffer.pointer);
|
||||
panic("%s: Unable to find host devfn\n", __func__);
|
||||
}
|
||||
if (parent == rootbus_handle)
|
||||
@@ -259,22 +266,20 @@ get_host_devfn(acpi_handle device_handle, acpi_handle rootbus_handle)
|
||||
child = parent;
|
||||
}
|
||||
if (!child) {
|
||||
printk(KERN_ERR "%s: Unable to find root bus for: ",
|
||||
__func__);
|
||||
acpi_ns_print_node_pathname(device_handle, NULL);
|
||||
printk("\n");
|
||||
printk(KERN_ERR "%s: Unable to find root bus for: %s\n",
|
||||
__func__, (char *)name_buffer.pointer);
|
||||
BUG();
|
||||
}
|
||||
|
||||
status = acpi_evaluate_integer(child, METHOD_NAME__ADR, NULL, &adr);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
printk(KERN_ERR "%s: Unable to get _ADR (0x%x) for: ",
|
||||
__func__, status);
|
||||
acpi_ns_print_node_pathname(child, NULL);
|
||||
printk("\n");
|
||||
printk(KERN_ERR "%s: Unable to get _ADR (0x%x) for: %s\n",
|
||||
__func__, status, (char *)name_buffer.pointer);
|
||||
panic("%s: Unable to find host devfn\n", __func__);
|
||||
}
|
||||
|
||||
kfree(name_buffer.pointer);
|
||||
|
||||
slot = (adr >> 16) & 0xffff;
|
||||
function = adr & 0xffff;
|
||||
devfn = PCI_DEVFN(slot, function);
|
||||
@@ -300,27 +305,28 @@ find_matching_device(acpi_handle handle, u32 lvl, void *context, void **rv)
|
||||
int function;
|
||||
int slot;
|
||||
struct sn_pcidev_match *info = context;
|
||||
struct acpi_buffer name_buffer = { ACPI_ALLOCATE_BUFFER, NULL };
|
||||
|
||||
status = acpi_evaluate_integer(handle, METHOD_NAME__ADR, NULL,
|
||||
&adr);
|
||||
if (ACPI_SUCCESS(status)) {
|
||||
status = acpi_get_parent(handle, &parent);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
acpi_get_name(handle, ACPI_FULL_PATHNAME, &name_buffer);
|
||||
printk(KERN_ERR
|
||||
"%s: acpi_get_parent() failed (0x%x) for: ",
|
||||
__func__, status);
|
||||
acpi_ns_print_node_pathname(handle, NULL);
|
||||
printk("\n");
|
||||
"%s: acpi_get_parent() failed (0x%x) for: %s\n",
|
||||
__func__, status, (char *)name_buffer.pointer);
|
||||
kfree(name_buffer.pointer);
|
||||
return AE_OK;
|
||||
}
|
||||
status = acpi_evaluate_integer(parent, METHOD_NAME__BBN,
|
||||
NULL, &bbn);
|
||||
if (ACPI_FAILURE(status)) {
|
||||
acpi_get_name(handle, ACPI_FULL_PATHNAME, &name_buffer);
|
||||
printk(KERN_ERR
|
||||
"%s: Failed to find _BBN in parent of: ",
|
||||
__func__);
|
||||
acpi_ns_print_node_pathname(handle, NULL);
|
||||
printk("\n");
|
||||
"%s: Failed to find _BBN in parent of: %s\n",
|
||||
__func__, (char *)name_buffer.pointer);
|
||||
kfree(name_buffer.pointer);
|
||||
return AE_OK;
|
||||
}
|
||||
|
||||
@@ -350,24 +356,27 @@ sn_acpi_get_pcidev_info(struct pci_dev *dev, struct pcidev_info **pcidev_info,
|
||||
acpi_handle rootbus_handle;
|
||||
unsigned long long segment;
|
||||
acpi_status status;
|
||||
struct acpi_buffer name_buffer = { ACPI_ALLOCATE_BUFFER, NULL };
|
||||
|
||||
rootbus_handle = PCI_CONTROLLER(dev)->acpi_handle;
|
||||
status = acpi_evaluate_integer(rootbus_handle, METHOD_NAME__SEG, NULL,
|
||||
&segment);
|
||||
if (ACPI_SUCCESS(status)) {
|
||||
if (segment != pci_domain_nr(dev)) {
|
||||
acpi_get_name(rootbus_handle, ACPI_FULL_PATHNAME,
|
||||
&name_buffer);
|
||||
printk(KERN_ERR
|
||||
"%s: Segment number mismatch, 0x%llx vs 0x%x for: ",
|
||||
__func__, segment, pci_domain_nr(dev));
|
||||
acpi_ns_print_node_pathname(rootbus_handle, NULL);
|
||||
printk("\n");
|
||||
"%s: Segment number mismatch, 0x%llx vs 0x%x for: %s\n",
|
||||
__func__, segment, pci_domain_nr(dev),
|
||||
(char *)name_buffer.pointer);
|
||||
kfree(name_buffer.pointer);
|
||||
return 1;
|
||||
}
|
||||
} else {
|
||||
printk(KERN_ERR "%s: Unable to get __SEG from: ",
|
||||
__func__);
|
||||
acpi_ns_print_node_pathname(rootbus_handle, NULL);
|
||||
printk("\n");
|
||||
acpi_get_name(rootbus_handle, ACPI_FULL_PATHNAME, &name_buffer);
|
||||
printk(KERN_ERR "%s: Unable to get __SEG from: %s\n",
|
||||
__func__, (char *)name_buffer.pointer);
|
||||
kfree(name_buffer.pointer);
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
@@ -26,7 +26,6 @@
|
||||
#include <linux/acpi.h>
|
||||
#include <asm/sn/sn2/sn_hwperf.h>
|
||||
#include <asm/sn/acpi.h>
|
||||
#include "acpi/acglobal.h"
|
||||
|
||||
extern void sn_init_cpei_timer(void);
|
||||
extern void register_sn_procfs(void);
|
||||
@@ -473,7 +472,7 @@ sn_io_early_init(void)
|
||||
{
|
||||
struct acpi_table_header *header = NULL;
|
||||
|
||||
acpi_get_table_by_index(ACPI_TABLE_INDEX_DSDT, &header);
|
||||
acpi_get_table(ACPI_SIG_DSDT, 1, &header);
|
||||
BUG_ON(header == NULL);
|
||||
sn_acpi_rev = header->oem_revision;
|
||||
}
|
||||
@@ -505,7 +504,7 @@ sn_io_early_init(void)
|
||||
|
||||
{
|
||||
struct acpi_table_header *header;
|
||||
(void)acpi_get_table_by_index(ACPI_TABLE_INDEX_DSDT, &header);
|
||||
(void)acpi_get_table(ACPI_SIG_DSDT, 1, &header);
|
||||
printk(KERN_INFO "ACPI DSDT OEM Rev 0x%x\n",
|
||||
header->oem_revision);
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@
|
||||
#endif
|
||||
|
||||
static int __initdata acpi_force = 0;
|
||||
|
||||
u32 acpi_rsdt_forced;
|
||||
#ifdef CONFIG_ACPI
|
||||
int acpi_disabled = 0;
|
||||
#else
|
||||
@@ -1374,6 +1374,17 @@ static void __init acpi_process_madt(void)
|
||||
"Invalid BIOS MADT, disabling ACPI\n");
|
||||
disable_acpi();
|
||||
}
|
||||
} else {
|
||||
/*
|
||||
* ACPI found no MADT, and so ACPI wants UP PIC mode.
|
||||
* In the event an MPS table was found, forget it.
|
||||
* Boot with "acpi=off" to use MPS on such a system.
|
||||
*/
|
||||
if (smp_found_config) {
|
||||
printk(KERN_WARNING PREFIX
|
||||
"No APIC-table, disabling MPS\n");
|
||||
smp_found_config = 0;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -1809,6 +1820,10 @@ static int __init parse_acpi(char *arg)
|
||||
disable_acpi();
|
||||
acpi_ht = 1;
|
||||
}
|
||||
/* acpi=rsdt use RSDT instead of XSDT */
|
||||
else if (strcmp(arg, "rsdt") == 0) {
|
||||
acpi_rsdt_forced = 1;
|
||||
}
|
||||
/* "acpi=noirq" disables ACPI interrupt routing */
|
||||
else if (strcmp(arg, "noirq") == 0) {
|
||||
acpi_noirq_set();
|
||||
|
||||
@@ -56,6 +56,7 @@ static struct cstate_entry *cpu_cstate_entry; /* per CPU ptr */
|
||||
static short mwait_supported[ACPI_PROCESSOR_MAX_POWER];
|
||||
|
||||
#define MWAIT_SUBSTATE_MASK (0xf)
|
||||
#define MWAIT_CSTATE_MASK (0xf)
|
||||
#define MWAIT_SUBSTATE_SIZE (4)
|
||||
|
||||
#define CPUID_MWAIT_LEAF (5)
|
||||
@@ -98,7 +99,8 @@ int acpi_processor_ffh_cstate_probe(unsigned int cpu,
|
||||
cpuid(CPUID_MWAIT_LEAF, &eax, &ebx, &ecx, &edx);
|
||||
|
||||
/* Check whether this particular cx_type (in CST) is supported or not */
|
||||
cstate_type = (cx->address >> MWAIT_SUBSTATE_SIZE) + 1;
|
||||
cstate_type = ((cx->address >> MWAIT_SUBSTATE_SIZE) &
|
||||
MWAIT_CSTATE_MASK) + 1;
|
||||
edx_part = edx >> (cstate_type * MWAIT_SUBSTATE_SIZE);
|
||||
num_cstate_subtype = edx_part & MWAIT_SUBSTATE_MASK;
|
||||
|
||||
|
||||
@@ -159,6 +159,8 @@ static int __init acpi_sleep_setup(char *str)
|
||||
#endif
|
||||
if (strncmp(str, "old_ordering", 12) == 0)
|
||||
acpi_old_suspend_ordering();
|
||||
if (strncmp(str, "s4_nonvs", 8) == 0)
|
||||
acpi_s4_no_nvs();
|
||||
str = strchr(str, ',');
|
||||
if (str != NULL)
|
||||
str += strspn(str, ", \t");
|
||||
|
||||
@@ -665,6 +665,27 @@ void __init e820_mark_nosave_regions(unsigned long limit_pfn)
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef CONFIG_HIBERNATION
|
||||
/**
|
||||
* Mark ACPI NVS memory region, so that we can save/restore it during
|
||||
* hibernation and the subsequent resume.
|
||||
*/
|
||||
static int __init e820_mark_nvs_memory(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < e820.nr_map; i++) {
|
||||
struct e820entry *ei = &e820.map[i];
|
||||
|
||||
if (ei->type == E820_NVS)
|
||||
hibernate_nvs_register(ei->addr, ei->size);
|
||||
}
|
||||
|
||||
return 0;
|
||||
}
|
||||
core_initcall(e820_mark_nvs_memory);
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Early reserved memory areas.
|
||||
*/
|
||||
|
||||
@@ -107,4 +107,6 @@ source "drivers/uio/Kconfig"
|
||||
source "drivers/xen/Kconfig"
|
||||
|
||||
source "drivers/staging/Kconfig"
|
||||
|
||||
source "drivers/platform/Kconfig"
|
||||
endmenu
|
||||
|
||||
@@ -105,3 +105,4 @@ obj-$(CONFIG_OF) += of/
|
||||
obj-$(CONFIG_SSB) += ssb/
|
||||
obj-$(CONFIG_VIRTIO) += virtio/
|
||||
obj-$(CONFIG_STAGING) += staging/
|
||||
obj-y += platform/
|
||||
|
||||
@@ -196,90 +196,6 @@ config ACPI_NUMA
|
||||
depends on (X86 || IA64)
|
||||
default y if IA64_GENERIC || IA64_SGI_SN2
|
||||
|
||||
config ACPI_WMI
|
||||
tristate "WMI (EXPERIMENTAL)"
|
||||
depends on X86
|
||||
depends on EXPERIMENTAL
|
||||
help
|
||||
This driver adds support for the ACPI-WMI (Windows Management
|
||||
Instrumentation) mapper device (PNP0C14) found on some systems.
|
||||
|
||||
ACPI-WMI is a proprietary extension to ACPI to expose parts of the
|
||||
ACPI firmware to userspace - this is done through various vendor
|
||||
defined methods and data blocks in a PNP0C14 device, which are then
|
||||
made available for userspace to call.
|
||||
|
||||
The implementation of this in Linux currently only exposes this to
|
||||
other kernel space drivers.
|
||||
|
||||
This driver is a required dependency to build the firmware specific
|
||||
drivers needed on many machines, including Acer and HP laptops.
|
||||
|
||||
It is safe to enable this driver even if your DSDT doesn't define
|
||||
any ACPI-WMI devices.
|
||||
|
||||
config ACPI_ASUS
|
||||
tristate "ASUS/Medion Laptop Extras"
|
||||
depends on X86
|
||||
select BACKLIGHT_CLASS_DEVICE
|
||||
---help---
|
||||
This driver provides support for extra features of ACPI-compatible
|
||||
ASUS laptops. As some of Medion laptops are made by ASUS, it may also
|
||||
support some Medion laptops (such as 9675 for example). It makes all
|
||||
the extra buttons generate standard ACPI events that go through
|
||||
/proc/acpi/events, and (on some models) adds support for changing the
|
||||
display brightness and output, switching the LCD backlight on and off,
|
||||
and most importantly, allows you to blink those fancy LEDs intended
|
||||
for reporting mail and wireless status.
|
||||
|
||||
Note: display switching code is currently considered EXPERIMENTAL,
|
||||
toying with these values may even lock your machine.
|
||||
|
||||
All settings are changed via /proc/acpi/asus directory entries. Owner
|
||||
and group for these entries can be set with asus_uid and asus_gid
|
||||
parameters.
|
||||
|
||||
More information and a userspace daemon for handling the extra buttons
|
||||
at <http://sourceforge.net/projects/acpi4asus/>.
|
||||
|
||||
If you have an ACPI-compatible ASUS laptop, say Y or M here. This
|
||||
driver is still under development, so if your laptop is unsupported or
|
||||
something works not quite as expected, please use the mailing list
|
||||
available on the above page (acpi4asus-user@lists.sourceforge.net).
|
||||
|
||||
NOTE: This driver is deprecated and will probably be removed soon,
|
||||
use asus-laptop instead.
|
||||
|
||||
config ACPI_TOSHIBA
|
||||
tristate "Toshiba Laptop Extras"
|
||||
depends on X86 && INPUT
|
||||
select INPUT_POLLDEV
|
||||
select NET
|
||||
select RFKILL
|
||||
select BACKLIGHT_CLASS_DEVICE
|
||||
---help---
|
||||
This driver adds support for access to certain system settings
|
||||
on "legacy free" Toshiba laptops. These laptops can be recognized by
|
||||
their lack of a BIOS setup menu and APM support.
|
||||
|
||||
On these machines, all system configuration is handled through the
|
||||
ACPI. This driver is required for access to controls not covered
|
||||
by the general ACPI drivers, such as LCD brightness, video output,
|
||||
etc.
|
||||
|
||||
This driver differs from the non-ACPI Toshiba laptop driver (located
|
||||
under "Processor type and features") in several aspects.
|
||||
Configuration is accessed by reading and writing text files in the
|
||||
/proc tree instead of by program interface to /dev. Furthermore, no
|
||||
power management functions are exposed, as those are handled by the
|
||||
general ACPI drivers.
|
||||
|
||||
More information about this driver is available at
|
||||
<http://memebeam.org/toys/ToshibaAcpiDriver>.
|
||||
|
||||
If you have a legacy free Toshiba laptop (such as the Libretto L1
|
||||
series), say Y.
|
||||
|
||||
config ACPI_CUSTOM_DSDT_FILE
|
||||
string "Custom DSDT Table file to include"
|
||||
default ""
|
||||
|
||||
+9
-16
@@ -2,15 +2,8 @@
|
||||
# Makefile for the Linux ACPI interpreter
|
||||
#
|
||||
|
||||
export ACPI_CFLAGS
|
||||
|
||||
ACPI_CFLAGS := -Os
|
||||
|
||||
ifdef CONFIG_ACPI_DEBUG
|
||||
ACPI_CFLAGS += -DACPI_DEBUG_OUTPUT
|
||||
endif
|
||||
|
||||
EXTRA_CFLAGS += $(ACPI_CFLAGS)
|
||||
ccflags-y := -Os
|
||||
ccflags-$(CONFIG_ACPI_DEBUG) += -DACPI_DEBUG_OUTPUT
|
||||
|
||||
#
|
||||
# ACPI Boot-Time Table Parsing
|
||||
@@ -22,9 +15,13 @@ obj-$(CONFIG_X86) += blacklist.o
|
||||
# ACPI Core Subsystem (Interpreter)
|
||||
#
|
||||
obj-y += osl.o utils.o reboot.o\
|
||||
dispatcher/ events/ executer/ hardware/ \
|
||||
namespace/ parser/ resources/ tables/ \
|
||||
utilities/
|
||||
acpica/
|
||||
|
||||
# sleep related files
|
||||
obj-y += wakeup.o
|
||||
obj-y += main.o
|
||||
obj-$(CONFIG_ACPI_SLEEP) += proc.o
|
||||
|
||||
|
||||
#
|
||||
# ACPI Bus and Device Drivers
|
||||
@@ -35,7 +32,6 @@ ifdef CONFIG_CPU_FREQ
|
||||
processor-objs += processor_perflib.o
|
||||
endif
|
||||
|
||||
obj-y += sleep/
|
||||
obj-y += bus.o glue.o
|
||||
obj-y += scan.o
|
||||
# Keep EC driver first. Initialization of others depend on it.
|
||||
@@ -59,9 +55,6 @@ obj-y += power.o
|
||||
obj-$(CONFIG_ACPI_SYSTEM) += system.o event.o
|
||||
obj-$(CONFIG_ACPI_DEBUG) += debug.o
|
||||
obj-$(CONFIG_ACPI_NUMA) += numa.o
|
||||
obj-$(CONFIG_ACPI_WMI) += wmi.o
|
||||
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) += sbshc.o
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
#
|
||||
# Makefile for ACPICA Core interpreter
|
||||
#
|
||||
|
||||
ccflags-y := -Os
|
||||
ccflags-$(CONFIG_ACPI_DEBUG) += -DACPI_DEBUG_OUTPUT
|
||||
|
||||
obj-y := dsfield.o dsmthdat.o dsopcode.o dswexec.o dswscope.o \
|
||||
dsmethod.o dsobject.o dsutils.o dswload.o dswstate.o \
|
||||
dsinit.o
|
||||
|
||||
obj-y += evevent.o evregion.o evsci.o evxfevnt.o \
|
||||
evmisc.o evrgnini.o evxface.o evxfregn.o \
|
||||
evgpe.o evgpeblk.o
|
||||
|
||||
obj-y += exconfig.o exfield.o exnames.o exoparg6.o exresolv.o exstorob.o\
|
||||
exconvrt.o exfldio.o exoparg1.o exprep.o exresop.o exsystem.o\
|
||||
excreate.o exmisc.o exoparg2.o exregion.o exstore.o exutils.o \
|
||||
exdump.o exmutex.o exoparg3.o exresnte.o exstoren.o
|
||||
|
||||
obj-y += hwacpi.o hwgpe.o hwregs.o hwsleep.o hwxface.o
|
||||
|
||||
obj-$(ACPI_FUTURE_USAGE) += hwtimer.o
|
||||
|
||||
obj-y += nsaccess.o nsload.o nssearch.o nsxfeval.o \
|
||||
nsalloc.o nseval.o nsnames.o nsutils.o nsxfname.o \
|
||||
nsdump.o nsinit.o nsobject.o nswalk.o nsxfobj.o \
|
||||
nsparse.o nspredef.o
|
||||
|
||||
obj-$(ACPI_FUTURE_USAGE) += nsdumpdv.o
|
||||
|
||||
obj-y += psargs.o psparse.o psloop.o pstree.o pswalk.o \
|
||||
psopcode.o psscope.o psutils.o psxface.o
|
||||
|
||||
obj-y += rsaddr.o rscreate.o rsinfo.o rsio.o rslist.o rsmisc.o rsxface.o \
|
||||
rscalc.o rsirq.o rsmemory.o rsutils.o
|
||||
|
||||
obj-$(ACPI_FUTURE_USAGE) += rsdump.o
|
||||
|
||||
obj-y += tbxface.o tbinstal.o tbutils.o tbfind.o tbfadt.o tbxfroot.o
|
||||
|
||||
obj-y += utalloc.o utdebug.o uteval.o utinit.o utmisc.o utxface.o \
|
||||
utcopy.o utdelete.o utglobal.o utmath.o utobject.o \
|
||||
utstate.o utmutex.o utobject.o utresrc.o
|
||||
@@ -0,0 +1,63 @@
|
||||
/******************************************************************************
|
||||
*
|
||||
* Name: accommon.h - Common include files for generation of ACPICA source
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
/*
|
||||
* Copyright (C) 2000 - 2008, Intel Corp.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Redistribution and use in source and binary forms, with or without
|
||||
* modification, are permitted provided that the following conditions
|
||||
* are met:
|
||||
* 1. Redistributions of source code must retain the above copyright
|
||||
* notice, this list of conditions, and the following disclaimer,
|
||||
* without modification.
|
||||
* 2. Redistributions in binary form must reproduce at minimum a disclaimer
|
||||
* substantially similar to the "NO WARRANTY" disclaimer below
|
||||
* ("Disclaimer") and any redistribution must be conditioned upon
|
||||
* including a substantially similar Disclaimer requirement for further
|
||||
* binary redistribution.
|
||||
* 3. Neither the names of the above-listed copyright holders nor the names
|
||||
* of any contributors may be used to endorse or promote products derived
|
||||
* from this software without specific prior written permission.
|
||||
*
|
||||
* Alternatively, this software may be distributed under the terms of the
|
||||
* GNU General Public License ("GPL") version 2 as published by the Free
|
||||
* Software Foundation.
|
||||
*
|
||||
* NO WARRANTY
|
||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR
|
||||
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
* HOLDERS OR CONTRIBUTORS BE LIABLE FOR SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
||||
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
||||
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
* STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
* IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGES.
|
||||
*/
|
||||
|
||||
#ifndef __ACCOMMON_H__
|
||||
#define __ACCOMMON_H__
|
||||
|
||||
/*
|
||||
* Common set of includes for all ACPICA source files.
|
||||
* We put them here because we don't want to duplicate them
|
||||
* in the the source code again and again.
|
||||
*
|
||||
* Note: The order of these include files is important.
|
||||
*/
|
||||
#include "acconfig.h" /* Global configuration constants */
|
||||
#include "acmacros.h" /* C macros */
|
||||
#include "aclocal.h" /* Internal data types */
|
||||
#include "acobject.h" /* ACPI internal object */
|
||||
#include "acstruct.h" /* Common structures */
|
||||
#include "acglobal.h" /* All global variables */
|
||||
#include "achware.h" /* Hardware defines and interfaces */
|
||||
#include "acutils.h" /* Utility interfaces */
|
||||
|
||||
#endif /* __ACCOMMON_H__ */
|
||||
@@ -61,10 +61,6 @@
|
||||
*
|
||||
*/
|
||||
|
||||
/* Current ACPICA subsystem version in YYYYMMDD format */
|
||||
|
||||
#define ACPI_CA_VERSION 0x20080926
|
||||
|
||||
/*
|
||||
* OS name, used for the _OS object. The _OS object is essentially obsolete,
|
||||
* but there is a large base of ASL/AML code in existing machines that check
|
||||
@@ -119,6 +115,10 @@
|
||||
|
||||
#define ACPI_ROOT_TABLE_SIZE_INCREMENT 4
|
||||
|
||||
/* Maximum number of While() loop iterations before forced abort */
|
||||
|
||||
#define ACPI_MAX_LOOP_ITERATIONS 0xFFFF
|
||||
|
||||
/******************************************************************************
|
||||
*
|
||||
* ACPI Specification constants (Do not change unless the specification changes)
|
||||
@@ -93,11 +93,13 @@ struct acpi_gpe_event_info *acpi_ev_get_gpe_event_info(acpi_handle gpe_device,
|
||||
*/
|
||||
u8 acpi_ev_valid_gpe_event(struct acpi_gpe_event_info *gpe_event_info);
|
||||
|
||||
acpi_status acpi_ev_walk_gpe_list(acpi_gpe_callback gpe_walk_callback);
|
||||
acpi_status
|
||||
acpi_ev_walk_gpe_list(acpi_gpe_callback gpe_walk_callback, void *context);
|
||||
|
||||
acpi_status
|
||||
acpi_ev_delete_gpe_handlers(struct acpi_gpe_xrupt_info *gpe_xrupt_info,
|
||||
struct acpi_gpe_block_info *gpe_block);
|
||||
struct acpi_gpe_block_info *gpe_block,
|
||||
void *context);
|
||||
|
||||
acpi_status
|
||||
acpi_ev_create_gpe_block(struct acpi_namespace_node *gpe_device,
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user