Staging: mrst-touchscreen: fix channel allocation in the touch screen driver
authorArjan van de Ven <arjan@linux.intel.com>
Wed, 25 Aug 2010 14:22:10 +0000 (15:22 +0100)
committerGreg Kroah-Hartman <gregkh@suse.de>
Tue, 31 Aug 2010 22:14:03 +0000 (15:14 -0700)
commite1eeeae2bf5ce32d6b0303e6f360c339410cd527
tree738e7b49c5fe7966ead2f7e4916e7a96bb7d2b6a
parentdbd3a8709560365ff9b1e5eca263f608877a8a89
Staging: mrst-touchscreen: fix channel allocation in the touch screen driver

the touch screen driver tries to find a range of free channels (which
are an array of bytes), by scanning for the "end of used channel" marker.
however it tries to be WAAAAY too smart and does 32 bit logic on 8 bit
quantities, and in the process completely gets it wrong
(repeatedly read the same register instead of incrementing in the loop,
assuming that if any of the 4 bytes in the 32 byte quantity is free,
all four are free, returning the channel number divided by 4 rather than
the actual first free channel number)

On the setting side, the same mistakes are made by and large; changed
this to just use the byte SCU write functions....

with these fixes we go from a completely non detected touchscreen to
something that appears to completely get detected.
(after also fixing the ordering issue that Jacobs patch should solve)

Signed-off-by: Arjan van de Ven <arjan@linux.intel.com>
Signed-off-by: Alan Cox <alan@linux.intel.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
drivers/staging/mrst-touchscreen/intel-mid-touch.c