Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 16677
b: refs/heads/master
c: 7e94436
h: refs/heads/master
i:
  16675: 015c751
v: v3
  • Loading branch information
Nicolas Kaiser authored and Greg Kroah-Hartman committed Jan 6, 2006
1 parent 9766cf1 commit bd01914
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 20 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: 5b319400f5e2cd31a82b38405856ff2b46a9bb83
refs/heads/master: 7e94436942a7517d08c0cd1a8831122a0fea289e
36 changes: 17 additions & 19 deletions trunk/drivers/i2c/chips/rtc8564.c
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
*/
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/bcd.h>
#include <linux/i2c.h>
#include <linux/slab.h>
#include <linux/string.h>
Expand Down Expand Up @@ -52,9 +53,6 @@ static inline u8 _rtc8564_ctrl2(struct i2c_client *client)
#define CTRL1(c) _rtc8564_ctrl1(c)
#define CTRL2(c) _rtc8564_ctrl2(c)

#define BCD_TO_BIN(val) (((val)&15) + ((val)>>4)*10)
#define BIN_TO_BCD(val) ((((val)/10)<<4) + (val)%10)

static int debug;;
module_param(debug, int, S_IRUGO | S_IWUSR);

Expand Down Expand Up @@ -224,16 +222,16 @@ static int rtc8564_get_datetime(struct i2c_client *client, struct rtc_tm *dt)
return ret;

/* century stored in minute alarm reg */
dt->year = BCD_TO_BIN(buf[RTC8564_REG_YEAR]);
dt->year += 100 * BCD_TO_BIN(buf[RTC8564_REG_AL_MIN] & 0x3f);
dt->mday = BCD_TO_BIN(buf[RTC8564_REG_DAY] & 0x3f);
dt->wday = BCD_TO_BIN(buf[RTC8564_REG_WDAY] & 7);
dt->mon = BCD_TO_BIN(buf[RTC8564_REG_MON_CENT] & 0x1f);
dt->year = BCD2BIN(buf[RTC8564_REG_YEAR]);
dt->year += 100 * BCD2BIN(buf[RTC8564_REG_AL_MIN] & 0x3f);
dt->mday = BCD2BIN(buf[RTC8564_REG_DAY] & 0x3f);
dt->wday = BCD2BIN(buf[RTC8564_REG_WDAY] & 7);
dt->mon = BCD2BIN(buf[RTC8564_REG_MON_CENT] & 0x1f);

dt->secs = BCD_TO_BIN(buf[RTC8564_REG_SEC] & 0x7f);
dt->secs = BCD2BIN(buf[RTC8564_REG_SEC] & 0x7f);
dt->vl = (buf[RTC8564_REG_SEC] & 0x80) == 0x80;
dt->mins = BCD_TO_BIN(buf[RTC8564_REG_MIN] & 0x7f);
dt->hours = BCD_TO_BIN(buf[RTC8564_REG_HR] & 0x3f);
dt->mins = BCD2BIN(buf[RTC8564_REG_MIN] & 0x7f);
dt->hours = BCD2BIN(buf[RTC8564_REG_HR] & 0x3f);

_DBGRTCTM(2, *dt);

Expand All @@ -255,18 +253,18 @@ rtc8564_set_datetime(struct i2c_client *client, struct rtc_tm *dt, int datetoo)

buf[RTC8564_REG_CTRL1] = CTRL1(client) | RTC8564_CTRL1_STOP;
buf[RTC8564_REG_CTRL2] = CTRL2(client);
buf[RTC8564_REG_SEC] = BIN_TO_BCD(dt->secs);
buf[RTC8564_REG_MIN] = BIN_TO_BCD(dt->mins);
buf[RTC8564_REG_HR] = BIN_TO_BCD(dt->hours);
buf[RTC8564_REG_SEC] = BIN2BCD(dt->secs);
buf[RTC8564_REG_MIN] = BIN2BCD(dt->mins);
buf[RTC8564_REG_HR] = BIN2BCD(dt->hours);

if (datetoo) {
len += 5;
buf[RTC8564_REG_DAY] = BIN_TO_BCD(dt->mday);
buf[RTC8564_REG_WDAY] = BIN_TO_BCD(dt->wday);
buf[RTC8564_REG_MON_CENT] = BIN_TO_BCD(dt->mon) & 0x1f;
buf[RTC8564_REG_DAY] = BIN2BCD(dt->mday);
buf[RTC8564_REG_WDAY] = BIN2BCD(dt->wday);
buf[RTC8564_REG_MON_CENT] = BIN2BCD(dt->mon) & 0x1f;
/* century stored in minute alarm reg */
buf[RTC8564_REG_YEAR] = BIN_TO_BCD(dt->year % 100);
buf[RTC8564_REG_AL_MIN] = BIN_TO_BCD(dt->year / 100);
buf[RTC8564_REG_YEAR] = BIN2BCD(dt->year % 100);
buf[RTC8564_REG_AL_MIN] = BIN2BCD(dt->year / 100);
}

ret = rtc8564_write(client, 0, buf, len);
Expand Down

0 comments on commit bd01914

Please sign in to comment.