# HG changeset patch # User Josef 'Jeff' Sipek # Date 1732401635 18000 # Sat Nov 23 17:40:35 2024 -0500 # Node ID affd5907bcb74ce39238f238d38d16776c0dd3f4 # Parent 06e937c32a4f676879516543c44990dd02b3e0fd # Parent 847184cb2ece40eb642172eae623b384bda74191 Merge branch 'devices' Signed-off-by: Josef 'Jeff' Sipek diff --git a/devices/i2c/mcp7940n.c b/devices/i2c/mcp7940n.c --- a/devices/i2c/mcp7940n.c +++ b/devices/i2c/mcp7940n.c @@ -53,19 +53,26 @@ */ int mcp7940n_init(const struct tm *tm) { - struct mcp7940n_timekeeping_regs tmp; + uint8_t control; + uint8_t sec; + int ret; - if (!mcp7940n_read(offsetof(struct mcp7940n, timekeeping), &tmp, - sizeof(tmp))) + if (!mcp7940n_read(offsetof(struct mcp7940n, timekeeping.sec), &sec, + sizeof(sec))) return -1; - if (tmp.sec & MCP7940N_SEC_ST) - return +1; /* already started, don't disturb the time */ + if (sec & MCP7940N_SEC_ST) { + ret = +1; /* already running, don't disturb the time */ + } else { + if (!mcp7940n_settime(tm)) + return -1; - if (!mcp7940n_settime(tm)) - return -1; + ret = 0; /* started just now */ + } - return 0; + /* ... initialize MFP here as desired ... */ + + return ret; } /* diff --git a/devices/i2c/mcp7940n.h b/devices/i2c/mcp7940n.h --- a/devices/i2c/mcp7940n.h +++ b/devices/i2c/mcp7940n.h @@ -66,6 +66,15 @@ uint8_t sec; uint8_t min; uint8_t hour; +#define MCP7940N_ALARM_POLARITY_LOW (0 << 7) +#define MCP7940N_ALARM_POLARITY_HIGH (1 << 7) +#define MCP7940N_ALARM_MASK_SEC (0 << 4) +#define MCP7940N_ALARM_MASK_MIN (1 << 4) +#define MCP7940N_ALARM_MASK_HOUR (2 << 4) +#define MCP7940N_ALARM_MASK_DOW (3 << 4) +#define MCP7940N_ALARM_MASK_DATE (4 << 4) +#define MCP7940N_ALARM_MASK_DATETIME (7 << 4) +#define MCP7940N_ALARM_IF (1 << 3) uint8_t wkday; uint8_t date; uint8_t month;