xref: /openbmc/u-boot/tools/gdb/gdbcont.c (revision 3ba686544ff0838d5fd977952348d8088b9c69c1)
1*3ba68654Swdenk #include <stdio.h>
2*3ba68654Swdenk #include <stdlib.h>
3*3ba68654Swdenk #include <string.h>
4*3ba68654Swdenk #include <unistd.h>
5*3ba68654Swdenk #include "serial.h"
6*3ba68654Swdenk #include "error.h"
7*3ba68654Swdenk #include "remote.h"
8*3ba68654Swdenk 
9*3ba68654Swdenk char *serialdev = "/dev/term/b";
10*3ba68654Swdenk speed_t speed = B230400;
11*3ba68654Swdenk int verbose = 0;
12*3ba68654Swdenk 
13*3ba68654Swdenk int
14*3ba68654Swdenk main(int ac, char **av)
15*3ba68654Swdenk {
16*3ba68654Swdenk     int c, sfd;
17*3ba68654Swdenk 
18*3ba68654Swdenk     if ((pname = strrchr(av[0], '/')) == NULL)
19*3ba68654Swdenk 	pname = av[0];
20*3ba68654Swdenk     else
21*3ba68654Swdenk 	pname++;
22*3ba68654Swdenk 
23*3ba68654Swdenk     while ((c = getopt(ac, av, "b:p:v")) != EOF)
24*3ba68654Swdenk 	switch (c) {
25*3ba68654Swdenk 
26*3ba68654Swdenk 	case 'b':
27*3ba68654Swdenk 	    if ((speed = cvtspeed(optarg)) == B0)
28*3ba68654Swdenk 		Error("can't decode baud rate specified in -b option");
29*3ba68654Swdenk 	    break;
30*3ba68654Swdenk 
31*3ba68654Swdenk 	case 'p':
32*3ba68654Swdenk 	    serialdev = optarg;
33*3ba68654Swdenk 	    break;
34*3ba68654Swdenk 
35*3ba68654Swdenk 	case 'v':
36*3ba68654Swdenk 	    verbose = 1;
37*3ba68654Swdenk 	    break;
38*3ba68654Swdenk 
39*3ba68654Swdenk 	default:
40*3ba68654Swdenk 	usage:
41*3ba68654Swdenk 	    fprintf(stderr, "Usage: %s [-b bps] [-p dev] [-v]\n", pname);
42*3ba68654Swdenk 	    exit(1);
43*3ba68654Swdenk 	}
44*3ba68654Swdenk     if (optind != ac)
45*3ba68654Swdenk 	goto usage;
46*3ba68654Swdenk 
47*3ba68654Swdenk     if (verbose)
48*3ba68654Swdenk 	fprintf(stderr, "Opening serial port and sending continue...\n");
49*3ba68654Swdenk 
50*3ba68654Swdenk     if ((sfd = serialopen(serialdev, speed)) < 0)
51*3ba68654Swdenk 	Perror("open of serial device '%s' failed", serialdev);
52*3ba68654Swdenk 
53*3ba68654Swdenk     remote_desc = sfd;
54*3ba68654Swdenk     remote_reset();
55*3ba68654Swdenk     remote_continue();
56*3ba68654Swdenk 
57*3ba68654Swdenk     if (serialclose(sfd) < 0)
58*3ba68654Swdenk 	Perror("close of serial device '%s' failed", serialdev);
59*3ba68654Swdenk 
60*3ba68654Swdenk     if (verbose)
61*3ba68654Swdenk 	fprintf(stderr, "Done.\n");
62*3ba68654Swdenk 
63*3ba68654Swdenk     return (0);
64*3ba68654Swdenk }
65