diff options
Diffstat (limited to 'drivers')
| -rw-r--r-- | drivers/rtc/rtc-ds1307.c | 11 | 
1 files changed, 5 insertions, 6 deletions
diff --git a/drivers/rtc/rtc-ds1307.c b/drivers/rtc/rtc-ds1307.c index 5098e1ad3a3..d4543e8730c 100644 --- a/drivers/rtc/rtc-ds1307.c +++ b/drivers/rtc/rtc-ds1307.c @@ -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,  |