Skip to content

Commit 2c31233

Browse files
mwaskodeb-intel
authored andcommitted
arch: fw: sof-zephyr hda io driver
sof-zephyr hda io driver architecture chapter Signed-off-by: Michal Wasko <[email protected]>
1 parent e1f4f89 commit 2c31233

File tree

5 files changed

+100
-0
lines changed

5 files changed

+100
-0
lines changed
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
.. _hda_driver:
2+
3+
HD-A IO Driver
4+
##############
5+
6+
.. uml:: images/hda_io_driver_deps.pu
7+
:caption: HD-A IO Driver overview
8+
9+
HD-A Gateways
10+
*************
11+
12+
Gateway Node Addressing
13+
=======================
14+
15+
There are four types of HD-A gateways. Note that the naming convention
16+
(inherited from c-spec) names the data flow direction based on the external
17+
entity's perspective. Therefore, "output" means that data comes to FW from the
18+
external source and "input" means that data is sent from FW to the external
19+
sink.
20+
21+
.. uml:: images/hda_playback.pu
22+
:caption: HD-A Playback
23+
24+
.. uml:: images/hda_capture.pu
25+
:caption: HD-A Capture
26+
27+
HD-A Gateway types:
28+
- HDA-A DMA Source,
29+
30+
- DMA Host Output,
31+
- DMA Link Input,
32+
33+
- HDA-A DMA Sink,
34+
35+
- DMA Host Input,
36+
- DMA Link Output
37+
38+
HD-A to HDMI
39+
============
40+
41+
There following options are available:
42+
43+
1. Legacy HD/A (not recommended),
44+
2. HW chaining in the DSP (depends on HW support),
45+
3. SW chaining in the DSP (recommended),
46+
4. Full Copier-...-Copier pipeline (more resources required).
47+
48+
The most resource-efficient way to do a simple HD/A to HD/A playback via the DSP
49+
is to use the "DMA Chaining" feature. FW provides an IPC command to connect two
50+
HD/A gateways with a simple data copier task running in the LL domain.
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
@startuml
2+
3+
component "host capture" as hc
4+
5+
package FW {
6+
component "Host Input" as hi
7+
component "Link Output" as lo
8+
}
9+
10+
component "link capture" as lc
11+
hc <- hi
12+
hi <- lo
13+
lo <- lc
14+
15+
@enduml
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
2+
@startuml
3+
allowmixing
4+
5+
component "hd-a io driver" as io_drv
6+
component "hd-a gateway" as gateway
7+
component "hd-a dma" as dma
8+
9+
io_drv -right-> gateway : provides
10+
gateway -down-> dma : use
11+
12+
@enduml
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
@startuml
2+
3+
component "host playback" as hp
4+
5+
package FW {
6+
component "Host Output" as ho
7+
component "Link Input" as li
8+
}
9+
10+
component "link playback" as lp
11+
hp -> ho
12+
ho -> li
13+
li -> lp
14+
15+
@enduml

architectures/firmware/sof-zephyr/rtos_layer/io_drivers/index.rst

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,11 @@ still in use as a substitute of Gateways.
1919

2020
.. uml:: images/io_drivers_diagram.pu
2121
:caption: IO Drivers diagram
22+
23+
Drivers
24+
*******
25+
26+
.. toctree::
27+
:maxdepth: 1
28+
29+
hda/hda_driver

0 commit comments

Comments
 (0)