Commit 93f25f92 authored by Dmitry Torokhov's avatar Dmitry Torokhov

Input: cypress_ps2 - propagate errors from lower layers

Do not override errors reported by lower layers with generic "-1",
but propagate them to the callers. Change the checks for errors to be
in the form of "if (error)" to maintain consistency.

Link: https://lore.kernel.org/r/20240628224728.2180126-4-dmitry.torokhov@gmail.comSigned-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
parent 8bccf667
...@@ -97,10 +97,10 @@ static int cypress_ps2_read_cmd_status(struct psmouse *psmouse, ...@@ -97,10 +97,10 @@ static int cypress_ps2_read_cmd_status(struct psmouse *psmouse,
unsigned char cmd, unsigned char cmd,
unsigned char *param) unsigned char *param)
{ {
int rc;
struct ps2dev *ps2dev = &psmouse->ps2dev; struct ps2dev *ps2dev = &psmouse->ps2dev;
enum psmouse_state old_state; enum psmouse_state old_state;
int pktsize; int pktsize;
int rc;
ps2_begin_command(ps2dev); ps2_begin_command(ps2dev);
...@@ -112,7 +112,7 @@ static int cypress_ps2_read_cmd_status(struct psmouse *psmouse, ...@@ -112,7 +112,7 @@ static int cypress_ps2_read_cmd_status(struct psmouse *psmouse,
memset(param, 0, pktsize); memset(param, 0, pktsize);
rc = cypress_ps2_sendbyte(psmouse, 0xe9); rc = cypress_ps2_sendbyte(psmouse, 0xe9);
if (rc < 0) if (rc)
goto out; goto out;
if (!wait_event_timeout(ps2dev->wait, if (!wait_event_timeout(ps2dev->wait,
...@@ -322,15 +322,15 @@ static int cypress_read_tp_metrics(struct psmouse *psmouse) ...@@ -322,15 +322,15 @@ static int cypress_read_tp_metrics(struct psmouse *psmouse)
static int cypress_query_hardware(struct psmouse *psmouse) static int cypress_query_hardware(struct psmouse *psmouse)
{ {
int ret; int error;
ret = cypress_read_fw_version(psmouse); error = cypress_read_fw_version(psmouse);
if (ret) if (error)
return ret; return error;
ret = cypress_read_tp_metrics(psmouse); error = cypress_read_tp_metrics(psmouse);
if (ret) if (error)
return ret; return error;
return 0; return 0;
} }
...@@ -339,9 +339,12 @@ static int cypress_set_absolute_mode(struct psmouse *psmouse) ...@@ -339,9 +339,12 @@ static int cypress_set_absolute_mode(struct psmouse *psmouse)
{ {
struct cytp_data *cytp = psmouse->private; struct cytp_data *cytp = psmouse->private;
unsigned char param[3]; unsigned char param[3];
int error;
if (cypress_send_ext_cmd(psmouse, CYTP_CMD_ABS_WITH_PRESSURE_MODE, param) < 0) error = cypress_send_ext_cmd(psmouse, CYTP_CMD_ABS_WITH_PRESSURE_MODE,
return -1; param);
if (error)
return error;
cytp->mode = (cytp->mode & ~CYTP_BIT_ABS_REL_MASK) cytp->mode = (cytp->mode & ~CYTP_BIT_ABS_REL_MASK)
| CYTP_BIT_ABS_PRESSURE; | CYTP_BIT_ABS_PRESSURE;
...@@ -366,7 +369,7 @@ static void cypress_reset(struct psmouse *psmouse) ...@@ -366,7 +369,7 @@ static void cypress_reset(struct psmouse *psmouse)
static int cypress_set_input_params(struct input_dev *input, static int cypress_set_input_params(struct input_dev *input,
struct cytp_data *cytp) struct cytp_data *cytp)
{ {
int ret; int error;
if (!cytp->tp_res_x || !cytp->tp_res_y) if (!cytp->tp_res_x || !cytp->tp_res_y)
return -EINVAL; return -EINVAL;
...@@ -383,10 +386,10 @@ static int cypress_set_input_params(struct input_dev *input, ...@@ -383,10 +386,10 @@ static int cypress_set_input_params(struct input_dev *input,
input_set_abs_params(input, ABS_MT_POSITION_Y, 0, cytp->tp_max_abs_y, 0, 0); input_set_abs_params(input, ABS_MT_POSITION_Y, 0, cytp->tp_max_abs_y, 0, 0);
input_set_abs_params(input, ABS_MT_PRESSURE, 0, 255, 0, 0); input_set_abs_params(input, ABS_MT_PRESSURE, 0, 255, 0, 0);
ret = input_mt_init_slots(input, CYTP_MAX_MT_SLOTS, error = input_mt_init_slots(input, CYTP_MAX_MT_SLOTS,
INPUT_MT_DROP_UNUSED|INPUT_MT_TRACK); INPUT_MT_DROP_UNUSED | INPUT_MT_TRACK);
if (ret < 0) if (error)
return ret; return error;
__set_bit(INPUT_PROP_SEMI_MT, input->propbit); __set_bit(INPUT_PROP_SEMI_MT, input->propbit);
...@@ -637,21 +640,22 @@ static void cypress_disconnect(struct psmouse *psmouse) ...@@ -637,21 +640,22 @@ static void cypress_disconnect(struct psmouse *psmouse)
static int cypress_reconnect(struct psmouse *psmouse) static int cypress_reconnect(struct psmouse *psmouse)
{ {
int tries = CYTP_PS2_CMD_TRIES; int tries = CYTP_PS2_CMD_TRIES;
int rc; int error;
do { do {
cypress_reset(psmouse); cypress_reset(psmouse);
rc = cypress_detect(psmouse, false); error = cypress_detect(psmouse, false);
} while (rc && (--tries > 0)); } while (error && (--tries > 0));
if (rc) { if (error) {
psmouse_err(psmouse, "Reconnect: unable to detect trackpad.\n"); psmouse_err(psmouse, "Reconnect: unable to detect trackpad.\n");
return -1; return error;
} }
if (cypress_set_absolute_mode(psmouse)) { error = cypress_set_absolute_mode(psmouse);
if (error) {
psmouse_err(psmouse, "Reconnect: Unable to initialize Cypress absolute mode.\n"); psmouse_err(psmouse, "Reconnect: Unable to initialize Cypress absolute mode.\n");
return -1; return error;
} }
return 0; return 0;
...@@ -660,6 +664,7 @@ static int cypress_reconnect(struct psmouse *psmouse) ...@@ -660,6 +664,7 @@ static int cypress_reconnect(struct psmouse *psmouse)
int cypress_init(struct psmouse *psmouse) int cypress_init(struct psmouse *psmouse)
{ {
struct cytp_data *cytp; struct cytp_data *cytp;
int error;
cytp = kzalloc(sizeof(*cytp), GFP_KERNEL); cytp = kzalloc(sizeof(*cytp), GFP_KERNEL);
if (!cytp) if (!cytp)
...@@ -670,17 +675,20 @@ int cypress_init(struct psmouse *psmouse) ...@@ -670,17 +675,20 @@ int cypress_init(struct psmouse *psmouse)
cypress_reset(psmouse); cypress_reset(psmouse);
if (cypress_query_hardware(psmouse)) { error = cypress_query_hardware(psmouse);
if (error) {
psmouse_err(psmouse, "Unable to query Trackpad hardware.\n"); psmouse_err(psmouse, "Unable to query Trackpad hardware.\n");
goto err_exit; goto err_exit;
} }
if (cypress_set_absolute_mode(psmouse)) { error = cypress_set_absolute_mode(psmouse);
if (error) {
psmouse_err(psmouse, "init: Unable to initialize Cypress absolute mode.\n"); psmouse_err(psmouse, "init: Unable to initialize Cypress absolute mode.\n");
goto err_exit; goto err_exit;
} }
if (cypress_set_input_params(psmouse->dev, cytp) < 0) { error = cypress_set_input_params(psmouse->dev, cytp);
if (error) {
psmouse_err(psmouse, "init: Unable to set input params.\n"); psmouse_err(psmouse, "init: Unable to set input params.\n");
goto err_exit; goto err_exit;
} }
...@@ -705,5 +713,5 @@ int cypress_init(struct psmouse *psmouse) ...@@ -705,5 +713,5 @@ int cypress_init(struct psmouse *psmouse)
psmouse->private = NULL; psmouse->private = NULL;
kfree(cytp); kfree(cytp);
return -1; return error;
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment