[PATCH] pxa: Fix some issues with pxa27x_keypad driver v2
flat view
STALE6711d
From: Antonio Ospite <hidden>
Date: 2008-05-28 14:31:18
Fix some issues with pxa27x_keypad driver: 1. set input bits for direct keys codes 2. set input bits for rotary encoder codes only if rotary encoder is enabled 3. enable EV_REL only if rel_codes are set for rotary encoders Signed-off-by: Antonio Ospite <redacted> Index: linux-2.6.26-rc3/drivers/input/keyboard/pxa27x_keypad.c ===================================================================
--- linux-2.6.26-rc3.orig/drivers/input/keyboard/pxa27x_keypad.c
+++ linux-2.6.26-rc3/drivers/input/keyboard/pxa27x_keypad.c@@ -136,6 +136,9 @@ set_bit(code, input_dev->keybit); } + for (i = 0; i < pdata->direct_key_num; i++) + set_bit(pdata->direct_key_map[i], input_dev->keybit); + keypad->rotary_up_key[0] = pdata->rotary0_up_key; keypad->rotary_up_key[1] = pdata->rotary1_up_key; keypad->rotary_down_key[0] = pdata->rotary0_down_key;
@@ -143,17 +146,21 @@ keypad->rotary_rel_code[0] = pdata->rotary0_rel_code; keypad->rotary_rel_code[1] = pdata->rotary1_rel_code; - if (pdata->rotary0_up_key && pdata->rotary0_down_key) { - set_bit(pdata->rotary0_up_key, input_dev->keybit); - set_bit(pdata->rotary0_down_key, input_dev->keybit); - } else - set_bit(pdata->rotary0_rel_code, input_dev->relbit); - - if (pdata->rotary1_up_key && pdata->rotary1_down_key) { - set_bit(pdata->rotary1_up_key, input_dev->keybit); - set_bit(pdata->rotary1_down_key, input_dev->keybit); - } else - set_bit(pdata->rotary1_rel_code, input_dev->relbit); + if (pdata->enable_rotary0) { + if (pdata->rotary0_up_key && pdata->rotary0_down_key) { + set_bit(pdata->rotary0_up_key, input_dev->keybit); + set_bit(pdata->rotary0_down_key, input_dev->keybit); + } else + set_bit(pdata->rotary0_rel_code, input_dev->relbit); + } + + if (pdata->enable_rotary1) { + if (pdata->rotary1_up_key && pdata->rotary1_down_key) { + set_bit(pdata->rotary1_up_key, input_dev->keybit); + set_bit(pdata->rotary1_down_key, input_dev->keybit); + } else + set_bit(pdata->rotary1_rel_code, input_dev->relbit); + } } static inline unsigned int lookup_matrix_keycode(
@@ -484,8 +491,9 @@ keypad->input_dev = input_dev; input_set_drvdata(input_dev, keypad); - input_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REP) | - BIT_MASK(EV_REL); + input_dev->evbit[0] = BIT_MASK(EV_KEY) | BIT_MASK(EV_REP); + if (keypad->pdata->rotary0_rel_code || keypad->pdata->rotary1_rel_code) + input_dev->evbit[0] |= BIT_MASK(EV_REL); pxa27x_keypad_build_keycode(keypad); platform_set_drvdata(pdev, keypad);