summaryrefslogtreecommitdiffstats
path: root/sys/contrib/dev/acpica/components/utilities/utids.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/contrib/dev/acpica/components/utilities/utids.c')
-rw-r--r--sys/contrib/dev/acpica/components/utilities/utids.c106
1 files changed, 88 insertions, 18 deletions
diff --git a/sys/contrib/dev/acpica/components/utilities/utids.c b/sys/contrib/dev/acpica/components/utilities/utids.c
index 5d5c8d3..17ad5ed 100644
--- a/sys/contrib/dev/acpica/components/utilities/utids.c
+++ b/sys/contrib/dev/acpica/components/utilities/utids.c
@@ -73,10 +73,10 @@
ACPI_STATUS
AcpiUtExecute_HID (
ACPI_NAMESPACE_NODE *DeviceNode,
- ACPI_DEVICE_ID **ReturnId)
+ ACPI_PNP_DEVICE_ID **ReturnId)
{
ACPI_OPERAND_OBJECT *ObjDesc;
- ACPI_DEVICE_ID *Hid;
+ ACPI_PNP_DEVICE_ID *Hid;
UINT32 Length;
ACPI_STATUS Status;
@@ -104,16 +104,16 @@ AcpiUtExecute_HID (
/* Allocate a buffer for the HID */
- Hid = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_DEVICE_ID) + (ACPI_SIZE) Length);
+ Hid = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_PNP_DEVICE_ID) + (ACPI_SIZE) Length);
if (!Hid)
{
Status = AE_NO_MEMORY;
goto Cleanup;
}
- /* Area for the string starts after DEVICE_ID struct */
+ /* Area for the string starts after PNP_DEVICE_ID struct */
- Hid->String = ACPI_ADD_PTR (char, Hid, sizeof (ACPI_DEVICE_ID));
+ Hid->String = ACPI_ADD_PTR (char, Hid, sizeof (ACPI_PNP_DEVICE_ID));
/* Convert EISAID to a string or simply copy existing string */
@@ -141,6 +141,77 @@ Cleanup:
/*******************************************************************************
*
+ * FUNCTION: AcpiUtExecute_SUB
+ *
+ * PARAMETERS: DeviceNode - Node for the device
+ * ReturnId - Where the _SUB is returned
+ *
+ * RETURN: Status
+ *
+ * DESCRIPTION: Executes the _SUB control method that returns the subsystem
+ * ID of the device. The _SUB value is always a string containing
+ * either a valid PNP or ACPI ID.
+ *
+ * NOTE: Internal function, no parameter validation
+ *
+ ******************************************************************************/
+
+ACPI_STATUS
+AcpiUtExecute_SUB (
+ ACPI_NAMESPACE_NODE *DeviceNode,
+ ACPI_PNP_DEVICE_ID **ReturnId)
+{
+ ACPI_OPERAND_OBJECT *ObjDesc;
+ ACPI_PNP_DEVICE_ID *Sub;
+ UINT32 Length;
+ ACPI_STATUS Status;
+
+
+ ACPI_FUNCTION_TRACE (UtExecute_SUB);
+
+
+ Status = AcpiUtEvaluateObject (DeviceNode, METHOD_NAME__SUB,
+ ACPI_BTYPE_STRING, &ObjDesc);
+ if (ACPI_FAILURE (Status))
+ {
+ return_ACPI_STATUS (Status);
+ }
+
+ /* Get the size of the String to be returned, includes null terminator */
+
+ Length = ObjDesc->String.Length + 1;
+
+ /* Allocate a buffer for the SUB */
+
+ Sub = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_PNP_DEVICE_ID) + (ACPI_SIZE) Length);
+ if (!Sub)
+ {
+ Status = AE_NO_MEMORY;
+ goto Cleanup;
+ }
+
+ /* Area for the string starts after PNP_DEVICE_ID struct */
+
+ Sub->String = ACPI_ADD_PTR (char, Sub, sizeof (ACPI_PNP_DEVICE_ID));
+
+ /* Simply copy existing string */
+
+ ACPI_STRCPY (Sub->String, ObjDesc->String.Pointer);
+ Sub->Length = Length;
+ *ReturnId = Sub;
+
+
+Cleanup:
+
+ /* On exit, we must delete the return object */
+
+ AcpiUtRemoveReference (ObjDesc);
+ return_ACPI_STATUS (Status);
+}
+
+
+/*******************************************************************************
+ *
* FUNCTION: AcpiUtExecute_UID
*
* PARAMETERS: DeviceNode - Node for the device
@@ -160,10 +231,10 @@ Cleanup:
ACPI_STATUS
AcpiUtExecute_UID (
ACPI_NAMESPACE_NODE *DeviceNode,
- ACPI_DEVICE_ID **ReturnId)
+ ACPI_PNP_DEVICE_ID **ReturnId)
{
ACPI_OPERAND_OBJECT *ObjDesc;
- ACPI_DEVICE_ID *Uid;
+ ACPI_PNP_DEVICE_ID *Uid;
UINT32 Length;
ACPI_STATUS Status;
@@ -191,16 +262,16 @@ AcpiUtExecute_UID (
/* Allocate a buffer for the UID */
- Uid = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_DEVICE_ID) + (ACPI_SIZE) Length);
+ Uid = ACPI_ALLOCATE_ZEROED (sizeof (ACPI_PNP_DEVICE_ID) + (ACPI_SIZE) Length);
if (!Uid)
{
Status = AE_NO_MEMORY;
goto Cleanup;
}
- /* Area for the string starts after DEVICE_ID struct */
+ /* Area for the string starts after PNP_DEVICE_ID struct */
- Uid->String = ACPI_ADD_PTR (char, Uid, sizeof (ACPI_DEVICE_ID));
+ Uid->String = ACPI_ADD_PTR (char, Uid, sizeof (ACPI_PNP_DEVICE_ID));
/* Convert an Integer to string, or just copy an existing string */
@@ -252,11 +323,11 @@ Cleanup:
ACPI_STATUS
AcpiUtExecute_CID (
ACPI_NAMESPACE_NODE *DeviceNode,
- ACPI_DEVICE_ID_LIST **ReturnCidList)
+ ACPI_PNP_DEVICE_ID_LIST **ReturnCidList)
{
ACPI_OPERAND_OBJECT **CidObjects;
ACPI_OPERAND_OBJECT *ObjDesc;
- ACPI_DEVICE_ID_LIST *CidList;
+ ACPI_PNP_DEVICE_ID_LIST *CidList;
char *NextIdString;
UINT32 StringAreaSize;
UINT32 Length;
@@ -320,11 +391,11 @@ AcpiUtExecute_CID (
/*
* Now that we know the length of the CIDs, allocate return buffer:
* 1) Size of the base structure +
- * 2) Size of the CID DEVICE_ID array +
+ * 2) Size of the CID PNP_DEVICE_ID array +
* 3) Size of the actual CID strings
*/
- CidListSize = sizeof (ACPI_DEVICE_ID_LIST) +
- ((Count - 1) * sizeof (ACPI_DEVICE_ID)) +
+ CidListSize = sizeof (ACPI_PNP_DEVICE_ID_LIST) +
+ ((Count - 1) * sizeof (ACPI_PNP_DEVICE_ID)) +
StringAreaSize;
CidList = ACPI_ALLOCATE_ZEROED (CidListSize);
@@ -334,10 +405,10 @@ AcpiUtExecute_CID (
goto Cleanup;
}
- /* Area for CID strings starts after the CID DEVICE_ID array */
+ /* Area for CID strings starts after the CID PNP_DEVICE_ID array */
NextIdString = ACPI_CAST_PTR (char, CidList->Ids) +
- ((ACPI_SIZE) Count * sizeof (ACPI_DEVICE_ID));
+ ((ACPI_SIZE) Count * sizeof (ACPI_PNP_DEVICE_ID));
/* Copy/convert the CIDs to the return buffer */
@@ -377,4 +448,3 @@ Cleanup:
AcpiUtRemoveReference (ObjDesc);
return_ACPI_STATUS (Status);
}
-
OpenPOWER on IntegriCloud