On Thu, May 29, 2008 at 1:36 AM, Antonio Ospite <ospite@xxxxxxxxxxxxxxxxx> wrote: > > 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 <ao2@xxxxxxxxxxx> > > 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,11 @@ > 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->enable_rotary0 && keypad->pdata->rotary0_rel_code) > + || (keypad->pdata->enable_rotary1 > + && keypad->pdata->rotary1_rel_code)) > + input_dev->evbit[0] |= BIT_MASK(EV_REL); > > pxa27x_keypad_build_keycode(keypad); > platform_set_drvdata(pdev, keypad); > OK -- Cheers - eric -- To unsubscribe from this list: send the line "unsubscribe linux-input" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html