Re: [PATCH] Keyboard: omap-keypad: use matrix_keypad.h

2010-12-17 Thread Tony Lindgren
* Janusz Krzysztofik jkrzy...@tis.icnet.pl [101217 14:33]:
 Most keypad drivers make use of the linux/input/matrix_keypad.h 
 defined macros, structures and inline functions.
 
 Convert omap-keypad driver to use those as well, as suggested by a 
 compile time warning, hardcoded into the OMAP palt/keypad.h.
 
 Created against linux-2.6.37-rc5.
 Tested on Amstrad Delta.
 Compile tested with omap1_defconfig and omap2plus_defconfig shrinked to 
 board-h4.

Great, good to get rid of those annoying warnings!

  drivers/input/keyboard/omap-keypad.c |   36 
  include/linux/input/matrix_keypad.h  |2

We also need Dmitry's ack for these changes.

Regards,

Tony
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] Keyboard: omap-keypad: use matrix_keypad.h

2010-12-17 Thread Cory Maccarrone
On Fri, Dec 17, 2010 at 8:29 PM, Cory Maccarrone darkstar6...@gmail.com wrote:
 On Fri, Dec 17, 2010 at 2:32 PM, Janusz Krzysztofik
 jkrzy...@tis.icnet.pl wrote:
 Most keypad drivers make use of the linux/input/matrix_keypad.h
 defined macros, structures and inline functions.

 Convert omap-keypad driver to use those as well, as suggested by a
 compile time warning, hardcoded into the OMAP palt/keypad.h.

 Created against linux-2.6.37-rc5.
 Tested on Amstrad Delta.
 Compile tested with omap1_defconfig and omap2plus_defconfig shrinked to
 board-h4.

 Signed-off-by: Janusz Krzysztofik jkrzy...@tis.icnet.pl
 ---

 Works perfectly on the herald, and no more warning message.  Good work!

 Tested-by: Cory Maccarrone darkstar6...@gmail.com

 - Cory


Hmm, I may have spoken too soon.  This works perfectly on the latest
Torvalds master branch, but does not seem to work applied to
linux-omap/master.  There, all my keys report the same KEY_RECORD
event.

Probably not a problem in this patch, I think -- will try and track it
down.  Out of curiosity, which branch did you test it on?

- Cory
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] Keyboard: omap-keypad: use matrix_keypad.h

2010-12-17 Thread Cory Maccarrone
On Fri, Dec 17, 2010 at 9:29 PM, Cory Maccarrone darkstar6...@gmail.com wrote:
 On Fri, Dec 17, 2010 at 8:29 PM, Cory Maccarrone darkstar6...@gmail.com 
 wrote:
 On Fri, Dec 17, 2010 at 2:32 PM, Janusz Krzysztofik
 jkrzy...@tis.icnet.pl wrote:
 Most keypad drivers make use of the linux/input/matrix_keypad.h
 defined macros, structures and inline functions.

 Convert omap-keypad driver to use those as well, as suggested by a
 compile time warning, hardcoded into the OMAP palt/keypad.h.

 Created against linux-2.6.37-rc5.
 Tested on Amstrad Delta.
 Compile tested with omap1_defconfig and omap2plus_defconfig shrinked to
 board-h4.

 Signed-off-by: Janusz Krzysztofik jkrzy...@tis.icnet.pl
 ---

 Works perfectly on the herald, and no more warning message.  Good work!

 Tested-by: Cory Maccarrone darkstar6...@gmail.com

 - Cory


 Hmm, I may have spoken too soon.  This works perfectly on the latest
 Torvalds master branch, but does not seem to work applied to
 linux-omap/master.  There, all my keys report the same KEY_RECORD
 event.

 Probably not a problem in this patch, I think -- will try and track it
 down.  Out of curiosity, which branch did you test it on?

 - Cory


OK, looks like it definitely isn't this patch, something else on
linux-omap/master broke it.  I'll bisect and see if I can figure it
out.

- Cory
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [PATCH] Keyboard: omap-keypad: use matrix_keypad.h

