- u8 *buffer = byte_stream_buffer;
- struct acpi_resource *output_struct = (void *)*output_buffer;
- u16 temp16;
- u8 temp8;
- acpi_size struct_size =
- ACPI_SIZEOF_RESOURCE(struct acpi_resource_generic_reg);
-
- ACPI_FUNCTION_TRACE("rs_generic_register_resource");
-
- /* Byte 0 is the Descriptor Type */
-
- buffer += 1;
-
- /* Get the Descriptor Length field (Bytes 1-2) */
-
- ACPI_MOVE_16_TO_16(&temp16, buffer);
- buffer += 2;
-
- /* Validate the descriptor length */
-
- if (temp16 != 12) {
- return_ACPI_STATUS(AE_AML_BAD_RESOURCE_LENGTH);
- }
-
- /* The number of bytes consumed is fixed (12 + 3) */
-
- *bytes_consumed = 15;
-
- /* Fill out the structure */
-
- output_struct->type = ACPI_RSTYPE_GENERIC_REG;
-
- /* Get space_id (Byte 3) */
-
- temp8 = *buffer;
- output_struct->data.generic_reg.space_id = temp8;
- buffer += 1;
-
- /* Get register_bit_width (Byte 4) */
-
- temp8 = *buffer;
- output_struct->data.generic_reg.bit_width = temp8;
- buffer += 1;
-
- /* Get register_bit_offset (Byte 5) */
-
- temp8 = *buffer;
- output_struct->data.generic_reg.bit_offset = temp8;
- buffer += 1;
-
- /* Get address_size (Byte 6) */
-
- temp8 = *buffer;
- output_struct->data.generic_reg.address_size = temp8;
- buffer += 1;
-
- /* Get register_address (Bytes 7-14) */
-
- ACPI_MOVE_64_TO_64(&output_struct->data.generic_reg.address, buffer);
-
- /* Set the Length parameter */
-
- output_struct->length = (u32) struct_size;
-
- /* Return the final size of the structure */
-
- *structure_size = struct_size;
- return_ACPI_STATUS(AE_OK);
-}
-
-/*******************************************************************************
- *
- * FUNCTION: acpi_rs_generic_register_stream
- *
- * PARAMETERS: Resource - Pointer to the resource linked list
- * output_buffer - Pointer to the user's return buffer
- * bytes_consumed - Pointer to where the number of bytes
- * used in the output_buffer is returned
- *
- * RETURN: Status
- *
- * DESCRIPTION: Take the linked list resource structure and fills in the
- * the appropriate bytes in a byte stream
- *
- ******************************************************************************/
-
-acpi_status
-acpi_rs_generic_register_stream(struct acpi_resource *resource,
- u8 ** output_buffer, acpi_size * bytes_consumed)
-{
- u8 *buffer = *output_buffer;
- u16 temp16;
-
- ACPI_FUNCTION_TRACE("rs_generic_register_stream");
-
- /* Set the Descriptor Type (Byte 0) */
-
- *buffer = ACPI_RDESC_TYPE_GENERIC_REGISTER;
- buffer += 1;
-
- /* Set the Descriptor Length (Bytes 1-2) */
-
- temp16 = 12;
- ACPI_MOVE_16_TO_16(buffer, &temp16);
- buffer += 2;
-
- /* Set space_id (Byte 3) */
-
- *buffer = (u8) resource->data.generic_reg.space_id;
- buffer += 1;
-
- /* Set register_bit_width (Byte 4) */
-
- *buffer = (u8) resource->data.generic_reg.bit_width;
- buffer += 1;
-
- /* Set register_bit_offset (Byte 5) */
-
- *buffer = (u8) resource->data.generic_reg.bit_offset;
- buffer += 1;
-
- /* Set address_size (Byte 6) */
-
- *buffer = (u8) resource->data.generic_reg.address_size;
- buffer += 1;
-
- /* Set register_address (Bytes 7-14) */
-
- ACPI_MOVE_64_TO_64(buffer, &resource->data.generic_reg.address);
- buffer += 8;
-
- /* Return the number of bytes consumed in this operation */
-
- *bytes_consumed = ACPI_PTR_DIFF(buffer, *output_buffer);
- return_ACPI_STATUS(AE_OK);
-}
-
-/*******************************************************************************
- *
- * FUNCTION: acpi_rs_end_tag_resource
- *
- * PARAMETERS: byte_stream_buffer - Pointer to the resource input byte
- * stream
- * bytes_consumed - Pointer to where the number of bytes
- * consumed the byte_stream_buffer is
- * returned
- * output_buffer - Pointer to the return data buffer
- * structure_size - Pointer to where the number of bytes
- * in the return data struct is returned
- *
- * RETURN: Status
- *
- * DESCRIPTION: Take the resource byte stream and fill out the appropriate
- * structure pointed to by the output_buffer. Return the
- * number of bytes consumed from the byte stream.
- *
- ******************************************************************************/
-
-acpi_status
-acpi_rs_end_tag_resource(u8 * byte_stream_buffer,
- acpi_size * bytes_consumed,
- u8 ** output_buffer, acpi_size * structure_size)
-{
- struct acpi_resource *output_struct = (void *)*output_buffer;
- acpi_size struct_size = ACPI_RESOURCE_LENGTH;
-
- ACPI_FUNCTION_TRACE("rs_end_tag_resource");
-
- /* The number of bytes consumed is static */
-
- *bytes_consumed = 2;
-
- /* Fill out the structure */
-
- output_struct->type = ACPI_RSTYPE_END_TAG;
-
- /* Set the Length parameter */
-
- output_struct->length = 0;
-
- /* Return the final size of the structure */
-
- *structure_size = struct_size;
- return_ACPI_STATUS(AE_OK);
-}
-
-/*******************************************************************************
- *
- * FUNCTION: acpi_rs_end_tag_stream
- *
- * PARAMETERS: Resource - Pointer to the resource linked list
- * output_buffer - Pointer to the user's return buffer
- * bytes_consumed - Pointer to where the number of bytes
- * used in the output_buffer is returned
- *
- * RETURN: Status
- *
- * DESCRIPTION: Take the linked list resource structure and fills in the
- * the appropriate bytes in a byte stream
- *
- ******************************************************************************/
-
-acpi_status
-acpi_rs_end_tag_stream(struct acpi_resource *resource,
- u8 ** output_buffer, acpi_size * bytes_consumed)
-{
- u8 *buffer = *output_buffer;
- u8 temp8 = 0;
-
- ACPI_FUNCTION_TRACE("rs_end_tag_stream");
-
- /* The Descriptor Type field is static */
-
- *buffer = ACPI_RDESC_TYPE_END_TAG | 0x01;
- buffer += 1;
-
- /*
- * Set the Checksum - zero means that the resource data is treated as if
- * the checksum operation succeeded (ACPI Spec 1.0b Section 6.4.2.8)
- */
- temp8 = 0;
-
- *buffer = temp8;
- buffer += 1;
-
- /* Return the number of bytes consumed in this operation */
-
- *bytes_consumed = ACPI_PTR_DIFF(buffer, *output_buffer);
- return_ACPI_STATUS(AE_OK);
-}
-
-/*******************************************************************************
- *
- * FUNCTION: acpi_rs_vendor_resource
- *
- * PARAMETERS: byte_stream_buffer - Pointer to the resource input byte
- * stream
- * bytes_consumed - Pointer to where the number of bytes
- * consumed the byte_stream_buffer is
- * returned
- * output_buffer - Pointer to the return data buffer
- * structure_size - Pointer to where the number of bytes
- * in the return data struct is returned
- *
- * RETURN: Status
- *
- * DESCRIPTION: Take the resource byte stream and fill out the appropriate
- * structure pointed to by the output_buffer. Return the
- * number of bytes consumed from the byte stream.
- *
- ******************************************************************************/
-
-acpi_status
-acpi_rs_vendor_resource(u8 * byte_stream_buffer,
- acpi_size * bytes_consumed,
- u8 ** output_buffer, acpi_size * structure_size)
-{
- u8 *buffer = byte_stream_buffer;
- struct acpi_resource *output_struct = (void *)*output_buffer;