Hi, would you please give this a try an your us122s? I integrated Martins stuff into mine. us428 still works here. besides patching you'll need to copy the attached header into alsa-driver/usb/us428. you'll probaply also still need Martin's patched usx2yloader & infrastructure files.
Gruesse, Karsten
#ifndef USBUSX2Y_H
#define USBUSX2Y_H
#include <linux/usb.h>
#include "../../alsa-kernel/usb/usbaudio.h"
#include "usbus428ctldefs.h"
#define NRURBS 2 /* */
#define NRPACKS 1 /* usb-frames/ms per urb */
#ifndef LINUX_2_2
typedef struct urb urb_t;
typedef struct urb* purb_t;
#endif
#define URBS_AsyncSeq 10
#define URB_DataLen_AsyncSeq 32
typedef struct {
urb_t* urb[URBS_AsyncSeq];
char* buffer;
} snd_usX2Y_AsyncSeq_t;
typedef struct {
int submitted;
int len;
urb_t* urb[0];
} snd_usX2Y_urbSeq_t;
typedef struct {
snd_usb_audio_t chip;
int stride;
purb_t In04urb;
void* In04Buf;
char In04Last[24];
unsigned In04IntCalls;
snd_usX2Y_urbSeq_t* US04;
int Seq04;
int Seq04Complete;
wait_queue_head_t In04WaitQueue;
snd_usX2Y_AsyncSeq_t AS04;
unsigned int rate,
format;
int refframes;
purb_t play_urb_waiting[2];
int pipe0Aframes[NRURBS][NRPACKS];
snd_hwdep_t* hwdep;
int chip_status;
struct semaphore open_mutex;
us428ctls_sharedmem_t* us428ctls_sharedmem;
wait_queue_head_t us428ctls_wait_queue_head;
} usX2Ydev_t;
#define usX2Y(c) ((usX2Ydev_t*)(c)->private_data)
int snd_usX2Y_audio_create(snd_card_t* card);
#ifndef OLD_USB
void snd_usX2Y_Out04Int(urb_t* urb, struct pt_regs *regs);
void snd_usX2Y_In04Int(urb_t* urb, struct pt_regs *regs);
#else
void snd_usX2Y_Out04Int(urb_t* urb);
void snd_usX2Y_In04Int(urb_t* urb);
#endif
#ifndef CONFIG_SND_DEBUG
#define snd_usX2Y_Out04Int 0
#endif
#define NAME_ALLCAPS "US-X2Y"
#endif
snd-usb-us428+us122.patch.tar.bz2
Description: application/tbz
