diff --git a/drivers/hid/i2c-hid/i2c-hid.c b/drivers/hid/i2c-hid/i2c-hid.c index be5126c281c317d1f13352d0865d4a163298cf64..e0d097deb0678156b7d82539703b04a7e851ef00 100644 --- a/drivers/hid/i2c-hid/i2c-hid.c +++ b/drivers/hid/i2c-hid/i2c-hid.c @@ -244,7 +244,7 @@ static int i2c_hid_get_report(struct i2c_client *client, u8 reportType, if (ret) { dev_err(&client->dev, "failed to retrieve report from device.\n"); - return -EINVAL; + return ret; } return 0; @@ -289,7 +289,7 @@ static int i2c_hid_set_report(struct i2c_client *client, u8 reportType, reportType, args, args_len, NULL, 0); if (ret) { dev_err(&client->dev, "failed to set a report to device.\n"); - return -EINVAL; + return ret; } return data_len; @@ -333,7 +333,7 @@ static int i2c_hid_hwreset(struct i2c_client *client) return 0; } -static int i2c_hid_get_input(struct i2c_hid *ihid) +static void i2c_hid_get_input(struct i2c_hid *ihid) { int ret, ret_size; int size = le16_to_cpu(ihid->hdesc.wMaxInputLength); @@ -341,11 +341,11 @@ static int i2c_hid_get_input(struct i2c_hid *ihid) ret = i2c_master_recv(ihid->client, ihid->inbuf, size); if (ret != size) { if (ret < 0) - return ret; + return; dev_err(&ihid->client->dev, "%s: got %d data instead of %d\n", __func__, ret, size); - return ret; + return; } ret_size = ihid->inbuf[0] | ihid->inbuf[1] << 8; @@ -354,13 +354,13 @@ static int i2c_hid_get_input(struct i2c_hid *ihid) /* host or device initiated RESET completed */ if (test_and_clear_bit(I2C_HID_RESET_PENDING, &ihid->flags)) wake_up(&ihid->wait); - return 0; + return; } if (ret_size > size) { dev_err(&ihid->client->dev, "%s: incomplete report (%d/%d)\n", __func__, size, ret_size); - return -EIO; + return; } i2c_hid_dbg(ihid, "input: %*ph\n", ret_size, ihid->inbuf); @@ -369,7 +369,7 @@ static int i2c_hid_get_input(struct i2c_hid *ihid) hid_input_report(ihid->hid, HID_INPUT_REPORT, ihid->inbuf + 2, ret_size - 2, 1); - return 0; + return; } static irqreturn_t i2c_hid_irq(int irq, void *dev_id) @@ -429,8 +429,10 @@ static void i2c_hid_init_reports(struct hid_device *hid) struct i2c_hid *ihid = i2c_get_clientdata(client); u8 *inbuf = kzalloc(ihid->bufsize, GFP_KERNEL); - if (!inbuf) + if (!inbuf) { + dev_err(&client->dev, "can not retrieve initial reports\n"); return; + } list_for_each_entry(report, &hid->report_enum[HID_INPUT_REPORT].report_list, list) @@ -714,9 +716,7 @@ static int i2c_hid_hidinput_input_event(struct input_dev *dev, return -1; } - hid_set_field(field, offset, value); - - return 0; + return hid_set_field(field, offset, value); } static struct hid_ll_driver i2c_hid_ll_driver = {