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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user