[Sound-open-firmware] [PATCH] rmbox: remove legacy code and use sof debugFS by default.

Liam Girdwood liam.r.girdwood at linux.intel.com
Tue Mar 6 15:11:54 CET 2018


Dump error log by default with no args.

Signed-off-by: Liam Girdwood <liam.r.girdwood at linux.intel.com>
---
 rmbox/rmbox.c | 99 +++++++++++------------------------------------------------
 1 file changed, 18 insertions(+), 81 deletions(-)

diff --git a/rmbox/rmbox.c b/rmbox/rmbox.c
index 9403cc7..115be83 100644
--- a/rmbox/rmbox.c
+++ b/rmbox/rmbox.c
@@ -47,42 +47,6 @@
 #define TRACE_CLASS_EQ_FIR      (19 << 24)
 #define TRACE_CLASS_EQ_IIR      (20 << 24)
 
-#define MAILBOX_HOST_OFFSET	0x144000
-
-#define MAILBOX_OUTBOX_OFFSET	0x0
-#define MAILBOX_OUTBOX_SIZE	0x400
-#define MAILBOX_OUTBOX_BASE \
-	(MAILBOX_BASE + MAILBOX_OUTBOX_OFFSET)
-
-#define MAILBOX_INBOX_OFFSET	MAILBOX_OUTBOX_SIZE
-#define MAILBOX_INBOX_SIZE	0x400
-#define MAILBOX_INBOX_BASE \
-	(MAILBOX_BASE + MAILBOX_INBOX_OFFSET)
-
-#define MAILBOX_EXCEPTION_OFFSET \
-	(MAILBOX_INBOX_SIZE + MAILBOX_OUTBOX_SIZE)
-#define MAILBOX_EXCEPTION_SIZE	0x100
-#define MAILBOX_EXCEPTION_BASE \
-	(MAILBOX_BASE + MAILBOX_EXCEPTION_OFFSET)
-
-#define MAILBOX_DEBUG_OFFSET \
-	(MAILBOX_EXCEPTION_SIZE + MAILBOX_EXCEPTION_OFFSET)
-#define MAILBOX_DEBUG_SIZE	0x100
-#define MAILBOX_DEBUG_BASE \
-	(MAILBOX_BASE + MAILBOX_DEBUG_OFFSET)
-
-#define MAILBOX_STREAM_OFFSET \
-	(MAILBOX_DEBUG_SIZE + MAILBOX_DEBUG_OFFSET)
-#define MAILBOX_STREAM_SIZE	0x200
-#define MAILBOX_STREAM_BASE \
-	(MAILBOX_BASE + MAILBOX_STREAM_OFFSET)
-
-#define MAILBOX_TRACE_OFFSET \
-	(MAILBOX_STREAM_SIZE + MAILBOX_STREAM_OFFSET)
-#define MAILBOX_TRACE_SIZE	0x380
-#define MAILBOX_TRACE_BASE \
-	(MAILBOX_BASE + MAILBOX_TRACE_OFFSET)
-
 #define ARRAY_SIZE(x) (sizeof(x)/sizeof(x[0]))
 
 
@@ -218,8 +182,7 @@ static void show_trace(uint64_t val, uint64_t addr, uint64_t *timestamp, double
 	}
 }
 
