5.2 Qualitative Node Definition
5.2.3 Widgets
A widget is the smallest enumerable and addressable module within a function group. A single function group may contain several instances of certain widgets. For each widget, there is defined a set of standard parameters (capabilities) and controls (command and status registers). Again, each widget is formally defined by its own set of parameters (capabilities) and controls (command and status registers); however, since some parameters and controls are formatted to be used with multiple different widget types, it is easier to first understand widgets at the qualitative level provided in this section. Thereafter, the exact data type, layout, and semantics of each parameter and control are defined in Section 5.2.3.7. Currently defined widgets are:
•
Audio Output Converter Widget•
Audio Input Converter Widget•
Pin Widget•
Mixer (Summing Amp) Widget•
Selector (Multiplexer) Widget•
Power WidgetIn addition to these standard widgets defined in this specification, it is possible for vendors to define other proprietary widgets for use in any proprietary function groups they define.
Codec Features and Requirements
5.2.3.1
Audio Output Converter Widget
The Audio Output Converter Widget is primarily a DAC for analog converters or a digital sample formatter (e.g., for S/PDIF) for digital converters. Its input is always connected to the Intel High Definition Audio Link interface in the codec, and its output will be available in the connection list of other widget(s), such as a Pin Widget. This widget may contain an optional output amplifier, or a processing node, as defined by its parameters (Figure 5-5). Its parameters also provide information on the capabilities of the DAC and whether this is a mono or stereo (1- or 2-channel) converter. In order to save parameter space in an Audio Function Group incorporating several Audio Output Converter Widgets, the function group node may optionally contain defaults for many of the DAC and amplifier parameters; however, these defaults may be over-ridden with local parameters if necessary.
The Audio Output Converter Widget provides controls to access all its parametric configuration state, as well as to bind a stream and channel(s) on the Link to this converter. In the case of a 2- channel converter, only the “left” channel is specified; the “right” channel will automatically become the next larger channel number within the specified stream (see Section 5.3.3.11).
5.2.3.2
Audio Input Converter Widget
The Audio Input Converter Widget is composed primarily of an ADC for analog converters or a digital sample formatter (e.g., for S/PDIF) for digital converters. Its output is always connected to the Link interface in the codec, and its input will be selected from its own input connection list. This widget may contain an optional input amplifier, or a processing node, as defined by its parameters (Figure 5-6). Its parameters also provide information on the capabilities of the ADC, and whether this is a mono or stereo (1- or 2-channel) converter. In order to save parameter space in an Audio Function Group incorporating several Audio Input Converter Widgets, the function group node may optionally contain defaults for many of the ADC and amplifier parameters; however, these defaults may be over-ridden with local parameters if necessary.
Figure 5-5. Audio Output Converter Widget
Amp Link Proc Optional processingnode X/F DAC M Stream/Channel ID DAC(withparameters),or Digital Formatter(e.g.,S/PDIF) Optional Ampw/Mute toFunction GroupInternal Routing
Codec Features and Requirements
The Audio Input Converter Widget provides controls to access all its parametric configuration state, as well as to bind a stream and channel(s) on the Link to this converter. In the case of a 2- channel converter, only the “left” channel is specified; the “right” channel will automatically become the next larger channel number within the specified stream (see Section 5.3.3.11.
5.2.3.3
Pin Widget
The Pin Widget provides the external (analog or digital) connection for the audio and other function groups. A Pin Widget further includes those signals directly related to the external connections, such as jack sense and Vref control signals (Figure 5-7). However, GPIO pins are not identified as part of a Pin Widget but are a resource of the function group (see Sections 1.2.2.1 and The Pin Widget's capabilities are highly parameterized defining optional support for:
•
Input, output (or both), including the presence and capability of amplifier(s)•
Stereo or mono (1- or 2-channel)•
Plug (presence) detection•
Attached device impedance sensing•
VRef bias for microphone supportEvery Pin Widget must contain a Configuration Default Register as defined inSection 5.3.3.31 In order to save parameter space in a function group incorporating several Pin Widgets, the function group node may optionally contain defaults for the amplifier parameters; however, these defaults may be over-ridden with local parameters if necessary.
The channel played on the external output pin (input to the Pin Widget) will be selected from its own input connection list; the channel on the external input pin will be available in the connection list of other widget(s), such as an Audio Input Converter Widget.
Figure 5-6. Audio Input Converter Widget
Amp Link Proc Optional processingnode X/F ADC M Stream/Channel ID ADC(withparameters),or Digital Formatter(e.g.,S/PDIF) Optional Ampw/Mute fromFunction GroupInternal Routing
Codec Features and Requirements
5.2.3.4
Mixer (Summing Amp) Widget
The Mixer Widget provides the facility to arbitrarily mix multiple channels (sources). It has two or more inputs and one output. Each input has an optional input amplifier (including an optional mute), which is optional to all inputs collectively; i.e., they must all have (or not have) the amplifier/mute. The output also has an optional amplifier and optional mute. Input and output amplifiers may be separately defined, but all input amplifiers (when present) must have the same parameters. In the event that input amplifiers with differing parameters are needed, or if amplifiers are used on only some of the Mixer Widget inputs, then the Mixer Widget specifies no input amplifiers, and separate amplifiers (based on Selector Widgets) are created with appropriate connections to the Mixer Widget.
The Mixer Widget may be 1- or 2-channel (mono or stereo) with particular connections rules defined inSection 5.1.3. In order to save parameter space in an Audio Function Group
incorporating several Mixer Widgets, the function group node may optionally contain defaults for the amplifier parameters which may be used to define the Mixer Widget amplifiers; however, these defaults may be over-ridden with local parameters if necessary.
Figure 5-7. Pin Widget
Amp
MAmp
L
PnP
R
Wiper
V-Ref
to
Function Group
Internal Routing
from
Function Group
Internal Routing
Optional
Impedance Sense
Optional Amp
Amp
MAmp
L
PnP
R
Wiper
V-Ref
to
Function Group
Internal Routing
from
Function Group
Internal Routing
Optional
Impedance Sense
Optional Amp
Codec Features and Requirements
Inputs on the Mixer Widget are in its input Connection List and are hard wired (not selectable). Therefore, the Mixer Widget has no Connection Selector control. Input amplifiers/mutes are individually controlled by addressing their position (index) in the connection list. The Mixer Widget output will be available in the connection list of other widget(s).
5.2.3.5
Selector (Multiplexer) Widget
The Selector Widget provides a one-of-N signal selection. However, since the inputs to widgets generally have an implicit selector where needed, this widget may find infrequent use. A Selector Widget may be 1- or 2-channel and has one or more inputs and one output. Inputs on the Sum Widget are listed in its input Connection List; the output will be available in the Connection List of other widget(s). A selection among inputs is accomplished by a Connection Selector (control), the same as in other widgets with multiple inputs. The output may have an optional amplifier with mute. In order to save parameter space in an Audio Function Group incorporating several Selector Widgets, the function group node may optionally contain defaults for the amplifier parameters; however, these defaults may be over-ridden with local parameters if necessary.
Note that a degenerate (simple) Selector Widget (with only one input) allows a means of defining an arbitrarily placed amplifier or processing node.
Figure 5-8. Mixer Widget
Σ
Σ
n
Amp
Optional Amps w/ Mute
Amp
Mto
Function Group Internal Routing
Optional Amp w/ Mute
from
Function Group Internal RoutingAmp
Amp
Summing Node M M MΣ
Σ
n
Amp
Optional Amps w/ Mute
Amp
Mto
Function Group Internal Routing
Optional Amp w/ Mute
from
Function Group Internal RoutingAmp
Amp
Summing Node M M M M M MFigure 5-9. Selector Widget
Amp
MMux
to
Function Group
Internal Routing
from
Function Group
Internal Routing
Proc
Optional processing node
Optional Amp w/ Mute
Amp
MAmp
MMux
to
Function Group
Internal Routing
from
Function Group
Internal Routing
Proc
Optional processing node
Codec Features and Requirements
5.2.3.6
Power Widget
The Power Widget provides a convenient means to optimize power management within the Audio Function Group by providing a single point of power state control for an arbitrary group of audio widgets. The Power Widget has no connections with other widgets but still uses its Connection List to specify the set of widgets associated with and controlled hereby. These associations are defined at design time and are not dynamic. Writing power state control to this widget will effectively place all associated widgets in the prescribed power state. However, in no circumstance may the Power Widget place any Audio Widget in a power state higher than the current power state of the Audio Function Group. Note that while the Power Widget does have a Connection List, it does not contain a Connection Selector, since there are no direct connections to other widgets.
5.2.3.7
Volume Knob Widget
The Volume Knob Widget provides for mechanical volume control of specified output pins. The physical nature of the volume control is not specified - it could be an analog wheel (pot.), push buttons, etc. - however, it does have a declared capability of being absolute (e.g., pot.) or relative (e.g., push buttons). This widget has a connection list that describes which other widgets (presumably Pin Widgets) have their volume controlled by the Volume Knob Widget; since no dynamic connections are formed, there is no Connection Selector.
The Volume Knob can be set by software to directly control the associated “slave” amplifiers, or to send an unsolicited response, allowing the function driver to “read” the Volume Knob and then adjust the associated “slave” amplifiers indirectly.
5.2.3.8
Beep Generator Widget
The tone or Beep Generator Widget is an option used to generate an approximated sine wave by dividing the 48-kHz frame marker by a programmable amount. When the beep generator is actively generating a tone, its output drives all Pin Widgets which are currently defined output pins in a method of the vendor's choice, either by switching the pin to the beep signal or by mixing the tone into the currently playing stream. This node is never listed on any other node's connection list. The actual vendor-defined connection only persists while the Beep Generator is actively generating a tone. This widget may contain an optional amplifier.
This Beep Generator feature is independent of any optional “PC Beep Pin” or “Analog Beep Pin” input which is intended to receive an externally generated tone or sound. The presence of such a beep input pin is not exposed to software, nor defined in this specification. If used, this type of beep input would be connected through the codec to output pins in a vendor defined way, but such a connection may be maintained only while the Link reset (RST#) is asserted.