Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/dtor/input
[cascardo/linux.git] / drivers / input / mouse / elan_i2c_smbus.c
index cb6aecb..e23b249 100644 (file)
@@ -222,11 +222,13 @@ static int elan_smbus_get_checksum(struct i2c_client *client,
 static int elan_smbus_get_max(struct i2c_client *client,
                              unsigned int *max_x, unsigned int *max_y)
 {
+       int ret;
        int error;
        u8 val[3];
 
-       error = i2c_smbus_read_block_data(client, ETP_SMBUS_RANGE_CMD, val);
-       if (error) {
+       ret = i2c_smbus_read_block_data(client, ETP_SMBUS_RANGE_CMD, val);
+       if (ret != 3) {
+               error = ret < 0 ? ret : -EIO;
                dev_err(&client->dev, "failed to get dimensions: %d\n", error);
                return error;
        }
@@ -240,12 +242,13 @@ static int elan_smbus_get_max(struct i2c_client *client,
 static int elan_smbus_get_resolution(struct i2c_client *client,
                                     u8 *hw_res_x, u8 *hw_res_y)
 {
+       int ret;
        int error;
        u8 val[3];
 
-       error = i2c_smbus_read_block_data(client,
-                                         ETP_SMBUS_RESOLUTION_CMD, val);
-       if (error) {
+       ret = i2c_smbus_read_block_data(client, ETP_SMBUS_RESOLUTION_CMD, val);
+       if (ret != 3) {
+               error = ret < 0 ? ret : -EIO;
                dev_err(&client->dev, "failed to get resolution: %d\n", error);
                return error;
        }
@@ -260,12 +263,13 @@ static int elan_smbus_get_num_traces(struct i2c_client *client,
                                     unsigned int *x_traces,
                                     unsigned int *y_traces)
 {
+       int ret;
        int error;
        u8 val[3];
 
-       error = i2c_smbus_read_block_data(client,
-                                         ETP_SMBUS_XY_TRACENUM_CMD, val);
-       if (error) {
+       ret = i2c_smbus_read_block_data(client, ETP_SMBUS_XY_TRACENUM_CMD, val);
+       if (ret != 3) {
+               error = ret < 0 ? ret : -EIO;
                dev_err(&client->dev, "failed to get trace info: %d\n", error);
                return error;
        }