hw/ds1338: Fix conversion between 12 hours and 24 hours modes.
The proper mapping between 24 hours and 12 hours modes is: 0 12 AM 1-11 1-11 AM 12 12 PM 13-23 1-11 PM Fix code accordingly. Signed-off-by: Antoine Mathys <barsamin@gmail.com> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
a4bcea3d67
commit
5c78d6a84b
@ -59,8 +59,8 @@ static void capture_current_time(DS1338State *s)
|
|||||||
s->nvram[1] = to_bcd(now.tm_min);
|
s->nvram[1] = to_bcd(now.tm_min);
|
||||||
if (s->nvram[2] & HOURS_12) {
|
if (s->nvram[2] & HOURS_12) {
|
||||||
int tmp = now.tm_hour;
|
int tmp = now.tm_hour;
|
||||||
if (tmp == 0) {
|
if (tmp % 12 == 0) {
|
||||||
tmp = 24;
|
tmp += 12;
|
||||||
}
|
}
|
||||||
if (tmp <= 12) {
|
if (tmp <= 12) {
|
||||||
s->nvram[2] = HOURS_12 | to_bcd(tmp);
|
s->nvram[2] = HOURS_12 | to_bcd(tmp);
|
||||||
@ -145,8 +145,8 @@ static int ds1338_send(I2CSlave *i2c, uint8_t data)
|
|||||||
if (data & HOURS_PM) {
|
if (data & HOURS_PM) {
|
||||||
tmp += 12;
|
tmp += 12;
|
||||||
}
|
}
|
||||||
if (tmp == 24) {
|
if (tmp % 12 == 0) {
|
||||||
tmp = 0;
|
tmp -= 12;
|
||||||
}
|
}
|
||||||
now.tm_hour = tmp;
|
now.tm_hour = tmp;
|
||||||
} else {
|
} else {
|
||||||
|
Loading…
Reference in New Issue
Block a user