On Wed, Jul 10, 2013 at 11:12:49AM -0700, Guenter Roeck wrote: > On Wed, Jul 10, 2013 at 10:05:53AM -0700, Thierry Reding wrote: > > On Wed, Jul 10, 2013 at 07:25:38PM +0800, Wei Ni wrote: [...] > > > + if ((alarms & 0x7f) == 0 && (alarms_max6696 & 0xfe) == 0) { > > > + return IRQ_NONE; > > > > For non-MAX6696 chips this will evaluate to: > > > > if ((alarms & 0x7f) == 0 && (0 & 0xfe) == 0) > > > > and therefore be true for any value of "alarms" and therefore always > > result in IRQ_NONE being returned. > > > Not really. If > (alarms & 0xfe) == 0 > returns false (ie thee is an alarm) the expression is false and the > if statement won't be executed. Or maybe I didn't get enough sleep > last night ;). You're right. Looks like I am the one that didn't get enough sleep last night. =) So the original code indeed seems to be doing what it should. Thierry
Attachment:
signature.asc
Description: Digital signature