driver.c (8be98d2f2a0a262f8bf8a0bc1fdf522b3c7aab17) driver.c (f4000b58b64344871d7b27c05e73932f137cfef6)
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * Line 6 Linux USB driver
4 *
5 * Copyright (C) 2004-2010 Markus Grabner (grabner@icg.tugraz.at)
6 */
7
8#include <linux/kernel.h>

--- 99 unchanged lines hidden (view full) ---

108 const char *frag_buf = buffer + i;
109 int frag_size = min(line6->max_packet_size, size - i);
110 int retval;
111
112 if (properties->capabilities & LINE6_CAP_CONTROL_MIDI) {
113 retval = usb_interrupt_msg(line6->usbdev,
114 usb_sndintpipe(line6->usbdev, properties->ep_ctrl_w),
115 (char *)frag_buf, frag_size,
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * Line 6 Linux USB driver
4 *
5 * Copyright (C) 2004-2010 Markus Grabner (grabner@icg.tugraz.at)
6 */
7
8#include <linux/kernel.h>

--- 99 unchanged lines hidden (view full) ---

108 const char *frag_buf = buffer + i;
109 int frag_size = min(line6->max_packet_size, size - i);
110 int retval;
111
112 if (properties->capabilities & LINE6_CAP_CONTROL_MIDI) {
113 retval = usb_interrupt_msg(line6->usbdev,
114 usb_sndintpipe(line6->usbdev, properties->ep_ctrl_w),
115 (char *)frag_buf, frag_size,
116 &partial, LINE6_TIMEOUT * HZ);
116 &partial, LINE6_TIMEOUT);
117 } else {
118 retval = usb_bulk_msg(line6->usbdev,
119 usb_sndbulkpipe(line6->usbdev, properties->ep_ctrl_w),
120 (char *)frag_buf, frag_size,
117 } else {
118 retval = usb_bulk_msg(line6->usbdev,
119 usb_sndbulkpipe(line6->usbdev, properties->ep_ctrl_w),
120 (char *)frag_buf, frag_size,
121 &partial, LINE6_TIMEOUT * HZ);
121 &partial, LINE6_TIMEOUT);
122 }
123
124 if (retval) {
125 dev_err(line6->ifcdev,
126 "usb_bulk_msg failed (%d)\n", retval);
127 break;
128 }
129

--- 212 unchanged lines hidden (view full) ---

342
343 if (address > 0xffff || datalen > 0xff)
344 return -EINVAL;
345
346 /* query the serial number: */
347 ret = usb_control_msg_send(usbdev, 0, 0x67,
348 USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_OUT,
349 (datalen << 8) | 0x21, address, NULL, 0,
122 }
123
124 if (retval) {
125 dev_err(line6->ifcdev,
126 "usb_bulk_msg failed (%d)\n", retval);
127 break;
128 }
129

--- 212 unchanged lines hidden (view full) ---

342
343 if (address > 0xffff || datalen > 0xff)
344 return -EINVAL;
345
346 /* query the serial number: */
347 ret = usb_control_msg_send(usbdev, 0, 0x67,
348 USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_OUT,
349 (datalen << 8) | 0x21, address, NULL, 0,
350 LINE6_TIMEOUT * HZ, GFP_KERNEL);
350 LINE6_TIMEOUT, GFP_KERNEL);
351 if (ret) {
352 dev_err(line6->ifcdev, "read request failed (error %d)\n", ret);
353 goto exit;
354 }
355
356 /* Wait for data length. We'll get 0xff until length arrives. */
357 for (count = 0; count < LINE6_READ_WRITE_MAX_RETRIES; count++) {
358 mdelay(LINE6_READ_WRITE_STATUS_DELAY);
359
360 ret = usb_control_msg_recv(usbdev, 0, 0x67,
361 USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN,
362 0x0012, 0x0000, &len, 1,
351 if (ret) {
352 dev_err(line6->ifcdev, "read request failed (error %d)\n", ret);
353 goto exit;
354 }
355
356 /* Wait for data length. We'll get 0xff until length arrives. */
357 for (count = 0; count < LINE6_READ_WRITE_MAX_RETRIES; count++) {
358 mdelay(LINE6_READ_WRITE_STATUS_DELAY);
359
360 ret = usb_control_msg_recv(usbdev, 0, 0x67,
361 USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN,
362 0x0012, 0x0000, &len, 1,
363 LINE6_TIMEOUT * HZ, GFP_KERNEL);
363 LINE6_TIMEOUT, GFP_KERNEL);
364 if (ret) {
365 dev_err(line6->ifcdev,
366 "receive length failed (error %d)\n", ret);
367 goto exit;
368 }
369
370 if (len != 0xff)
371 break;

--- 10 unchanged lines hidden (view full) ---

382 "length mismatch (expected %d, got %d)\n",
383 (int)datalen, len);
384 goto exit;
385 }
386
387 /* receive the result: */
388 ret = usb_control_msg_recv(usbdev, 0, 0x67,
389 USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN,
364 if (ret) {
365 dev_err(line6->ifcdev,
366 "receive length failed (error %d)\n", ret);
367 goto exit;
368 }
369
370 if (len != 0xff)
371 break;

--- 10 unchanged lines hidden (view full) ---

382 "length mismatch (expected %d, got %d)\n",
383 (int)datalen, len);
384 goto exit;
385 }
386
387 /* receive the result: */
388 ret = usb_control_msg_recv(usbdev, 0, 0x67,
389 USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN,
390 0x0013, 0x0000, data, datalen, LINE6_TIMEOUT * HZ,
390 0x0013, 0x0000, data, datalen, LINE6_TIMEOUT,
391 GFP_KERNEL);
392 if (ret)
393 dev_err(line6->ifcdev, "read failed (error %d)\n", ret);
394
395exit:
396 return ret;
397}
398EXPORT_SYMBOL_GPL(line6_read_data);

