HD-A IO Driver


@startuml
allowmixing

component "hd-a io driver" as io_drv
component "hd-a gateway" as gateway
component "hd-a dma" as dma

io_drv -right-> gateway : provides
gateway -down-> dma : use

@enduml

Figure 75 HD-A IO Driver overview

HD-A Gateways

Gateway Node Addressing

There are four types of HD-A gateways. Note that the naming convention (inherited from c-spec) names the data flow direction based on the external entity’s perspective. Therefore, “output” means that data comes to FW from the external source and “input” means that data is sent from FW to the external sink.

@startuml

component "host playback" as hp

package FW {
	component "Host Output" as ho
	component "Link Input" as li
}

component "link playback" as lp
hp -> ho
ho -> li
li -> lp

@enduml

Figure 76 HD-A Playback

@startuml

component "host capture" as hc

package FW {
	component "Host Input" as hi
	component "Link Output" as lo
}

component "link capture" as lc
hc <- hi
hi <- lo
lo <- lc

@enduml

Figure 77 HD-A Capture

HD-A Gateway types:
  • HDA-A DMA Source,

    • DMA Host Output,

    • DMA Link Input,

  • HDA-A DMA Sink,

    • DMA Host Input,

    • DMA Link Output

HD-A to HDMI

There following options are available:

  1. Legacy HD/A (not recommended),

  2. HW chaining in the DSP (depends on HW support),

  3. SW chaining in the DSP (recommended),

  4. Full Copier-…-Copier pipeline (more resources required).

The most resource-efficient way to do a simple HD/A to HD/A playback via the DSP is to use the “DMA Chaining” feature. FW provides an IPC command to connect two HD/A gateways with a simple data copier task running in the LL domain.