svn commit: r197105 - in head/sys: conf dev/acpica modules/acpi/acpi
Jung-uk Kim
jkim at FreeBSD.org
Fri Sep 11 22:49:34 UTC 2009
Author: jkim
Date: Fri Sep 11 22:49:34 2009
New Revision: 197105
URL: http://svn.freebsd.org/changeset/base/197105
Log:
Catch up with ACPICA 20090903.
Modified:
head/sys/conf/files
head/sys/dev/acpica/acpi.c
head/sys/dev/acpica/acpi_cpu.c
head/sys/dev/acpica/acpi_pcib_acpi.c
head/sys/dev/acpica/acpivar.h
head/sys/modules/acpi/acpi/Makefile
Modified: head/sys/conf/files
==============================================================================
--- head/sys/conf/files Fri Sep 11 22:48:53 2009 (r197104)
+++ head/sys/conf/files Fri Sep 11 22:49:34 2009 (r197105)
@@ -220,6 +220,7 @@ contrib/dev/acpica/namespace/nsnames.c o
contrib/dev/acpica/namespace/nsobject.c optional acpi
contrib/dev/acpica/namespace/nsparse.c optional acpi
contrib/dev/acpica/namespace/nspredef.c optional acpi
+contrib/dev/acpica/namespace/nsrepair.c optional acpi
contrib/dev/acpica/namespace/nssearch.c optional acpi
contrib/dev/acpica/namespace/nsutils.c optional acpi
contrib/dev/acpica/namespace/nswalk.c optional acpi
@@ -260,6 +261,7 @@ contrib/dev/acpica/utilities/utdebug.c o
contrib/dev/acpica/utilities/utdelete.c optional acpi
contrib/dev/acpica/utilities/uteval.c optional acpi
contrib/dev/acpica/utilities/utglobal.c optional acpi
+contrib/dev/acpica/utilities/utids.c optional acpi
contrib/dev/acpica/utilities/utinit.c optional acpi
contrib/dev/acpica/utilities/utlock.c optional acpi
contrib/dev/acpica/utilities/utmath.c optional acpi
Modified: head/sys/dev/acpica/acpi.c
==============================================================================
--- head/sys/dev/acpica/acpi.c Fri Sep 11 22:48:53 2009 (r197104)
+++ head/sys/dev/acpica/acpi.c Fri Sep 11 22:49:34 2009 (r197105)
@@ -864,24 +864,20 @@ static int
acpi_child_pnpinfo_str_method(device_t cbdev, device_t child, char *buf,
size_t buflen)
{
- ACPI_BUFFER adbuf = {ACPI_ALLOCATE_BUFFER, NULL};
- ACPI_DEVICE_INFO *adinfo;
struct acpi_device *dinfo = device_get_ivars(child);
- char *end;
- int error;
+ ACPI_DEVICE_INFO *adinfo;
- error = AcpiGetObjectInfo(dinfo->ad_handle, &adbuf);
- adinfo = (ACPI_DEVICE_INFO *) adbuf.Pointer;
- if (error)
+ if (ACPI_FAILURE(AcpiGetObjectInfo(dinfo->ad_handle, &adinfo))) {
snprintf(buf, buflen, "unknown");
- else
- snprintf(buf, buflen, "_HID=%s _UID=%lu",
- (adinfo->Valid & ACPI_VALID_HID) ?
- adinfo->HardwareId.Value : "none",
- (adinfo->Valid & ACPI_VALID_UID) ?
- strtoul(adinfo->UniqueId.Value, &end, 10) : 0);
- if (adinfo)
- AcpiOsFree(adinfo);
+ return (0);
+ }
+
+ snprintf(buf, buflen, "_HID=%s _UID=%lu",
+ (adinfo->Valid & ACPI_VALID_HID) ?
+ adinfo->HardwareId.String : "none",
+ (adinfo->Valid & ACPI_VALID_UID) ?
+ strtoul(adinfo->UniqueId.String, NULL, 10) : 0UL);
+ AcpiOsFree(adinfo);
return (0);
}
@@ -1315,31 +1311,21 @@ static uint32_t
acpi_isa_get_logicalid(device_t dev)
{
ACPI_DEVICE_INFO *devinfo;
- ACPI_BUFFER buf;
ACPI_HANDLE h;
- ACPI_STATUS error;
- u_int32_t pnpid;
+ uint32_t pnpid;
ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__);
- pnpid = 0;
- buf.Pointer = NULL;
- buf.Length = ACPI_ALLOCATE_BUFFER;
-
/* Fetch and validate the HID. */
- if ((h = acpi_get_handle(dev)) == NULL)
- goto out;
- error = AcpiGetObjectInfo(h, &buf);
- if (ACPI_FAILURE(error))
- goto out;
- devinfo = (ACPI_DEVICE_INFO *)buf.Pointer;
-
- if ((devinfo->Valid & ACPI_VALID_HID) != 0)
- pnpid = PNP_EISAID(devinfo->HardwareId.Value);
+ if ((h = acpi_get_handle(dev)) == NULL ||
+ ACPI_FAILURE(AcpiGetObjectInfo(h, &devinfo)))
+ return_VALUE (0);
+
+ pnpid = (devinfo->Valid & ACPI_VALID_HID) != 0 &&
+ devinfo->HardwareId.Length >= ACPI_EISAID_STRING_SIZE ?
+ PNP_EISAID(devinfo->HardwareId.String) : 0;
+ AcpiOsFree(devinfo);
-out:
- if (buf.Pointer != NULL)
- AcpiOsFree(buf.Pointer);
return_VALUE (pnpid);
}
@@ -1347,41 +1333,36 @@ static int
acpi_isa_get_compatid(device_t dev, uint32_t *cids, int count)
{
ACPI_DEVICE_INFO *devinfo;
- ACPI_BUFFER buf;
+ ACPI_DEVICE_ID *ids;
ACPI_HANDLE h;
- ACPI_STATUS error;
uint32_t *pnpid;
- int valid, i;
+ int i, valid;
ACPI_FUNCTION_TRACE((char *)(uintptr_t)__func__);
pnpid = cids;
- valid = 0;
- buf.Pointer = NULL;
- buf.Length = ACPI_ALLOCATE_BUFFER;
/* Fetch and validate the CID */
- if ((h = acpi_get_handle(dev)) == NULL)
- goto out;
- error = AcpiGetObjectInfo(h, &buf);
- if (ACPI_FAILURE(error))
- goto out;
- devinfo = (ACPI_DEVICE_INFO *)buf.Pointer;
- if ((devinfo->Valid & ACPI_VALID_CID) == 0)
- goto out;
-
- if (devinfo->CompatibilityId.Count < count)
- count = devinfo->CompatibilityId.Count;
- for (i = 0; i < count; i++) {
- if (strncmp(devinfo->CompatibilityId.Id[i].Value, "PNP", 3) != 0)
- continue;
- *pnpid++ = PNP_EISAID(devinfo->CompatibilityId.Id[i].Value);
- valid++;
- }
+ if ((h = acpi_get_handle(dev)) == NULL ||
+ ACPI_FAILURE(AcpiGetObjectInfo(h, &devinfo)))
+ return_VALUE (0);
+
+ if ((devinfo->Valid & ACPI_VALID_CID) == 0) {
+ AcpiOsFree(devinfo);
+ return_VALUE (0);
+ }
+
+ if (devinfo->CompatibleIdList.Count < count)
+ count = devinfo->CompatibleIdList.Count;
+ ids = devinfo->CompatibleIdList.Ids;
+ for (i = 0, valid = 0; i < count; i++)
+ if (ids[i].Length >= ACPI_EISAID_STRING_SIZE &&
+ strncmp(ids[i].String, "PNP", 3) == 0) {
+ *pnpid++ = PNP_EISAID(ids[i].String);
+ valid++;
+ }
+ AcpiOsFree(devinfo);
-out:
- if (buf.Pointer != NULL)
- AcpiOsFree(buf.Pointer);
return_VALUE (valid);
}
@@ -1389,10 +1370,14 @@ static char *
acpi_device_id_probe(device_t bus, device_t dev, char **ids)
{
ACPI_HANDLE h;
+ ACPI_OBJECT_TYPE t;
int i;
h = acpi_get_handle(dev);
- if (ids == NULL || h == NULL || acpi_get_type(dev) != ACPI_TYPE_DEVICE)
+ if (ids == NULL || h == NULL)
+ return (NULL);
+ t = acpi_get_type(dev);
+ if (t != ACPI_TYPE_DEVICE && t != ACPI_TYPE_PROCESSOR)
return (NULL);
/* Try to match one of the array of IDs with a HID or CID. */
@@ -1821,7 +1806,7 @@ acpi_probe_child(ACPI_HANDLE handle, UIN
* placeholder object handler so we can store a device_t in an ACPI_HANDLE.
*/
void
-acpi_fake_objhandler(ACPI_HANDLE h, UINT32 fn, void *data)
+acpi_fake_objhandler(ACPI_HANDLE h, void *data)
{
}
@@ -1910,30 +1895,18 @@ acpi_DeviceIsPresent(device_t dev)
{
ACPI_DEVICE_INFO *devinfo;
ACPI_HANDLE h;
- ACPI_BUFFER buf;
- ACPI_STATUS error;
- int ret;
+ BOOLEAN present;
- ret = FALSE;
- if ((h = acpi_get_handle(dev)) == NULL)
+ if ((h = acpi_get_handle(dev)) == NULL ||
+ ACPI_FAILURE(AcpiGetObjectInfo(h, &devinfo)))
return (FALSE);
- buf.Pointer = NULL;
- buf.Length = ACPI_ALLOCATE_BUFFER;
- error = AcpiGetObjectInfo(h, &buf);
- if (ACPI_FAILURE(error))
- return (FALSE);
- devinfo = (ACPI_DEVICE_INFO *)buf.Pointer;
/* If no _STA method, must be present */
- if ((devinfo->Valid & ACPI_VALID_STA) == 0)
- ret = TRUE;
-
- /* Return true for 'present' and 'functioning' */
- if (ACPI_DEVICE_PRESENT(devinfo->CurrentStatus))
- ret = TRUE;
+ present = (devinfo->Valid & ACPI_VALID_STA) == 0 ||
+ ACPI_DEVICE_PRESENT(devinfo->CurrentStatus) ? TRUE : FALSE;
- AcpiOsFree(buf.Pointer);
- return (ret);
+ AcpiOsFree(devinfo);
+ return (present);
}
/*
@@ -1944,30 +1917,18 @@ acpi_BatteryIsPresent(device_t dev)
{
ACPI_DEVICE_INFO *devinfo;
ACPI_HANDLE h;
- ACPI_BUFFER buf;
- ACPI_STATUS error;
- int ret;
+ BOOLEAN present;
- ret = FALSE;
- if ((h = acpi_get_handle(dev)) == NULL)
+ if ((h = acpi_get_handle(dev)) == NULL ||
+ ACPI_FAILURE(AcpiGetObjectInfo(h, &devinfo)))
return (FALSE);
- buf.Pointer = NULL;
- buf.Length = ACPI_ALLOCATE_BUFFER;
- error = AcpiGetObjectInfo(h, &buf);
- if (ACPI_FAILURE(error))
- return (FALSE);
- devinfo = (ACPI_DEVICE_INFO *)buf.Pointer;
/* If no _STA method, must be present */
- if ((devinfo->Valid & ACPI_VALID_STA) == 0)
- ret = TRUE;
-
- /* Return true for 'present', 'battery present', and 'functioning' */
- if (ACPI_BATTERY_PRESENT(devinfo->CurrentStatus))
- ret = TRUE;
+ present = (devinfo->Valid & ACPI_VALID_STA) == 0 ||
+ ACPI_BATTERY_PRESENT(devinfo->CurrentStatus) ? TRUE : FALSE;
- AcpiOsFree(buf.Pointer);
- return (ret);
+ AcpiOsFree(devinfo);
+ return (present);
}
/*
@@ -1977,33 +1938,26 @@ static BOOLEAN
acpi_MatchHid(ACPI_HANDLE h, const char *hid)
{
ACPI_DEVICE_INFO *devinfo;
- ACPI_BUFFER buf;
- ACPI_STATUS error;
- int ret, i;
+ BOOLEAN ret;
+ int i;
- ret = FALSE;
- if (hid == NULL || h == NULL)
- return (ret);
- buf.Pointer = NULL;
- buf.Length = ACPI_ALLOCATE_BUFFER;
- error = AcpiGetObjectInfo(h, &buf);
- if (ACPI_FAILURE(error))
- return (ret);
- devinfo = (ACPI_DEVICE_INFO *)buf.Pointer;
+ if (hid == NULL || h == NULL ||
+ ACPI_FAILURE(AcpiGetObjectInfo(h, &devinfo)))
+ return (FALSE);
+ ret = FALSE;
if ((devinfo->Valid & ACPI_VALID_HID) != 0 &&
- strcmp(hid, devinfo->HardwareId.Value) == 0)
+ strcmp(hid, devinfo->HardwareId.String) == 0)
ret = TRUE;
- else if ((devinfo->Valid & ACPI_VALID_CID) != 0) {
- for (i = 0; i < devinfo->CompatibilityId.Count; i++) {
- if (strcmp(hid, devinfo->CompatibilityId.Id[i].Value) == 0) {
+ else if ((devinfo->Valid & ACPI_VALID_CID) != 0)
+ for (i = 0; i < devinfo->CompatibleIdList.Count; i++) {
+ if (strcmp(hid, devinfo->CompatibleIdList.Ids[i].String) == 0) {
ret = TRUE;
break;
}
}
- }
- AcpiOsFree(buf.Pointer);
+ AcpiOsFree(devinfo);
return (ret);
}
Modified: head/sys/dev/acpica/acpi_cpu.c
==============================================================================
--- head/sys/dev/acpica/acpi_cpu.c Fri Sep 11 22:48:53 2009 (r197104)
+++ head/sys/dev/acpica/acpi_cpu.c Fri Sep 11 22:49:34 2009 (r197105)
@@ -940,7 +940,7 @@ acpi_cpu_idle()
* get the time very close to the CPU start/stop clock logic, this
* is the only reliable time source.
*/
- AcpiRead(&start_time, &AcpiGbl_FADT.XPmTimerBlock);
+ AcpiHwRead(&start_time, &AcpiGbl_FADT.XPmTimerBlock);
CPU_GET_REG(cx_next->p_lvlx, 1);
/*
@@ -949,8 +949,8 @@ acpi_cpu_idle()
* the processor has stopped. Doing it again provides enough
* margin that we are certain to have a correct value.
*/
- AcpiRead(&end_time, &AcpiGbl_FADT.XPmTimerBlock);
- AcpiRead(&end_time, &AcpiGbl_FADT.XPmTimerBlock);
+ AcpiHwRead(&end_time, &AcpiGbl_FADT.XPmTimerBlock);
+ AcpiHwRead(&end_time, &AcpiGbl_FADT.XPmTimerBlock);
/* Enable bus master arbitration and disable bus master wakeup. */
if (cx_next->type == ACPI_STATE_C3 &&
Modified: head/sys/dev/acpica/acpi_pcib_acpi.c
==============================================================================
--- head/sys/dev/acpica/acpi_pcib_acpi.c Fri Sep 11 22:48:53 2009 (r197104)
+++ head/sys/dev/acpica/acpi_pcib_acpi.c Fri Sep 11 22:49:34 2009 (r197105)
@@ -131,14 +131,18 @@ MODULE_DEPEND(acpi_pcib, acpi, 1, 1, 1);
static int
acpi_pcib_acpi_probe(device_t dev)
{
- static char *pcib_ids[] = { "PNP0A03", "PNP0A08", NULL };
+ ACPI_DEVICE_INFO *devinfo;
+ ACPI_HANDLE h;
+ int root;
- if (acpi_disabled("pcib") ||
- ACPI_ID_PROBE(device_get_parent(dev), dev, pcib_ids) == NULL)
+ if (acpi_disabled("pcib") || (h = acpi_get_handle(dev)) == NULL ||
+ ACPI_FAILURE(AcpiGetObjectInfo(h, &devinfo)))
return (ENXIO);
-
- if (pci_cfgregopen() == 0)
+ root = (devinfo->Flags & ACPI_PCI_ROOT_BRIDGE) != 0;
+ AcpiOsFree(devinfo);
+ if (!root || pci_cfgregopen() == 0)
return (ENXIO);
+
device_set_desc(dev, "ACPI Host-PCI bridge");
return (0);
}
Modified: head/sys/dev/acpica/acpivar.h
==============================================================================
--- head/sys/dev/acpica/acpivar.h Fri Sep 11 22:48:53 2009 (r197104)
+++ head/sys/dev/acpica/acpivar.h Fri Sep 11 22:49:34 2009 (r197105)
@@ -254,7 +254,7 @@ __ACPI_BUS_ACCESSOR(acpi, magic, ACPI, M
__ACPI_BUS_ACCESSOR(acpi, private, ACPI, PRIVATE, void *)
__ACPI_BUS_ACCESSOR(acpi, flags, ACPI, FLAGS, int)
-void acpi_fake_objhandler(ACPI_HANDLE h, UINT32 fn, void *data);
+void acpi_fake_objhandler(ACPI_HANDLE h, void *data);
static __inline device_t
acpi_get_device(ACPI_HANDLE handle)
{
Modified: head/sys/modules/acpi/acpi/Makefile
==============================================================================
--- head/sys/modules/acpi/acpi/Makefile Fri Sep 11 22:48:53 2009 (r197104)
+++ head/sys/modules/acpi/acpi/Makefile Fri Sep 11 22:49:34 2009 (r197105)
@@ -37,16 +37,16 @@ SRCS+= exprep.c exregion.c exresnte.c ex
SRCS+= exstoren.c exstorob.c exsystem.c exutils.c
SRCS+= hwacpi.c hwgpe.c hwregs.c hwsleep.c hwtimer.c hwvalid.c hwxface.c
SRCS+= nsaccess.c nsalloc.c nsdump.c nseval.c nsinit.c nsload.c nsnames.c
-SRCS+= nsobject.c nsparse.c nspredef.c nssearch.c nsutils.c nswalk.c
-SRCS+= nsxfeval.c nsxfname.c nsxfobj.c
+SRCS+= nsobject.c nsparse.c nspredef.c nsrepair.c nssearch.c nsutils.c
+SRCS+= nswalk.c nsxfeval.c nsxfname.c nsxfobj.c
SRCS+= psargs.c psloop.c psopcode.c psparse.c psscope.c pstree.c psutils.c
SRCS+= pswalk.c psxface.c
SRCS+= rsaddr.c rscalc.c rscreate.c rsdump.c rsinfo.c rsio.c rsirq.c rslist.c
SRCS+= rsmemory.c rsmisc.c rsutils.c rsxface.c
SRCS+= tbfadt.c tbfind.c tbinstal.c tbutils.c tbxface.c tbxfroot.c
SRCS+= utalloc.c utcache.c utcopy.c utdebug.c utdelete.c uteval.c utglobal.c
-SRCS+= utinit.c utlock.c utmath.c utmisc.c utmutex.c utobject.c utresrc.c
-SRCS+= utstate.c utxface.c
+SRCS+= utids.c utinit.c utlock.c utmath.c utmisc.c utmutex.c utobject.c
+SRCS+= utresrc.c utstate.c utxface.c
# OSPM layer and core hardware drivers
SRCS+= acpi.c acpi_button.c acpi_isab.c acpi_package.c acpi_pci.c acpi_pcib.c
More information about the svn-src-head
mailing list