summaryrefslogtreecommitdiffstats
path: root/sys/dev/acpica/Osd
diff options
context:
space:
mode:
authorjkim <jkim@FreeBSD.org>2007-03-22 18:16:43 +0000
committerjkim <jkim@FreeBSD.org>2007-03-22 18:16:43 +0000
commitc06098a4065d7be63bd57c45889a91da9bc0f5e4 (patch)
treecdaa579af45ece33bafe9e4fe4c9aef8bd85ed29 /sys/dev/acpica/Osd
parent07ec417491720a77d28b1083886826f0141b171c (diff)
downloadFreeBSD-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.c8
-rw-r--r--sys/dev/acpica/Osd/OsdMemory.c29
-rw-r--r--sys/dev/acpica/Osd/OsdSchedule.c24
-rw-r--r--sys/dev/acpica/Osd/OsdSynch.c4
-rw-r--r--sys/dev/acpica/Osd/OsdTable.c57
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);
}
OpenPOWER on IntegriCloud