Implement FFA_CONSOLE_LOG interface

Implement FFA_CONSOLE_LOG interface for sending debug logs to the SPMC.
The commit also replaces the proprietary trace call by FFA_CONSOLE_LOG.

Signed-off-by: Imre Kis <imre.kis@arm.com>
Change-Id: I5275470683e2674fdd6f5a61f9c5ab8dd71dcb11
diff --git a/components/messaging/ffa/libsp/ffa.c b/components/messaging/ffa/libsp/ffa.c
index caacc79..6a51379 100644
--- a/components/messaging/ffa/libsp/ffa.c
+++ b/components/messaging/ffa/libsp/ffa.c
@@ -6,6 +6,7 @@
 #include <assert.h>            // for assert
 #include <stddef.h>            // for size_t
 #include <stdint.h>            // for uint32_t, uint16_t, uintptr_t, U
+#include <string.h>            // for memcpy
 #include "ffa_api.h"           // for FFA_OK, ffa_interrupt_handler, ffa_fea...
 #include "ffa_api_defines.h"   // for FFA_PARAM_MBZ, FFA_OK, FFA_ERROR, FFA_...
 #include "ffa_api_types.h"     // for ffa_result, ffa_direct_msg, ffa_uuid
@@ -525,3 +526,43 @@
 	assert(result.a0 == FFA_SUCCESS_32);
 	return FFA_OK;
 }
+
+ffa_result ffa_console_log_32(const char *message, size_t length)
+{
+	struct ffa_params result = {0};
+	uint32_t char_lists[6] = {0};
+
+	assert(length > 0 && length <= sizeof(char_lists));
+
+	memcpy(char_lists, message, MIN(length, sizeof(char_lists)));
+
+	ffa_svc(FFA_CONSOLE_LOG_32, length, char_lists[0], char_lists[1],
+		char_lists[2], char_lists[3], char_lists[4], char_lists[5],
+		&result);
+
+	if (result.a0 == FFA_ERROR)
+		return ffa_get_errorcode(&result);
+
+	assert(result.a0 == FFA_SUCCESS_32);
+	return FFA_OK;
+}
+
+ffa_result ffa_console_log_64(const char *message, size_t length)
+{
+	struct ffa_params result = {0};
+	uint64_t char_lists[6] = {0};
+
+	assert(length > 0 && length <= sizeof(char_lists));
+
+	memcpy(char_lists, message, MIN(length, sizeof(char_lists)));
+
+	ffa_svc(FFA_CONSOLE_LOG_64, length, char_lists[0], char_lists[1],
+		char_lists[2], char_lists[3], char_lists[4], char_lists[5],
+		&result);
+
+	if (result.a0 == FFA_ERROR)
+		return ffa_get_errorcode(&result);
+
+	assert(result.a0 == FFA_SUCCESS_32);
+	return FFA_OK;
+}