1 From: Daniel González Cabanelas <dgcbueu@gmail.com>
2 Subject: [PATCH 2/2] rtc: rs5c372: let the alarm to be used as wakeup source
4 Currently there is no use for the interrupts on the rs5c372 RTC and the
5 wakealarm isn't enabled. There are some devices like NASes which use this
6 RTC to wake up from the power off state when the INTR pin is activated by
9 Enable the alarm and let to be used as a wakeup source.
11 Tested on a Buffalo LS421DE NAS.
13 Signed-off-by: Daniel González Cabanelas <dgcbueu@gmail.com>
15 drivers/rtc/rtc-rs5c372.c | 16 ++++++++++++++++
16 1 file changed, 16 insertions(+)
18 --- a/drivers/rtc/rtc-rs5c372.c
19 +++ b/drivers/rtc/rtc-rs5c372.c
20 @@ -654,6 +654,7 @@ static int rs5c372_probe(struct i2c_clie
23 struct rs5c372 *rs5c372;
24 + bool rs5c372_can_wakeup_device = false;
26 dev_dbg(&client->dev, "%s\n", __func__);
28 @@ -689,6 +690,12 @@ static int rs5c372_probe(struct i2c_clie
30 rs5c372->type = id->driver_data;
33 + if(of_property_read_bool(client->dev.of_node,
35 + rs5c372_can_wakeup_device = true;
38 /* we read registers 0x0f then 0x00-0x0f; skip the first one */
39 rs5c372->regs = &rs5c372->buf[1];
40 rs5c372->smbus = smbus_mode;
41 @@ -722,6 +729,8 @@ static int rs5c372_probe(struct i2c_clie
45 + rs5c372->has_irq = 1;
47 /* if the oscillator lost power and no other software (like
48 * the bootloader) set it up, do it here.
50 @@ -748,6 +757,10 @@ static int rs5c372_probe(struct i2c_clie
53 /* REVISIT use client->irq to register alarm irq ... */
54 + if (rs5c372_can_wakeup_device) {
55 + device_init_wakeup(&client->dev, true);
58 rs5c372->rtc = devm_rtc_device_register(&client->dev,
59 rs5c372_driver.driver.name,
60 &rs5c372_rtc_ops, THIS_MODULE);
61 @@ -761,6 +774,9 @@ static int rs5c372_probe(struct i2c_clie
65 + /* the rs5c372 alarm only supports a minute accuracy */
66 + rs5c372->rtc->uie_unsupported = 1;