annotate target-utils/dspdump/mandump.c @ 540:27b5526ba1a8

dspdump target program written, compiles
author Mychaela Falconia <falcon@freecalypso.org>
date Mon, 28 Oct 2019 08:19:33 +0000
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
540
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
1 /* manual dump command */
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
2
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
3 #include <sys/types.h>
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
4 #include "types.h"
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
5 #include "leadapi.h"
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
6
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
7 void
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
8 cmd_dump(argbulk)
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
9 char *argbulk;
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
10 {
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
11 char *argv[4];
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
12 u_long mode, addr, len;
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
13 int rc;
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
14 volatile u16 *api;
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
15 unsigned n;
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
16
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
17 if (parse_args(argbulk, 3, 3, argv, 0) < 0)
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
18 return;
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
19 if (parse_hexarg(argv[0], 4, &mode) < 0) {
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
20 printf("ERROR: mode must be a valid 16-bit hex value\n");
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
21 return;
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
22 }
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
23 if (parse_hexarg(argv[1], 8, &addr) < 0) {
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
24 printf("ERROR: addr must be a valid 32-bit hex value\n");
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
25 return;
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
26 }
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
27 if (parse_hexarg(argv[2], 4, &len) < 0) {
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
28 printf("ERROR: len must be a valid 16-bit hex value\n");
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
29 return;
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
30 }
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
31 rc = boot_dsp_dump_agent();
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
32 if (rc < 0)
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
33 return; /* error msg already printed */
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
34 rc = dsp_read_op((u16)mode, (u32)addr, (u16)len);
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
35 if (rc < 0) {
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
36 printf("ERROR: DSP timeout on read operation\n");
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
37 return;
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
38 }
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
39 api = (volatile u16 *) APIF_ADDR;
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
40 for (n = 0; n < len; n++)
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
41 printf("%04X\n", *api++);
27b5526ba1a8 dspdump target program written, compiles
Mychaela Falconia <falcon@freecalypso.org>
parents:
diff changeset
42 }