line6->message_length = done;
line6_midi_receive(line6, line6->buffer_message, done);
- switch (le16_to_cpu(line6->usbdev->descriptor.idProduct)) {
- case LINE6_DEVID_BASSPODXT:
- case LINE6_DEVID_BASSPODXTLIVE:
- case LINE6_DEVID_BASSPODXTPRO:
- case LINE6_DEVID_PODXT:
- case LINE6_DEVID_PODXTPRO:
- case LINE6_DEVID_POCKETPOD:
+ switch (line6->type) {
+ case LINE6_BASSPODXT:
+ case LINE6_BASSPODXTLIVE:
+ case LINE6_BASSPODXTPRO:
+ case LINE6_PODXT:
+ case LINE6_PODXTPRO:
+ case LINE6_POCKETPOD:
line6_pod_process_message((struct usb_line6_pod *)
line6);
break;
- case LINE6_DEVID_PODHD300:
- case LINE6_DEVID_PODHD400:
- case LINE6_DEVID_PODHD500:
+ case LINE6_PODHD300:
+ case LINE6_PODHD400:
+ case LINE6_PODHD500:
break; /* let userspace handle MIDI */
- case LINE6_DEVID_PODXTLIVE:
+ case LINE6_PODXTLIVE:
switch (line6->interface_number) {
case PODXTLIVE_INTERFACE_POD:
line6_pod_process_message((struct usb_line6_pod
}
break;
- case LINE6_DEVID_VARIAX:
+ case LINE6_VARIAX:
line6_variax_process_message((struct usb_line6_variax *)
line6);
break;
struct usb_line6 *line6;
const struct line6_properties *properties;
int interface_number, alternate = 0;
- int product;
int size = 0;
int ep_read = 0, ep_write = 0;
int ret;
/* initialize device info: */
properties = &line6_properties_table[devtype];
dev_info(&interface->dev, "Line6 %s found\n", properties->name);
- product = le16_to_cpu(usbdev->descriptor.idProduct);
/* query interface number */
interface_number = interface->cur_altsetting->desc.bInterfaceNumber;
- switch (product) {
- case LINE6_DEVID_BASSPODXTLIVE:
- case LINE6_DEVID_PODXTLIVE:
- case LINE6_DEVID_VARIAX:
+ switch (devtype) {
+ case LINE6_BASSPODXTLIVE:
+ case LINE6_PODXTLIVE:
+ case LINE6_VARIAX:
alternate = 1;
break;
- case LINE6_DEVID_POCKETPOD:
+ case LINE6_POCKETPOD:
switch (interface_number) {
case 0:
return -ENODEV; /* this interface has no endpoints */
}
break;
- case LINE6_DEVID_PODHD500:
+ case LINE6_PODHD500:
switch (interface_number) {
case 0:
alternate = 1;
}
break;
- case LINE6_DEVID_BASSPODXT:
- case LINE6_DEVID_BASSPODXTPRO:
- case LINE6_DEVID_PODXT:
- case LINE6_DEVID_PODXTPRO:
- case LINE6_DEVID_PODHD300:
- case LINE6_DEVID_PODHD400:
+ case LINE6_BASSPODXT:
+ case LINE6_BASSPODXTPRO:
+ case LINE6_PODXT:
+ case LINE6_PODXTPRO:
+ case LINE6_PODHD300:
+ case LINE6_PODHD400:
alternate = 5;
break;
- case LINE6_DEVID_GUITARPORT:
- case LINE6_DEVID_PODSTUDIO_GX:
- case LINE6_DEVID_PODSTUDIO_UX1:
- case LINE6_DEVID_TONEPORT_GX:
- case LINE6_DEVID_TONEPORT_UX1:
+ case LINE6_GUITARPORT:
+ case LINE6_PODSTUDIO_GX:
+ case LINE6_PODSTUDIO_UX1:
+ case LINE6_TONEPORT_GX:
+ case LINE6_TONEPORT_UX1:
alternate = 2; /* 1..4 seem to be ok */
break;
- case LINE6_DEVID_TONEPORT_UX2:
- case LINE6_DEVID_PODSTUDIO_UX2:
+ case LINE6_TONEPORT_UX2:
+ case LINE6_PODSTUDIO_UX2:
switch (interface_number) {
case 0:
/* defaults to 44.1kHz, 16-bit */
goto err_put;
}
- /* initialize device data based on product id: */
- switch (product) {
- case LINE6_DEVID_BASSPODXT:
- case LINE6_DEVID_BASSPODXTLIVE:
- case LINE6_DEVID_BASSPODXTPRO:
- case LINE6_DEVID_PODXT:
- case LINE6_DEVID_PODXTPRO:
+ /* initialize device data based on device: */
+ switch (devtype) {
+ case LINE6_BASSPODXT:
+ case LINE6_BASSPODXTLIVE:
+ case LINE6_BASSPODXTPRO:
+ case LINE6_PODXT:
+ case LINE6_PODXTPRO:
size = sizeof(struct usb_line6_pod);
ep_read = 0x84;
ep_write = 0x03;
break;
- case LINE6_DEVID_PODHD300:
- case LINE6_DEVID_PODHD400:
+ case LINE6_PODHD300:
+ case LINE6_PODHD400:
size = sizeof(struct usb_line6_podhd);
ep_read = 0x84;
ep_write = 0x03;
break;
- case LINE6_DEVID_PODHD500:
+ case LINE6_PODHD500:
size = sizeof(struct usb_line6_podhd);
ep_read = 0x81;
ep_write = 0x01;
break;
- case LINE6_DEVID_POCKETPOD:
+ case LINE6_POCKETPOD:
size = sizeof(struct usb_line6_pod);
ep_read = 0x82;
ep_write = 0x02;
break;
- case LINE6_DEVID_PODSTUDIO_GX:
- case LINE6_DEVID_PODSTUDIO_UX1:
- case LINE6_DEVID_PODSTUDIO_UX2:
- case LINE6_DEVID_TONEPORT_GX:
- case LINE6_DEVID_TONEPORT_UX1:
- case LINE6_DEVID_TONEPORT_UX2:
- case LINE6_DEVID_GUITARPORT:
+ case LINE6_PODSTUDIO_GX:
+ case LINE6_PODSTUDIO_UX1:
+ case LINE6_PODSTUDIO_UX2:
+ case LINE6_TONEPORT_GX:
+ case LINE6_TONEPORT_UX1:
+ case LINE6_TONEPORT_UX2:
+ case LINE6_GUITARPORT:
size = sizeof(struct usb_line6_toneport);
/* these don't have a control channel */
break;
- case LINE6_DEVID_PODXTLIVE:
+ case LINE6_PODXTLIVE:
switch (interface_number) {
case PODXTLIVE_INTERFACE_POD:
size = sizeof(struct usb_line6_pod);
}
break;
- case LINE6_DEVID_VARIAX:
+ case LINE6_VARIAX:
size = sizeof(struct usb_line6_variax);
ep_read = 0x82;
ep_write = 0x01;
line6->ifcdev = &interface->dev;
line6->ep_control_read = ep_read;
line6->ep_control_write = ep_write;
- line6->product = product;
+ line6->type = devtype;
/* get data from endpoint descriptor (see usb_maxpacket): */
{
}
}
- /* initialize device data based on product id: */
- switch (product) {
- case LINE6_DEVID_BASSPODXT:
- case LINE6_DEVID_BASSPODXTLIVE:
- case LINE6_DEVID_BASSPODXTPRO:
- case LINE6_DEVID_POCKETPOD:
- case LINE6_DEVID_PODXT:
- case LINE6_DEVID_PODXTPRO:
+ /* initialize device data based on device: */
+ switch (devtype) {
+ case LINE6_BASSPODXT:
+ case LINE6_BASSPODXTLIVE:
+ case LINE6_BASSPODXTPRO:
+ case LINE6_POCKETPOD:
+ case LINE6_PODXT:
+ case LINE6_PODXTPRO:
ret = line6_pod_init(interface, (struct usb_line6_pod *)line6);
break;
- case LINE6_DEVID_PODHD300:
- case LINE6_DEVID_PODHD400:
- case LINE6_DEVID_PODHD500:
+ case LINE6_PODHD300:
+ case LINE6_PODHD400:
+ case LINE6_PODHD500:
ret = line6_podhd_init(interface,
(struct usb_line6_podhd *)line6);
break;
- case LINE6_DEVID_PODXTLIVE:
+ case LINE6_PODXTLIVE:
switch (interface_number) {
case PODXTLIVE_INTERFACE_POD:
ret =
break;
- case LINE6_DEVID_VARIAX:
+ case LINE6_VARIAX:
ret =
line6_variax_init(interface,
(struct usb_line6_variax *)line6);
break;
- case LINE6_DEVID_PODSTUDIO_GX:
- case LINE6_DEVID_PODSTUDIO_UX1:
- case LINE6_DEVID_PODSTUDIO_UX2:
- case LINE6_DEVID_TONEPORT_GX:
- case LINE6_DEVID_TONEPORT_UX1:
- case LINE6_DEVID_TONEPORT_UX2:
- case LINE6_DEVID_GUITARPORT:
+ case LINE6_PODSTUDIO_GX:
+ case LINE6_PODSTUDIO_UX1:
+ case LINE6_PODSTUDIO_UX2:
+ case LINE6_TONEPORT_GX:
+ case LINE6_TONEPORT_UX1:
+ case LINE6_TONEPORT_UX2:
+ case LINE6_GUITARPORT:
ret =
line6_toneport_init(interface,
(struct usb_line6_toneport *)line6);
dev_err(line6->ifcdev,
"driver bug: inconsistent usb device\n");
- switch (le16_to_cpu(line6->usbdev->descriptor.idProduct)) {
- case LINE6_DEVID_BASSPODXT:
- case LINE6_DEVID_BASSPODXTLIVE:
- case LINE6_DEVID_BASSPODXTPRO:
- case LINE6_DEVID_POCKETPOD:
- case LINE6_DEVID_PODXT:
- case LINE6_DEVID_PODXTPRO:
+ switch (line6->type) {
+ case LINE6_BASSPODXT:
+ case LINE6_BASSPODXTLIVE:
+ case LINE6_BASSPODXTPRO:
+ case LINE6_POCKETPOD:
+ case LINE6_PODXT:
+ case LINE6_PODXTPRO:
line6_pod_disconnect(interface);
break;
- case LINE6_DEVID_PODHD300:
- case LINE6_DEVID_PODHD400:
- case LINE6_DEVID_PODHD500:
+ case LINE6_PODHD300:
+ case LINE6_PODHD400:
+ case LINE6_PODHD500:
line6_podhd_disconnect(interface);
break;
- case LINE6_DEVID_PODXTLIVE:
+ case LINE6_PODXTLIVE:
switch (interface_number) {
case PODXTLIVE_INTERFACE_POD:
line6_pod_disconnect(interface);
break;
- case LINE6_DEVID_VARIAX:
+ case LINE6_VARIAX:
line6_variax_disconnect(interface);
break;
- case LINE6_DEVID_PODSTUDIO_GX:
- case LINE6_DEVID_PODSTUDIO_UX1:
- case LINE6_DEVID_PODSTUDIO_UX2:
- case LINE6_DEVID_TONEPORT_GX:
- case LINE6_DEVID_TONEPORT_UX1:
- case LINE6_DEVID_TONEPORT_UX2:
- case LINE6_DEVID_GUITARPORT:
+ case LINE6_PODSTUDIO_GX:
+ case LINE6_PODSTUDIO_UX1:
+ case LINE6_PODSTUDIO_UX2:
+ case LINE6_TONEPORT_GX:
+ case LINE6_TONEPORT_UX1:
+ case LINE6_TONEPORT_UX2:
+ case LINE6_GUITARPORT:
line6_toneport_disconnect(interface);
break;
{
struct usb_line6 *line6 = usb_get_intfdata(interface);
- switch (le16_to_cpu(line6->usbdev->descriptor.idProduct)) {
- case LINE6_DEVID_PODSTUDIO_GX:
- case LINE6_DEVID_PODSTUDIO_UX1:
- case LINE6_DEVID_PODSTUDIO_UX2:
- case LINE6_DEVID_TONEPORT_GX:
- case LINE6_DEVID_TONEPORT_UX1:
- case LINE6_DEVID_TONEPORT_UX2:
- case LINE6_DEVID_GUITARPORT:
+ switch (line6->type) {
+ case LINE6_PODSTUDIO_GX:
+ case LINE6_PODSTUDIO_UX1:
+ case LINE6_PODSTUDIO_UX2:
+ case LINE6_TONEPORT_GX:
+ case LINE6_TONEPORT_UX1:
+ case LINE6_TONEPORT_UX2:
+ case LINE6_GUITARPORT:
line6_toneport_reset_resume((struct usb_line6_toneport *)line6);
+
+ default:
+ break;
}
return line6_resume(interface);
{"Inst & Mic", 0x0901}
};
-static bool toneport_has_led(short product)
+static bool toneport_has_led(enum line6_device_type type)
{
return
- (product == LINE6_DEVID_GUITARPORT) ||
- (product == LINE6_DEVID_TONEPORT_GX);
+ (type == LINE6_GUITARPORT) ||
+ (type == LINE6_TONEPORT_GX);
/* add your device here if you are missing support for the LEDs */
}
int ticks;
struct usb_line6 *line6 = &toneport->line6;
struct usb_device *usbdev = line6->usbdev;
- u16 idProduct = le16_to_cpu(usbdev->descriptor.idProduct);
/* sync time on device with host: */
ticks = (int)get_seconds();
toneport_send_cmd(usbdev, 0x0301, 0x0000);
/* initialize source select: */
- switch (le16_to_cpu(usbdev->descriptor.idProduct)) {
- case LINE6_DEVID_TONEPORT_UX1:
- case LINE6_DEVID_TONEPORT_UX2:
- case LINE6_DEVID_PODSTUDIO_UX1:
- case LINE6_DEVID_PODSTUDIO_UX2:
+ switch (line6->type) {
+ case LINE6_TONEPORT_UX1:
+ case LINE6_TONEPORT_UX2:
+ case LINE6_PODSTUDIO_UX1:
+ case LINE6_PODSTUDIO_UX2:
toneport_send_cmd(usbdev,
toneport_source_info[toneport->source].code,
0x0000);
+ default:
+ break;
}
- if (toneport_has_led(idProduct))
+ if (toneport_has_led(line6->type))
toneport_update_led(&usbdev->dev);
}
{
int err;
struct usb_line6 *line6 = &toneport->line6;
- struct usb_device *usbdev = line6->usbdev;
- u16 idProduct = le16_to_cpu(usbdev->descriptor.idProduct);
if ((interface == NULL) || (toneport == NULL))
return -ENODEV;
return err;
/* register source select control: */
- switch (le16_to_cpu(usbdev->descriptor.idProduct)) {
- case LINE6_DEVID_TONEPORT_UX1:
- case LINE6_DEVID_TONEPORT_UX2:
- case LINE6_DEVID_PODSTUDIO_UX1:
- case LINE6_DEVID_PODSTUDIO_UX2:
+ switch (line6->type) {
+ case LINE6_TONEPORT_UX1:
+ case LINE6_TONEPORT_UX2:
+ case LINE6_PODSTUDIO_UX1:
+ case LINE6_PODSTUDIO_UX2:
err =
snd_ctl_add(line6->card,
snd_ctl_new1(&toneport_control_source,
line6->line6pcm));
if (err < 0)
return err;
+
+ default:
+ break;
}
/* register audio system: */
line6_read_serial_number(line6, &toneport->serial_number);
line6_read_data(line6, 0x80c2, &toneport->firmware_version, 1);
- if (toneport_has_led(idProduct)) {
+ if (toneport_has_led(line6->type)) {
CHECK_RETURN(device_create_file
(&interface->dev, &dev_attr_led_red));
CHECK_RETURN(device_create_file
{
struct usb_line6_toneport *toneport;
struct snd_line6_pcm *line6pcm;
- u16 idProduct;
if (interface == NULL)
return;
return;
del_timer_sync(&toneport->timer);
- idProduct = le16_to_cpu(toneport->line6.usbdev->descriptor.idProduct);
- if (toneport_has_led(idProduct)) {
+ if (toneport_has_led(toneport->line6.type)) {
device_remove_file(&interface->dev, &dev_attr_led_red);
device_remove_file(&interface->dev, &dev_attr_led_green);
}