Repository navigation
Expand file tree
/
Copy pathKconfig
More file actions
312 lines (264 loc) · 10.1 KB
/
Copy pathKconfig
File metadata and controls
312 lines (264 loc) · 10.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
rsource "drivers/Kconfig"
config AES67_PTP_SOFTWARE
bool "Build software-PTP support (Zephyr IEEE 1588 stack)"
default y
depends on FPGA_HAL_LITEX || FPGA_HAL_SPI
depends on PTP
help
Compile support for running PTP in software: Zephyr's IEEE 1588
stack (CONFIG_PTP) disciplining the FPGA wallclock through the
aes67 PHC. Works on the integrated softcore (FPGA_HAL_LITEX) and
on an external MCU over spibone (FPGA_HAL_SPI).
This is a COMPILE-TIME capability, not a mode selection: both the
software stack and the FPGA-BMC path (ptp_bmc.c) are built into
every image. At boot the firmware reads the gateware's static
build configuration (system_cfg CSRs) and starts whichever service
the bitstream was built for — PTP_IN_SOFTWARE gateware gets the
Zephyr stack (application-managed start, see
CONFIG_PTP_APP_MANAGED_START), hardware-PTP gateware gets ptp_bmc
and the Zephyr stack stays dormant. The Ethernet drivers likewise
decide at runtime whether to advertise ETHERNET_PTP, hand out the
aes67 PHC and parse the RX-timestamp trailer.
Do not `select` PTP here: it would form a Kconfig dependency loop
with the FPGA_HAL backend choice (PTP -> NET_SOCKETS -> ... -> SPI).
CONFIG_PTP is enabled in prj.conf instead.
# Extends the symbol of the same name from Zephyr's ESP32 WiFi driver
# (drivers/wifi/esp32/Kconfig.esp32), where it is hidden behind `if
# WIFI_ESP32`. The ESP32-S3 linker script keys the placement of the whole
# Zephyr net stack's .noinit input sections (net_pkt slabs, net_buf data
# pools — the big RAM consumers) into PSRAM on this symbol, independent of
# WiFi. Re-declaring it here makes it settable on the wired-Ethernet
# (eth_spi over spibone) build without dragging the WiFi stack in.
config ESP32_WIFI_NET_ALLOC_SPIRAM
bool "Place Zephyr network stack buffers in SPIRAM (PSRAM)"
depends on ESP_SPIRAM
help
Moves the network subsystem's .noinit data (packet slabs and
net_buf pools) into external PSRAM, freeing internal DRAM for
stacks and heap. Requires CONFIG_ESP_SPIRAM.
config APP_SPI_BRINGUP
bool "Build the SPI bring-up stub instead of the full control plane"
default n
depends on FPGA_HAL_SPI
help
When set, build the minimal main_spi_bringup.c that only programs
default registers and polls status. Useful for bare SPI bring-up
before the full networking stack is on the board. The full app
(HTTP / RTSP / mDNS / PTP BMC) is the default for every HAL
backend that has networking, including SPI.
menu "USB audio interface (UAC2 <-> FPGA I2S)"
config AES67_USB_AUDIO
bool "Expose the FPGA audio port as a USB Audio Class 2 device"
default n
depends on FPGA_HAL_SPI
depends on USB_DEVICE_STACK_NEXT && USBD_AUDIO2_CLASS
depends on SOC_SERIES_ESP32S3
help
Experimental "AES67 USB audio interface": the ESP32-S3's USB-OTG
core enumerates as a UAC2 device (2 in / 2 out, 48 kHz, 24 bit)
and the samples are shovelled between the USB isochronous
endpoints and an I2S port on which the ESP32 is the *target*
(slave) of the FPGA's PTP-disciplined media clock. Implicit
feedback keeps the host's rate locked to the FPGA clock. See
soc_firmware/docs/usb-audio-plan.md and src/usb_audio.c.
Needs the zephyr,uac2 node + i2s0 + usb_otg from the board overlay
and moves the console off the USB Serial/JTAG port (shared PHY).
if AES67_USB_AUDIO
config AES67_USB_AUDIO_VID
hex "USB vendor ID"
default 0x1209
help
0x1209 is pid.codes; PIDs 0x0001-0x0010 there are reserved for
testing/private use, which is what this experiment is. Replace
before shipping anything.
config AES67_USB_AUDIO_PID
hex "USB product ID"
default 0x0001
config AES67_USB_AUDIO_MANUFACTURER
string "USB manufacturer string"
default "AES67 project"
config AES67_USB_AUDIO_PRODUCT
string "USB product string suffix"
default "AES67USB"
help
The USB product string is "<hostname> <suffix>", the hostname being
the same one the device uses on the network (aes67_config). The
suffix alone is used when no hostname is configured. Note that
desktops resolve the model name from the USB ID database first;
with a pid.codes test PID they display "pid.codes Test PID"
regardless of this string.
config AES67_USB_AUDIO_MAX_POWER
int "bMaxPower (2 mA units)"
default 250
help
Bus power the configuration descriptor asks for. 250 = 500 mA:
the DevKitC + FPGA board are powered from this port in the
bench setup.
config AES67_USB_AUDIO_AUTOSTART
bool "Enable the USB device at boot"
default y
help
Bring the USB device up at the end of main(). Off = the I2S/USB
path stays idle until 'usbaudio start' is issued from the shell
(bring-up aid).
endif # AES67_USB_AUDIO
endmenu
menu "RAVENNA RTSP Server/Client"
config RTSP
bool "Enable RTSP server and client for stream control"
default y
depends on NETWORKING && NET_TCP && NET_SOCKETS
help
Enable RAVENNA-compliant RTSP (RFC 2326) server and client.
The server exposes TX streams for remote subscription via
DESCRIBE/SETUP/PLAY commands. The client can subscribe to
remote streams for RX configuration.
config RTSP_AUTO_START
bool "Auto-start RTSP server at boot"
default y
depends on RTSP
help
Automatically start the RTSP server when the network is ready.
If disabled, use the 'rtsp start' shell command to start manually.
config RTSP_PORT
int "RTSP server port"
default 554
depends on RTSP
help
TCP port for the RTSP server. Standard RTSP port is 554.
config RTSP_MAX_SESSIONS
int "Maximum concurrent RTSP sessions"
default 8
depends on RTSP
help
Maximum number of concurrent streaming sessions the server
can maintain.
config RTSP_MAX_CLIENTS
int "Maximum RTSP client connections"
default 4
depends on RTSP
help
Maximum number of outgoing client connections for
subscribing to remote streams.
endmenu
menu "RAVENNA mDNS/DNS-SD Discovery"
config MDNS_SD
bool "Enable mDNS/DNS-SD service advertisement + discovery"
default y
depends on NETWORKING
help
Advertise HTTP and RTSP services (plus per-session
_ravenna_session._sub._rtsp._tcp records) and browse for
remote RAVENNA sessions per Operating Principles §3.5.
Self-contained responder+browser on UDP 5353 — do NOT enable
Zephyr's CONFIG_MDNS_RESPONDER alongside (both bind :5353).
config MDNS_SD_VENDOR_ID
string "Vendor identifier"
default "AES67"
depends on MDNS_SD
help
Vendor name for the RAVENNA vendor node ID.
config MDNS_SD_PRODUCT_ID
string "Product identifier"
default "AudioNode"
depends on MDNS_SD
help
Product name for the RAVENNA vendor node ID.
config MDNS_SD_SERIAL
string "Device serial number"
default "0001"
depends on MDNS_SD
help
Serial number for the RAVENNA vendor node ID.
Must be unique per device.
endmenu
menu "NMOS (AMWA IS-04 / IS-05)"
config NMOS
bool "NMOS IS-04 Node API"
default y
depends on NETWORKING && HTTP_SERVER
help
Serve the AMWA IS-04 v1.3 Node API under /x-nmos/node/ on the
built-in HTTP server: node/device/source/flow/sender/receiver
resources derived from the live AES67 stream tables, plus the
SDP manifests for senders under /x-nmos/manifest/. The IS-04
registration client and peer-to-peer mDNS advertisement build
on top of this.
config NMOS_REGISTRATION
bool "NMOS IS-04 registration client"
default y
depends on NMOS && MDNS_SD
help
Discover NMOS Registration APIs via mDNS (_nmos-register._tcp),
register the node's resources and maintain them with 5-second
heartbeats, with failover and exponential backoff per IS-04.
While registered the _nmos-node._tcp advertisement is withdrawn;
without a registry the node falls back to peer-to-peer mode.
config NMOS_IS05
bool "NMOS IS-05 Connection API"
default y
depends on NMOS
help
Serve the AMWA IS-05 v1.1 Connection API under
/x-nmos/connection/: staged/active transport parameters,
immediate and scheduled activations, receiver SDP transport
files and the bulk interface. Activations are applied to the
FPGA stream tables through aes67_conn; the IS-04 resources
mirror the resulting subscription state.
config NMOS_IS08
bool "NMOS IS-08 Audio Channel Mapping API"
default y
depends on NMOS
help
Serve the AMWA IS-08 v1.0 Channel Mapping API under
/x-nmos/channelmapping/: physical AD inputs to the TX stream
senders and RX stream receivers to the physical DA outputs.
Map activations rewrite the FPGA ch_ids/ch_map tables through
aes67_conn; the device control urn:x-nmos:control:cm-ctrl is
advertised in the IS-04 device.
endmenu
menu "SD Card Configuration Storage"
config SD_CONFIG
bool "Enable SD card configuration storage"
default y
depends on FILE_SYSTEM && FAT_FILESYSTEM_ELM && DISK_ACCESS
help
Store device configuration and stream settings on SD card as JSON.
The config file is loaded at boot and saved when changes are made.
endmenu
menu "Flash Configuration Storage"
config FLASH_CONFIG
bool "Enable flash configuration storage"
default y
depends on SPI_FLASH_LITESPI || FLASH_MAP
help
Store device configuration in flash using a crash-safe A/B slot
scheme with CRC-32 verification. Provides a fallback when no SD
card is present. The storage backend follows the platform: the
FPGA board's SPI NOR flash via the LiteSPI spi_flash driver on
the integrated softcore, or the MCU's own program flash (fixed
"storage" partition via the Zephyr flash map) on external-MCU
builds such as the ESP32-S3.
config FLASH_CONFIG_BACKEND_LITESPI
def_bool SPI_FLASH_LITESPI
depends on FLASH_CONFIG
config FLASH_CONFIG_BACKEND_FLASH_AREA
def_bool !SPI_FLASH_LITESPI && FLASH_MAP
depends on FLASH_CONFIG
config FLASH_CONFIG_OFFSET
hex "Flash offset for config storage (0-based)"
default 0x7F0000
depends on FLASH_CONFIG_BACKEND_LITESPI
help
Byte offset within the SPI flash where config storage begins.
Two 8 KB slots are placed here (16 KB total).
Default 0x7F0000 = 8 MB - 64 KB, well above firmware area.
(The flash-map backend ignores this and uses the "storage"
partition from the devicetree instead.)
endmenu
menu "Zephyr"
source "Kconfig.zephyr"
endmenu
module = APP
module-str = APP
source "subsys/logging/Kconfig.template.log_config"