diff options
author | Arnd Bergmann <arnd@arndb.de> | 2013-02-28 21:53:01 +0400 |
---|---|---|
committer | Arnd Bergmann <arnd@arndb.de> | 2013-02-28 21:53:01 +0400 |
commit | 168268a225d24da3768a88c1029fb3014b0837ca (patch) | |
tree | afde019a1ac79366df0b96a2fcc8ba50bc5298fa /drivers/hid/i2c-hid | |
parent | 04ee16bdf486061147c608410c2c9181352aaa3a (diff) | |
parent | 6f1989bc982bc176b0d63e028e9b7f23ae1b4583 (diff) | |
download | linux-168268a225d24da3768a88c1029fb3014b0837ca.tar.xz |
Merge 'mmc/upstream' into late/mvebu2
These patches from the mmc tree were merged into v3.9 already
and the later mvebu patches depend on them.
Signed-off-by: Arnd Bergmann <arnd@arndb.de>
Diffstat (limited to 'drivers/hid/i2c-hid')
-rw-r--r-- | drivers/hid/i2c-hid/i2c-hid.c | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/drivers/hid/i2c-hid/i2c-hid.c b/drivers/hid/i2c-hid/i2c-hid.c index 12e4fdc810bf..e766b5614ef5 100644 --- a/drivers/hid/i2c-hid/i2c-hid.c +++ b/drivers/hid/i2c-hid/i2c-hid.c @@ -540,13 +540,24 @@ static int i2c_hid_output_raw_report(struct hid_device *hid, __u8 *buf, { struct i2c_client *client = hid->driver_data; int report_id = buf[0]; + int ret; if (report_type == HID_INPUT_REPORT) return -EINVAL; - return i2c_hid_set_report(client, + if (report_id) { + buf++; + count--; + } + + ret = i2c_hid_set_report(client, report_type == HID_FEATURE_REPORT ? 0x03 : 0x02, report_id, buf, count); + + if (report_id && ret >= 0) + ret++; /* add report_id to the number of transfered bytes */ + + return ret; } static int i2c_hid_parse(struct hid_device *hid) |