--- 13 unchanged lines hidden (view full) ---

412 return -EINVAL;
413
414 status = kmalloc(1, GFP_KERNEL);
415 if (!status)
416 return -ENOMEM;
417
418 ret = usb_control_msg_send(usbdev, 0, 0x67,
419 USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_OUT,
391 GFP_KERNEL);
392 if (ret)
393 dev_err(line6->ifcdev, "read failed (error %d)\n", ret);
394
395exit:
396 return ret;
397}
398EXPORT_SYMBOL_GPL(line6_read_data);

--- 13 unchanged lines hidden (view full) ---

412 return -EINVAL;
413
414 status = kmalloc(1, GFP_KERNEL);
415 if (!status)
416 return -ENOMEM;
417
418 ret = usb_control_msg_send(usbdev, 0, 0x67,
419 USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_OUT,
420 0x0022, address, data, datalen, LINE6_TIMEOUT * HZ,
420 0x0022, address, data, datalen, LINE6_TIMEOUT,
421 GFP_KERNEL);
422 if (ret) {
423 dev_err(line6->ifcdev,
424 "write request failed (error %d)\n", ret);
425 goto exit;
426 }
427
428 for (count = 0; count < LINE6_READ_WRITE_MAX_RETRIES; count++) {
429 mdelay(LINE6_READ_WRITE_STATUS_DELAY);
430
431 ret = usb_control_msg_recv(usbdev, 0, 0x67,
432 USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN,
421 GFP_KERNEL);
422 if (ret) {
423 dev_err(line6->ifcdev,
424 "write request failed (error %d)\n", ret);
425 goto exit;
426 }
427
428 for (count = 0; count < LINE6_READ_WRITE_MAX_RETRIES; count++) {
429 mdelay(LINE6_READ_WRITE_STATUS_DELAY);
430
431 ret = usb_control_msg_recv(usbdev, 0, 0x67,
432 USB_TYPE_VENDOR | USB_RECIP_DEVICE | USB_DIR_IN,
433 0x0012, 0x0000, status, 1, LINE6_TIMEOUT * HZ,
433 0x0012, 0x0000, status, 1, LINE6_TIMEOUT,
434 GFP_KERNEL);
435 if (ret) {
436 dev_err(line6->ifcdev,
437 "receiving status failed (error %d)\n", ret);
438 goto exit;
439 }
440
441 if (*status != 0xff)

--- 458 unchanged lines hidden ---
434 GFP_KERNEL);
435 if (ret) {
436 dev_err(line6->ifcdev,
437 "receiving status failed (error %d)\n", ret);
438 goto exit;
439 }
440
441 if (*status != 0xff)

--- 458 unchanged lines hidden ---