HDAUDIO_CODEC_RESPONSE structure (hdaudio.h)

The HDAUDIO_CODEC_RESPONSE structure specifies either a response to a codec command or an unsolicited response from a codec.

Syntax

typedef struct _HDAUDIO_CODEC_RESPONSE {
  union {
    struct {
      union {
        struct {
          ULONG Response : 21;
          ULONG SubTag : 5;
          ULONG Tag : 6;
        } Unsolicited;
        ULONG Response;
      };
      ULONG SDataIn : 4;
      ULONG IsUnsolicitedResponse : 1;
      ULONG HasFifoOverrun : 1;
      ULONG IsValid : 1;
    };
    ULONGLONG CompleteResponse;
  };
} HDAUDIO_CODEC_RESPONSE, *PHDAUDIO_CODEC_RESPONSE;

Members

Unsolicited

Specifies a 32-bit unsolicited response value that consists of a 26-bit response value and a 6-bit tag value.

Unsolicited.Response

Specifies a 21-bit unsolicited response value.

Unsolicited.SubTag

Specifies a 5-bit SubTag.

Unsolicited.Tag

Specifies a 6-bit tag value for an unsolicited response.

Response

Specifies a response value.

SDataIn

Specifies the 4-bit codec address (SDI line) of the codec that generates the response.

IsUnsolicitedResponse

Specifies whether the response is unsolicited. If 1, the response is unsolicited. If 0, the response is solicited (that is, a response to a codec command).

HasFifoOverrun

Specifies whether a FIFO overrun occurred in the response input ring buffer (RIRB). If 1, a FIFO overrun occurred. If 0, a FIFO overrun did not occur.

IsValid

Specifies whether the response is valid. If 1, the response is valid. If 0, it is not valid.

CompleteResponse

Specifies a complete, 64-bit response summary that consists of a 32-bit response, 4-bit codec address, three status bits, and 25 unused bits (set to zero). This value is mostly used in debug messages.

Remarks

After calling the TransferCodecVerbs routine, function drivers can use the HDAUDIO_CODEC_RESPONSE structure to decode the responses to their codec commands. The commands are contained in the HDAUDIO_CODEC_TRANSFER structures that clients pass to this routine as call parameters.

The callback for the RegisterEventCallback routine also uses the HDAUDIO_CODEC_RESPONSE structure.

Most members of this structure contain hardware-generated values that the bus driver copies directly from the corresponding RIRB entry. The two exceptions are the values of the IsValid and HasFifoOverrun members, which the bus driver software writes to the structure to indicate the error status of the response. For information about the RIRB entry format, see the Intel High Definition Audio Specification at the Intel HD Audio website.

If IsValid=0, one of the following has occurred:

  • If HasFifoOverrun=1, the RIRB FIFO overflowed.
  • If HasFifoOverrun=0, the codec failed to respond.
The unnamed 25-bitfield between the UnsolicitedResponse and HasFifoOverrun members is reserved for future expansion. The HD Audio bus controller currently writes zeros to this field.

Requirements

Requirement Value
Header hdaudio.h (include Hdaudio.h)

See also

HDAUDIO_CODEC_TRANSFER

RegisterEventCallback

TransferCodecVerbs