|
@@ -130,8 +130,8 @@ static int ds1337_get_datetime(struct i2c_client *client, struct rtc_time *dt)
|
|
dt->tm_wday = BCD2BIN(buf[3]) - 1;
|
|
dt->tm_wday = BCD2BIN(buf[3]) - 1;
|
|
dt->tm_mday = BCD2BIN(buf[4]);
|
|
dt->tm_mday = BCD2BIN(buf[4]);
|
|
val = buf[5] & 0x7f;
|
|
val = buf[5] & 0x7f;
|
|
- dt->tm_mon = BCD2BIN(val);
|
|
|
|
- dt->tm_year = 1900 + BCD2BIN(buf[6]);
|
|
|
|
|
|
+ dt->tm_mon = BCD2BIN(val) - 1;
|
|
|
|
+ dt->tm_year = BCD2BIN(buf[6]);
|
|
if (buf[5] & 0x80)
|
|
if (buf[5] & 0x80)
|
|
dt->tm_year += 100;
|
|
dt->tm_year += 100;
|
|
|
|
|
|
@@ -171,12 +171,11 @@ static int ds1337_set_datetime(struct i2c_client *client, struct rtc_time *dt)
|
|
buf[3] = BIN2BCD(dt->tm_hour) | (1 << 6);
|
|
buf[3] = BIN2BCD(dt->tm_hour) | (1 << 6);
|
|
buf[4] = BIN2BCD(dt->tm_wday) + 1;
|
|
buf[4] = BIN2BCD(dt->tm_wday) + 1;
|
|
buf[5] = BIN2BCD(dt->tm_mday);
|
|
buf[5] = BIN2BCD(dt->tm_mday);
|
|
- buf[6] = BIN2BCD(dt->tm_mon);
|
|
|
|
- if (dt->tm_year >= 2000) {
|
|
|
|
- val = dt->tm_year - 2000;
|
|
|
|
|
|
+ buf[6] = BIN2BCD(dt->tm_mon) + 1;
|
|
|
|
+ val = dt->tm_year;
|
|
|
|
+ if (val >= 100) {
|
|
|
|
+ val -= 100;
|
|
buf[6] |= (1 << 7);
|
|
buf[6] |= (1 << 7);
|
|
- } else {
|
|
|
|
- val = dt->tm_year - 1900;
|
|
|
|
}
|
|
}
|
|
buf[7] = BIN2BCD(val);
|
|
buf[7] = BIN2BCD(val);
|
|
|
|
|