Skip to content

Commit

Permalink
Staging: add line6 usb driver
Browse files Browse the repository at this point in the history
This is an experimental Linux driver for the guitar amp, cab, and
effects modeller PODxt Pro by Line6 (and similar devices), supporting
the following features:

  - Reading/writing individual parameters
  - Reading/writing complete channel, effects setup, and amp setup data
  - Channel switching
  - Virtual MIDI interface
  - Tuner access
  - Playback/capture/mixer device for any  ALSA-compatible PCM audio
    application
  - Signal routing (record clean/processed  guitar signal, re-amping)

Moreover, preliminary support for the Variax Workbench is included.

From: Markus Grabner <grabner@icg.tugraz.at>
Cc: Mariusz Kozlowski <m.kozlowski@tuxland.pl>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Markus Grabner authored and Greg Kroah-Hartman committed Apr 3, 2009
1 parent e642f09 commit 705ecec
Show file tree
Hide file tree
Showing 29 changed files with 6,962 additions and 0 deletions.
20 changes: 20 additions & 0 deletions drivers/staging/line6/Kconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
config LINE6_USB
tristate "Line6 USB support"
depends on USB
help
This is a driver for the guitar amp, cab, and effects modeller
PODxt Pro by Line6 (and similar devices), supporting the
following features:
* Reading/writing individual parameters
* Reading/writing complete channel, effects setup, and amp
setup data
* Channel switching
* Virtual MIDI interface
* Tuner access
* Playback/capture/mixer device for any ALSA-compatible PCM
audio application
* Signal routing (record clean/processed guitar signal,
re-amping)

Preliminary support for the Variax Workbench is included.

15 changes: 15 additions & 0 deletions drivers/staging/line6/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
obj-$(CONFIG_LINE6_USB) += line6usb.o

line6usb-objs := \
audio.o \
capture.o \
control.o \
driver.o \
dumprequest.o \
midi.o \
midibuf.o \
pcm.o \
playback.o \
pod.o \
toneport.o \
variax.o
69 changes: 69 additions & 0 deletions drivers/staging/line6/audio.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
/*
* Line6 Linux USB driver - 0.8.0
*
* Copyright (C) 2004-2009 Markus Grabner (grabner@icg.tugraz.at)
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, version 2.
*
*/

#include "driver.h"

#include <sound/core.h>
#include <sound/initval.h>


static int line6_index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX;
static char *line6_id[SNDRV_CARDS] = SNDRV_DEFAULT_STR;


/*
Initialize the Line6 USB audio system.
*/
int line6_init_audio(struct usb_line6 *line6)
{
static int dev = 0;
struct snd_card *card;

card = snd_card_new(line6_index[dev], line6_id[dev], THIS_MODULE, 0);

if(card == NULL)
return -ENOMEM;

line6->card = card;

strcpy(card->driver, DRIVER_NAME);
strcpy(card->shortname, "Line6-USB");
sprintf(card->longname, "Line6 %s at USB %s", line6->properties->name, line6->ifcdev->bus_id); /* 80 chars - see asound.h */
return 0;
}

/*
Register the Line6 USB audio system.
*/
int line6_register_audio(struct usb_line6 *line6)
{
int err;

if((err = snd_card_register(line6->card)) < 0)
return err;

return 0;
}

/*
Cleanup the Line6 USB audio system.
*/
void line6_cleanup_audio(struct usb_line6 *line6)
{
struct snd_card *card = line6->card;

if(card == 0)
return;

snd_card_disconnect(card);
snd_card_free(card);
line6->card = 0;
}
24 changes: 24 additions & 0 deletions drivers/staging/line6/audio.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
/*
* Line6 Linux USB driver - 0.8.0
*
* Copyright (C) 2004-2009 Markus Grabner (grabner@icg.tugraz.at)
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License as
* published by the Free Software Foundation, version 2.
*
*/

#ifndef AUDIO_H
#define AUDIO_H


#include "driver.h"


extern void line6_cleanup_audio(struct usb_line6 *);
extern int line6_init_audio(struct usb_line6 *);
extern int line6_register_audio(struct usb_line6 *);


#endif
Loading

0 comments on commit 705ecec

Please sign in to comment.