@@ -63,7 +63,6 @@ struct rx8010_data {
63
63
struct i2c_client * client ;
64
64
struct rtc_device * rtc ;
65
65
u8 ctrlreg ;
66
- spinlock_t flags_lock ;
67
66
};
68
67
69
68
static irqreturn_t rx8010_irq_1_handler (int irq , void * dev_id )
@@ -72,12 +71,12 @@ static irqreturn_t rx8010_irq_1_handler(int irq, void *dev_id)
72
71
struct rx8010_data * rx8010 = i2c_get_clientdata (client );
73
72
int flagreg ;
74
73
75
- spin_lock (& rx8010 -> flags_lock );
74
+ mutex_lock (& rx8010 -> rtc -> ops_lock );
76
75
77
76
flagreg = i2c_smbus_read_byte_data (client , RX8010_FLAG );
78
77
79
78
if (flagreg <= 0 ) {
80
- spin_unlock (& rx8010 -> flags_lock );
79
+ mutex_unlock (& rx8010 -> rtc -> ops_lock );
81
80
return IRQ_NONE ;
82
81
}
83
82
@@ -101,7 +100,7 @@ static irqreturn_t rx8010_irq_1_handler(int irq, void *dev_id)
101
100
102
101
i2c_smbus_write_byte_data (client , RX8010_FLAG , flagreg );
103
102
104
- spin_unlock (& rx8010 -> flags_lock );
103
+ mutex_unlock (& rx8010 -> rtc -> ops_lock );
105
104
return IRQ_HANDLED ;
106
105
}
107
106
@@ -143,7 +142,6 @@ static int rx8010_set_time(struct device *dev, struct rtc_time *dt)
143
142
u8 date [7 ];
144
143
int ctrl , flagreg ;
145
144
int ret ;
146
- unsigned long irqflags ;
147
145
148
146
if ((dt -> tm_year < 100 ) || (dt -> tm_year > 199 ))
149
147
return - EINVAL ;
@@ -181,20 +179,15 @@ static int rx8010_set_time(struct device *dev, struct rtc_time *dt)
181
179
if (ret < 0 )
182
180
return ret ;
183
181
184
- spin_lock_irqsave (& rx8010 -> flags_lock , irqflags );
185
-
186
182
flagreg = i2c_smbus_read_byte_data (rx8010 -> client , RX8010_FLAG );
187
183
if (flagreg < 0 ) {
188
- spin_unlock_irqrestore (& rx8010 -> flags_lock , irqflags );
189
184
return flagreg ;
190
185
}
191
186
192
187
if (flagreg & RX8010_FLAG_VLF )
193
188
ret = i2c_smbus_write_byte_data (rx8010 -> client , RX8010_FLAG ,
194
189
flagreg & ~RX8010_FLAG_VLF );
195
190
196
- spin_unlock_irqrestore (& rx8010 -> flags_lock , irqflags );
197
-
198
191
return 0 ;
199
192
}
200
193
@@ -288,12 +281,9 @@ static int rx8010_set_alarm(struct device *dev, struct rtc_wkalrm *t)
288
281
u8 alarmvals [3 ];
289
282
int extreg , flagreg ;
290
283
int err ;
291
- unsigned long irqflags ;
292
284
293
- spin_lock_irqsave (& rx8010 -> flags_lock , irqflags );
294
285
flagreg = i2c_smbus_read_byte_data (client , RX8010_FLAG );
295
286
if (flagreg < 0 ) {
296
- spin_unlock_irqrestore (& rx8010 -> flags_lock , irqflags );
297
287
return flagreg ;
298
288
}
299
289
@@ -302,14 +292,12 @@ static int rx8010_set_alarm(struct device *dev, struct rtc_wkalrm *t)
302
292
err = i2c_smbus_write_byte_data (rx8010 -> client , RX8010_CTRL ,
303
293
rx8010 -> ctrlreg );
304
294
if (err < 0 ) {
305
- spin_unlock_irqrestore (& rx8010 -> flags_lock , irqflags );
306
295
return err ;
307
296
}
308
297
}
309
298
310
299
flagreg &= ~RX8010_FLAG_AF ;
311
300
err = i2c_smbus_write_byte_data (rx8010 -> client , RX8010_FLAG , flagreg );
312
- spin_unlock_irqrestore (& rx8010 -> flags_lock , irqflags );
313
301
if (err < 0 )
314
302
return err ;
315
303
@@ -404,7 +392,6 @@ static int rx8010_ioctl(struct device *dev, unsigned int cmd, unsigned long arg)
404
392
struct rx8010_data * rx8010 = dev_get_drvdata (dev );
405
393
int ret , tmp ;
406
394
int flagreg ;
407
- unsigned long irqflags ;
408
395
409
396
switch (cmd ) {
410
397
case RTC_VL_READ :
@@ -419,16 +406,13 @@ static int rx8010_ioctl(struct device *dev, unsigned int cmd, unsigned long arg)
419
406
return 0 ;
420
407
421
408
case RTC_VL_CLR :
422
- spin_lock_irqsave (& rx8010 -> flags_lock , irqflags );
423
409
flagreg = i2c_smbus_read_byte_data (rx8010 -> client , RX8010_FLAG );
424
410
if (flagreg < 0 ) {
425
- spin_unlock_irqrestore (& rx8010 -> flags_lock , irqflags );
426
411
return flagreg ;
427
412
}
428
413
429
414
flagreg &= ~RX8010_FLAG_VLF ;
430
415
ret = i2c_smbus_write_byte_data (client , RX8010_FLAG , flagreg );
431
- spin_unlock_irqrestore (& rx8010 -> flags_lock , irqflags );
432
416
if (ret < 0 )
433
417
return ret ;
434
418
@@ -466,8 +450,6 @@ static int rx8010_probe(struct i2c_client *client,
466
450
rx8010 -> client = client ;
467
451
i2c_set_clientdata (client , rx8010 );
468
452
469
- spin_lock_init (& rx8010 -> flags_lock );
470
-
471
453
err = rx8010_init_client (client );
472
454
if (err )
473
455
return err ;
0 commit comments