mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-12-11 16:00:50 -07:00
qdev: Implement named GPIOs
Implement named GPIOs on the Device layer. Listifies the existing GPIOs stuff using string keys. Legacy un-named GPIOs are preserved by using a NULL name string - they are just a single matchable element in the name list. Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Crosthwaite <peter.crosthwaite@xilinx.com> Signed-off-by: Andreas Färber <afaerber@suse.de>
This commit is contained in:
parent
6b1b144019
commit
a5f54290ce
4 changed files with 120 additions and 24 deletions
19
qtest.c
19
qtest.c
|
|
@ -233,7 +233,8 @@ static void qtest_process_command(CharDriverState *chr, gchar **words)
|
|||
g_assert(command);
|
||||
if (strcmp(words[0], "irq_intercept_out") == 0
|
||||
|| strcmp(words[0], "irq_intercept_in") == 0) {
|
||||
DeviceState *dev;
|
||||
DeviceState *dev;
|
||||
NamedGPIOList *ngl;
|
||||
|
||||
g_assert(words[1]);
|
||||
dev = DEVICE(object_resolve_path(words[1], NULL));
|
||||
|
|
@ -253,10 +254,18 @@ static void qtest_process_command(CharDriverState *chr, gchar **words)
|
|||
return;
|
||||
}
|
||||
|
||||
if (words[0][14] == 'o') {
|
||||
qemu_irq_intercept_out(&dev->gpio_out, qtest_irq_handler, dev->num_gpio_out);
|
||||
} else {
|
||||
qemu_irq_intercept_in(dev->gpio_in, qtest_irq_handler, dev->num_gpio_in);
|
||||
QLIST_FOREACH(ngl, &dev->gpios, node) {
|
||||
/* We don't support intercept of named GPIOs yet */
|
||||
if (ngl->name) {
|
||||
continue;
|
||||
}
|
||||
if (words[0][14] == 'o') {
|
||||
qemu_irq_intercept_out(&ngl->out, qtest_irq_handler,
|
||||
ngl->num_out);
|
||||
} else {
|
||||
qemu_irq_intercept_in(ngl->in, qtest_irq_handler,
|
||||
ngl->num_in);
|
||||
}
|
||||
}
|
||||
irq_intercept_dev = dev;
|
||||
qtest_send_prefix(chr);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue