From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1Kwcp3-0004RQ-Uo for qemu-devel@nongnu.org; Sun, 02 Nov 2008 08:16:54 -0500 Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1Kwcp2-0004Qi-9C for qemu-devel@nongnu.org; Sun, 02 Nov 2008 08:16:53 -0500 Received: from [199.232.76.173] (port=46437 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1Kwcp1-0004Qa-TJ for qemu-devel@nongnu.org; Sun, 02 Nov 2008 08:16:51 -0500 Received: from ey-out-1920.google.com ([74.125.78.150]:43499) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1Kwcp1-0002R1-QK for qemu-devel@nongnu.org; Sun, 02 Nov 2008 08:16:52 -0500 Received: by ey-out-1920.google.com with SMTP id 4so687642eyk.4 for ; Sun, 02 Nov 2008 05:16:48 -0800 (PST) From: Dmitry Baryshkov Date: Sun, 2 Nov 2008 16:16:24 +0300 Message-Id: <1225631790-15735-1-git-send-email-dbaryshkov@gmail.com> Subject: [Qemu-devel] [PATCH] scoop: GPRR reports the state of GPIO lines Reply-To: qemu-devel@nongnu.org List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , To: qemu-devel@nongnu.org Cc: Dmitry Baryshkov Signed-off-by: Dmitry Baryshkov --- hw/zaurus.c | 16 +++++++--------- 1 files changed, 7 insertions(+), 9 deletions(-) diff --git a/hw/zaurus.c b/hw/zaurus.c index c475eaa..26e138d 100644 --- a/hw/zaurus.c +++ b/hw/zaurus.c @@ -46,7 +46,6 @@ struct scoop_info_s { uint16_t irr; uint16_t imr; uint16_t isr; - uint16_t gprr; }; #define SCOOP_MCR 0x00 @@ -99,9 +98,8 @@ static uint32_t scoop_readb(void *opaque, target_phys_addr_t addr) case SCOOP_GPCR: return s->gpio_dir; case SCOOP_GPWR: - return s->gpio_level; case SCOOP_GPRR: - return s->gprr; + return s->gpio_level; default: zaurus_printf("Bad register offset " REG_FMT "\n", addr); } @@ -144,12 +142,10 @@ static void scoop_writeb(void *opaque, target_phys_addr_t addr, uint32_t value) scoop_gpio_handler_update(s); break; case SCOOP_GPWR: + case SCOOP_GPRR: // GPRR is probably R/O in real HW s->gpio_level = value & s->gpio_dir; scoop_gpio_handler_update(s); break; - case SCOOP_GPRR: - s->gprr = value; - break; default: zaurus_printf("Bad register offset " REG_FMT "\n", addr); } @@ -194,6 +190,7 @@ void scoop_gpio_out_set(struct scoop_info_s *s, int line, static void scoop_save(QEMUFile *f, void *opaque) { struct scoop_info_s *s = (struct scoop_info_s *) opaque; + uint16_t dummy = 0; qemu_put_be16s(f, &s->status); qemu_put_be16s(f, &s->power); qemu_put_be32s(f, &s->gpio_level); @@ -205,11 +202,11 @@ static void scoop_save(QEMUFile *f, void *opaque) qemu_put_be16s(f, &s->irr); qemu_put_be16s(f, &s->imr); qemu_put_be16s(f, &s->isr); - qemu_put_be16s(f, &s->gprr); } static int scoop_load(QEMUFile *f, void *opaque, int version_id) { + uint16_t dummy; struct scoop_info_s *s = (struct scoop_info_s *) opaque; qemu_get_be16s(f, &s->status); qemu_get_be16s(f, &s->power); @@ -222,7 +219,8 @@ static int scoop_load(QEMUFile *f, void *opaque, int version_id) qemu_get_be16s(f, &s->irr); qemu_get_be16s(f, &s->imr); qemu_get_be16s(f, &s->isr); - qemu_get_be16s(f, &s->gprr); + if (version_id < 1) + qemu_get_be16s(f, &dummy); return 0; } @@ -243,7 +241,7 @@ struct scoop_info_s *scoop_init(struct pxa2xx_state_s *cpu, iomemtype = cpu_register_io_memory(0, scoop_readfn, scoop_writefn, s); cpu_register_physical_memory(s->target_base, 0x1000, iomemtype); - register_savevm("scoop", instance, 0, scoop_save, scoop_load, s); + register_savevm("scoop", instance, 1, scoop_save, scoop_load, s); return s; } -- 1.5.6.5