-static int trace_read(const char *in_file, const char *out_file, double clk,
-	int offset)
+static int trace_read(const char *in_file, const char *out_file, double clk)
 {
 	int count, i;
 	FILE *in_fd = NULL, *out_fd = NULL;
@@ -250,11 +213,6 @@ trace:
 		if (count != TRACE_BLOCK_SIZE)
 			break;
 
-		if (addr < offset) {
-			addr += TRACE_BLOCK_SIZE;
-			continue;
-		}
-
 		val = *((uint64_t*)tmp);
 
 		for (i = 0; i < TRACE_BLOCK_SIZE / 2; i++) {
@@ -277,21 +235,10 @@ trace:
 	return 0;
 }
 
-static void show_debug(uint32_t val, uint32_t addr)
+static void show_data(uint32_t val, uint32_t addr)
 {
-	printf("debug: 0x%x (%2.2d) = \t0x%8.8x \t(%8.8d) \t|%c%c%c%c|\n", 
-					(unsigned int)addr - MAILBOX_DEBUG_OFFSET,
-					((unsigned int)addr - MAILBOX_DEBUG_OFFSET) / 4, 
-					val, val,
-					get_char(val, 3), get_char(val, 2),
-					get_char(val, 1), get_char(val, 0));
-}
-
-static void show_exception(uint32_t val, uint32_t addr)
-{
-	printf("exp: 0x%x (%2.2d) = \t0x%8.8x \t(%8.8d) \t|%c%c%c%c|\n", 
-					(unsigned int)addr - MAILBOX_EXCEPTION_OFFSET,
-					((unsigned int)addr - MAILBOX_EXCEPTION_OFFSET) / 4, 
+	printf("data: 0x%x = \t0x%8.8x \t(%8.8d) \t|%c%c%c%c|\n",
+					(unsigned int)addr,
 					val, val,
 					get_char(val, 3), get_char(val, 2),
 					get_char(val, 1), get_char(val, 0));
@@ -299,7 +246,9 @@ static void show_exception(uint32_t val, uint32_t addr)
 
 
 static const char *debugfs[] = {
-	"dmac0","dmac1", "ssp0", "ssp1", "ssp2", "iram", "dram", "shim", "mbox"
+	"dmac0", "dmac1", "ssp0", "ssp1",
+	"ssp2", "iram", "dram", "shim",
+	"mbox", "etrace",
 };
 
 static int snapshot(const char *name)
@@ -362,12 +311,11 @@ static int snapshot(const char *name)
 int main(int argc, char *argv[])
 {
 	int opt, count, trace = 0;
-	const char * out_file = NULL, *in_file = "/sys/kernel/debug/sof/mbox";
+	const char * out_file = NULL, *in_file = NULL;
 	FILE *in_fd = NULL, *out_fd = NULL;
 	char c, tmp[8] = {0};
 	uint64_t addr = 0, val, timestamp = 0, align = 4, i;
 	double clk = 19.2;
-	int title_dbg_done = 0, title_exp_done = 0;
 
 	while ((opt = getopt(argc, argv, "ho:i:s:m:c:t")) != -1) {
 		switch (opt) {
@@ -393,7 +341,15 @@ int main(int argc, char *argv[])
 
 	/* trace requested ? */
 	if (trace)
-		return trace_read("/sys/kernel/debug/sof/trace", out_file, clk, 0);
+		return trace_read("/sys/kernel/debug/sof/trace",
+			out_file, clk);
+
+	/* default option with no infile is to dump errors/debug data */
+	if (in_file == NULL) {
+		fprintf(stdout, "\nError log:\n");
+		return trace_read("/sys/kernel/debug/sof/etrace",
+			out_file, clk);
+	}
 
 	/* open infile for reading */
 	in_fd = fopen(in_file, "r");
@@ -432,21 +388,7 @@ convert:
 			tmp[align - i - 1] = c;
 		}
 
-		if (addr >= MAILBOX_DEBUG_OFFSET &&
-				addr < MAILBOX_DEBUG_OFFSET + MAILBOX_DEBUG_SIZE) {
-
-			if (!title_dbg_done++)
-				fprintf(stdout, "\nDebug log:\n");
-
-			show_debug(val, addr);
-		} else if (addr >= MAILBOX_EXCEPTION_OFFSET &&
-				addr < MAILBOX_EXCEPTION_OFFSET + MAILBOX_EXCEPTION_SIZE) {
-
-			if (!title_exp_done++)
-				fprintf(stdout, "\nException log:\n");
-
-			show_exception(val, addr);
-		}
+		show_data(val, addr);
 
 		if (out_fd) {
 			count = fwrite(&tmp[0], 1, align, out_fd);
@@ -457,11 +399,6 @@ convert:
 		addr += align;
 	}
 
-	/* read debug */
-	fprintf(stdout, "\nError log:\n");
-	trace_read("/sys/kernel/debug/sof/mbox", out_file, clk,
-		MAILBOX_TRACE_OFFSET);
-
 	/* close files */
 	fclose(in_fd);
 	if (out_fd)
-- 
2.14.1



More information about the Sound-open-firmware mailing list