diff options
author | jkim <jkim@FreeBSD.org> | 2007-03-22 18:16:43 +0000 |
---|---|---|
committer | jkim <jkim@FreeBSD.org> | 2007-03-22 18:16:43 +0000 |
commit | c06098a4065d7be63bd57c45889a91da9bc0f5e4 (patch) | |
tree | cdaa579af45ece33bafe9e4fe4c9aef8bd85ed29 /sys/dev/acpica/Osd | |
parent | 07ec417491720a77d28b1083886826f0141b171c (diff) | |
download | FreeBSD-src-c06098a4065d7be63bd57c45889a91da9bc0f5e4.zip FreeBSD-src-c06098a4065d7be63bd57c45889a91da9bc0f5e4.tar.gz |
Catch up with ACPI-CA 20070320 import.
Diffstat (limited to 'sys/dev/acpica/Osd')
-rw-r--r-- | sys/dev/acpica/Osd/OsdDebug.c | 8 | ||||
-rw-r--r-- | sys/dev/acpica/Osd/OsdMemory.c | 29 | ||||
-rw-r--r-- | sys/dev/acpica/Osd/OsdSchedule.c | 24 | ||||
-rw-r--r-- | sys/dev/acpica/Osd/OsdSynch.c | 4 | ||||
-rw-r--r-- | sys/dev/acpica/Osd/OsdTable.c | 57 |
5 files changed, 49 insertions, 73 deletions
diff --git a/sys/dev/acpica/Osd/OsdDebug.c b/sys/dev/acpica/Osd/OsdDebug.c index 946e875..b127181 100644 --- a/sys/dev/acpica/Osd/OsdDebug.c +++ b/sys/dev/acpica/Osd/OsdDebug.c @@ -62,14 +62,6 @@ AcpiOsGetLine(char *Buffer) #endif /* DDB */ } -void -AcpiOsDbgAssert(void *FailedAssertion, void *FileName, UINT32 LineNumber, - char *Message) -{ - printf("ACPI: %s:%d - %s\n", (char *)FileName, LineNumber, Message); - printf("ACPI: assertion %s\n", (char *)FailedAssertion); -} - ACPI_STATUS AcpiOsSignal(UINT32 Function, void *Info) { diff --git a/sys/dev/acpica/Osd/OsdMemory.c b/sys/dev/acpica/Osd/OsdMemory.c index b99bd62..3804bb6 100644 --- a/sys/dev/acpica/Osd/OsdMemory.c +++ b/sys/dev/acpica/Osd/OsdMemory.c @@ -54,14 +54,10 @@ AcpiOsFree(void *Memory) free(Memory, M_ACPICA); } -ACPI_STATUS -AcpiOsMapMemory(ACPI_PHYSICAL_ADDRESS PhysicalAddress, ACPI_SIZE Length, - void **LogicalAddress) +void * +AcpiOsMapMemory(ACPI_PHYSICAL_ADDRESS PhysicalAddress, ACPI_NATIVE_UINT Length) { - *LogicalAddress = pmap_mapbios((vm_offset_t)PhysicalAddress, Length); - if (*LogicalAddress == NULL) - return (AE_BAD_ADDRESS); - return (AE_OK); + return (pmap_mapbios((vm_offset_t)PhysicalAddress, Length)); } void @@ -78,10 +74,23 @@ AcpiOsGetPhysicalAddress(void *LogicalAddress, return (AE_BAD_ADDRESS); } +ACPI_STATUS +AcpiOsValidateInterface (char *Interface) +{ + return (AE_SUPPORT); +} + /* * There is no clean way to do this. We make the charitable assumption * that callers will not pass garbage to us. */ +ACPI_STATUS +AcpiOsValidateAddress (UINT8 SpaceId, ACPI_PHYSICAL_ADDRESS Address, + ACPI_SIZE Length) +{ + return (AE_OK); +} + BOOLEAN AcpiOsReadable (void *Pointer, ACPI_SIZE Length) { @@ -99,7 +108,8 @@ AcpiOsReadMemory(ACPI_PHYSICAL_ADDRESS Address, UINT32 *Value, UINT32 Width) { void *LogicalAddress; - if (AcpiOsMapMemory(Address, Width / 8, &LogicalAddress) != AE_OK) + LogicalAddress = AcpiOsMapMemory(Address, Width / 8); + if (LogicalAddress == NULL) return (AE_NOT_EXIST); switch (Width) { @@ -130,7 +140,8 @@ AcpiOsWriteMemory(ACPI_PHYSICAL_ADDRESS Address, UINT32 Value, UINT32 Width) { void *LogicalAddress; - if (AcpiOsMapMemory(Address, Width / 8, &LogicalAddress) != AE_OK) + LogicalAddress = AcpiOsMapMemory(Address, Width / 8); + if (LogicalAddress == NULL) return (AE_NOT_EXIST); switch (Width) { diff --git a/sys/dev/acpica/Osd/OsdSchedule.c b/sys/dev/acpica/Osd/OsdSchedule.c index ea48266..6872ffa 100644 --- a/sys/dev/acpica/Osd/OsdSchedule.c +++ b/sys/dev/acpica/Osd/OsdSchedule.c @@ -87,7 +87,7 @@ acpi_task_execute(void *context, int pending) * We allocate and queue a task for one of our taskqueue threads to process. */ ACPI_STATUS -AcpiOsQueueForExecution(UINT32 Priority, ACPI_OSD_EXEC_CALLBACK Function, +AcpiOsExecute(ACPI_EXECUTE_TYPE Type, ACPI_OSD_EXEC_CALLBACK Function, void *Context) { struct acpi_task_ctx *at; @@ -104,18 +104,20 @@ AcpiOsQueueForExecution(UINT32 Priority, ACPI_OSD_EXEC_CALLBACK Function, at->at_function = Function; at->at_context = Context; - switch (Priority) { - case OSD_PRIORITY_GPE: - pri = 4; + switch (Type) { + case OSL_GPE_HANDLER: + pri = 10; break; - case OSD_PRIORITY_HIGH: - pri = 3; + case OSL_GLOBAL_LOCK_HANDLER: + case OSL_EC_POLL_HANDLER: + case OSL_EC_BURST_HANDLER: + pri = 5; break; - case OSD_PRIORITY_MED: - pri = 2; + case OSL_NOTIFY_HANDLER: + pri = 3; break; - case OSD_PRIORITY_LO: - pri = 1; + case OSL_DEBUGGER_THREAD: + pri = 0; break; default: free(at, M_ACPITASK); @@ -178,7 +180,7 @@ AcpiOsStall(UINT32 Microseconds) return_VOID; } -UINT32 +ACPI_THREAD_ID AcpiOsGetThreadId(void) { struct proc *p; diff --git a/sys/dev/acpica/Osd/OsdSynch.c b/sys/dev/acpica/Osd/OsdSynch.c index 6cc6bcf..d195201 100644 --- a/sys/dev/acpica/Osd/OsdSynch.c +++ b/sys/dev/acpica/Osd/OsdSynch.c @@ -62,10 +62,12 @@ struct acpi_semaphore { UINT32 as_timeouts; }; +/* Default number of maximum pending threads. */ #ifndef ACPI_NO_SEMAPHORES #ifndef ACPI_SEMAPHORES_MAX_PENDING #define ACPI_SEMAPHORES_MAX_PENDING 4 #endif + static int acpi_semaphore_debug = 0; TUNABLE_INT("debug.acpi_semaphore_debug", &acpi_semaphore_debug); SYSCTL_DECL(_debug_acpi); @@ -195,7 +197,7 @@ AcpiOsWaitSemaphore(ACPI_HANDLE Handle, UINT32 Units, UINT16 Timeout) break; } - /* limit number of pending treads */ + /* limit number of pending threads */ if (as->as_pendings >= ACPI_SEMAPHORES_MAX_PENDING) { result = AE_TIME; break; diff --git a/sys/dev/acpica/Osd/OsdTable.c b/sys/dev/acpica/Osd/OsdTable.c index ce33e51..d9b29eb 100644 --- a/sys/dev/acpica/Osd/OsdTable.c +++ b/sys/dev/acpica/Osd/OsdTable.c @@ -40,26 +40,22 @@ __FBSDID("$FreeBSD$"); #include <contrib/dev/acpica/actables.h> #undef _COMPONENT -#define _COMPONENT ACPI_TABLES +#define _COMPONENT ACPI_TABLES static char acpi_osname[128]; TUNABLE_STR("hw.acpi.osname", acpi_osname, sizeof(acpi_osname)); -static struct { - ACPI_TABLE_HEADER_DEF - uint32_t no_op; -} __packed fake_ssdt; - ACPI_STATUS -AcpiOsPredefinedOverride ( - const ACPI_PREDEFINED_NAMES *InitVal, - ACPI_STRING *NewVal) +AcpiOsPredefinedOverride(const ACPI_PREDEFINED_NAMES *InitVal, + ACPI_STRING *NewVal) { + if (InitVal == NULL || NewVal == NULL) return (AE_BAD_PARAMETER); *NewVal = NULL; - if (strncmp(InitVal->Name, "_OS_", 4) == 0 && strlen(acpi_osname) > 0) { + if (strncmp(InitVal->Name, "_OS_", ACPI_NAME_SIZE) == 0 && + strlen(acpi_osname) > 0) { printf("ACPI: Overriding _OS definition with \"%s\"\n", acpi_osname); *NewVal = acpi_osname; } @@ -68,9 +64,8 @@ AcpiOsPredefinedOverride ( } ACPI_STATUS -AcpiOsTableOverride ( - ACPI_TABLE_HEADER *ExistingTable, - ACPI_TABLE_HEADER **NewTable) +AcpiOsTableOverride(ACPI_TABLE_HEADER *ExistingTable, + ACPI_TABLE_HEADER **NewTable) { caddr_t acpi_dsdt, p; @@ -78,37 +73,11 @@ AcpiOsTableOverride ( return (AE_BAD_PARAMETER); /* If we're not overriding the DSDT, just return. */ - *NewTable = NULL; - if ((acpi_dsdt = preload_search_by_type("acpi_dsdt")) == NULL) - return (AE_OK); - if ((p = preload_search_info(acpi_dsdt, MODINFO_ADDR)) == NULL) - return (AE_OK); - - /* - * Override the DSDT with the user's custom version. Override the - * contents of any SSDTs with a simple no-op table since the user's - * DSDT is expected to contain their contents as well. - */ - if (strncmp(ExistingTable->Signature, "DSDT", 4) == 0) { - printf("ACPI: overriding DSDT/SSDT with custom table\n"); - *NewTable = *(void **)p; - } else if (strncmp(ExistingTable->Signature, "SSDT", 4) == 0) { - if (fake_ssdt.Length == 0) { - sprintf(fake_ssdt.Signature, "%.4s", "SSDT"); - fake_ssdt.Length = htole32(sizeof(fake_ssdt)); - fake_ssdt.Revision = 2; - fake_ssdt.Checksum = 0; - sprintf(fake_ssdt.OemId, "%.6s", "FBSD "); - sprintf(fake_ssdt.OemTableId, "%.8s", "NullSSDT"); - fake_ssdt.OemRevision = htole32(1); - sprintf(fake_ssdt.AslCompilerId, "%.4s", "FBSD"); - fake_ssdt.AslCompilerRevision = htole32(1); - fake_ssdt.no_op = htole32(0x005c0310); /* Scope(\) */ - fake_ssdt.Checksum -= AcpiTbGenerateChecksum(&fake_ssdt, - sizeof(fake_ssdt)); - } - *NewTable = (void *)&fake_ssdt; - } + if ((acpi_dsdt = preload_search_by_type("acpi_dsdt")) == NULL || + (p = preload_search_info(acpi_dsdt, MODINFO_ADDR)) == NULL) { + *NewTable = NULL; + } else + *NewTable = *(ACPI_TABLE_HEADER **)p; return (AE_OK); } |