From: Jiri Kosina Date: Tue, 1 Apr 2014 17:05:09 +0000 (+0200) Subject: Merge branch 'for-3.15/hid-core-ll-transport-cleanup' into for-linus X-Git-Tag: firefly_0821_release~176^2~4168^2~4 X-Git-Url: http://plrg.eecs.uci.edu/git/?a=commitdiff_plain;h=ad295b6d5739ab24880a31be403bbc8fab62e177;p=firefly-linux-kernel-4.4.55.git Merge branch 'for-3.15/hid-core-ll-transport-cleanup' into for-linus Conflicts: drivers/hid/hid-ids.h drivers/hid/hid-sony.c drivers/hid/i2c-hid/i2c-hid.c --- ad295b6d5739ab24880a31be403bbc8fab62e177 diff --cc drivers/hid/hid-ids.h index 00fd7452722f,239f29c1c85c..5c34e658fd59 --- a/drivers/hid/hid-ids.h +++ b/drivers/hid/hid-ids.h @@@ -241,7 -240,7 +241,8 @@@ #define USB_VENDOR_ID_CYGNAL 0x10c4 #define USB_DEVICE_ID_CYGNAL_RADIO_SI470X 0x818a +#define USB_DEVICE_ID_FOCALTECH_FTXXXX_MULTITOUCH 0x81b9 + #define USB_DEVICE_ID_CYGNAL_CP2112 0xea90 #define USB_VENDOR_ID_CYPRESS 0x04b4 #define USB_DEVICE_ID_CYPRESS_MOUSE 0x0001 diff --cc drivers/hid/hid-sony.c index 2f19b15f47f2,4884bb567bf8..b3e82585309e --- a/drivers/hid/hid-sony.c +++ b/drivers/hid/hid-sony.c @@@ -1095,10 -1670,23 +1670,27 @@@ static int sony_probe(struct hid_devic goto err_stop; } + if (sc->quirks & SONY_FF_SUPPORT) { + ret = sony_init_ff(hdev); + if (ret < 0) + goto err_stop; + if (sc->quirks & SONY_BATTERY_SUPPORT) { + ret = sony_battery_probe(sc); + if (ret < 0) + goto err_stop; + + /* Open the device to receive reports with battery info */ + ret = hid_hw_open(hdev); + if (ret < 0) { + hid_err(hdev, "hw open failed\n"); + goto err_stop; + } + } + + if (sc->quirks & SONY_FF_SUPPORT) { + ret = sony_init_ff(hdev); + if (ret < 0) + goto err_close; } return 0; @@@ -1116,8 -1711,15 +1715,17 @@@ static void sony_remove(struct hid_devi if (sc->quirks & SONY_LED_SUPPORT) sony_leds_remove(hdev); + if (sc->worker_initialized) + cancel_work_sync(&sc->state_worker); + if (sc->quirks & SONY_BATTERY_SUPPORT) { + hid_hw_close(hdev); + sony_battery_remove(sc); + } + + if (sc->worker_initialized) + cancel_work_sync(&sc->state_worker); + + sony_remove_dev_list(sc); hid_hw_stop(hdev); }