Create UART backend for logging SP

Create UART adapter and backend for the UART driver.

Signed-off-by: Gabor Toth <gabor.toth2@arm.com>
Signed-off-by: Gabor Ambrus <gabor.ambrus@arm.com>
Change-Id: Id3adec616599959b3a5777d665fcfcadf0ccb91b
diff --git a/components/service/log/backend/uart/uart_backend.c b/components/service/log/backend/uart/uart_backend.c
new file mode 100644
index 0000000..5f13204
--- /dev/null
+++ b/components/service/log/backend/uart/uart_backend.c
@@ -0,0 +1,39 @@
+/*
+ * Copyright (c) 2023, Arm Limited and Contributors. All rights reserved.
+ *
+ * SPDX-License-Identifier: BSD-3-Clause
+ */
+
+#include <service/log/backend/log_backend.h>
+#include <service/log/backend/uart/uart_adapter/uart_adapter.h>
+#include <stddef.h>
+
+static log_status_t uart_puts(void *context, const char *str)
+{
+	(void)context;
+	uart_hardware_puts(str);
+
+	return LOG_STATUS_SUCCESS;
+}
+
+struct log_backend *uart_backend_init(int uart_instance_num)
+{
+	int status = 0;
+	static struct log_backend backend = {0};
+	static const struct log_backend_interface interface = { uart_puts };
+
+	status = uart_adapter_init(uart_instance_num);
+
+	if (status != 0)
+		return NULL;
+
+	backend.context = NULL;
+	backend.interface = &interface;
+
+	return &backend;
+}
+
+void uart_backend_deinit(void)
+{
+	uart_adapter_deinit();
+}