/* Send sysex message in pieces of wMaxPacketSize bytes. */ int line6_send_sysex_message_async(struct usb_line6 *line6, const char *buffer, int size) { return line6_send_raw_message_async(line6, buffer, size + SYSEX_EXTRA_SIZE) - SYSEX_EXTRA_SIZE; }
static void variax_activate_timeout(unsigned long arg) { struct usb_line6_variax *variax = (struct usb_line6_variax *)arg; variax->buffer_activate[VARIAX_OFFSET_ACTIVATE] = 1; line6_send_raw_message_async(&variax->line6, variax->buffer_activate, sizeof(variax_activate)); }
int line6_dump_request_async(struct line6_dump_request *l6dr, struct usb_line6 *line6, int num) { int ret; line6_invalidate_current(l6dr); ret = line6_send_raw_message_async(line6, l6dr->reqbufs[num].buffer, l6dr->reqbufs[num].length); if (ret < 0) line6_dump_finished(l6dr); return ret; }
/* Send asynchronous device version request. */ int line6_version_request_async(struct usb_line6 *line6) { char *buffer; int retval; buffer = kmemdup(line6_request_version, sizeof(line6_request_version), GFP_ATOMIC); if (buffer == NULL) return -ENOMEM; retval = line6_send_raw_message_async(line6, buffer, sizeof(line6_request_version)); kfree(buffer); return retval; }
/* "write" request on "active" special file. */ static ssize_t variax_set_active(struct device *dev, struct device_attribute *attr, const char *buf, size_t count) { struct usb_line6_variax *variax = usb_get_intfdata(to_usb_interface(dev)); unsigned long value; int ret; ret = strict_strtoul(buf, 10, &value); if (ret) return ret; variax->buffer_activate[VARIAX_OFFSET_ACTIVATE] = value ? 1: 0; line6_send_raw_message_async(&variax->line6, variax->buffer_activate, sizeof(variax_activate)); return count; }
/* Send asynchronous device version request. */ int line6_version_request_async(struct usb_line6 *line6) { char *buffer; int retval; buffer = kmalloc(sizeof(line6_request_version), GFP_ATOMIC); if (buffer == NULL) { dev_err(line6->ifcdev, "Out of memory"); return -ENOMEM; } memcpy(buffer, line6_request_version, sizeof(line6_request_version)); retval = line6_send_raw_message_async(line6, buffer, sizeof(line6_request_version)); kfree(buffer); return retval; }
static void variax_activate_async(struct usb_line6_variax *variax, int a) { variax->buffer_activate[VARIAX_OFFSET_ACTIVATE] = a; line6_send_raw_message_async(&variax->line6, variax->buffer_activate, sizeof(variax_activate)); }
/* Send asynchronous device version request. */ int line6_version_request_async(struct usb_line6 *line6) { return line6_send_raw_message_async(line6, line6_request_version, sizeof(line6_request_version0)); }