hw/ds1338.c: Implement support for the control register.
Signed-off-by: Antoine Mathys <barsamin@gmail.com> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
ed3d37d287
commit
996e91f04b
17
hw/ds1338.c
17
hw/ds1338.c
@ -125,7 +125,8 @@ static int ds1338_send(I2CSlave *i2c, uint8_t data)
|
||||
s->addr_byte = false;
|
||||
return 0;
|
||||
}
|
||||
if (s->ptr < 8) {
|
||||
if (s->ptr < 7) {
|
||||
/* Time register. */
|
||||
struct tm now;
|
||||
qemu_get_timedate(&now, s->offset);
|
||||
switch(s->ptr) {
|
||||
@ -162,11 +163,19 @@ static int ds1338_send(I2CSlave *i2c, uint8_t data)
|
||||
case 6:
|
||||
now.tm_year = from_bcd(data) + 100;
|
||||
break;
|
||||
case 7:
|
||||
/* Control register. Currently ignored. */
|
||||
break;
|
||||
}
|
||||
s->offset = qemu_timedate_diff(&now);
|
||||
} else if (s->ptr == 7) {
|
||||
/* Control register. */
|
||||
|
||||
/* Ensure bits 2, 3 and 6 will read back as zero. */
|
||||
data &= 0xB3;
|
||||
|
||||
/* Attempting to write the OSF flag to logic 1 leaves the
|
||||
value unchanged. */
|
||||
data = (data & ~CTRL_OSF) | (data & s->nvram[s->ptr] & CTRL_OSF);
|
||||
|
||||
s->nvram[s->ptr] = data;
|
||||
} else {
|
||||
s->nvram[s->ptr] = data;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user