2010-12-17 Thread Dmitry Torokhov
Hi Janusz,

On Fri, Dec 17, 2010 at 11:32:04PM +0100, Janusz Krzysztofik wrote:
 Most keypad drivers make use of the linux/input/matrix_keypad.h 
 defined macros, structures and inline functions.
 
 Convert omap-keypad driver to use those as well, as suggested by a 
 compile time warning, hardcoded into the OMAP palt/keypad.h.
 

Looks nice, couple of comments.

  
  struct omap_kp_platform_data {
   int rows;
   int cols;
 - int *keymap;
 - unsigned int keymapsize;
 + const struct matrix_keymap_data *keymap_data;
   unsigned int rep:1;
   unsigned long delay;
   unsigned int dbounce:1;

Since you are updating all boards maybe also change rep and dbounce to
bool?

 --- linux-2.6.37-rc5/drivers/input/keyboard/omap-keypad.c.orig
 2010-12-09 23:08:09.0 +0100
 +++ linux-2.6.37-rc5/drivers/input/keyboard/omap-keypad.c 2010-12-16 
 21:04:07.0 +0100
 @@ -65,7 +65,6 @@ struct omap_kp {
  
  static DECLARE_TASKLET_DISABLED(kp_tasklet, omap_kp_tasklet, 0);
  
 -static int *keymap;
  static unsigned int *row_gpios;
  static unsigned int *col_gpios;
  
 @@ -162,20 +161,11 @@ static void omap_kp_scan_keypad(struct o
   }
  }
  
 -static inline int omap_kp_find_key(int col, int row)
 -{
 - int i, key;
 -
 - key = KEY(col, row, 0);
 - for (i = 0; keymap[i] != 0; i++)
 - if ((keymap[i]  0xff00) == key)
 - return keymap[i]  0x00ff;
 - return -1;
 -}
 -
  static void omap_kp_tasklet(unsigned long data)
  {
   struct omap_kp *omap_kp_data = (struct omap_kp *) data;
 + unsigned short *keycodes = omap_kp_data-input-keycode;
 + unsigned int row_shift = get_count_order(omap_kp_data-cols);
   unsigned char new_state[8], changed, key_down = 0;
   int col, row;
   int spurious = 0;
 @@ -199,7 +189,7 @@ static void omap_kp_tasklet(unsigned lon
  row, (new_state[col]  (1  row)) ?
  pressed : released);
  #else
 - key = omap_kp_find_key(col, row);
 + key = keycodes[MATRIX_SCAN_CODE(row, col, row_shift)];
   if (key  0) {
   printk(KERN_WARNING
 omap-keypad: Spurious key event %d-%d\n,
 @@ -298,16 +288,22 @@ static int __devinit omap_kp_probe(struc
   struct input_dev *input_dev;
   struct omap_kp_platform_data *pdata =  pdev-dev.platform_data;
   int i, col_idx, row_idx, irq_idx, ret;
 + unsigned short *keycodes;
 + unsigned int row_shift;
  
 - if (!pdata-rows || !pdata-cols || !pdata-keymap) {
 - printk(KERN_ERR No rows, cols or keymap from pdata\n);
 + if (!pdata-rows || !pdata-cols || !pdata-keymap_data) {
 + printk(KERN_ERR No rows, cols or keymap_data from pdata\n);
   return -EINVAL;
   }
  
   omap_kp = kzalloc(sizeof(struct omap_kp), GFP_KERNEL);
 + row_shift = get_count_order(pdata-cols);
 + keycodes = kzalloc((pdata-rows  row_shift) * sizeof(*keycodes),
 + GFP_KERNEL);
   input_dev = input_allocate_device();
 - if (!omap_kp || !input_dev) {
 + if (!omap_kp || !keycodes || !input_dev) {
   kfree(omap_kp);
 + kfree(keycodes);

I do not see where you freeing keycodes in case something else fails nor
in omap_kp_remove(). But why don't you put keycodes at the end of struct
omap_kp and allocate it in one shot?

Thanks.

-- 
Dmitry
--
To unsubscribe from this list: send the line unsubscribe linux-omap in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html