console-server: Add UART Mux Support
This commit adds support for uart-muxes which can be controlled via
gpios.
Change-Id: I91a4de1962554adf4302a2a59d2b371f492dc21d
Signed-off-by: Alexander Hansen <alexander.hansen@9elements.com>
Signed-off-by: Andrew Jeffery <andrew@codeconstruct.com.au>
diff --git a/console-server.c b/console-server.c
index 870e5a7..60d2d2e 100644
--- a/console-server.c
+++ b/console-server.c
@@ -38,6 +38,8 @@
#include <sys/socket.h>
#include <poll.h>
+#include "console-mux.h"
+
#include "console-server.h"
#include "config.h"
@@ -1075,6 +1077,12 @@
goto cleanup_console;
}
+ rc = console_mux_init(console, config);
+ if (rc) {
+ warnx("could not set mux gpios from config, exiting");
+ goto cleanup_rb;
+ }
+
if (set_socket_info(console, config, console_id)) {
warnx("set_socket_info failed");
goto cleanup_rb;
@@ -1210,6 +1218,11 @@
return -1;
}
+ rc = console_server_mux_init(server);
+ if (rc != 0) {
+ return -1;
+ }
+
uart_routing_init(server->config);
rc = tty_init(server, server->config, config_tty_kname);
@@ -1224,8 +1237,14 @@
return -1;
}
- server->active = console_server_add_consoles(server, console_id);
- if (server->active == NULL) {
+ struct console *initial_active =
+ console_server_add_consoles(server, console_id);
+ if (initial_active == NULL) {
+ return -1;
+ }
+
+ rc = console_mux_activate(initial_active);
+ if (rc != 0) {
return -1;
}
@@ -1242,6 +1261,7 @@
dbus_server_fini(server);
tty_fini(server);
free(server->pollfds);
+ console_server_mux_fini(server);
config_fini(server->config);
}