Logo Search packages:      
Sourcecode: alsa-driver version File versions  Download package

usbusx2y.h

#ifndef USBUSX2Y_H
#define USBUSX2Y_H
#include "../usbaudio.h"
#include "usbus428ctldefs.h" 

#define NRURBS            2   


#define URBS_AsyncSeq 10
#define URB_DataLen_AsyncSeq 32
typedef struct {
      struct urb* urb[URBS_AsyncSeq];
      char*   buffer;
} snd_usX2Y_AsyncSeq_t;

typedef struct {
      int   submitted;
      int   len;
      struct urb* urb[0];
} snd_usX2Y_urbSeq_t;

typedef struct snd_usX2Y_substream snd_usX2Y_substream_t;
#include "usx2yhwdeppcm.h"

typedef struct {
      snd_usb_audio_t   chip;
      int               stride;
      struct urb        *In04urb;
      void              *In04Buf;
      char              In04Last[24];
      unsigned          In04IntCalls;
      snd_usX2Y_urbSeq_t      *US04;
      wait_queue_head_t In04WaitQueue;
      snd_usX2Y_AsyncSeq_t    AS04;
      unsigned int            rate,
                        format;
      int               chip_status;
      struct semaphore  prepare_mutex;
      us428ctls_sharedmem_t   *us428ctls_sharedmem;
      int               wait_iso_frame;
      wait_queue_head_t us428ctls_wait_queue_head;
      snd_usX2Y_hwdep_pcm_shm_t     *hwdep_pcm_shm;
      snd_usX2Y_substream_t   *subs[4];
      snd_usX2Y_substream_t   * volatile  prepare_subs;
      wait_queue_head_t prepare_wait_queue;
} usX2Ydev_t;


struct snd_usX2Y_substream {
      usX2Ydev_t  *usX2Y;
      snd_pcm_substream_t *pcm_substream;

      int               endpoint;         
      unsigned int            maxpacksize;            /* max packet size in bytes */

      atomic_t          state;
#define state_STOPPED   0
#define state_STARTING1 1
#define state_STARTING2 2
#define state_STARTING3 3
#define state_PREPARED  4
#define state_PRERUNNING  6
#define state_RUNNING   8

      int               hwptr;                  /* free frame position in the buffer (only for playback) */
      int               hwptr_done;       /* processed frame position in the buffer */
      int               transfer_done;          /* processed frames since last period update */

      struct urb        *urb[NRURBS];     /* data urb table */
      struct urb        *completed_urb;
      char              *tmpbuf;                /* temporary buffer for playback */
};


#define usX2Y(c) ((usX2Ydev_t*)(c)->private_data)

int usX2Y_audio_create(snd_card_t* card);

int usX2Y_AsyncSeq04_init(usX2Ydev_t* usX2Y);
int usX2Y_In04_init(usX2Ydev_t* usX2Y);

#define NAME_ALLCAPS "US-X2Y"

#endif

Generated by  Doxygen 1.6.0   Back to index