rmbox: remove legacy code and use sof debugFS by default.

Dump error log by default with no args.

Signed-off-by: Liam Girdwood <liam.r.girdwood@linux.intel.com>
This commit is contained in:
Liam Girdwood 2018-03-06 14:11:13 +00:00
parent c95433636f
commit 46a5e80fc5
1 changed files with 18 additions and 81 deletions

View File

@ -47,42 +47,6 @@
#define TRACE_CLASS_EQ_FIR (19 << 24) #define TRACE_CLASS_EQ_FIR (19 << 24)
#define TRACE_CLASS_EQ_IIR (20 << 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])) #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, static int trace_read(const char *in_file, const char *out_file, double clk)
int offset)
{ {
int count, i; int count, i;
FILE *in_fd = NULL, *out_fd = NULL; FILE *in_fd = NULL, *out_fd = NULL;
@ -250,11 +213,6 @@ trace:
if (count != TRACE_BLOCK_SIZE) if (count != TRACE_BLOCK_SIZE)
break; break;
if (addr < offset) {
addr += TRACE_BLOCK_SIZE;
continue;
}
val = *((uint64_t*)tmp); val = *((uint64_t*)tmp);
for (i = 0; i < TRACE_BLOCK_SIZE / 2; i++) { for (i = 0; i < TRACE_BLOCK_SIZE / 2; i++) {
@ -277,21 +235,10 @@ trace:
return 0; 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", printf("data: 0x%x = \t0x%8.8x \t(%8.8d) \t|%c%c%c%c|\n",
(unsigned int)addr - MAILBOX_DEBUG_OFFSET, (unsigned int)addr,
((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,
val, val, val, val,
get_char(val, 3), get_char(val, 2), get_char(val, 3), get_char(val, 2),
get_char(val, 1), get_char(val, 0)); 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[] = { 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) static int snapshot(const char *name)
@ -362,12 +311,11 @@ static int snapshot(const char *name)
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
int opt, count, trace = 0; 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; FILE *in_fd = NULL, *out_fd = NULL;
char c, tmp[8] = {0}; char c, tmp[8] = {0};
uint64_t addr = 0, val, timestamp = 0, align = 4, i; uint64_t addr = 0, val, timestamp = 0, align = 4, i;
double clk = 19.2; 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) { while ((opt = getopt(argc, argv, "ho:i:s:m:c:t")) != -1) {
switch (opt) { switch (opt) {
@ -393,7 +341,15 @@ int main(int argc, char *argv[])
/* trace requested ? */ /* trace requested ? */
if (trace) 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 */ /* open infile for reading */
in_fd = fopen(in_file, "r"); in_fd = fopen(in_file, "r");
@ -432,21 +388,7 @@ convert:
tmp[align - i - 1] = c; tmp[align - i - 1] = c;
} }
if (addr >= MAILBOX_DEBUG_OFFSET && show_data(val, addr);
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);
}
if (out_fd) { if (out_fd) {
count = fwrite(&tmp[0], 1, align, out_fd); count = fwrite(&tmp[0], 1, align, out_fd);
@ -457,11 +399,6 @@ convert:
addr += align; addr += align;
} }
/* read debug */
fprintf(stdout, "\nError log:\n");
trace_read("/sys/kernel/debug/sof/mbox", out_file, clk,
MAILBOX_TRACE_OFFSET);
/* close files */ /* close files */
fclose(in_fd); fclose(in_fd);
if (out_fd) if (out_fd)