Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7ad07310 authored by Chris Rorvick's avatar Chris Rorvick Committed by Takashi Iwai
Browse files

staging: line6: Split out PODxt Live interfaces



The PODxt Live device has both a POD and a Variax interface.  Add device
type entries for each of these.

Signed-off-by: default avatarChris Rorvick <chris@rorvick.com>
Reviewed-by: default avatarStefan Hajnoczi <stefanha@gmail.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 7b3e4d47
Loading
Loading
Loading
Loading
+44 −68
Original line number Diff line number Diff line
@@ -31,6 +31,7 @@
#define DRIVER_VERSION "0.9.1beta" DRIVER_REVISION

#define LINE6_DEVICE(prod) USB_DEVICE(0x0e41, prod)
#define LINE6_IF_NUM(prod, n) USB_DEVICE_INTERFACE_NUMBER(0x0e41, prod, n)

/* table of devices that work with this driver */
static const struct usb_device_id line6_id_table[] = {
@@ -46,7 +47,8 @@ static const struct usb_device_id line6_id_table[] = {
	{ LINE6_DEVICE(0x4150),    .driver_info = LINE6_PODSTUDIO_UX1 },
	{ LINE6_DEVICE(0x4151),    .driver_info = LINE6_PODSTUDIO_UX2 },
	{ LINE6_DEVICE(0x5044),    .driver_info = LINE6_PODXT },
	{ LINE6_DEVICE(0x4650),    .driver_info = LINE6_PODXTLIVE },
	{ LINE6_IF_NUM(0x4650, 0), .driver_info = LINE6_PODXTLIVE_POD },
	{ LINE6_IF_NUM(0x4650, 1), .driver_info = LINE6_PODXTLIVE_VARIAX },
	{ LINE6_DEVICE(0x5050),    .driver_info = LINE6_PODXTPRO },
	{ LINE6_DEVICE(0x4147),    .driver_info = LINE6_TONEPORT_GX },
	{ LINE6_DEVICE(0x4141),    .driver_info = LINE6_TONEPORT_UX1 },
@@ -132,7 +134,14 @@ static const struct line6_properties line6_properties_table[] = {
				| LINE6_CAP_PCM
				| LINE6_CAP_HWMON,
	},
	[LINE6_PODXTLIVE] = {
	[LINE6_PODXTLIVE_POD] = {
		.id = "PODxtLive",
		.name = "PODxt Live",
		.capabilities	= LINE6_CAP_CONTROL
				| LINE6_CAP_PCM
				| LINE6_CAP_HWMON,
	},
	[LINE6_PODXTLIVE_VARIAX] = {
		.id = "PODxtLive",
		.name = "PODxt Live",
		.capabilities	= LINE6_CAP_CONTROL
@@ -445,26 +454,17 @@ static void line6_data_received(struct urb *urb)
		case LINE6_PODHD500:
			break; /* let userspace handle MIDI */

		case LINE6_PODXTLIVE:
			switch (line6->interface_number) {
			case PODXTLIVE_INTERFACE_POD:
		case LINE6_PODXTLIVE_POD:
			line6_pod_process_message((struct usb_line6_pod
							   *)line6);
			break;

			case PODXTLIVE_INTERFACE_VARIAX:
		case LINE6_PODXTLIVE_VARIAX:
			line6_variax_process_message((struct
						      usb_line6_variax
						      *)line6);
			break;

			default:
				dev_err(line6->ifcdev,
					"PODxt Live interface %d not supported\n",
					line6->interface_number);
			}
			break;

		case LINE6_VARIAX:
			line6_variax_process_message((struct usb_line6_variax *)
						     line6);
@@ -722,7 +722,8 @@ static int line6_probe(struct usb_interface *interface,

	switch (devtype) {
	case LINE6_BASSPODXTLIVE:
	case LINE6_PODXTLIVE:
	case LINE6_PODXTLIVE_POD:
	case LINE6_PODXTLIVE_VARIAX:
	case LINE6_VARIAX:
		alternate = 1;
		break;
@@ -841,26 +842,18 @@ static int line6_probe(struct usb_interface *interface,
		/* these don't have a control channel */
		break;

	case LINE6_PODXTLIVE:
		switch (interface_number) {
		case PODXTLIVE_INTERFACE_POD:
	case LINE6_PODXTLIVE_POD:
		size = sizeof(struct usb_line6_pod);
		ep_read = 0x84;
		ep_write = 0x03;
		break;

		case PODXTLIVE_INTERFACE_VARIAX:
	case LINE6_PODXTLIVE_VARIAX:
		size = sizeof(struct usb_line6_variax);
		ep_read = 0x86;
		ep_write = 0x05;
		break;

		default:
			ret = -ENODEV;
			goto err_put;
		}
		break;

	case LINE6_VARIAX:
		size = sizeof(struct usb_line6_variax);
		ep_read = 0x82;
@@ -887,7 +880,6 @@ static int line6_probe(struct usb_interface *interface,
	}

	/* store basic data: */
	line6->interface_number = interface_number;
	line6->properties = properties;
	line6->usbdev = usbdev;
	line6->ifcdev = &interface->dev;
@@ -967,29 +959,18 @@ static int line6_probe(struct usb_interface *interface,
				       (struct usb_line6_podhd *)line6);
		break;

	case LINE6_PODXTLIVE:
		switch (interface_number) {
		case PODXTLIVE_INTERFACE_POD:
	case LINE6_PODXTLIVE_POD:
		ret =
		    line6_pod_init(interface,
				   (struct usb_line6_pod *)line6);
		break;

		case PODXTLIVE_INTERFACE_VARIAX:
	case LINE6_PODXTLIVE_VARIAX:
		ret =
		    line6_variax_init(interface,
				      (struct usb_line6_variax *)line6);
		break;

		default:
			dev_err(&interface->dev,
				"PODxt Live interface %d not supported\n",
				interface_number);
			ret = -ENODEV;
		}

		break;

	case LINE6_VARIAX:
		ret =
		    line6_variax_init(interface,
@@ -1084,18 +1065,13 @@ static void line6_disconnect(struct usb_interface *interface)
			line6_podhd_disconnect(interface);
			break;

		case LINE6_PODXTLIVE:
			switch (interface_number) {
			case PODXTLIVE_INTERFACE_POD:
		case LINE6_PODXTLIVE_POD:
			line6_pod_disconnect(interface);
			break;

			case PODXTLIVE_INTERFACE_VARIAX:
		case LINE6_PODXTLIVE_VARIAX:
			line6_variax_disconnect(interface);
			break;
			}

			break;

		case LINE6_VARIAX:
			line6_variax_disconnect(interface);
+2 −6
Original line number Diff line number Diff line
@@ -33,7 +33,8 @@ enum line6_device_type {
	LINE6_PODSTUDIO_UX1,
	LINE6_PODSTUDIO_UX2,
	LINE6_PODXT,
	LINE6_PODXTLIVE,
	LINE6_PODXTLIVE_POD,
	LINE6_PODXTLIVE_VARIAX,
	LINE6_PODXTPRO,
	LINE6_TONEPORT_GX,
	LINE6_TONEPORT_UX1,
@@ -135,11 +136,6 @@ struct usb_line6 {
	*/
	const struct line6_properties *properties;

	/**
		 Interface number.
	*/
	int interface_number;

	/**
		 Interval (ms).
	*/
+2 −1
Original line number Diff line number Diff line
@@ -433,7 +433,8 @@ int line6_init_pcm(struct usb_line6 *line6,
	case LINE6_BASSPODXTLIVE:
	case LINE6_BASSPODXTPRO:
	case LINE6_PODXT:
	case LINE6_PODXTLIVE:
	case LINE6_PODXTLIVE_POD:
	case LINE6_PODXTLIVE_VARIAX:
	case LINE6_PODXTPRO:
	case LINE6_PODHD300:
	case LINE6_PODHD400:
+0 −6
Original line number Diff line number Diff line
@@ -20,12 +20,6 @@

#include "driver.h"

/*
	PODxt Live interfaces
*/
#define PODXTLIVE_INTERFACE_POD    0
#define PODXTLIVE_INTERFACE_VARIAX 1

/*
	Locate name in binary program dump
*/