diff --git a/drivers/input/mouse/focaltech.c b/drivers/input/mouse/focaltech.c index 6fd5fff0cbff..23e387c5afd8 100644 --- a/drivers/input/mouse/focaltech.c +++ b/drivers/input/mouse/focaltech.c @@ -202,8 +202,8 @@ static void focaltech_process_rel_packet(struct psmouse *psmouse, state->pressed = packet[0] >> 7; finger1 = ((packet[0] >> 4) & 0x7) - 1; if (finger1 < FOC_MAX_FINGERS) { - state->fingers[finger1].x += (char)packet[1]; - state->fingers[finger1].y += (char)packet[2]; + state->fingers[finger1].x += (signed char)packet[1]; + state->fingers[finger1].y += (signed char)packet[2]; } else { psmouse_err(psmouse, "First finger in rel packet invalid: %d\n", finger1); @@ -218,8 +218,8 @@ static void focaltech_process_rel_packet(struct psmouse *psmouse, */ finger2 = ((packet[3] >> 4) & 0x7) - 1; if (finger2 < FOC_MAX_FINGERS) { - state->fingers[finger2].x += (char)packet[4]; - state->fingers[finger2].y += (char)packet[5]; + state->fingers[finger2].x += (signed char)packet[4]; + state->fingers[finger2].y += (signed char)packet[5]; } } @@ -374,7 +374,7 @@ static int focaltech_read_size(struct psmouse *psmouse) { struct ps2dev *ps2dev = &psmouse->ps2dev; struct focaltech_data *priv = psmouse->private; - char param[3]; + signed char param[3]; if (focaltech_read_register(ps2dev, 2, param)) return -EIO;