예제 #1
0
파일: rsxface.c 프로젝트: 9elements/fwts
ACPI_STATUS
AcpiResourceToAddress64 (
    ACPI_RESOURCE               *Resource,
    ACPI_RESOURCE_ADDRESS64     *Out)
{
    ACPI_RESOURCE_ADDRESS16     *Address16;
    ACPI_RESOURCE_ADDRESS32     *Address32;


    if (!Resource || !Out)
    {
        return (AE_BAD_PARAMETER);
    }

    /* Convert 16 or 32 address descriptor to 64 */

    switch (Resource->Type)
    {
    case ACPI_RESOURCE_TYPE_ADDRESS16:

        Address16 = ACPI_CAST_PTR (
            ACPI_RESOURCE_ADDRESS16, &Resource->Data);
        ACPI_COPY_ADDRESS (Out, Address16);
        break;

    case ACPI_RESOURCE_TYPE_ADDRESS32:

        Address32 = ACPI_CAST_PTR (
            ACPI_RESOURCE_ADDRESS32, &Resource->Data);
        ACPI_COPY_ADDRESS (Out, Address32);
        break;

    case ACPI_RESOURCE_TYPE_ADDRESS64:

        /* Simple copy for 64 bit source */

        memcpy (Out, &Resource->Data, sizeof (ACPI_RESOURCE_ADDRESS64));
        break;

    default:

        return (AE_BAD_PARAMETER);
    }

    return (AE_OK);
}
예제 #2
0
/******************************************************************************
 *
 * FUNCTION:    acpi_resource_to_address64
 *
 * PARAMETERS:  resource        - Pointer to a resource
 *              out             - Pointer to the users's return buffer
 *                                (a struct acpi_resource_address64)
 *
 * RETURN:      Status
 *
 * DESCRIPTION: If the resource is an address16, address32, or address64,
 *              copy it to the address64 return buffer. This saves the
 *              caller from having to duplicate code for different-sized
 *              addresses.
 *
 ******************************************************************************/
acpi_status
acpi_resource_to_address64(struct acpi_resource *resource,
			   struct acpi_resource_address64 *out)
{
	struct acpi_resource_address16 *address16;
	struct acpi_resource_address32 *address32;

	if (!resource || !out) {
		return (AE_BAD_PARAMETER);
	}

	/* Convert 16 or 32 address descriptor to 64 */

	switch (resource->type) {
	case ACPI_RESOURCE_TYPE_ADDRESS16:

		address16 =
		    ACPI_CAST_PTR(struct acpi_resource_address16,
				  &resource->data);
		ACPI_COPY_ADDRESS(out, address16);
		break;

	case ACPI_RESOURCE_TYPE_ADDRESS32:

		address32 =
		    ACPI_CAST_PTR(struct acpi_resource_address32,
				  &resource->data);
		ACPI_COPY_ADDRESS(out, address32);
		break;

	case ACPI_RESOURCE_TYPE_ADDRESS64:

		/* Simple copy for 64 bit source */

		ACPI_MEMCPY(out, &resource->data,
			    sizeof(struct acpi_resource_address64));
		break;

	default:

		return (AE_BAD_PARAMETER);
	}

	return (AE_OK);
}
예제 #3
0
acpi_status
acpi_resource_to_address64(struct acpi_resource *resource,
			   struct acpi_resource_address64 *out)
{
	struct acpi_resource_address16 *address16;
	struct acpi_resource_address32 *address32;

	if (!resource || !out) {
		return (AE_BAD_PARAMETER);
	}

	

	switch (resource->type) {
	case ACPI_RESOURCE_TYPE_ADDRESS16:

		address16 =
		    ACPI_CAST_PTR(struct acpi_resource_address16,
				  &resource->data);
		ACPI_COPY_ADDRESS(out, address16);
		break;

	case ACPI_RESOURCE_TYPE_ADDRESS32:

		address32 =
		    ACPI_CAST_PTR(struct acpi_resource_address32,
				  &resource->data);
		ACPI_COPY_ADDRESS(out, address32);
		break;

	case ACPI_RESOURCE_TYPE_ADDRESS64:

		

		ACPI_MEMCPY(out, &resource->data,
			    sizeof(struct acpi_resource_address64));
		break;

	default:
		return (AE_BAD_PARAMETER);
	}

	return (AE_OK);
}
예제 #4
0
acpi_status
acpi_resource_to_address64 (
	struct acpi_resource                *resource,
	struct acpi_resource_address64      *out)
{
	struct acpi_resource_address16      *address16;
	struct acpi_resource_address32      *address32;


	switch (resource->id) {
	case ACPI_RSTYPE_ADDRESS16:

		address16 = (struct acpi_resource_address16 *) &resource->data;
		ACPI_COPY_ADDRESS(out, address16);
		break;


	case ACPI_RSTYPE_ADDRESS32:

		address32 = (struct acpi_resource_address32 *) &resource->data;
		ACPI_COPY_ADDRESS(out, address32);
		break;


	case ACPI_RSTYPE_ADDRESS64:

		/* Simple copy for 64 bit source */

		ACPI_MEMCPY (out, &resource->data, sizeof (struct acpi_resource_address64));
		break;


	default:
		return (AE_BAD_PARAMETER);
	}

	return (AE_OK);
}