aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/hid
diff options
context:
space:
mode:
authorAndrew de los Reyes <adlr@chromium.org>2013-02-18 12:20:23 -0500
committerJiri Kosina <jkosina@suse.cz>2013-03-01 08:14:59 -0500
commit8af6c08830b1ae114d1a8b548b1f8b056e068887 (patch)
tree806d9b7ae3408e4ee17b2dfa0f848e79be3d87a9 /drivers/hid
parenta9dd22b73085734735cfa07398451b061626cc53 (diff)
Revert "HID: Fix logitech-dj: missing Unifying device issue"
This reverts commit 596264082f10dd4a567c43d4526b2f54ac5520bc. The reverted commit was a workaround needed when drivers became unable to communicate with devices during probe(). Now that such communication is possible, the workaround is not needed. Signed-off-by: Andrew de los Reyes <adlr@chromium.org> Signed-off-by: Jiri Kosina <jkosina@suse.cz>
Diffstat (limited to 'drivers/hid')
-rw-r--r--drivers/hid/hid-logitech-dj.c45
-rw-r--r--drivers/hid/hid-logitech-dj.h1
2 files changed, 0 insertions, 46 deletions
diff --git a/drivers/hid/hid-logitech-dj.c b/drivers/hid/hid-logitech-dj.c
index bf647ef18086..199b78c8a5f3 100644
--- a/drivers/hid/hid-logitech-dj.c
+++ b/drivers/hid/hid-logitech-dj.c
@@ -193,7 +193,6 @@ static struct hid_ll_driver logi_dj_ll_driver;
193static int logi_dj_output_hidraw_report(struct hid_device *hid, u8 * buf, 193static int logi_dj_output_hidraw_report(struct hid_device *hid, u8 * buf,
194 size_t count, 194 size_t count,
195 unsigned char report_type); 195 unsigned char report_type);
196static int logi_dj_recv_query_paired_devices(struct dj_receiver_dev *djrcv_dev);
197 196
198static void logi_dj_recv_destroy_djhid_device(struct dj_receiver_dev *djrcv_dev, 197static void logi_dj_recv_destroy_djhid_device(struct dj_receiver_dev *djrcv_dev,
199 struct dj_report *dj_report) 198 struct dj_report *dj_report)
@@ -234,7 +233,6 @@ static void logi_dj_recv_add_djhid_device(struct dj_receiver_dev *djrcv_dev,
234 if (dj_report->report_params[DEVICE_PAIRED_PARAM_SPFUNCTION] & 233 if (dj_report->report_params[DEVICE_PAIRED_PARAM_SPFUNCTION] &
235 SPFUNCTION_DEVICE_LIST_EMPTY) { 234 SPFUNCTION_DEVICE_LIST_EMPTY) {
236 dbg_hid("%s: device list is empty\n", __func__); 235 dbg_hid("%s: device list is empty\n", __func__);
237 djrcv_dev->querying_devices = false;
238 return; 236 return;
239 } 237 }
240 238
@@ -245,12 +243,6 @@ static void logi_dj_recv_add_djhid_device(struct dj_receiver_dev *djrcv_dev,
245 return; 243 return;
246 } 244 }
247 245
248 if (djrcv_dev->paired_dj_devices[dj_report->device_index]) {
249 /* The device is already known. No need to reallocate it. */
250 dbg_hid("%s: device is already known\n", __func__);
251 return;
252 }
253
254 dj_hiddev = hid_allocate_device(); 246 dj_hiddev = hid_allocate_device();
255 if (IS_ERR(dj_hiddev)) { 247 if (IS_ERR(dj_hiddev)) {
256 dev_err(&djrcv_hdev->dev, "%s: hid_allocate_device failed\n", 248 dev_err(&djrcv_hdev->dev, "%s: hid_allocate_device failed\n",
@@ -314,7 +306,6 @@ static void delayedwork_callback(struct work_struct *work)
314 struct dj_report dj_report; 306 struct dj_report dj_report;
315 unsigned long flags; 307 unsigned long flags;
316 int count; 308 int count;
317 int retval;
318 309
319 dbg_hid("%s\n", __func__); 310 dbg_hid("%s\n", __func__);
320 311
@@ -347,25 +338,6 @@ static void delayedwork_callback(struct work_struct *work)
347 logi_dj_recv_destroy_djhid_device(djrcv_dev, &dj_report); 338 logi_dj_recv_destroy_djhid_device(djrcv_dev, &dj_report);
348 break; 339 break;
349 default: 340 default:
350 /* A normal report (i. e. not belonging to a pair/unpair notification)
351 * arriving here, means that the report arrived but we did not have a
352 * paired dj_device associated to the report's device_index, this
353 * means that the original "device paired" notification corresponding
354 * to this dj_device never arrived to this driver. The reason is that
355 * hid-core discards all packets coming from a device while probe() is
356 * executing. */
357 if (!djrcv_dev->paired_dj_devices[dj_report.device_index]) {
358 /* ok, we don't know the device, just re-ask the
359 * receiver for the list of connected devices. */
360 retval = logi_dj_recv_query_paired_devices(djrcv_dev);
361 if (!retval) {
362 /* everything went fine, so just leave */
363 break;
364 }
365 dev_err(&djrcv_dev->hdev->dev,
366 "%s:logi_dj_recv_query_paired_devices "
367 "error:%d\n", __func__, retval);
368 }
369 dbg_hid("%s: unexpected report type\n", __func__); 341 dbg_hid("%s: unexpected report type\n", __func__);
370 } 342 }
371} 343}
@@ -396,12 +368,6 @@ static void logi_dj_recv_forward_null_report(struct dj_receiver_dev *djrcv_dev,
396 if (!djdev) { 368 if (!djdev) {
397 dbg_hid("djrcv_dev->paired_dj_devices[dj_report->device_index]" 369 dbg_hid("djrcv_dev->paired_dj_devices[dj_report->device_index]"
398 " is NULL, index %d\n", dj_report->device_index); 370 " is NULL, index %d\n", dj_report->device_index);
399 kfifo_in(&djrcv_dev->notif_fifo, dj_report, sizeof(struct dj_report));
400
401 if (schedule_work(&djrcv_dev->work) == 0) {
402 dbg_hid("%s: did not schedule the work item, was already "
403 "queued\n", __func__);
404 }
405 return; 371 return;
406 } 372 }
407 373
@@ -432,12 +398,6 @@ static void logi_dj_recv_forward_report(struct dj_receiver_dev *djrcv_dev,
432 if (dj_device == NULL) { 398 if (dj_device == NULL) {
433 dbg_hid("djrcv_dev->paired_dj_devices[dj_report->device_index]" 399 dbg_hid("djrcv_dev->paired_dj_devices[dj_report->device_index]"
434 " is NULL, index %d\n", dj_report->device_index); 400 " is NULL, index %d\n", dj_report->device_index);
435 kfifo_in(&djrcv_dev->notif_fifo, dj_report, sizeof(struct dj_report));
436
437 if (schedule_work(&djrcv_dev->work) == 0) {
438 dbg_hid("%s: did not schedule the work item, was already "
439 "queued\n", __func__);
440 }
441 return; 401 return;
442 } 402 }
443 403
@@ -479,10 +439,6 @@ static int logi_dj_recv_query_paired_devices(struct dj_receiver_dev *djrcv_dev)
479 struct dj_report *dj_report; 439 struct dj_report *dj_report;
480 int retval; 440 int retval;
481 441
482 /* no need to protect djrcv_dev->querying_devices */
483 if (djrcv_dev->querying_devices)
484 return 0;
485
486 dj_report = kzalloc(sizeof(struct dj_report), GFP_KERNEL); 442 dj_report = kzalloc(sizeof(struct dj_report), GFP_KERNEL);
487 if (!dj_report) 443 if (!dj_report)
488 return -ENOMEM; 444 return -ENOMEM;
@@ -494,7 +450,6 @@ static int logi_dj_recv_query_paired_devices(struct dj_receiver_dev *djrcv_dev)
494 return retval; 450 return retval;
495} 451}
496 452
497
498static int logi_dj_recv_switch_to_dj_mode(struct dj_receiver_dev *djrcv_dev, 453static int logi_dj_recv_switch_to_dj_mode(struct dj_receiver_dev *djrcv_dev,
499 unsigned timeout) 454 unsigned timeout)
500{ 455{
diff --git a/drivers/hid/hid-logitech-dj.h b/drivers/hid/hid-logitech-dj.h
index 4a4000340ce1..fd28a5e0ca3b 100644
--- a/drivers/hid/hid-logitech-dj.h
+++ b/drivers/hid/hid-logitech-dj.h
@@ -101,7 +101,6 @@ struct dj_receiver_dev {
101 struct work_struct work; 101 struct work_struct work;
102 struct kfifo notif_fifo; 102 struct kfifo notif_fifo;
103 spinlock_t lock; 103 spinlock_t lock;
104 bool querying_devices;
105}; 104};
106 105
107struct dj_device { 106struct dj_device {