|
@@ -646,11 +646,6 @@ static int __devinit ds1307_probe(struct i2c_client *client,
|
|
|
case ds_1337:
|
|
|
case ds_1339:
|
|
|
case ds_3231:
|
|
|
- /* has IRQ? */
|
|
|
- if (ds1307->client->irq > 0 && chip->alarm) {
|
|
|
- INIT_WORK(&ds1307->work, ds1307_work);
|
|
|
- want_irq = true;
|
|
|
- }
|
|
|
/* get registers that the "rtc" read below won't read... */
|
|
|
tmp = ds1307->read_block_data(ds1307->client,
|
|
|
DS1337_REG_CONTROL, 2, buf);
|
|
@@ -668,10 +663,14 @@ static int __devinit ds1307_probe(struct i2c_client *client,
|
|
|
* For some variants, be sure alarms can trigger when we're
|
|
|
* running on Vbackup (BBSQI/BBSQW)
|
|
|
*/
|
|
|
- if (want_irq) {
|
|
|
+ if (ds1307->client->irq > 0 && chip->alarm) {
|
|
|
+ INIT_WORK(&ds1307->work, ds1307_work);
|
|
|
+
|
|
|
ds1307->regs[0] |= DS1337_BIT_INTCN
|
|
|
| bbsqi_bitpos[ds1307->type];
|
|
|
ds1307->regs[0] &= ~(DS1337_BIT_A2IE | DS1337_BIT_A1IE);
|
|
|
+
|
|
|
+ want_irq = true;
|
|
|
}
|
|
|
|
|
|
i2c_smbus_write_byte_data(client, DS1337_REG_CONTROL,
|