diff options
author | Linus Torvalds <torvalds@g5.osdl.org> | 2006-01-04 19:38:36 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@g5.osdl.org> | 2006-01-04 19:38:36 -0500 |
commit | 4da5cc2cec8caec1d357053e85a7a32f243f93a1 (patch) | |
tree | 3f8b603af4af88f86be7ec1d4e3639a7fc9dd1a6 /sound/usb/usbaudio.c | |
parent | 25c862cc9ea9b312c25a9f577f91b973131f1261 (diff) | |
parent | c6f43290ae687c11cdcd150d8bfeb57ec29cfa5b (diff) |
Merge git://git.kernel.org/pub/scm/linux/kernel/git/perex/alsa
Diffstat (limited to 'sound/usb/usbaudio.c')
-rw-r--r-- | sound/usb/usbaudio.c | 374 |
1 files changed, 186 insertions, 188 deletions
diff --git a/sound/usb/usbaudio.c b/sound/usb/usbaudio.c index 22f8bb612bff..a1bd8040dea4 100644 --- a/sound/usb/usbaudio.c +++ b/sound/usb/usbaudio.c | |||
@@ -102,10 +102,6 @@ MODULE_PARM_DESC(async_unlink, "Use async unlink mode."); | |||
102 | #define SYNC_URBS 4 /* always four urbs for sync */ | 102 | #define SYNC_URBS 4 /* always four urbs for sync */ |
103 | #define MIN_PACKS_URB 1 /* minimum 1 packet per urb */ | 103 | #define MIN_PACKS_URB 1 /* minimum 1 packet per urb */ |
104 | 104 | ||
105 | typedef struct snd_usb_substream snd_usb_substream_t; | ||
106 | typedef struct snd_usb_stream snd_usb_stream_t; | ||
107 | typedef struct snd_urb_ctx snd_urb_ctx_t; | ||
108 | |||
109 | struct audioformat { | 105 | struct audioformat { |
110 | struct list_head list; | 106 | struct list_head list; |
111 | snd_pcm_format_t format; /* format type */ | 107 | snd_pcm_format_t format; /* format type */ |
@@ -125,25 +121,27 @@ struct audioformat { | |||
125 | unsigned int *rate_table; /* rate table */ | 121 | unsigned int *rate_table; /* rate table */ |
126 | }; | 122 | }; |
127 | 123 | ||
124 | struct snd_usb_substream; | ||
125 | |||
128 | struct snd_urb_ctx { | 126 | struct snd_urb_ctx { |
129 | struct urb *urb; | 127 | struct urb *urb; |
130 | unsigned int buffer_size; /* size of data buffer, if data URB */ | 128 | unsigned int buffer_size; /* size of data buffer, if data URB */ |
131 | snd_usb_substream_t *subs; | 129 | struct snd_usb_substream *subs; |
132 | int index; /* index for urb array */ | 130 | int index; /* index for urb array */ |
133 | int packets; /* number of packets per urb */ | 131 | int packets; /* number of packets per urb */ |
134 | }; | 132 | }; |
135 | 133 | ||
136 | struct snd_urb_ops { | 134 | struct snd_urb_ops { |
137 | int (*prepare)(snd_usb_substream_t *subs, snd_pcm_runtime_t *runtime, struct urb *u); | 135 | int (*prepare)(struct snd_usb_substream *subs, struct snd_pcm_runtime *runtime, struct urb *u); |
138 | int (*retire)(snd_usb_substream_t *subs, snd_pcm_runtime_t *runtime, struct urb *u); | 136 | int (*retire)(struct snd_usb_substream *subs, struct snd_pcm_runtime *runtime, struct urb *u); |
139 | int (*prepare_sync)(snd_usb_substream_t *subs, snd_pcm_runtime_t *runtime, struct urb *u); | 137 | int (*prepare_sync)(struct snd_usb_substream *subs, struct snd_pcm_runtime *runtime, struct urb *u); |
140 | int (*retire_sync)(snd_usb_substream_t *subs, snd_pcm_runtime_t *runtime, struct urb *u); | 138 | int (*retire_sync)(struct snd_usb_substream *subs, struct snd_pcm_runtime *runtime, struct urb *u); |
141 | }; | 139 | }; |
142 | 140 | ||
143 | struct snd_usb_substream { | 141 | struct snd_usb_substream { |
144 | snd_usb_stream_t *stream; | 142 | struct snd_usb_stream *stream; |
145 | struct usb_device *dev; | 143 | struct usb_device *dev; |
146 | snd_pcm_substream_t *pcm_substream; | 144 | struct snd_pcm_substream *pcm_substream; |
147 | int direction; /* playback or capture */ | 145 | int direction; /* playback or capture */ |
148 | int interface; /* current interface */ | 146 | int interface; /* current interface */ |
149 | int endpoint; /* assigned endpoint */ | 147 | int endpoint; /* assigned endpoint */ |
@@ -175,8 +173,8 @@ struct snd_usb_substream { | |||
175 | unsigned long unlink_mask; /* bitmask of unlinked urbs */ | 173 | unsigned long unlink_mask; /* bitmask of unlinked urbs */ |
176 | 174 | ||
177 | unsigned int nurbs; /* # urbs */ | 175 | unsigned int nurbs; /* # urbs */ |
178 | snd_urb_ctx_t dataurb[MAX_URBS]; /* data urb table */ | 176 | struct snd_urb_ctx dataurb[MAX_URBS]; /* data urb table */ |
179 | snd_urb_ctx_t syncurb[SYNC_URBS]; /* sync urb table */ | 177 | struct snd_urb_ctx syncurb[SYNC_URBS]; /* sync urb table */ |
180 | char *syncbuf; /* sync buffer for all sync URBs */ | 178 | char *syncbuf; /* sync buffer for all sync URBs */ |
181 | dma_addr_t sync_dma; /* DMA address of syncbuf */ | 179 | dma_addr_t sync_dma; /* DMA address of syncbuf */ |
182 | 180 | ||
@@ -190,11 +188,11 @@ struct snd_usb_substream { | |||
190 | 188 | ||
191 | 189 | ||
192 | struct snd_usb_stream { | 190 | struct snd_usb_stream { |
193 | snd_usb_audio_t *chip; | 191 | struct snd_usb_audio *chip; |
194 | snd_pcm_t *pcm; | 192 | struct snd_pcm *pcm; |
195 | int pcm_index; | 193 | int pcm_index; |
196 | unsigned int fmt_type; /* USB audio format type (1-3) */ | 194 | unsigned int fmt_type; /* USB audio format type (1-3) */ |
197 | snd_usb_substream_t substream[2]; | 195 | struct snd_usb_substream substream[2]; |
198 | struct list_head list; | 196 | struct list_head list; |
199 | }; | 197 | }; |
200 | 198 | ||
@@ -205,7 +203,7 @@ struct snd_usb_stream { | |||
205 | */ | 203 | */ |
206 | 204 | ||
207 | static DECLARE_MUTEX(register_mutex); | 205 | static DECLARE_MUTEX(register_mutex); |
208 | static snd_usb_audio_t *usb_chip[SNDRV_CARDS]; | 206 | static struct snd_usb_audio *usb_chip[SNDRV_CARDS]; |
209 | 207 | ||
210 | 208 | ||
211 | /* | 209 | /* |
@@ -245,12 +243,12 @@ static inline unsigned get_high_speed_hz(unsigned int usb_rate) | |||
245 | * fill the length and offset of each urb descriptor. | 243 | * fill the length and offset of each urb descriptor. |
246 | * the fixed 10.14 frequency is passed through the pipe. | 244 | * the fixed 10.14 frequency is passed through the pipe. |
247 | */ | 245 | */ |
248 | static int prepare_capture_sync_urb(snd_usb_substream_t *subs, | 246 | static int prepare_capture_sync_urb(struct snd_usb_substream *subs, |
249 | snd_pcm_runtime_t *runtime, | 247 | struct snd_pcm_runtime *runtime, |
250 | struct urb *urb) | 248 | struct urb *urb) |
251 | { | 249 | { |
252 | unsigned char *cp = urb->transfer_buffer; | 250 | unsigned char *cp = urb->transfer_buffer; |
253 | snd_urb_ctx_t *ctx = (snd_urb_ctx_t *)urb->context; | 251 | struct snd_urb_ctx *ctx = (struct snd_urb_ctx *)urb->context; |
254 | 252 | ||
255 | urb->dev = ctx->subs->dev; /* we need to set this at each time */ | 253 | urb->dev = ctx->subs->dev; /* we need to set this at each time */ |
256 | urb->iso_frame_desc[0].length = 3; | 254 | urb->iso_frame_desc[0].length = 3; |
@@ -267,12 +265,12 @@ static int prepare_capture_sync_urb(snd_usb_substream_t *subs, | |||
267 | * fill the length and offset of each urb descriptor. | 265 | * fill the length and offset of each urb descriptor. |
268 | * the fixed 12.13 frequency is passed as 16.16 through the pipe. | 266 | * the fixed 12.13 frequency is passed as 16.16 through the pipe. |
269 | */ | 267 | */ |
270 | static int prepare_capture_sync_urb_hs(snd_usb_substream_t *subs, | 268 | static int prepare_capture_sync_urb_hs(struct snd_usb_substream *subs, |
271 | snd_pcm_runtime_t *runtime, | 269 | struct snd_pcm_runtime *runtime, |
272 | struct urb *urb) | 270 | struct urb *urb) |
273 | { | 271 | { |
274 | unsigned char *cp = urb->transfer_buffer; | 272 | unsigned char *cp = urb->transfer_buffer; |
275 | snd_urb_ctx_t *ctx = (snd_urb_ctx_t *)urb->context; | 273 | struct snd_urb_ctx *ctx = (struct snd_urb_ctx *)urb->context; |
276 | 274 | ||
277 | urb->dev = ctx->subs->dev; /* we need to set this at each time */ | 275 | urb->dev = ctx->subs->dev; /* we need to set this at each time */ |
278 | urb->iso_frame_desc[0].length = 4; | 276 | urb->iso_frame_desc[0].length = 4; |
@@ -288,8 +286,8 @@ static int prepare_capture_sync_urb_hs(snd_usb_substream_t *subs, | |||
288 | * process after capture sync complete | 286 | * process after capture sync complete |
289 | * - nothing to do | 287 | * - nothing to do |
290 | */ | 288 | */ |
291 | static int retire_capture_sync_urb(snd_usb_substream_t *subs, | 289 | static int retire_capture_sync_urb(struct snd_usb_substream *subs, |
292 | snd_pcm_runtime_t *runtime, | 290 | struct snd_pcm_runtime *runtime, |
293 | struct urb *urb) | 291 | struct urb *urb) |
294 | { | 292 | { |
295 | return 0; | 293 | return 0; |
@@ -305,12 +303,12 @@ static int retire_capture_sync_urb(snd_usb_substream_t *subs, | |||
305 | * write onto the pcm buffer directly... the data is thus copied | 303 | * write onto the pcm buffer directly... the data is thus copied |
306 | * later at complete callback to the global buffer. | 304 | * later at complete callback to the global buffer. |
307 | */ | 305 | */ |
308 | static int prepare_capture_urb(snd_usb_substream_t *subs, | 306 | static int prepare_capture_urb(struct snd_usb_substream *subs, |
309 | snd_pcm_runtime_t *runtime, | 307 | struct snd_pcm_runtime *runtime, |
310 | struct urb *urb) | 308 | struct urb *urb) |
311 | { | 309 | { |
312 | int i, offs; | 310 | int i, offs; |
313 | snd_urb_ctx_t *ctx = (snd_urb_ctx_t *)urb->context; | 311 | struct snd_urb_ctx *ctx = (struct snd_urb_ctx *)urb->context; |
314 | 312 | ||
315 | offs = 0; | 313 | offs = 0; |
316 | urb->dev = ctx->subs->dev; /* we need to set this at each time */ | 314 | urb->dev = ctx->subs->dev; /* we need to set this at each time */ |
@@ -340,8 +338,8 @@ static int prepare_capture_urb(snd_usb_substream_t *subs, | |||
340 | * copy the data from each desctiptor to the pcm buffer, and | 338 | * copy the data from each desctiptor to the pcm buffer, and |
341 | * update the current position. | 339 | * update the current position. |
342 | */ | 340 | */ |
343 | static int retire_capture_urb(snd_usb_substream_t *subs, | 341 | static int retire_capture_urb(struct snd_usb_substream *subs, |
344 | snd_pcm_runtime_t *runtime, | 342 | struct snd_pcm_runtime *runtime, |
345 | struct urb *urb) | 343 | struct urb *urb) |
346 | { | 344 | { |
347 | unsigned long flags; | 345 | unsigned long flags; |
@@ -395,11 +393,11 @@ static int retire_capture_urb(snd_usb_substream_t *subs, | |||
395 | * set up the offset and length to receive the current frequency. | 393 | * set up the offset and length to receive the current frequency. |
396 | */ | 394 | */ |
397 | 395 | ||
398 | static int prepare_playback_sync_urb(snd_usb_substream_t *subs, | 396 | static int prepare_playback_sync_urb(struct snd_usb_substream *subs, |
399 | snd_pcm_runtime_t *runtime, | 397 | struct snd_pcm_runtime *runtime, |
400 | struct urb *urb) | 398 | struct urb *urb) |
401 | { | 399 | { |
402 | snd_urb_ctx_t *ctx = (snd_urb_ctx_t *)urb->context; | 400 | struct snd_urb_ctx *ctx = (struct snd_urb_ctx *)urb->context; |
403 | 401 | ||
404 | urb->dev = ctx->subs->dev; /* we need to set this at each time */ | 402 | urb->dev = ctx->subs->dev; /* we need to set this at each time */ |
405 | urb->iso_frame_desc[0].length = 3; | 403 | urb->iso_frame_desc[0].length = 3; |
@@ -413,11 +411,11 @@ static int prepare_playback_sync_urb(snd_usb_substream_t *subs, | |||
413 | * set up the offset and length to receive the current frequency. | 411 | * set up the offset and length to receive the current frequency. |
414 | */ | 412 | */ |
415 | 413 | ||
416 | static int prepare_playback_sync_urb_hs(snd_usb_substream_t *subs, | 414 | static int prepare_playback_sync_urb_hs(struct snd_usb_substream *subs, |
417 | snd_pcm_runtime_t *runtime, | 415 | struct snd_pcm_runtime *runtime, |
418 | struct urb *urb) | 416 | struct urb *urb) |
419 | { | 417 | { |
420 | snd_urb_ctx_t *ctx = (snd_urb_ctx_t *)urb->context; | 418 | struct snd_urb_ctx *ctx = (struct snd_urb_ctx *)urb->context; |
421 | 419 | ||
422 | urb->dev = ctx->subs->dev; /* we need to set this at each time */ | 420 | urb->dev = ctx->subs->dev; /* we need to set this at each time */ |
423 | urb->iso_frame_desc[0].length = 4; | 421 | urb->iso_frame_desc[0].length = 4; |
@@ -431,8 +429,8 @@ static int prepare_playback_sync_urb_hs(snd_usb_substream_t *subs, | |||
431 | * retrieve the current 10.14 frequency from pipe, and set it. | 429 | * retrieve the current 10.14 frequency from pipe, and set it. |
432 | * the value is referred in prepare_playback_urb(). | 430 | * the value is referred in prepare_playback_urb(). |
433 | */ | 431 | */ |
434 | static int retire_playback_sync_urb(snd_usb_substream_t *subs, | 432 | static int retire_playback_sync_urb(struct snd_usb_substream *subs, |
435 | snd_pcm_runtime_t *runtime, | 433 | struct snd_pcm_runtime *runtime, |
436 | struct urb *urb) | 434 | struct urb *urb) |
437 | { | 435 | { |
438 | unsigned int f; | 436 | unsigned int f; |
@@ -457,8 +455,8 @@ static int retire_playback_sync_urb(snd_usb_substream_t *subs, | |||
457 | * retrieve the current 12.13 frequency from pipe, and set it. | 455 | * retrieve the current 12.13 frequency from pipe, and set it. |
458 | * the value is referred in prepare_playback_urb(). | 456 | * the value is referred in prepare_playback_urb(). |
459 | */ | 457 | */ |
460 | static int retire_playback_sync_urb_hs(snd_usb_substream_t *subs, | 458 | static int retire_playback_sync_urb_hs(struct snd_usb_substream *subs, |
461 | snd_pcm_runtime_t *runtime, | 459 | struct snd_pcm_runtime *runtime, |
462 | struct urb *urb) | 460 | struct urb *urb) |
463 | { | 461 | { |
464 | unsigned int f; | 462 | unsigned int f; |
@@ -482,12 +480,12 @@ static int retire_playback_sync_urb_hs(snd_usb_substream_t *subs, | |||
482 | * | 480 | * |
483 | * We don't care about (or have) any data, so we just send a transfer delimiter. | 481 | * We don't care about (or have) any data, so we just send a transfer delimiter. |
484 | */ | 482 | */ |
485 | static int prepare_startup_playback_urb(snd_usb_substream_t *subs, | 483 | static int prepare_startup_playback_urb(struct snd_usb_substream *subs, |
486 | snd_pcm_runtime_t *runtime, | 484 | struct snd_pcm_runtime *runtime, |
487 | struct urb *urb) | 485 | struct urb *urb) |
488 | { | 486 | { |
489 | unsigned int i; | 487 | unsigned int i; |
490 | snd_urb_ctx_t *ctx = urb->context; | 488 | struct snd_urb_ctx *ctx = urb->context; |
491 | 489 | ||
492 | urb->dev = ctx->subs->dev; | 490 | urb->dev = ctx->subs->dev; |
493 | urb->number_of_packets = subs->packs_per_ms; | 491 | urb->number_of_packets = subs->packs_per_ms; |
@@ -507,15 +505,15 @@ static int prepare_startup_playback_urb(snd_usb_substream_t *subs, | |||
507 | * To avoid inconsistencies when updating hwptr_done, we use double buffering | 505 | * To avoid inconsistencies when updating hwptr_done, we use double buffering |
508 | * for all URBs. | 506 | * for all URBs. |
509 | */ | 507 | */ |
510 | static int prepare_playback_urb(snd_usb_substream_t *subs, | 508 | static int prepare_playback_urb(struct snd_usb_substream *subs, |
511 | snd_pcm_runtime_t *runtime, | 509 | struct snd_pcm_runtime *runtime, |
512 | struct urb *urb) | 510 | struct urb *urb) |
513 | { | 511 | { |
514 | int i, stride, offs; | 512 | int i, stride, offs; |
515 | unsigned int counts; | 513 | unsigned int counts; |
516 | unsigned long flags; | 514 | unsigned long flags; |
517 | int period_elapsed = 0; | 515 | int period_elapsed = 0; |
518 | snd_urb_ctx_t *ctx = (snd_urb_ctx_t *)urb->context; | 516 | struct snd_urb_ctx *ctx = (struct snd_urb_ctx *)urb->context; |
519 | 517 | ||
520 | stride = runtime->frame_bits >> 3; | 518 | stride = runtime->frame_bits >> 3; |
521 | 519 | ||
@@ -597,8 +595,8 @@ static int prepare_playback_urb(snd_usb_substream_t *subs, | |||
597 | * process after playback data complete | 595 | * process after playback data complete |
598 | * - nothing to do | 596 | * - nothing to do |
599 | */ | 597 | */ |
600 | static int retire_playback_urb(snd_usb_substream_t *subs, | 598 | static int retire_playback_urb(struct snd_usb_substream *subs, |
601 | snd_pcm_runtime_t *runtime, | 599 | struct snd_pcm_runtime *runtime, |
602 | struct urb *urb) | 600 | struct urb *urb) |
603 | { | 601 | { |
604 | return 0; | 602 | return 0; |
@@ -642,9 +640,9 @@ static struct snd_urb_ops audio_urb_ops_high_speed[2] = { | |||
642 | */ | 640 | */ |
643 | static void snd_complete_urb(struct urb *urb, struct pt_regs *regs) | 641 | static void snd_complete_urb(struct urb *urb, struct pt_regs *regs) |
644 | { | 642 | { |
645 | snd_urb_ctx_t *ctx = (snd_urb_ctx_t *)urb->context; | 643 | struct snd_urb_ctx *ctx = (struct snd_urb_ctx *)urb->context; |
646 | snd_usb_substream_t *subs = ctx->subs; | 644 | struct snd_usb_substream *subs = ctx->subs; |
647 | snd_pcm_substream_t *substream = ctx->subs->pcm_substream; | 645 | struct snd_pcm_substream *substream = ctx->subs->pcm_substream; |
648 | int err = 0; | 646 | int err = 0; |
649 | 647 | ||
650 | if ((subs->running && subs->ops.retire(subs, substream->runtime, urb)) || | 648 | if ((subs->running && subs->ops.retire(subs, substream->runtime, urb)) || |
@@ -665,9 +663,9 @@ static void snd_complete_urb(struct urb *urb, struct pt_regs *regs) | |||
665 | */ | 663 | */ |
666 | static void snd_complete_sync_urb(struct urb *urb, struct pt_regs *regs) | 664 | static void snd_complete_sync_urb(struct urb *urb, struct pt_regs *regs) |
667 | { | 665 | { |
668 | snd_urb_ctx_t *ctx = (snd_urb_ctx_t *)urb->context; | 666 | struct snd_urb_ctx *ctx = (struct snd_urb_ctx *)urb->context; |
669 | snd_usb_substream_t *subs = ctx->subs; | 667 | struct snd_usb_substream *subs = ctx->subs; |
670 | snd_pcm_substream_t *substream = ctx->subs->pcm_substream; | 668 | struct snd_pcm_substream *substream = ctx->subs->pcm_substream; |
671 | int err = 0; | 669 | int err = 0; |
672 | 670 | ||
673 | if ((subs->running && subs->ops.retire_sync(subs, substream->runtime, urb)) || | 671 | if ((subs->running && subs->ops.retire_sync(subs, substream->runtime, urb)) || |
@@ -684,7 +682,7 @@ static void snd_complete_sync_urb(struct urb *urb, struct pt_regs *regs) | |||
684 | 682 | ||
685 | 683 | ||
686 | /* get the physical page pointer at the given offset */ | 684 | /* get the physical page pointer at the given offset */ |
687 | static struct page *snd_pcm_get_vmalloc_page(snd_pcm_substream_t *subs, | 685 | static struct page *snd_pcm_get_vmalloc_page(struct snd_pcm_substream *subs, |
688 | unsigned long offset) | 686 | unsigned long offset) |
689 | { | 687 | { |
690 | void *pageptr = subs->runtime->dma_area + offset; | 688 | void *pageptr = subs->runtime->dma_area + offset; |
@@ -692,9 +690,9 @@ static struct page *snd_pcm_get_vmalloc_page(snd_pcm_substream_t *subs, | |||
692 | } | 690 | } |
693 | 691 | ||
694 | /* allocate virtual buffer; may be called more than once */ | 692 | /* allocate virtual buffer; may be called more than once */ |
695 | static int snd_pcm_alloc_vmalloc_buffer(snd_pcm_substream_t *subs, size_t size) | 693 | static int snd_pcm_alloc_vmalloc_buffer(struct snd_pcm_substream *subs, size_t size) |
696 | { | 694 | { |
697 | snd_pcm_runtime_t *runtime = subs->runtime; | 695 | struct snd_pcm_runtime *runtime = subs->runtime; |
698 | if (runtime->dma_area) { | 696 | if (runtime->dma_area) { |
699 | if (runtime->dma_bytes >= size) | 697 | if (runtime->dma_bytes >= size) |
700 | return 0; /* already large enough */ | 698 | return 0; /* already large enough */ |
@@ -708,9 +706,9 @@ static int snd_pcm_alloc_vmalloc_buffer(snd_pcm_substream_t *subs, size_t size) | |||
708 | } | 706 | } |
709 | 707 | ||
710 | /* free virtual buffer; may be called more than once */ | 708 | /* free virtual buffer; may be called more than once */ |
711 | static int snd_pcm_free_vmalloc_buffer(snd_pcm_substream_t *subs) | 709 | static int snd_pcm_free_vmalloc_buffer(struct snd_pcm_substream *subs) |
712 | { | 710 | { |
713 | snd_pcm_runtime_t *runtime = subs->runtime; | 711 | struct snd_pcm_runtime *runtime = subs->runtime; |
714 | if (runtime->dma_area) { | 712 | if (runtime->dma_area) { |
715 | vfree(runtime->dma_area); | 713 | vfree(runtime->dma_area); |
716 | runtime->dma_area = NULL; | 714 | runtime->dma_area = NULL; |
@@ -722,7 +720,7 @@ static int snd_pcm_free_vmalloc_buffer(snd_pcm_substream_t *subs) | |||
722 | /* | 720 | /* |
723 | * unlink active urbs. | 721 | * unlink active urbs. |
724 | */ | 722 | */ |
725 | static int deactivate_urbs(snd_usb_substream_t *subs, int force, int can_sleep) | 723 | static int deactivate_urbs(struct snd_usb_substream *subs, int force, int can_sleep) |
726 | { | 724 | { |
727 | unsigned int i; | 725 | unsigned int i; |
728 | int async; | 726 | int async; |
@@ -768,7 +766,7 @@ static int deactivate_urbs(snd_usb_substream_t *subs, int force, int can_sleep) | |||
768 | /* | 766 | /* |
769 | * set up and start data/sync urbs | 767 | * set up and start data/sync urbs |
770 | */ | 768 | */ |
771 | static int start_urbs(snd_usb_substream_t *subs, snd_pcm_runtime_t *runtime) | 769 | static int start_urbs(struct snd_usb_substream *subs, struct snd_pcm_runtime *runtime) |
772 | { | 770 | { |
773 | unsigned int i; | 771 | unsigned int i; |
774 | int err; | 772 | int err; |
@@ -824,7 +822,7 @@ static int start_urbs(snd_usb_substream_t *subs, snd_pcm_runtime_t *runtime) | |||
824 | /* | 822 | /* |
825 | * wait until all urbs are processed. | 823 | * wait until all urbs are processed. |
826 | */ | 824 | */ |
827 | static int wait_clear_urbs(snd_usb_substream_t *subs) | 825 | static int wait_clear_urbs(struct snd_usb_substream *subs) |
828 | { | 826 | { |
829 | unsigned long end_time = jiffies + msecs_to_jiffies(1000); | 827 | unsigned long end_time = jiffies + msecs_to_jiffies(1000); |
830 | unsigned int i; | 828 | unsigned int i; |
@@ -855,12 +853,12 @@ static int wait_clear_urbs(snd_usb_substream_t *subs) | |||
855 | /* | 853 | /* |
856 | * return the current pcm pointer. just return the hwptr_done value. | 854 | * return the current pcm pointer. just return the hwptr_done value. |
857 | */ | 855 | */ |
858 | static snd_pcm_uframes_t snd_usb_pcm_pointer(snd_pcm_substream_t *substream) | 856 | static snd_pcm_uframes_t snd_usb_pcm_pointer(struct snd_pcm_substream *substream) |
859 | { | 857 | { |
860 | snd_usb_substream_t *subs; | 858 | struct snd_usb_substream *subs; |
861 | snd_pcm_uframes_t hwptr_done; | 859 | snd_pcm_uframes_t hwptr_done; |
862 | 860 | ||
863 | subs = (snd_usb_substream_t *)substream->runtime->private_data; | 861 | subs = (struct snd_usb_substream *)substream->runtime->private_data; |
864 | spin_lock(&subs->lock); | 862 | spin_lock(&subs->lock); |
865 | hwptr_done = subs->hwptr_done; | 863 | hwptr_done = subs->hwptr_done; |
866 | spin_unlock(&subs->lock); | 864 | spin_unlock(&subs->lock); |
@@ -871,10 +869,10 @@ static snd_pcm_uframes_t snd_usb_pcm_pointer(snd_pcm_substream_t *substream) | |||
871 | /* | 869 | /* |
872 | * start/stop playback substream | 870 | * start/stop playback substream |
873 | */ | 871 | */ |
874 | static int snd_usb_pcm_playback_trigger(snd_pcm_substream_t *substream, | 872 | static int snd_usb_pcm_playback_trigger(struct snd_pcm_substream *substream, |
875 | int cmd) | 873 | int cmd) |
876 | { | 874 | { |
877 | snd_usb_substream_t *subs = substream->runtime->private_data; | 875 | struct snd_usb_substream *subs = substream->runtime->private_data; |
878 | 876 | ||
879 | switch (cmd) { | 877 | switch (cmd) { |
880 | case SNDRV_PCM_TRIGGER_START: | 878 | case SNDRV_PCM_TRIGGER_START: |
@@ -890,10 +888,10 @@ static int snd_usb_pcm_playback_trigger(snd_pcm_substream_t *substream, | |||
890 | /* | 888 | /* |
891 | * start/stop capture substream | 889 | * start/stop capture substream |
892 | */ | 890 | */ |
893 | static int snd_usb_pcm_capture_trigger(snd_pcm_substream_t *substream, | 891 | static int snd_usb_pcm_capture_trigger(struct snd_pcm_substream *substream, |
894 | int cmd) | 892 | int cmd) |
895 | { | 893 | { |
896 | snd_usb_substream_t *subs = substream->runtime->private_data; | 894 | struct snd_usb_substream *subs = substream->runtime->private_data; |
897 | 895 | ||
898 | switch (cmd) { | 896 | switch (cmd) { |
899 | case SNDRV_PCM_TRIGGER_START: | 897 | case SNDRV_PCM_TRIGGER_START: |
@@ -909,7 +907,7 @@ static int snd_usb_pcm_capture_trigger(snd_pcm_substream_t *substream, | |||
909 | /* | 907 | /* |
910 | * release a urb data | 908 | * release a urb data |
911 | */ | 909 | */ |
912 | static void release_urb_ctx(snd_urb_ctx_t *u) | 910 | static void release_urb_ctx(struct snd_urb_ctx *u) |
913 | { | 911 | { |
914 | if (u->urb) { | 912 | if (u->urb) { |
915 | if (u->buffer_size) | 913 | if (u->buffer_size) |
@@ -924,7 +922,7 @@ static void release_urb_ctx(snd_urb_ctx_t *u) | |||
924 | /* | 922 | /* |
925 | * release a substream | 923 | * release a substream |
926 | */ | 924 | */ |
927 | static void release_substream_urbs(snd_usb_substream_t *subs, int force) | 925 | static void release_substream_urbs(struct snd_usb_substream *subs, int force) |
928 | { | 926 | { |
929 | int i; | 927 | int i; |
930 | 928 | ||
@@ -945,7 +943,7 @@ static void release_substream_urbs(snd_usb_substream_t *subs, int force) | |||
945 | /* | 943 | /* |
946 | * initialize a substream for plaback/capture | 944 | * initialize a substream for plaback/capture |
947 | */ | 945 | */ |
948 | static int init_substream_urbs(snd_usb_substream_t *subs, unsigned int period_bytes, | 946 | static int init_substream_urbs(struct snd_usb_substream *subs, unsigned int period_bytes, |
949 | unsigned int rate, unsigned int frame_bits) | 947 | unsigned int rate, unsigned int frame_bits) |
950 | { | 948 | { |
951 | unsigned int maxsize, n, i; | 949 | unsigned int maxsize, n, i; |
@@ -1045,7 +1043,7 @@ static int init_substream_urbs(snd_usb_substream_t *subs, unsigned int period_by | |||
1045 | 1043 | ||
1046 | /* allocate and initialize data urbs */ | 1044 | /* allocate and initialize data urbs */ |
1047 | for (i = 0; i < subs->nurbs; i++) { | 1045 | for (i = 0; i < subs->nurbs; i++) { |
1048 | snd_urb_ctx_t *u = &subs->dataurb[i]; | 1046 | struct snd_urb_ctx *u = &subs->dataurb[i]; |
1049 | u->index = i; | 1047 | u->index = i; |
1050 | u->subs = subs; | 1048 | u->subs = subs; |
1051 | u->packets = npacks[i]; | 1049 | u->packets = npacks[i]; |
@@ -1074,7 +1072,7 @@ static int init_substream_urbs(snd_usb_substream_t *subs, unsigned int period_by | |||
1074 | if (! subs->syncbuf) | 1072 | if (! subs->syncbuf) |
1075 | goto out_of_memory; | 1073 | goto out_of_memory; |
1076 | for (i = 0; i < SYNC_URBS; i++) { | 1074 | for (i = 0; i < SYNC_URBS; i++) { |
1077 | snd_urb_ctx_t *u = &subs->syncurb[i]; | 1075 | struct snd_urb_ctx *u = &subs->syncurb[i]; |
1078 | u->index = i; | 1076 | u->index = i; |
1079 | u->subs = subs; | 1077 | u->subs = subs; |
1080 | u->packets = 1; | 1078 | u->packets = 1; |
@@ -1104,7 +1102,7 @@ out_of_memory: | |||
1104 | /* | 1102 | /* |
1105 | * find a matching audio format | 1103 | * find a matching audio format |
1106 | */ | 1104 | */ |
1107 | static struct audioformat *find_format(snd_usb_substream_t *subs, unsigned int format, | 1105 | static struct audioformat *find_format(struct snd_usb_substream *subs, unsigned int format, |
1108 | unsigned int rate, unsigned int channels) | 1106 | unsigned int rate, unsigned int channels) |
1109 | { | 1107 | { |
1110 | struct list_head *p; | 1108 | struct list_head *p; |
@@ -1229,7 +1227,7 @@ static int init_usb_sample_rate(struct usb_device *dev, int iface, | |||
1229 | /* | 1227 | /* |
1230 | * find a matching format and set up the interface | 1228 | * find a matching format and set up the interface |
1231 | */ | 1229 | */ |
1232 | static int set_format(snd_usb_substream_t *subs, struct audioformat *fmt) | 1230 | static int set_format(struct snd_usb_substream *subs, struct audioformat *fmt) |
1233 | { | 1231 | { |
1234 | struct usb_device *dev = subs->dev; | 1232 | struct usb_device *dev = subs->dev; |
1235 | struct usb_host_interface *alts; | 1233 | struct usb_host_interface *alts; |
@@ -1358,10 +1356,10 @@ static int set_format(snd_usb_substream_t *subs, struct audioformat *fmt) | |||
1358 | * if sg buffer is supported on the later version of alsa, we'll follow | 1356 | * if sg buffer is supported on the later version of alsa, we'll follow |
1359 | * that. | 1357 | * that. |
1360 | */ | 1358 | */ |
1361 | static int snd_usb_hw_params(snd_pcm_substream_t *substream, | 1359 | static int snd_usb_hw_params(struct snd_pcm_substream *substream, |
1362 | snd_pcm_hw_params_t *hw_params) | 1360 | struct snd_pcm_hw_params *hw_params) |
1363 | { | 1361 | { |
1364 | snd_usb_substream_t *subs = (snd_usb_substream_t *)substream->runtime->private_data; | 1362 | struct snd_usb_substream *subs = (struct snd_usb_substream *)substream->runtime->private_data; |
1365 | struct audioformat *fmt; | 1363 | struct audioformat *fmt; |
1366 | unsigned int channels, rate, format; | 1364 | unsigned int channels, rate, format; |
1367 | int ret, changed; | 1365 | int ret, changed; |
@@ -1415,9 +1413,9 @@ static int snd_usb_hw_params(snd_pcm_substream_t *substream, | |||
1415 | * | 1413 | * |
1416 | * reset the audio format and release the buffer | 1414 | * reset the audio format and release the buffer |
1417 | */ | 1415 | */ |
1418 | static int snd_usb_hw_free(snd_pcm_substream_t *substream) | 1416 | static int snd_usb_hw_free(struct snd_pcm_substream *substream) |
1419 | { | 1417 | { |
1420 | snd_usb_substream_t *subs = (snd_usb_substream_t *)substream->runtime->private_data; | 1418 | struct snd_usb_substream *subs = (struct snd_usb_substream *)substream->runtime->private_data; |
1421 | 1419 | ||
1422 | subs->cur_audiofmt = NULL; | 1420 | subs->cur_audiofmt = NULL; |
1423 | subs->cur_rate = 0; | 1421 | subs->cur_rate = 0; |
@@ -1431,10 +1429,10 @@ static int snd_usb_hw_free(snd_pcm_substream_t *substream) | |||
1431 | * | 1429 | * |
1432 | * only a few subtle things... | 1430 | * only a few subtle things... |
1433 | */ | 1431 | */ |
1434 | static int snd_usb_pcm_prepare(snd_pcm_substream_t *substream) | 1432 | static int snd_usb_pcm_prepare(struct snd_pcm_substream *substream) |
1435 | { | 1433 | { |
1436 | snd_pcm_runtime_t *runtime = substream->runtime; | 1434 | struct snd_pcm_runtime *runtime = substream->runtime; |
1437 | snd_usb_substream_t *subs = runtime->private_data; | 1435 | struct snd_usb_substream *subs = runtime->private_data; |
1438 | 1436 | ||
1439 | if (! subs->cur_audiofmt) { | 1437 | if (! subs->cur_audiofmt) { |
1440 | snd_printk(KERN_ERR "usbaudio: no format is specified!\n"); | 1438 | snd_printk(KERN_ERR "usbaudio: no format is specified!\n"); |
@@ -1463,7 +1461,7 @@ static int snd_usb_pcm_prepare(snd_pcm_substream_t *substream) | |||
1463 | return 0; | 1461 | return 0; |
1464 | } | 1462 | } |
1465 | 1463 | ||
1466 | static snd_pcm_hardware_t snd_usb_playback = | 1464 | static struct snd_pcm_hardware snd_usb_playback = |
1467 | { | 1465 | { |
1468 | .info = SNDRV_PCM_INFO_MMAP | | 1466 | .info = SNDRV_PCM_INFO_MMAP | |
1469 | SNDRV_PCM_INFO_MMAP_VALID | | 1467 | SNDRV_PCM_INFO_MMAP_VALID | |
@@ -1477,7 +1475,7 @@ static snd_pcm_hardware_t snd_usb_playback = | |||
1477 | .periods_max = 1024, | 1475 | .periods_max = 1024, |
1478 | }; | 1476 | }; |
1479 | 1477 | ||
1480 | static snd_pcm_hardware_t snd_usb_capture = | 1478 | static struct snd_pcm_hardware snd_usb_capture = |
1481 | { | 1479 | { |
1482 | .info = SNDRV_PCM_INFO_MMAP | | 1480 | .info = SNDRV_PCM_INFO_MMAP | |
1483 | SNDRV_PCM_INFO_MMAP_VALID | | 1481 | SNDRV_PCM_INFO_MMAP_VALID | |
@@ -1501,11 +1499,11 @@ static snd_pcm_hardware_t snd_usb_capture = | |||
1501 | #define hwc_debug(fmt, args...) /**/ | 1499 | #define hwc_debug(fmt, args...) /**/ |
1502 | #endif | 1500 | #endif |
1503 | 1501 | ||
1504 | static int hw_check_valid_format(snd_pcm_hw_params_t *params, struct audioformat *fp) | 1502 | static int hw_check_valid_format(struct snd_pcm_hw_params *params, struct audioformat *fp) |
1505 | { | 1503 | { |
1506 | snd_interval_t *it = hw_param_interval(params, SNDRV_PCM_HW_PARAM_RATE); | 1504 | struct snd_interval *it = hw_param_interval(params, SNDRV_PCM_HW_PARAM_RATE); |
1507 | snd_interval_t *ct = hw_param_interval(params, SNDRV_PCM_HW_PARAM_CHANNELS); | 1505 | struct snd_interval *ct = hw_param_interval(params, SNDRV_PCM_HW_PARAM_CHANNELS); |
1508 | snd_mask_t *fmts = hw_param_mask(params, SNDRV_PCM_HW_PARAM_FORMAT); | 1506 | struct snd_mask *fmts = hw_param_mask(params, SNDRV_PCM_HW_PARAM_FORMAT); |
1509 | 1507 | ||
1510 | /* check the format */ | 1508 | /* check the format */ |
1511 | if (! snd_mask_test(fmts, fp->format)) { | 1509 | if (! snd_mask_test(fmts, fp->format)) { |
@@ -1529,12 +1527,12 @@ static int hw_check_valid_format(snd_pcm_hw_params_t *params, struct audioformat | |||
1529 | return 1; | 1527 | return 1; |
1530 | } | 1528 | } |
1531 | 1529 | ||
1532 | static int hw_rule_rate(snd_pcm_hw_params_t *params, | 1530 | static int hw_rule_rate(struct snd_pcm_hw_params *params, |
1533 | snd_pcm_hw_rule_t *rule) | 1531 | struct snd_pcm_hw_rule *rule) |
1534 | { | 1532 | { |
1535 | snd_usb_substream_t *subs = rule->private; | 1533 | struct snd_usb_substream *subs = rule->private; |
1536 | struct list_head *p; | 1534 | struct list_head *p; |
1537 | snd_interval_t *it = hw_param_interval(params, SNDRV_PCM_HW_PARAM_RATE); | 1535 | struct snd_interval *it = hw_param_interval(params, SNDRV_PCM_HW_PARAM_RATE); |
1538 | unsigned int rmin, rmax; | 1536 | unsigned int rmin, rmax; |
1539 | int changed; | 1537 | int changed; |
1540 | 1538 | ||
@@ -1583,12 +1581,12 @@ static int hw_rule_rate(snd_pcm_hw_params_t *params, | |||
1583 | } | 1581 | } |
1584 | 1582 | ||
1585 | 1583 | ||
1586 | static int hw_rule_channels(snd_pcm_hw_params_t *params, | 1584 | static int hw_rule_channels(struct snd_pcm_hw_params *params, |
1587 | snd_pcm_hw_rule_t *rule) | 1585 | struct snd_pcm_hw_rule *rule) |
1588 | { | 1586 | { |
1589 | snd_usb_substream_t *subs = rule->private; | 1587 | struct snd_usb_substream *subs = rule->private; |
1590 | struct list_head *p; | 1588 | struct list_head *p; |
1591 | snd_interval_t *it = hw_param_interval(params, SNDRV_PCM_HW_PARAM_CHANNELS); | 1589 | struct snd_interval *it = hw_param_interval(params, SNDRV_PCM_HW_PARAM_CHANNELS); |
1592 | unsigned int rmin, rmax; | 1590 | unsigned int rmin, rmax; |
1593 | int changed; | 1591 | int changed; |
1594 | 1592 | ||
@@ -1636,12 +1634,12 @@ static int hw_rule_channels(snd_pcm_hw_params_t *params, | |||
1636 | return changed; | 1634 | return changed; |
1637 | } | 1635 | } |
1638 | 1636 | ||
1639 | static int hw_rule_format(snd_pcm_hw_params_t *params, | 1637 | static int hw_rule_format(struct snd_pcm_hw_params *params, |
1640 | snd_pcm_hw_rule_t *rule) | 1638 | struct snd_pcm_hw_rule *rule) |
1641 | { | 1639 | { |
1642 | snd_usb_substream_t *subs = rule->private; | 1640 | struct snd_usb_substream *subs = rule->private; |
1643 | struct list_head *p; | 1641 | struct list_head *p; |
1644 | snd_mask_t *fmt = hw_param_mask(params, SNDRV_PCM_HW_PARAM_FORMAT); | 1642 | struct snd_mask *fmt = hw_param_mask(params, SNDRV_PCM_HW_PARAM_FORMAT); |
1645 | u64 fbits; | 1643 | u64 fbits; |
1646 | u32 oldbits[2]; | 1644 | u32 oldbits[2]; |
1647 | int changed; | 1645 | int changed; |
@@ -1674,7 +1672,7 @@ static int hw_rule_format(snd_pcm_hw_params_t *params, | |||
1674 | /* | 1672 | /* |
1675 | * check whether the registered audio formats need special hw-constraints | 1673 | * check whether the registered audio formats need special hw-constraints |
1676 | */ | 1674 | */ |
1677 | static int check_hw_params_convention(snd_usb_substream_t *subs) | 1675 | static int check_hw_params_convention(struct snd_usb_substream *subs) |
1678 | { | 1676 | { |
1679 | int i; | 1677 | int i; |
1680 | u32 *channels; | 1678 | u32 *channels; |
@@ -1758,7 +1756,7 @@ static int check_hw_params_convention(snd_usb_substream_t *subs) | |||
1758 | * set up the runtime hardware information. | 1756 | * set up the runtime hardware information. |
1759 | */ | 1757 | */ |
1760 | 1758 | ||
1761 | static int setup_hw_info(snd_pcm_runtime_t *runtime, snd_usb_substream_t *subs) | 1759 | static int setup_hw_info(struct snd_pcm_runtime *runtime, struct snd_usb_substream *subs) |
1762 | { | 1760 | { |
1763 | struct list_head *p; | 1761 | struct list_head *p; |
1764 | int err; | 1762 | int err; |
@@ -1819,12 +1817,12 @@ static int setup_hw_info(snd_pcm_runtime_t *runtime, snd_usb_substream_t *subs) | |||
1819 | return 0; | 1817 | return 0; |
1820 | } | 1818 | } |
1821 | 1819 | ||
1822 | static int snd_usb_pcm_open(snd_pcm_substream_t *substream, int direction, | 1820 | static int snd_usb_pcm_open(struct snd_pcm_substream *substream, int direction, |
1823 | snd_pcm_hardware_t *hw) | 1821 | struct snd_pcm_hardware *hw) |
1824 | { | 1822 | { |
1825 | snd_usb_stream_t *as = snd_pcm_substream_chip(substream); | 1823 | struct snd_usb_stream *as = snd_pcm_substream_chip(substream); |
1826 | snd_pcm_runtime_t *runtime = substream->runtime; | 1824 | struct snd_pcm_runtime *runtime = substream->runtime; |
1827 | snd_usb_substream_t *subs = &as->substream[direction]; | 1825 | struct snd_usb_substream *subs = &as->substream[direction]; |
1828 | 1826 | ||
1829 | subs->interface = -1; | 1827 | subs->interface = -1; |
1830 | subs->format = 0; | 1828 | subs->format = 0; |
@@ -1834,10 +1832,10 @@ static int snd_usb_pcm_open(snd_pcm_substream_t *substream, int direction, | |||
1834 | return setup_hw_info(runtime, subs); | 1832 | return setup_hw_info(runtime, subs); |
1835 | } | 1833 | } |
1836 | 1834 | ||
1837 | static int snd_usb_pcm_close(snd_pcm_substream_t *substream, int direction) | 1835 | static int snd_usb_pcm_close(struct snd_pcm_substream *substream, int direction) |
1838 | { | 1836 | { |
1839 | snd_usb_stream_t *as = snd_pcm_substream_chip(substream); | 1837 | struct snd_usb_stream *as = snd_pcm_substream_chip(substream); |
1840 | snd_usb_substream_t *subs = &as->substream[direction]; | 1838 | struct snd_usb_substream *subs = &as->substream[direction]; |
1841 | 1839 | ||
1842 | if (subs->interface >= 0) { | 1840 | if (subs->interface >= 0) { |
1843 | usb_set_interface(subs->dev, subs->interface, 0); | 1841 | usb_set_interface(subs->dev, subs->interface, 0); |
@@ -1847,27 +1845,27 @@ static int snd_usb_pcm_close(snd_pcm_substream_t *substream, int direction) | |||
1847 | return 0; | 1845 | return 0; |
1848 | } | 1846 | } |
1849 | 1847 | ||
1850 | static int snd_usb_playback_open(snd_pcm_substream_t *substream) | 1848 | static int snd_usb_playback_open(struct snd_pcm_substream *substream) |
1851 | { | 1849 | { |
1852 | return snd_usb_pcm_open(substream, SNDRV_PCM_STREAM_PLAYBACK, &snd_usb_playback); | 1850 | return snd_usb_pcm_open(substream, SNDRV_PCM_STREAM_PLAYBACK, &snd_usb_playback); |
1853 | } | 1851 | } |
1854 | 1852 | ||
1855 | static int snd_usb_playback_close(snd_pcm_substream_t *substream) | 1853 | static int snd_usb_playback_close(struct snd_pcm_substream *substream) |
1856 | { | 1854 | { |
1857 | return snd_usb_pcm_close(substream, SNDRV_PCM_STREAM_PLAYBACK); | 1855 | return snd_usb_pcm_close(substream, SNDRV_PCM_STREAM_PLAYBACK); |
1858 | } | 1856 | } |
1859 | 1857 | ||
1860 | static int snd_usb_capture_open(snd_pcm_substream_t *substream) | 1858 | static int snd_usb_capture_open(struct snd_pcm_substream *substream) |
1861 | { | 1859 | { |
1862 | return snd_usb_pcm_open(substream, SNDRV_PCM_STREAM_CAPTURE, &snd_usb_capture); | 1860 | return snd_usb_pcm_open(substream, SNDRV_PCM_STREAM_CAPTURE, &snd_usb_capture); |
1863 | } | 1861 | } |
1864 | 1862 | ||
1865 | static int snd_usb_capture_close(snd_pcm_substream_t *substream) | 1863 | static int snd_usb_capture_close(struct snd_pcm_substream *substream) |
1866 | { | 1864 | { |
1867 | return snd_usb_pcm_close(substream, SNDRV_PCM_STREAM_CAPTURE); | 1865 | return snd_usb_pcm_close(substream, SNDRV_PCM_STREAM_CAPTURE); |
1868 | } | 1866 | } |
1869 | 1867 | ||
1870 | static snd_pcm_ops_t snd_usb_playback_ops = { | 1868 | static struct snd_pcm_ops snd_usb_playback_ops = { |
1871 | .open = snd_usb_playback_open, | 1869 | .open = snd_usb_playback_open, |
1872 | .close = snd_usb_playback_close, | 1870 | .close = snd_usb_playback_close, |
1873 | .ioctl = snd_pcm_lib_ioctl, | 1871 | .ioctl = snd_pcm_lib_ioctl, |
@@ -1879,7 +1877,7 @@ static snd_pcm_ops_t snd_usb_playback_ops = { | |||
1879 | .page = snd_pcm_get_vmalloc_page, | 1877 | .page = snd_pcm_get_vmalloc_page, |
1880 | }; | 1878 | }; |
1881 | 1879 | ||
1882 | static snd_pcm_ops_t snd_usb_capture_ops = { | 1880 | static struct snd_pcm_ops snd_usb_capture_ops = { |
1883 | .open = snd_usb_capture_open, | 1881 | .open = snd_usb_capture_open, |
1884 | .close = snd_usb_capture_close, | 1882 | .close = snd_usb_capture_close, |
1885 | .ioctl = snd_pcm_lib_ioctl, | 1883 | .ioctl = snd_pcm_lib_ioctl, |
@@ -2006,7 +2004,7 @@ static struct usb_driver usb_audio_driver = { | |||
2006 | /* | 2004 | /* |
2007 | * proc interface for list the supported pcm formats | 2005 | * proc interface for list the supported pcm formats |
2008 | */ | 2006 | */ |
2009 | static void proc_dump_substream_formats(snd_usb_substream_t *subs, snd_info_buffer_t *buffer) | 2007 | static void proc_dump_substream_formats(struct snd_usb_substream *subs, struct snd_info_buffer *buffer) |
2010 | { | 2008 | { |
2011 | struct list_head *p; | 2009 | struct list_head *p; |
2012 | static char *sync_types[4] = { | 2010 | static char *sync_types[4] = { |
@@ -2042,7 +2040,7 @@ static void proc_dump_substream_formats(snd_usb_substream_t *subs, snd_info_buff | |||
2042 | } | 2040 | } |
2043 | } | 2041 | } |
2044 | 2042 | ||
2045 | static void proc_dump_substream_status(snd_usb_substream_t *subs, snd_info_buffer_t *buffer) | 2043 | static void proc_dump_substream_status(struct snd_usb_substream *subs, struct snd_info_buffer *buffer) |
2046 | { | 2044 | { |
2047 | if (subs->running) { | 2045 | if (subs->running) { |
2048 | unsigned int i; | 2046 | unsigned int i; |
@@ -2064,9 +2062,9 @@ static void proc_dump_substream_status(snd_usb_substream_t *subs, snd_info_buffe | |||
2064 | } | 2062 | } |
2065 | } | 2063 | } |
2066 | 2064 | ||
2067 | static void proc_pcm_format_read(snd_info_entry_t *entry, snd_info_buffer_t *buffer) | 2065 | static void proc_pcm_format_read(struct snd_info_entry *entry, struct snd_info_buffer *buffer) |
2068 | { | 2066 | { |
2069 | snd_usb_stream_t *stream = entry->private_data; | 2067 | struct snd_usb_stream *stream = entry->private_data; |
2070 | 2068 | ||
2071 | snd_iprintf(buffer, "%s : %s\n", stream->chip->card->longname, stream->pcm->name); | 2069 | snd_iprintf(buffer, "%s : %s\n", stream->chip->card->longname, stream->pcm->name); |
2072 | 2070 | ||
@@ -2082,11 +2080,11 @@ static void proc_pcm_format_read(snd_info_entry_t *entry, snd_info_buffer_t *buf | |||
2082 | } | 2080 | } |
2083 | } | 2081 | } |
2084 | 2082 | ||
2085 | static void proc_pcm_format_add(snd_usb_stream_t *stream) | 2083 | static void proc_pcm_format_add(struct snd_usb_stream *stream) |
2086 | { | 2084 | { |
2087 | snd_info_entry_t *entry; | 2085 | struct snd_info_entry *entry; |
2088 | char name[32]; | 2086 | char name[32]; |
2089 | snd_card_t *card = stream->chip->card; | 2087 | struct snd_card *card = stream->chip->card; |
2090 | 2088 | ||
2091 | sprintf(name, "stream%d", stream->pcm_index); | 2089 | sprintf(name, "stream%d", stream->pcm_index); |
2092 | if (! snd_card_proc_new(card, name, &entry)) | 2090 | if (! snd_card_proc_new(card, name, &entry)) |
@@ -2098,9 +2096,9 @@ static void proc_pcm_format_add(snd_usb_stream_t *stream) | |||
2098 | * initialize the substream instance. | 2096 | * initialize the substream instance. |
2099 | */ | 2097 | */ |
2100 | 2098 | ||
2101 | static void init_substream(snd_usb_stream_t *as, int stream, struct audioformat *fp) | 2099 | static void init_substream(struct snd_usb_stream *as, int stream, struct audioformat *fp) |
2102 | { | 2100 | { |
2103 | snd_usb_substream_t *subs = &as->substream[stream]; | 2101 | struct snd_usb_substream *subs = &as->substream[stream]; |
2104 | 2102 | ||
2105 | INIT_LIST_HEAD(&subs->fmt_list); | 2103 | INIT_LIST_HEAD(&subs->fmt_list); |
2106 | spin_lock_init(&subs->lock); | 2104 | spin_lock_init(&subs->lock); |
@@ -2127,7 +2125,7 @@ static void init_substream(snd_usb_stream_t *as, int stream, struct audioformat | |||
2127 | /* | 2125 | /* |
2128 | * free a substream | 2126 | * free a substream |
2129 | */ | 2127 | */ |
2130 | static void free_substream(snd_usb_substream_t *subs) | 2128 | static void free_substream(struct snd_usb_substream *subs) |
2131 | { | 2129 | { |
2132 | struct list_head *p, *n; | 2130 | struct list_head *p, *n; |
2133 | 2131 | ||
@@ -2144,7 +2142,7 @@ static void free_substream(snd_usb_substream_t *subs) | |||
2144 | /* | 2142 | /* |
2145 | * free a usb stream instance | 2143 | * free a usb stream instance |
2146 | */ | 2144 | */ |
2147 | static void snd_usb_audio_stream_free(snd_usb_stream_t *stream) | 2145 | static void snd_usb_audio_stream_free(struct snd_usb_stream *stream) |
2148 | { | 2146 | { |
2149 | free_substream(&stream->substream[0]); | 2147 | free_substream(&stream->substream[0]); |
2150 | free_substream(&stream->substream[1]); | 2148 | free_substream(&stream->substream[1]); |
@@ -2152,9 +2150,9 @@ static void snd_usb_audio_stream_free(snd_usb_stream_t *stream) | |||
2152 | kfree(stream); | 2150 | kfree(stream); |
2153 | } | 2151 | } |
2154 | 2152 | ||
2155 | static void snd_usb_audio_pcm_free(snd_pcm_t *pcm) | 2153 | static void snd_usb_audio_pcm_free(struct snd_pcm *pcm) |
2156 | { | 2154 | { |
2157 | snd_usb_stream_t *stream = pcm->private_data; | 2155 | struct snd_usb_stream *stream = pcm->private_data; |
2158 | if (stream) { | 2156 | if (stream) { |
2159 | stream->pcm = NULL; | 2157 | stream->pcm = NULL; |
2160 | snd_usb_audio_stream_free(stream); | 2158 | snd_usb_audio_stream_free(stream); |
@@ -2167,16 +2165,16 @@ static void snd_usb_audio_pcm_free(snd_pcm_t *pcm) | |||
2167 | * if a stream with the same endpoint already exists, append to it. | 2165 | * if a stream with the same endpoint already exists, append to it. |
2168 | * if not, create a new pcm stream. | 2166 | * if not, create a new pcm stream. |
2169 | */ | 2167 | */ |
2170 | static int add_audio_endpoint(snd_usb_audio_t *chip, int stream, struct audioformat *fp) | 2168 | static int add_audio_endpoint(struct snd_usb_audio *chip, int stream, struct audioformat *fp) |
2171 | { | 2169 | { |
2172 | struct list_head *p; | 2170 | struct list_head *p; |
2173 | snd_usb_stream_t *as; | 2171 | struct snd_usb_stream *as; |
2174 | snd_usb_substream_t *subs; | 2172 | struct snd_usb_substream *subs; |
2175 | snd_pcm_t *pcm; | 2173 | struct snd_pcm *pcm; |
2176 | int err; | 2174 | int err; |
2177 | 2175 | ||
2178 | list_for_each(p, &chip->pcm_list) { | 2176 | list_for_each(p, &chip->pcm_list) { |
2179 | as = list_entry(p, snd_usb_stream_t, list); | 2177 | as = list_entry(p, struct snd_usb_stream, list); |
2180 | if (as->fmt_type != fp->fmt_type) | 2178 | if (as->fmt_type != fp->fmt_type) |
2181 | continue; | 2179 | continue; |
2182 | subs = &as->substream[stream]; | 2180 | subs = &as->substream[stream]; |
@@ -2191,7 +2189,7 @@ static int add_audio_endpoint(snd_usb_audio_t *chip, int stream, struct audiofor | |||
2191 | } | 2189 | } |
2192 | /* look for an empty stream */ | 2190 | /* look for an empty stream */ |
2193 | list_for_each(p, &chip->pcm_list) { | 2191 | list_for_each(p, &chip->pcm_list) { |
2194 | as = list_entry(p, snd_usb_stream_t, list); | 2192 | as = list_entry(p, struct snd_usb_stream, list); |
2195 | if (as->fmt_type != fp->fmt_type) | 2193 | if (as->fmt_type != fp->fmt_type) |
2196 | continue; | 2194 | continue; |
2197 | subs = &as->substream[stream]; | 2195 | subs = &as->substream[stream]; |
@@ -2243,7 +2241,7 @@ static int add_audio_endpoint(snd_usb_audio_t *chip, int stream, struct audiofor | |||
2243 | /* | 2241 | /* |
2244 | * check if the device uses big-endian samples | 2242 | * check if the device uses big-endian samples |
2245 | */ | 2243 | */ |
2246 | static int is_big_endian_format(snd_usb_audio_t *chip, struct audioformat *fp) | 2244 | static int is_big_endian_format(struct snd_usb_audio *chip, struct audioformat *fp) |
2247 | { | 2245 | { |
2248 | switch (chip->usb_id) { | 2246 | switch (chip->usb_id) { |
2249 | case USB_ID(0x0763, 0x2001): /* M-Audio Quattro: captured data only */ | 2247 | case USB_ID(0x0763, 0x2001): /* M-Audio Quattro: captured data only */ |
@@ -2265,7 +2263,7 @@ static int is_big_endian_format(snd_usb_audio_t *chip, struct audioformat *fp) | |||
2265 | * @format: the format tag (wFormatTag) | 2263 | * @format: the format tag (wFormatTag) |
2266 | * @fmt: the format type descriptor | 2264 | * @fmt: the format type descriptor |
2267 | */ | 2265 | */ |
2268 | static int parse_audio_format_i_type(snd_usb_audio_t *chip, struct audioformat *fp, | 2266 | static int parse_audio_format_i_type(struct snd_usb_audio *chip, struct audioformat *fp, |
2269 | int format, unsigned char *fmt) | 2267 | int format, unsigned char *fmt) |
2270 | { | 2268 | { |
2271 | int pcm_format; | 2269 | int pcm_format; |
@@ -2348,7 +2346,7 @@ static int parse_audio_format_i_type(snd_usb_audio_t *chip, struct audioformat * | |||
2348 | * @offset: the start offset of descriptor pointing the rate type | 2346 | * @offset: the start offset of descriptor pointing the rate type |
2349 | * (7 for type I and II, 8 for type II) | 2347 | * (7 for type I and II, 8 for type II) |
2350 | */ | 2348 | */ |
2351 | static int parse_audio_format_rates(snd_usb_audio_t *chip, struct audioformat *fp, | 2349 | static int parse_audio_format_rates(struct snd_usb_audio *chip, struct audioformat *fp, |
2352 | unsigned char *fmt, int offset) | 2350 | unsigned char *fmt, int offset) |
2353 | { | 2351 | { |
2354 | int nr_rates = fmt[offset]; | 2352 | int nr_rates = fmt[offset]; |
@@ -2401,7 +2399,7 @@ static int parse_audio_format_rates(snd_usb_audio_t *chip, struct audioformat *f | |||
2401 | /* | 2399 | /* |
2402 | * parse the format type I and III descriptors | 2400 | * parse the format type I and III descriptors |
2403 | */ | 2401 | */ |
2404 | static int parse_audio_format_i(snd_usb_audio_t *chip, struct audioformat *fp, | 2402 | static int parse_audio_format_i(struct snd_usb_audio *chip, struct audioformat *fp, |
2405 | int format, unsigned char *fmt) | 2403 | int format, unsigned char *fmt) |
2406 | { | 2404 | { |
2407 | int pcm_format; | 2405 | int pcm_format; |
@@ -2430,7 +2428,7 @@ static int parse_audio_format_i(snd_usb_audio_t *chip, struct audioformat *fp, | |||
2430 | /* | 2428 | /* |
2431 | * prase the format type II descriptor | 2429 | * prase the format type II descriptor |
2432 | */ | 2430 | */ |
2433 | static int parse_audio_format_ii(snd_usb_audio_t *chip, struct audioformat *fp, | 2431 | static int parse_audio_format_ii(struct snd_usb_audio *chip, struct audioformat *fp, |
2434 | int format, unsigned char *fmt) | 2432 | int format, unsigned char *fmt) |
2435 | { | 2433 | { |
2436 | int brate, framesize; | 2434 | int brate, framesize; |
@@ -2457,7 +2455,7 @@ static int parse_audio_format_ii(snd_usb_audio_t *chip, struct audioformat *fp, | |||
2457 | return parse_audio_format_rates(chip, fp, fmt, 8); /* fmt[8..] sample rates */ | 2455 | return parse_audio_format_rates(chip, fp, fmt, 8); /* fmt[8..] sample rates */ |
2458 | } | 2456 | } |
2459 | 2457 | ||
2460 | static int parse_audio_format(snd_usb_audio_t *chip, struct audioformat *fp, | 2458 | static int parse_audio_format(struct snd_usb_audio *chip, struct audioformat *fp, |
2461 | int format, unsigned char *fmt, int stream) | 2459 | int format, unsigned char *fmt, int stream) |
2462 | { | 2460 | { |
2463 | int err; | 2461 | int err; |
@@ -2494,7 +2492,7 @@ static int parse_audio_format(snd_usb_audio_t *chip, struct audioformat *fp, | |||
2494 | return 0; | 2492 | return 0; |
2495 | } | 2493 | } |
2496 | 2494 | ||
2497 | static int parse_audio_endpoints(snd_usb_audio_t *chip, int iface_no) | 2495 | static int parse_audio_endpoints(struct snd_usb_audio *chip, int iface_no) |
2498 | { | 2496 | { |
2499 | struct usb_device *dev; | 2497 | struct usb_device *dev; |
2500 | struct usb_interface *iface; | 2498 | struct usb_interface *iface; |
@@ -2645,10 +2643,10 @@ static int parse_audio_endpoints(snd_usb_audio_t *chip, int iface_no) | |||
2645 | static void snd_usb_stream_disconnect(struct list_head *head) | 2643 | static void snd_usb_stream_disconnect(struct list_head *head) |
2646 | { | 2644 | { |
2647 | int idx; | 2645 | int idx; |
2648 | snd_usb_stream_t *as; | 2646 | struct snd_usb_stream *as; |
2649 | snd_usb_substream_t *subs; | 2647 | struct snd_usb_substream *subs; |
2650 | 2648 | ||
2651 | as = list_entry(head, snd_usb_stream_t, list); | 2649 | as = list_entry(head, struct snd_usb_stream, list); |
2652 | for (idx = 0; idx < 2; idx++) { | 2650 | for (idx = 0; idx < 2; idx++) { |
2653 | subs = &as->substream[idx]; | 2651 | subs = &as->substream[idx]; |
2654 | if (!subs->num_formats) | 2652 | if (!subs->num_formats) |
@@ -2661,7 +2659,7 @@ static void snd_usb_stream_disconnect(struct list_head *head) | |||
2661 | /* | 2659 | /* |
2662 | * parse audio control descriptor and create pcm/midi streams | 2660 | * parse audio control descriptor and create pcm/midi streams |
2663 | */ | 2661 | */ |
2664 | static int snd_usb_create_streams(snd_usb_audio_t *chip, int ctrlif) | 2662 | static int snd_usb_create_streams(struct snd_usb_audio *chip, int ctrlif) |
2665 | { | 2663 | { |
2666 | struct usb_device *dev = chip->dev; | 2664 | struct usb_device *dev = chip->dev; |
2667 | struct usb_host_interface *host_iface; | 2665 | struct usb_host_interface *host_iface; |
@@ -2728,9 +2726,9 @@ static int snd_usb_create_streams(snd_usb_audio_t *chip, int ctrlif) | |||
2728 | /* | 2726 | /* |
2729 | * create a stream for an endpoint/altsetting without proper descriptors | 2727 | * create a stream for an endpoint/altsetting without proper descriptors |
2730 | */ | 2728 | */ |
2731 | static int create_fixed_stream_quirk(snd_usb_audio_t *chip, | 2729 | static int create_fixed_stream_quirk(struct snd_usb_audio *chip, |
2732 | struct usb_interface *iface, | 2730 | struct usb_interface *iface, |
2733 | const snd_usb_audio_quirk_t *quirk) | 2731 | const struct snd_usb_audio_quirk *quirk) |
2734 | { | 2732 | { |
2735 | struct audioformat *fp; | 2733 | struct audioformat *fp; |
2736 | struct usb_host_interface *alts; | 2734 | struct usb_host_interface *alts; |
@@ -2777,9 +2775,9 @@ static int create_fixed_stream_quirk(snd_usb_audio_t *chip, | |||
2777 | /* | 2775 | /* |
2778 | * create a stream for an interface with proper descriptors | 2776 | * create a stream for an interface with proper descriptors |
2779 | */ | 2777 | */ |
2780 | static int create_standard_audio_quirk(snd_usb_audio_t *chip, | 2778 | static int create_standard_audio_quirk(struct snd_usb_audio *chip, |
2781 | struct usb_interface *iface, | 2779 | struct usb_interface *iface, |
2782 | const snd_usb_audio_quirk_t *quirk) | 2780 | const struct snd_usb_audio_quirk *quirk) |
2783 | { | 2781 | { |
2784 | struct usb_host_interface *alts; | 2782 | struct usb_host_interface *alts; |
2785 | struct usb_interface_descriptor *altsd; | 2783 | struct usb_interface_descriptor *altsd; |
@@ -2802,9 +2800,9 @@ static int create_standard_audio_quirk(snd_usb_audio_t *chip, | |||
2802 | * Create a stream for an Edirol UA-700/UA-25 interface. The only way | 2800 | * Create a stream for an Edirol UA-700/UA-25 interface. The only way |
2803 | * to detect the sample rate is by looking at wMaxPacketSize. | 2801 | * to detect the sample rate is by looking at wMaxPacketSize. |
2804 | */ | 2802 | */ |
2805 | static int create_ua700_ua25_quirk(snd_usb_audio_t *chip, | 2803 | static int create_ua700_ua25_quirk(struct snd_usb_audio *chip, |
2806 | struct usb_interface *iface, | 2804 | struct usb_interface *iface, |
2807 | const snd_usb_audio_quirk_t *quirk) | 2805 | const struct snd_usb_audio_quirk *quirk) |
2808 | { | 2806 | { |
2809 | static const struct audioformat ua_format = { | 2807 | static const struct audioformat ua_format = { |
2810 | .format = SNDRV_PCM_FORMAT_S24_3LE, | 2808 | .format = SNDRV_PCM_FORMAT_S24_3LE, |
@@ -2826,19 +2824,19 @@ static int create_ua700_ua25_quirk(snd_usb_audio_t *chip, | |||
2826 | altsd = get_iface_desc(alts); | 2824 | altsd = get_iface_desc(alts); |
2827 | 2825 | ||
2828 | if (altsd->bNumEndpoints == 2) { | 2826 | if (altsd->bNumEndpoints == 2) { |
2829 | static const snd_usb_midi_endpoint_info_t ua700_ep = { | 2827 | static const struct snd_usb_midi_endpoint_info ua700_ep = { |
2830 | .out_cables = 0x0003, | 2828 | .out_cables = 0x0003, |
2831 | .in_cables = 0x0003 | 2829 | .in_cables = 0x0003 |
2832 | }; | 2830 | }; |
2833 | static const snd_usb_audio_quirk_t ua700_quirk = { | 2831 | static const struct snd_usb_audio_quirk ua700_quirk = { |
2834 | .type = QUIRK_MIDI_FIXED_ENDPOINT, | 2832 | .type = QUIRK_MIDI_FIXED_ENDPOINT, |
2835 | .data = &ua700_ep | 2833 | .data = &ua700_ep |
2836 | }; | 2834 | }; |
2837 | static const snd_usb_midi_endpoint_info_t ua25_ep = { | 2835 | static const struct snd_usb_midi_endpoint_info ua25_ep = { |
2838 | .out_cables = 0x0001, | 2836 | .out_cables = 0x0001, |
2839 | .in_cables = 0x0001 | 2837 | .in_cables = 0x0001 |
2840 | }; | 2838 | }; |
2841 | static const snd_usb_audio_quirk_t ua25_quirk = { | 2839 | static const struct snd_usb_audio_quirk ua25_quirk = { |
2842 | .type = QUIRK_MIDI_FIXED_ENDPOINT, | 2840 | .type = QUIRK_MIDI_FIXED_ENDPOINT, |
2843 | .data = &ua25_ep | 2841 | .data = &ua25_ep |
2844 | }; | 2842 | }; |
@@ -2895,9 +2893,9 @@ static int create_ua700_ua25_quirk(snd_usb_audio_t *chip, | |||
2895 | /* | 2893 | /* |
2896 | * Create a stream for an Edirol UA-1000 interface. | 2894 | * Create a stream for an Edirol UA-1000 interface. |
2897 | */ | 2895 | */ |
2898 | static int create_ua1000_quirk(snd_usb_audio_t *chip, | 2896 | static int create_ua1000_quirk(struct snd_usb_audio *chip, |
2899 | struct usb_interface *iface, | 2897 | struct usb_interface *iface, |
2900 | const snd_usb_audio_quirk_t *quirk) | 2898 | const struct snd_usb_audio_quirk *quirk) |
2901 | { | 2899 | { |
2902 | static const struct audioformat ua1000_format = { | 2900 | static const struct audioformat ua1000_format = { |
2903 | .format = SNDRV_PCM_FORMAT_S32_LE, | 2901 | .format = SNDRV_PCM_FORMAT_S32_LE, |
@@ -2944,16 +2942,16 @@ static int create_ua1000_quirk(snd_usb_audio_t *chip, | |||
2944 | return 0; | 2942 | return 0; |
2945 | } | 2943 | } |
2946 | 2944 | ||
2947 | static int snd_usb_create_quirk(snd_usb_audio_t *chip, | 2945 | static int snd_usb_create_quirk(struct snd_usb_audio *chip, |
2948 | struct usb_interface *iface, | 2946 | struct usb_interface *iface, |
2949 | const snd_usb_audio_quirk_t *quirk); | 2947 | const struct snd_usb_audio_quirk *quirk); |
2950 | 2948 | ||
2951 | /* | 2949 | /* |
2952 | * handle the quirks for the contained interfaces | 2950 | * handle the quirks for the contained interfaces |
2953 | */ | 2951 | */ |
2954 | static int create_composite_quirk(snd_usb_audio_t *chip, | 2952 | static int create_composite_quirk(struct snd_usb_audio *chip, |
2955 | struct usb_interface *iface, | 2953 | struct usb_interface *iface, |
2956 | const snd_usb_audio_quirk_t *quirk) | 2954 | const struct snd_usb_audio_quirk *quirk) |
2957 | { | 2955 | { |
2958 | int probed_ifnum = get_iface_desc(iface->altsetting)->bInterfaceNumber; | 2956 | int probed_ifnum = get_iface_desc(iface->altsetting)->bInterfaceNumber; |
2959 | int err; | 2957 | int err; |
@@ -2974,9 +2972,9 @@ static int create_composite_quirk(snd_usb_audio_t *chip, | |||
2974 | return 0; | 2972 | return 0; |
2975 | } | 2973 | } |
2976 | 2974 | ||
2977 | static int ignore_interface_quirk(snd_usb_audio_t *chip, | 2975 | static int ignore_interface_quirk(struct snd_usb_audio *chip, |
2978 | struct usb_interface *iface, | 2976 | struct usb_interface *iface, |
2979 | const snd_usb_audio_quirk_t *quirk) | 2977 | const struct snd_usb_audio_quirk *quirk) |
2980 | { | 2978 | { |
2981 | return 0; | 2979 | return 0; |
2982 | } | 2980 | } |
@@ -3039,12 +3037,12 @@ static int snd_usb_audigy2nx_boot_quirk(struct usb_device *dev) | |||
3039 | * after this. | 3037 | * after this. |
3040 | * returns a negative value at error. | 3038 | * returns a negative value at error. |
3041 | */ | 3039 | */ |
3042 | static int snd_usb_create_quirk(snd_usb_audio_t *chip, | 3040 | static int snd_usb_create_quirk(struct snd_usb_audio *chip, |
3043 | struct usb_interface *iface, | 3041 | struct usb_interface *iface, |
3044 | const snd_usb_audio_quirk_t *quirk) | 3042 | const struct snd_usb_audio_quirk *quirk) |
3045 | { | 3043 | { |
3046 | typedef int (*quirk_func_t)(snd_usb_audio_t *, struct usb_interface *, | 3044 | typedef int (*quirk_func_t)(struct snd_usb_audio *, struct usb_interface *, |
3047 | const snd_usb_audio_quirk_t *); | 3045 | const struct snd_usb_audio_quirk *); |
3048 | static const quirk_func_t quirk_funcs[] = { | 3046 | static const quirk_func_t quirk_funcs[] = { |
3049 | [QUIRK_IGNORE_INTERFACE] = ignore_interface_quirk, | 3047 | [QUIRK_IGNORE_INTERFACE] = ignore_interface_quirk, |
3050 | [QUIRK_COMPOSITE] = create_composite_quirk, | 3048 | [QUIRK_COMPOSITE] = create_composite_quirk, |
@@ -3074,25 +3072,25 @@ static int snd_usb_create_quirk(snd_usb_audio_t *chip, | |||
3074 | /* | 3072 | /* |
3075 | * common proc files to show the usb device info | 3073 | * common proc files to show the usb device info |
3076 | */ | 3074 | */ |
3077 | static void proc_audio_usbbus_read(snd_info_entry_t *entry, snd_info_buffer_t *buffer) | 3075 | static void proc_audio_usbbus_read(struct snd_info_entry *entry, struct snd_info_buffer *buffer) |
3078 | { | 3076 | { |
3079 | snd_usb_audio_t *chip = entry->private_data; | 3077 | struct snd_usb_audio *chip = entry->private_data; |
3080 | if (! chip->shutdown) | 3078 | if (! chip->shutdown) |
3081 | snd_iprintf(buffer, "%03d/%03d\n", chip->dev->bus->busnum, chip->dev->devnum); | 3079 | snd_iprintf(buffer, "%03d/%03d\n", chip->dev->bus->busnum, chip->dev->devnum); |
3082 | } | 3080 | } |
3083 | 3081 | ||
3084 | static void proc_audio_usbid_read(snd_info_entry_t *entry, snd_info_buffer_t *buffer) | 3082 | static void proc_audio_usbid_read(struct snd_info_entry *entry, struct snd_info_buffer *buffer) |
3085 | { | 3083 | { |
3086 | snd_usb_audio_t *chip = entry->private_data; | 3084 | struct snd_usb_audio *chip = entry->private_data; |
3087 | if (! chip->shutdown) | 3085 | if (! chip->shutdown) |
3088 | snd_iprintf(buffer, "%04x:%04x\n", | 3086 | snd_iprintf(buffer, "%04x:%04x\n", |
3089 | USB_ID_VENDOR(chip->usb_id), | 3087 | USB_ID_VENDOR(chip->usb_id), |
3090 | USB_ID_PRODUCT(chip->usb_id)); | 3088 | USB_ID_PRODUCT(chip->usb_id)); |
3091 | } | 3089 | } |
3092 | 3090 | ||
3093 | static void snd_usb_audio_create_proc(snd_usb_audio_t *chip) | 3091 | static void snd_usb_audio_create_proc(struct snd_usb_audio *chip) |
3094 | { | 3092 | { |
3095 | snd_info_entry_t *entry; | 3093 | struct snd_info_entry *entry; |
3096 | if (! snd_card_proc_new(chip->card, "usbbus", &entry)) | 3094 | if (! snd_card_proc_new(chip->card, "usbbus", &entry)) |
3097 | snd_info_set_text_ops(entry, chip, 1024, proc_audio_usbbus_read); | 3095 | snd_info_set_text_ops(entry, chip, 1024, proc_audio_usbbus_read); |
3098 | if (! snd_card_proc_new(chip->card, "usbid", &entry)) | 3096 | if (! snd_card_proc_new(chip->card, "usbid", &entry)) |
@@ -3106,15 +3104,15 @@ static void snd_usb_audio_create_proc(snd_usb_audio_t *chip) | |||
3106 | * | 3104 | * |
3107 | */ | 3105 | */ |
3108 | 3106 | ||
3109 | static int snd_usb_audio_free(snd_usb_audio_t *chip) | 3107 | static int snd_usb_audio_free(struct snd_usb_audio *chip) |
3110 | { | 3108 | { |
3111 | kfree(chip); | 3109 | kfree(chip); |
3112 | return 0; | 3110 | return 0; |
3113 | } | 3111 | } |
3114 | 3112 | ||
3115 | static int snd_usb_audio_dev_free(snd_device_t *device) | 3113 | static int snd_usb_audio_dev_free(struct snd_device *device) |
3116 | { | 3114 | { |
3117 | snd_usb_audio_t *chip = device->device_data; | 3115 | struct snd_usb_audio *chip = device->device_data; |
3118 | return snd_usb_audio_free(chip); | 3116 | return snd_usb_audio_free(chip); |
3119 | } | 3117 | } |
3120 | 3118 | ||
@@ -3123,14 +3121,14 @@ static int snd_usb_audio_dev_free(snd_device_t *device) | |||
3123 | * create a chip instance and set its names. | 3121 | * create a chip instance and set its names. |
3124 | */ | 3122 | */ |
3125 | static int snd_usb_audio_create(struct usb_device *dev, int idx, | 3123 | static int snd_usb_audio_create(struct usb_device *dev, int idx, |
3126 | const snd_usb_audio_quirk_t *quirk, | 3124 | const struct snd_usb_audio_quirk *quirk, |
3127 | snd_usb_audio_t **rchip) | 3125 | struct snd_usb_audio **rchip) |
3128 | { | 3126 | { |
3129 | snd_card_t *card; | 3127 | struct snd_card *card; |
3130 | snd_usb_audio_t *chip; | 3128 | struct snd_usb_audio *chip; |
3131 | int err, len; | 3129 | int err, len; |
3132 | char component[14]; | 3130 | char component[14]; |
3133 | static snd_device_ops_t ops = { | 3131 | static struct snd_device_ops ops = { |
3134 | .dev_free = snd_usb_audio_dev_free, | 3132 | .dev_free = snd_usb_audio_dev_free, |
3135 | }; | 3133 | }; |
3136 | 3134 | ||
@@ -3234,9 +3232,9 @@ static void *snd_usb_audio_probe(struct usb_device *dev, | |||
3234 | struct usb_interface *intf, | 3232 | struct usb_interface *intf, |
3235 | const struct usb_device_id *usb_id) | 3233 | const struct usb_device_id *usb_id) |
3236 | { | 3234 | { |
3237 | const snd_usb_audio_quirk_t *quirk = (const snd_usb_audio_quirk_t *)usb_id->driver_info; | 3235 | const struct snd_usb_audio_quirk *quirk = (const struct snd_usb_audio_quirk *)usb_id->driver_info; |
3238 | int i, err; | 3236 | int i, err; |
3239 | snd_usb_audio_t *chip; | 3237 | struct snd_usb_audio *chip; |
3240 | struct usb_host_interface *alts; | 3238 | struct usb_host_interface *alts; |
3241 | int ifnum; | 3239 | int ifnum; |
3242 | u32 id; | 3240 | u32 id; |
@@ -3337,8 +3335,8 @@ static void *snd_usb_audio_probe(struct usb_device *dev, | |||
3337 | */ | 3335 | */ |
3338 | static void snd_usb_audio_disconnect(struct usb_device *dev, void *ptr) | 3336 | static void snd_usb_audio_disconnect(struct usb_device *dev, void *ptr) |
3339 | { | 3337 | { |
3340 | snd_usb_audio_t *chip; | 3338 | struct snd_usb_audio *chip; |
3341 | snd_card_t *card; | 3339 | struct snd_card *card; |
3342 | struct list_head *p; | 3340 | struct list_head *p; |
3343 | 3341 | ||
3344 | if (ptr == (void *)-1L) | 3342 | if (ptr == (void *)-1L) |