From 30624c926ce2b0e78db25538bd58a6edf0a3d358 Mon Sep 17 00:00:00 2001 From: Jan Kiszka Date: Fri, 18 Sep 2009 20:51:23 +0200 Subject: [PATCH] musicpal: True reset support for GPIO Signed-off-by: Jan Kiszka Signed-off-by: Anthony Liguori --- hw/musicpal.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/hw/musicpal.c b/hw/musicpal.c index efc20a40..d4e797aa 100644 --- a/hw/musicpal.c +++ b/hw/musicpal.c @@ -1128,8 +1128,12 @@ static CPUWriteMemoryFunc * const musicpal_gpio_writefn[] = { musicpal_gpio_write, }; -static void musicpal_gpio_reset(musicpal_gpio_state *s) +static void musicpal_gpio_reset(void *opaque) { + musicpal_gpio_state *s = opaque; + + s->lcd_brightness = 0; + s->out_state = 0; s->in_state = 0xffffffff; s->ier = 0; s->imr = 0; @@ -1147,6 +1151,7 @@ static int musicpal_gpio_init(SysBusDevice *dev) musicpal_gpio_writefn, s); sysbus_init_mmio(dev, MP_GPIO_SIZE, iomemtype); + qemu_register_reset(musicpal_gpio_reset, s); musicpal_gpio_reset(s); qdev_init_gpio_out(&dev->qdev, s->out, ARRAY_SIZE(s->out)); @@ -1156,6 +1161,13 @@ static int musicpal_gpio_init(SysBusDevice *dev) return 0; } +static SysBusDeviceInfo musicpal_gpio_info = { + .init = musicpal_gpio_init, + .qdev.name = "musicpal_gpio", + .qdev.size = sizeof(musicpal_gpio_state), + .qdev.reset = musicpal_gpio_reset, +}; + /* Keyboard codes & masks */ #define KEY_RELEASED 0x80 #define KEY_CODE 0x7f @@ -1446,8 +1458,7 @@ static void musicpal_register_devices(void) mv88w8618_wlan_init); sysbus_register_dev("musicpal_lcd", sizeof(musicpal_lcd_state), musicpal_lcd_init); - sysbus_register_dev("musicpal_gpio", sizeof(musicpal_gpio_state), - musicpal_gpio_init); + sysbus_register_withprop(&musicpal_gpio_info); sysbus_register_dev("musicpal_key", sizeof(musicpal_key_state), musicpal_key_init); } -- 2.11.4.GIT