Commit 21839329f4a3c356429cf931b4d7ef573a2b8039
1 parent
f93de95a
Added set_gpio command
Showing
3 changed files
with
27 additions
and
1 deletions
hw/at91_pio.c
... | ... | @@ -86,7 +86,7 @@ typedef struct PIOState { |
86 | 86 | uint32_t unknown_state; |
87 | 87 | } PIOState; |
88 | 88 | |
89 | -static void at91_pio_set_pin(void *opaque, int pin, int level) | |
89 | +void at91_pio_set_pin(void *opaque, int pin, int level) | |
90 | 90 | { |
91 | 91 | PIOState *s = opaque; |
92 | 92 | int mask = 1 << (pin % PIO_PINS); |
... | ... | @@ -322,9 +322,12 @@ static void at91_pio_reset(void *opaque) |
322 | 322 | s->unknown_state = 0xffffffff; |
323 | 323 | } |
324 | 324 | |
325 | +void* at91_io_state = NULL; | |
326 | + | |
325 | 327 | static void at91_pio_init(SysBusDevice *dev) |
326 | 328 | { |
327 | 329 | PIOState *s = FROM_SYSBUS(typeof (*s), dev); |
330 | + at91_io_state = s; | |
328 | 331 | int pio_regs; |
329 | 332 | |
330 | 333 | sysbus_init_irq(dev, &s->parent_irq); | ... | ... |
monitor.c
... | ... | @@ -519,6 +519,20 @@ static void do_screen_dump(Monitor *mon, const char *filename) |
519 | 519 | vga_hw_screen_dump(filename); |
520 | 520 | } |
521 | 521 | |
522 | +static void do_set_gpio(Monitor* mon, const char* port, const char* value) | |
523 | +{ | |
524 | + extern void* at91_io_state; | |
525 | + extern void at91_pio_set_pin(void *opaque, int pin, int level); | |
526 | + if (at91_io_state) | |
527 | + { | |
528 | + printf("Setting gpio: %s %s\n", port, value); | |
529 | + at91_pio_set_pin(at91_io_state, atoi(port), atoi(value)); | |
530 | + } | |
531 | + else | |
532 | + printf("Cannot set pin: device pointer is NULL\n"); | |
533 | + | |
534 | +} | |
535 | + | |
522 | 536 | static void do_logfile(Monitor *mon, const char *filename) |
523 | 537 | { |
524 | 538 | cpu_set_log_filename(filename); | ... | ... |
qemu-monitor.hx
... | ... | @@ -646,6 +646,15 @@ Close the file descriptor previously assigned to @var{fdname} using the |
646 | 646 | used by another monitor command. |
647 | 647 | ETEXI |
648 | 648 | |
649 | + | |
650 | + { "set_gpio", "ss", do_set_gpio, "set_gpio pin value", | |
651 | + "set a value of a given gpio pio" }, | |
652 | +STEXI | |
653 | +@item set_gpio @var{pin} @var{value} | |
654 | +Set the value of the given gpio pin to a specific value | |
655 | +ETEXI | |
656 | + | |
657 | + | |
649 | 658 | STEXI |
650 | 659 | @end table |
651 | 660 | ETEXI | ... | ... |