On Wednesday, April 15, 2009 7:09 PM, Dmitry Torokhov wrote: > > Hi, > > On Monday 13 April 2009 16:06:24 H Hartley Sweeten wrote: >> + >> + unsigned int axis; >> + unsigned int pos; >> + >> + unsigned int irq_a; >> + unsigned int irq_b; >> + >> + unsigned int abs:1; >> + unsigned int dir:1; >> + unsigned int armed:1; > > Doing it this way makes us go from simple store to read/modify/write > cycle in the interrupt handler. Didn't think of that. Good catch. >> >> +#define ROTARY_ENCODER_REL (0<<31) >> +#define ROTARY_ENCODER_ABS (1<<31) > > Meh... How about below instead? Your changes look good to me. The only issue I can see is that absolute axis encoders wrap. If you have an encoder of something like ABS_VOLUME you would probably want the "pos" to go from 0 to "steps" and then clamp. The encoder could actually rotate multiple times depending on it's actual line count, but the effect would be correct. Regards, Hartley -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html