[PATCH/RFC] Change accelerometers to use ABS events rather than REL events.

Andy Green andy at openmoko.com
Tue Mar 10 08:21:06 CET 2009

Hash: SHA1

Somebody in the thread at some point said:

| Does this have anything to do with the fact that the driver seems to
| like enabling both interrupts at one. e.g.
| 		__lis302dl_int_mode(lis->dev, 1, LIS302DL_INTMODE_FF_WU_12);
| 		__lis302dl_int_mode(lis->dev, 2, LIS302DL_INTMODE_FF_WU_12);

Yes it's because they're open-drain on A5 and physically tied together.
~ This ensures we don't get one interrupt accidentally asserting the
shared interrupt line on A5 all the time, hiding the desired interrupt
action on the other one.

| This will presumably ensure that the two interrupt lines go high/low
| at the same time.   Is that important?  I don't think it can be
| important on the A6/A7, and my limit understanding for signal levels
| suggest that it probably isn't important for that A5.
| If it is important, we should probably fix __enable_wakeup as it
| currently only enables interrupt 1, not 2.

Either disabling one interrupt or having them both issue the same is a
valid solution to A5 situation.  On A6, we removed the pullup and have
the one interrupt drive push-pull.

| Either way, we should probably document this in the code, which I will
| offer a patch for once I have a more complete understanding.

The big point is that there is no way to route multiple interrupt
sources to be summed into INT1 or INT2, as you might be expecting.
Instead, you can only select one single source at a time.  Since we
route only INT1 on A6/A7, it means only one interrupt source is usable
at one time, so you can listen for TAP or take samples, not both.

But if you're taking samples, you can effectively poll for TAP.  o it
just needs some care.

- -Andy
Version: GnuPG v1.4.9 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org


More information about the openmoko-kernel mailing list