Skip to content

Commit 0d05161

Browse files
mwaskodeb-intel
authored andcommitted
arch: fw: mpp layer description
Media Processing Pipelines layer diagram and descripion. Signed-off-by: Michal Wasko <[email protected]>
1 parent de1a122 commit 0d05161

File tree

4 files changed

+163
-0
lines changed

4 files changed

+163
-0
lines changed

architectures/firmware/sof-zephyr/index.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,3 +8,4 @@ SOF with Zephyr Architecture
88

99
overview
1010
app_layer/index
11+
mpp_layer/index
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
@startuml
2+
3+
allowmixing
4+
5+
scale max 1024 width
6+
7+
package "SOF" {
8+
9+
package "Media Processing Pipelines layer" as MEDIA_PROCESSING_PIPELINES {
10+
package "MPP Scheduling" as MPP_SCHEDULING {
11+
component "LL Tasks" as LL_TASKS
12+
component "DP Tasks" as DP_TASKS
13+
14+
DP_TASKS -[hidden]down- LL_TASKS
15+
}
16+
17+
package "Communication" as COMMUNICATION {
18+
component "IPC Message Processing and common command definitions" as IPC_MESSAGE_PROCESSING
19+
component "Async Messaging" as ASYNC_MESSAGING
20+
21+
IPC_MESSAGE_PROCESSING -[hidden]right- ASYNC_MESSAGING
22+
}
23+
24+
package "Pipeline/Component Infrastructure" as PIPELINE_COMPONENT_INFRASTRUCTURE {
25+
component "Pipeline Management" as PIPELINE_MANAGEMENT
26+
component "Host/DAI Gateways" as HOST_DAI_GATEWAYS
27+
component "Processing Component Management" as PROCESSING_COMPONENT_MANAGEMENT
28+
29+
PIPELINE_MANAGEMENT -[hidden]right- HOST_DAI_GATEWAYS
30+
HOST_DAI_GATEWAYS -[hidden]right- PROCESSING_COMPONENT_MANAGEMENT
31+
}
32+
33+
COMMUNICATION -[hidden]down- PIPELINE_COMPONENT_INFRASTRUCTURE
34+
COMMUNICATION -[hidden]right- MPP_SCHEDULING
35+
}
36+
37+
package "Zephyr" as ZEPHYR {
38+
interface "Zephyr Services, SoC HAL and Driver Interfaces" as SS
39+
40+
component "SoC HAL" as SOC
41+
component "Drivers" as DRIVERS
42+
component "XTHAL" as XTHAL
43+
component "Services" as SERVICES
44+
45+
SS -[hidden]down- SERVICES
46+
SERVICES -[hidden]right- SOC
47+
SOC -[hidden]right- DRIVERS
48+
DRIVERS -[hidden]right- XTHAL
49+
}
50+
51+
MEDIA_PROCESSING_PIPELINES -[hidden]down- ZEPHYR
52+
PIPELINE_COMPONENT_INFRASTRUCTURE -[hidden]down- ZEPHYR
53+
}
54+
55+
@enduml
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
.. _mpp_layer:
2+
3+
Media Processing Pipelines Layer
4+
################################
5+
6+
The Media Processing Pipelines (MPP) is a FW infrastructure layer independent to
7+
the HW. The MPP components serve as kernel services extension that is available
8+
to the Application layer.
9+
10+
.. toctree::
11+
:maxdepth: 1
12+
13+
mpp_overview
Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
.. _mpp_layer_overview:
2+
3+
Media Processing Pipelines Overview
4+
###################################
5+
6+
The Media Processing Pipelines (MPP) layer role is to enable SOF specific use
7+
cases that are not supported directly by Zephyr. The MPP is responsible for host
8+
communication, tasks scheduling, pipeline and component management.
9+
10+
.. uml:: images/mpp_layer_diagram.pu
11+
:caption: Media Processing Pipelines Layer diagram
12+
13+
Services in Media Processing Pipelines Layer
14+
********************************************
15+
16+
Gateways
17+
========
18+
19+
The gateways are a key element in SOF data exchange with host, external audio
20+
peripherals and internally between firmware components. They serve as an
21+
abstraction layer for multiple data protocols.
22+
23+
The typical audio stream (chain of pipelines) starts and ends with I/O gateway.
24+
I/O gateway represents a sink or a source interface that can be read or written
25+
via DMA operations on I/O FIFO (i.e. DMIC, SNDW, etc.) or directly via memory
26+
operations (i.e. memory buffers of IPC Gateway). Host Gateway is unique as it
27+
exposes interface endpoint to the Host driver.
28+
29+
The stream audio gateways are created as a part of Copier component
30+
configuration.
31+
32+
.. TODO: Add link to Copier detailed description
33+
34+
Examples of gateways:
35+
36+
- DMIC Gateway,
37+
- SoundWire Gateway,
38+
- I2S Gateway,
39+
- HD/A Gateway,
40+
- IPC Gateway,
41+
42+
.. TODO: Add link to Gateways detailed specification.
43+
44+
*NOTE:* Not all I/O gateways must be available in all configurations.
45+
46+
Pipeline Management
47+
===================
48+
49+
The Pipeline Management is a host IPC driven service that is used to:
50+
51+
- create / delete pipeline
52+
- switch pipeline state
53+
- create pipeline processing tasks
54+
- allocate pipeline buffers memory
55+
56+
.. TODO: Add link to Pipeline Management IPC interface.
57+
58+
Processing Component Management
59+
===============================
60+
61+
Processing Component Management is driven by host IPC requests. It is used to:
62+
63+
- instantiate / delete components
64+
- configure components
65+
- bind / unbind components into processing paths
66+
- load components into ADSP memory
67+
68+
.. TODO: Add link to Component Management IPC interface.
69+
70+
Asynchronous Messaging
71+
======================
72+
73+
Asynchronous Messaging Service (AMS) provides functionality to:
74+
75+
- send asynchronous messages to firmware components or host,
76+
- broadcast messages to multiple consumers,
77+
- asynchronous message exchange between components running on different cores
78+
79+
.. TODO: Add link to Asynchronous Messaging Service detailed description
80+
81+
MPP Scheduling
82+
==============
83+
84+
MPP Scheduling is dedicated to support Media Processing Pipelines services tasks
85+
scheduling. It exposes SOF specific interface that is implemented on top of
86+
Zephyr scheduling API.
87+
88+
MPP Scheduling features:
89+
90+
- Low Latency tasks scheduling,
91+
- Data Processing tasks scheduling,
92+
- Tasks with budget scheduling
93+
94+
.. TODO: Add link to MPP Scheduling detailed description

0 commit comments

Comments
 (0)