• No results found

7.1 Codec Architecture

7.1.2 Node Addressing

Each node in the codec architecture (i.e., root node, function group nodes, and widget nodes) may be uniquely addressed to access its various parameters and controls for purposes of enumeration and run-time control. Each physical codec connected to the Link is assigned a unique codec address (CAd) at initialization (refer to Section 5.5.3.2), which is thereafter used as part of this

completely flat, and is defined to simplify the software discovery of the codec‟s capabilities (see Figure 50). Each node within a codec has a unique node ID (NID). The concatenation of CAd and NID provide a unique address allowing commands to reference a single specific node within the particular High Definition Audio subsystem.

The root node is the top level node of any codec and is always addressed as node zero (NID = 0) at the codec address (CAd) assigned to this codec. The root node contains device level information including the number of function groups in this codec and the NID of the first function group. Each codec contains at least one function group. All function groups within the codec are

identified with sequential NIDs; the root node specifies the beginning NID in this sequential series. Each function group contains several parameters, including the starting NID of its particular

collection of widgets; all widgets associated with this function group must be numbered sequentially starting at the reported NID.

High Definition Audio Codec

Root Node NID=0

NID=3 NID=4 NID=5

StartNode = 9 NumNodes = 3 StartNode = 12 NumNodes = 2 StartNode = 68 NumNodes = 4 StartNode = 3 NumNodes = 3 NID=9 NID=10

NID=11 NID=12 NID=13 NID=68

NID=69 NID=70 NID=71

Function Group Nodes (i.e, Audio, Modem)

Widget Nodes (i.e., Input Converter,

Mux, Pin Complex)

Figure 50. Codec Module Addressing Scheme

Nominally, a NID is represented in a “short-form” as a 7-bit integer. However, in very large codecs (e.g., containing more than 127 nodes), NIDs may be represented in a “long-form” as a 15-bit integer, as shown in Figure 51.

Each widget with inputs that are driven from the outputs of other widgets must have a

Connection_List(parameter), or a list of NIDs that can be used as inputs. The number of entries (NIDs) in this list is specified in a Connect_List_Length register (parameter) as a 7-bit integer. The high order bit in the Connection List Length register indicates whether NIDs in this particular list will be represented in long-form or short-form (see Figure 51).

7-bit scalar

7 6 0

number of NID entries in connection list

0 = list uses short-form NIDs 1 = list uses long-form NIDs

Connection List Length 7-bit scalar

7 6 0

number of NID entries in connection list

0 = list uses short-form NIDs 1 = list uses long-form NIDs Connection List Length

Connection List Entry NID

7 6 0

0 = Independent NID 1 = Range of NIDs

15 14 0 using long-form NID

using short-form NID NID

7 6 0

0 = Independent NID 1 = Range of NIDs

15 14 0 using long-form NID

using short-form NID

Figure 51. Connection Lists

Each entry in the connection list is one NID; it may be an independent NID, indicating a single node, or may be part of a 2-tuple of NIDs delineating a continuous range of nodes. The high order bit of each entry indicates how it is to be interpreted (see Figure 51). If the range indicator is set, that list entry forms a range with the previous list entry; i.e., if the range bit were set on the third list entry, then the second and third entries form a range, and the first entry is an independent NID. The range indicator may not be set in the first entry of a connection list nor may it be set on any two sequential list entries. The connection list thus provides a set of optional inputs to the node. A connection selector (control) allows run-time control over which input is used.

Identifying a range of nodes allows for a reduction of enumeration data space in some cases. For example, in specifying the possible connection of four input pins to a single A/D converter, the connectivity list may have four entries, each identifying one of the input pins, or, if the NIDs of the input pins were sequential, the connection list could be reduced in size to two entries specifying a range comprising the same four input pins.

Based on this addressing scheme, 12 of the 32 bits of a verb are used to address a specific node in the system, as shown in Figure 52. The high order four bits in any verb are the codec address and specify a physical codec on the Link. Bits 26-20 (7 bits) are the node ID. Bit 27 allows for an indirect addressing mechanism (to be specified) for codecs that have more than 127 nodes to address and, therefore, use the long form (15-bits) of node addressing. The low order 20 bits of a Verb contain the actual command and payload data.

A CAd of 15 (all ones) is reserved for broadcasting to all codecs. A codec must respond to this CAd = 15 as well as to the one it was assigned during the link initialization sequence. However, there are not currently any commands or verbs defined that are intended for use in a broadcast manner.

CAd

31 28 27

Verb Layout

26 19 0

Verb & Command data

I NID

20

0 = Direct NID reference 1 = Indirect NID reference CAd

31 28 27

Verb Layout

26 19 0

Verb & Command data

I NID

20

0 = Direct NID reference 1 = Indirect NID reference

Figure 52. Verb Addressing Fields

Related documents