Thread (8 messages) 8 messages, 3 authors, 2009-02-06

RE: [patch/rfc 2.6.28-rc2] input: twl4030_keypad driver

From: hartleys <hidden>
Date: 2009-01-30 17:14:15
Also in: linux-omap
Subsystem: input (keyboard, mouse, joystick, touchscreen) drivers, the rest · Maintainers: Dmitry Torokhov, Linus Torvalds

On Thursday, January 29, 2009 5:58 PM, David Brownell wrote:
On Thursday 29 January 2009, hartleys wrote:
quoted
quoted
+/* Boards have uniqe mappings of {col, row} --> keycode.
+ * Column and row are 4 bits, but range only from 0..7;
+ * a PERSISTENT_KEY is "always on" and never reported.
+ */
+#define KEY_PERSISTENT               0x00800000 #define KEY(col, 
+row, keycode)       (((col) << 28) | ((row) << 24) |
(keycode))

The same KEY macro is defined in:

arch/arm/mach-pxa/include/mach/pxa27x_keypad.h
arch/arm/plat-omap/include/mach/keypad.h
I copied it from the OMAP version as part of removing needless OMAP
dependencies from this driver.
Makes sense.
 
quoted
I also have a keypad driver for the ep93xx that uses the same macro.

Shouldn't/couldn't this be generalized and added to the 
include/linux/input.h file?  Allowing 4-bits for row/col gives a 
maximum key matrix of 16x16 keys which should be enough for just
about anything.
Makes sense.  But that's not what this patch is about, and I also
think the KEY prefix is probably too generic.
 
Understand.  Just noticed the common macro and wondered if something should be done to generalize it.
I'd support an overall cleanup patch that fixes all those things at once.
How's this for a starting point?  I'm willing to create a cleanup patch for all the mach-omap1, mach-omap2, and mach-pxa users.  

Signed-off-by: H Hartley Sweeten <hsweeten@visionengravers.com>

---
diff --git a/include/linux/input.h b/include/linux/input.h
index 1249a0c..0879493 100644
--- a/include/linux/input.h
+++ b/include/linux/input.h
@@ -598,6 +598,14 @@ struct input_absinfo {
 #define KEY_CNT			(KEY_MAX+1)
 
 /*
+ * Macro to pack the row/col of a key on a matrix keypad and it's associated
+ * KEY_* code into into an array.  4 bits are used for both the row and column
+ * allowing for up to a 16x16 keypad.  The row (_r) and column (_c) are
+ * interchangable depending on a keypad drivers usage.
+ */
+#define MATRIX_KEY(_r, _c, _v)	(((_r) << 28) | ((_c) << 24) | (_v))
+
+/*
  * Relative axes
  */
  
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help