|
@@ -113,9 +113,12 @@ static int pcf8574_kp_probe(struct i2c_client *client, const struct i2c_device_i
|
|
idev->keycodemax = ARRAY_SIZE(lp->btncode);
|
|
idev->keycodemax = ARRAY_SIZE(lp->btncode);
|
|
|
|
|
|
for (i = 0; i < ARRAY_SIZE(pcf8574_kp_btncode); i++) {
|
|
for (i = 0; i < ARRAY_SIZE(pcf8574_kp_btncode); i++) {
|
|
- lp->btncode[i] = pcf8574_kp_btncode[i];
|
|
|
|
- __set_bit(lp->btncode[i] & KEY_MAX, idev->keybit);
|
|
|
|
|
|
+ if (lp->btncode[i] <= KEY_MAX) {
|
|
|
|
+ lp->btncode[i] = pcf8574_kp_btncode[i];
|
|
|
|
+ __set_bit(lp->btncode[i], idev->keybit);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
+ __clear_bit(KEY_RESERVED, idev->keybit);
|
|
|
|
|
|
sprintf(lp->name, DRV_NAME);
|
|
sprintf(lp->name, DRV_NAME);
|
|
sprintf(lp->phys, "kp_data/input0");
|
|
sprintf(lp->phys, "kp_data/input0");
|