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