File tree Expand file tree Collapse file tree 5 files changed +100
-0
lines changed
architectures/firmware/sof-zephyr/rtos_layer/io_drivers Expand file tree Collapse file tree 5 files changed +100
-0
lines changed Original file line number Diff line number Diff line change
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.
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change @@ -19,3 +19,11 @@ still in use as a substitute of Gateways.
19
19
20
20
.. uml :: images/io_drivers_diagram.pu
21
21
:caption: IO Drivers diagram
22
+
23
+ Drivers
24
+ *******
25
+
26
+ .. toctree ::
27
+ :maxdepth: 1
28
+
29
+ hda/hda_driver
You can’t perform that action at this time.
0 commit comments