diff --git a/drivers/input/mouse/focaltech.c b/drivers/input/mouse/focaltech.c index 6fd5fff0cbff..19914f60b0d8 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,14 +374,14 @@ static int focaltech_read_size(struct psmouse *psmouse) { struct ps2dev *ps2dev = &psmouse->ps2dev; struct focaltech_data *priv = psmouse->private; - char param[3]; + unsigned char param[3]; if (focaltech_read_register(ps2dev, 2, param)) return -EIO; /* not sure whether this is 100% correct */ - priv->x_max = (unsigned char)param[1] * 128; - priv->y_max = (unsigned char)param[2] * 128; + priv->x_max = param[1] * 128; + priv->y_max = param[2] * 128; return 0; }