The Device Multiplexer (devmux) is a pseudo-device that can be used to select between multiple included sub-devices. It is experimental, but its current use is in system remediation. Take for example, the scenario where the system console and log subsystem both have the uart backend enabled. The case may arise, where the chosen backing uart could be an abstraction of another very high-bandwidth bus - such as a PCIe BAR, a UDP socket, or even even just memory. If the "service" (for lack of a better term) that backs this abstract "uart" experiences an error, it is of critical importance to be able to switch the system console, uart log backend, or whatever to another uart (semi-transparently) in order to bring up a shell, continue to view system logs, or even just support user console I/O. Signed-off-by: Christopher Friedt <cfriedt@meta.com>
23 lines
596 B
Text
23 lines
596 B
Text
# Copyright (c) 2023, Meta
|
|
# SPDX-License-Identifier: Apache-2.0
|
|
|
|
config DEVMUX
|
|
bool "Device Multiplexer (devmux) [EXPERIMENTAL]"
|
|
depends on DT_HAS_ZEPHYR_DEVMUX_ENABLED
|
|
depends on DEVICE_MUTABLE
|
|
select EXPERIMENTAL
|
|
help
|
|
Devmux is a pseudo-device that operates as a device switch. It allows
|
|
software to select the data, config, and api from a number of linked
|
|
devices.
|
|
|
|
if DEVMUX
|
|
|
|
config DEVMUX_INIT_PRIORITY
|
|
int "Devmux init priority"
|
|
default 51
|
|
help
|
|
Init priority for the devmux driver. It must be
|
|
greater than the priority of the initially selected muxed device.
|
|
|
|
endif
|