qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Qemu-devel] [PATCH 3/4] hw/ds1338.c: ensure OSF can only be cleared


From: Antoine Mathys
Subject: [Qemu-devel] [PATCH 3/4] hw/ds1338.c: ensure OSF can only be cleared
Date: Sun, 02 Dec 2012 18:19:59 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/17.0 Thunderbird/17.0

Per the datasheet, the OSF bit in the control register can only be cleared. Attempts to set it have no effect. Implement this.

Signed-off-by: Antoine Mathys <address@hidden>
---
 hw/ds1338.c |    7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

diff --git a/hw/ds1338.c b/hw/ds1338.c
index 1fb152e..f3c6bc5 100644
--- a/hw/ds1338.c
+++ b/hw/ds1338.c
@@ -160,7 +160,12 @@ static int ds1338_send(I2CSlave *i2c, uint8_t data)
         }
         s->offset = qemu_timedate_diff(&now);
     } else if (s->ptr == 7) {
-        /* Control register. Currently ignored.  */
+        /* Control register. */
+
+        /* Attempting to write the OSF flag to logic 1 leaves the
+           value unchanged. */
+        data = (data & 0xDF) | (data & s->nvram[s->ptr] & 0x20);
+
         s->nvram[s->ptr] = data;
     } else {
         s->nvram[s->ptr] = data;
--
1.7.10.4




reply via email to

[Prev in Thread] Current Thread [Next in Thread]