#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/export.h>
#include <linux/slab.h>
#include <linux/usb.h>
#include <sound/core.h>
#include <sound/initval.h>
#include <sound/hwdep.h>
#include "capture.h"
#include "driver.h"
#include "midi.h"
#include "playback.h"
#define DRIVER_AUTHOR …
#define DRIVER_DESC …
const unsigned char line6_midi_id[3] = …;
EXPORT_SYMBOL_GPL(…);
static const char line6_request_version[] = …;
struct message { … };
static void line6_data_received(struct urb *urb);
static int line6_send_raw_message_async_part(struct message *msg,
struct urb *urb);
static int line6_start_listen(struct usb_line6 *line6)
{ … }
static void line6_stop_listen(struct usb_line6 *line6)
{ … }
int line6_send_raw_message(struct usb_line6 *line6, const char *buffer,
int size)
{ … }
EXPORT_SYMBOL_GPL(…);
static void line6_async_request_sent(struct urb *urb)
{ … }
static int line6_send_raw_message_async_part(struct message *msg,
struct urb *urb)
{ … }
int line6_send_raw_message_async(struct usb_line6 *line6, const char *buffer,
int size)
{ … }
EXPORT_SYMBOL_GPL(…);
int line6_version_request_async(struct usb_line6 *line6)
{ … }
EXPORT_SYMBOL_GPL(…);
int line6_send_sysex_message(struct usb_line6 *line6, const char *buffer,
int size)
{ … }
EXPORT_SYMBOL_GPL(…);
char *line6_alloc_sysex_buffer(struct usb_line6 *line6, int code1, int code2,
int size)
{ … }
EXPORT_SYMBOL_GPL(…);
static void line6_data_received(struct urb *urb)
{ … }
#define LINE6_READ_WRITE_STATUS_DELAY …
#define LINE6_READ_WRITE_MAX_RETRIES …
int line6_read_data(struct usb_line6 *line6, unsigned address, void *data,
unsigned datalen)
{ … }
EXPORT_SYMBOL_GPL(…);
int line6_write_data(struct usb_line6 *line6, unsigned address, void *data,
unsigned datalen)
{ … }
EXPORT_SYMBOL_GPL(…);
int line6_read_serial_number(struct usb_line6 *line6, u32 *serial_number)
{ … }
EXPORT_SYMBOL_GPL(…);
static void line6_destruct(struct snd_card *card)
{ … }
static void line6_get_usb_properties(struct usb_line6 *line6)
{ … }
static int line6_hwdep_open(struct snd_hwdep *hw, struct file *file)
{ … }
static int line6_hwdep_release(struct snd_hwdep *hw, struct file *file)
{ … }
static long
line6_hwdep_read(struct snd_hwdep *hwdep, char __user *buf, long count,
loff_t *offset)
{ … }
static long
line6_hwdep_write(struct snd_hwdep *hwdep, const char __user *data, long count,
loff_t *offset)
{ … }
static __poll_t
line6_hwdep_poll(struct snd_hwdep *hwdep, struct file *file, poll_table *wait)
{ … }
static const struct snd_hwdep_ops hwdep_ops = …;
static void line6_hwdep_push_message(struct usb_line6 *line6)
{ … }
static int line6_hwdep_init(struct usb_line6 *line6)
{ … }
static int line6_init_cap_control(struct usb_line6 *line6)
{ … }
static void line6_startup_work(struct work_struct *work)
{ … }
int line6_probe(struct usb_interface *interface,
const struct usb_device_id *id,
const char *driver_name,
const struct line6_properties *properties,
int (*private_init)(struct usb_line6 *, const struct usb_device_id *id),
size_t data_size)
{ … }
EXPORT_SYMBOL_GPL(…);
void line6_disconnect(struct usb_interface *interface)
{ … }
EXPORT_SYMBOL_GPL(…);
#ifdef CONFIG_PM
int line6_suspend(struct usb_interface *interface, pm_message_t message)
{ … }
EXPORT_SYMBOL_GPL(…);
int line6_resume(struct usb_interface *interface)
{ … }
EXPORT_SYMBOL_GPL(…);
#endif
MODULE_AUTHOR(…);
MODULE_DESCRIPTION(…);
MODULE_LICENSE(…) …;