*  A _CID can return either a single compatible ID or a package of compatible *  IDs.  Each compatible ID can be one of the following: *  -- Number (32 bit compressed EISA ID) or *  -- String (PCI ID format, e.g. "PCI\VEN_vvvv&DEV_dddd&SUBSYS_ssssssss"). 
*  A _CID can return either a single compatible ID or a package of *  compatible IDs.  Each compatible ID can be one of the following: *  1) Integer (32 bit compressed EISA ID) or *  2) String (PCI ID format, e.g. "PCI\VEN_vvvv&DEV_dddd&SUBSYS_ssssssss") 
acpi_ut_execute_CID (	struct acpi_namespace_node      *device_node,	struct acpi_compatible_id_list **return_cid_list){	union acpi_operand_object       *obj_desc;	acpi_status                     status;	u32                             count;	u32                             size;	struct acpi_compatible_id_list *cid_list;	acpi_native_uint                i;	ACPI_FUNCTION_TRACE ("ut_execute_CID");	/* Evaluate the _CID method for this device */	status = acpi_ut_evaluate_object (device_node, METHOD_NAME__CID,			 ACPI_BTYPE_INTEGER | ACPI_BTYPE_STRING | ACPI_BTYPE_PACKAGE,			 &obj_desc);	if (ACPI_FAILURE (status)) {		return_ACPI_STATUS (status);	}	/* Get the number of _CIDs returned */	count = 1;	if (ACPI_GET_OBJECT_TYPE (obj_desc) == ACPI_TYPE_PACKAGE) {		count = obj_desc->package.count;	}	/* Allocate a worst-case buffer for the _CIDs */	size = (((count - 1) * sizeof (struct acpi_compatible_id)) +			   sizeof (struct acpi_compatible_id_list));	cid_list = ACPI_MEM_CALLOCATE ((acpi_size) size);	if (!cid_list) {		return_ACPI_STATUS (AE_NO_MEMORY);	}	/* Init CID list */	cid_list->count = count;	cid_list->size = size;	/*	 *  A _CID can return either a single compatible ID or a package of compatible	 *  IDs.  Each compatible ID can be one of the following:	 *  -- Number (32 bit compressed EISA ID) or	 *  -- String (PCI ID format, e.g. "PCI\VEN_vvvv&DEV_dddd&SUBSYS_ssssssss").	 */	/* The _CID object can be either a single CID or a package (list) of CIDs */	if (ACPI_GET_OBJECT_TYPE (obj_desc) == ACPI_TYPE_PACKAGE) {		/* Translate each package element */		for (i = 0; i < count; i++) {			status = acpi_ut_translate_one_cid (obj_desc->package.elements[i],					  &cid_list->id[i]);			if (ACPI_FAILURE (status)) {				break;			}		}	}	else {		/* Only one CID, translate to a string */		status = acpi_ut_translate_one_cid (obj_desc, cid_list->id);	}	/* Cleanup on error */	if (ACPI_FAILURE (status)) {		ACPI_MEM_FREE (cid_list);	}	else {		*return_cid_list = cid_list;	}	/* On exit, we must delete the _CID return object */	acpi_ut_remove_reference (obj_desc);	return_ACPI_STATUS (status);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/44f6c01242da4e162f28d8e1216a8c7a91174605/uteval.c/buggy/drivers/acpi/utilities/uteval.c