diff options
Diffstat (limited to 'sound/pci/es1938.c')
-rw-r--r-- | sound/pci/es1938.c | 320 |
1 files changed, 173 insertions, 147 deletions
diff --git a/sound/pci/es1938.c b/sound/pci/es1938.c index d05c3d2b330c..577877dad2eb 100644 --- a/sound/pci/es1938.c +++ b/sound/pci/es1938.c | |||
@@ -191,11 +191,9 @@ MODULE_PARM_DESC(enable, "Enable ESS Solo-1 soundcard."); | |||
191 | 191 | ||
192 | */ | 192 | */ |
193 | 193 | ||
194 | typedef struct _snd_es1938 es1938_t; | ||
195 | |||
196 | #define SAVED_REG_SIZE 32 /* max. number of registers to save */ | 194 | #define SAVED_REG_SIZE 32 /* max. number of registers to save */ |
197 | 195 | ||
198 | struct _snd_es1938 { | 196 | struct es1938 { |
199 | int irq; | 197 | int irq; |
200 | 198 | ||
201 | unsigned long io_port; | 199 | unsigned long io_port; |
@@ -208,19 +206,18 @@ struct _snd_es1938 { | |||
208 | unsigned char irqmask; | 206 | unsigned char irqmask; |
209 | unsigned char revision; | 207 | unsigned char revision; |
210 | 208 | ||
211 | snd_kcontrol_t *hw_volume; | 209 | struct snd_kcontrol *hw_volume; |
212 | snd_kcontrol_t *hw_switch; | 210 | struct snd_kcontrol *hw_switch; |
213 | snd_kcontrol_t *master_volume; | 211 | struct snd_kcontrol *master_volume; |
214 | snd_kcontrol_t *master_switch; | 212 | struct snd_kcontrol *master_switch; |
215 | 213 | ||
216 | struct pci_dev *pci; | 214 | struct pci_dev *pci; |
217 | snd_card_t *card; | 215 | struct snd_card *card; |
218 | snd_pcm_t *pcm; | 216 | struct snd_pcm *pcm; |
219 | snd_pcm_substream_t *capture_substream; | 217 | struct snd_pcm_substream *capture_substream; |
220 | snd_pcm_substream_t *playback1_substream; | 218 | struct snd_pcm_substream *playback1_substream; |
221 | snd_pcm_substream_t *playback2_substream; | 219 | struct snd_pcm_substream *playback2_substream; |
222 | snd_kmixer_t *mixer; | 220 | struct snd_rawmidi *rmidi; |
223 | snd_rawmidi_t *rmidi; | ||
224 | 221 | ||
225 | unsigned int dma1_size; | 222 | unsigned int dma1_size; |
226 | unsigned int dma2_size; | 223 | unsigned int dma2_size; |
@@ -232,7 +229,7 @@ struct _snd_es1938 { | |||
232 | 229 | ||
233 | spinlock_t reg_lock; | 230 | spinlock_t reg_lock; |
234 | spinlock_t mixer_lock; | 231 | spinlock_t mixer_lock; |
235 | snd_info_entry_t *proc_entry; | 232 | struct snd_info_entry *proc_entry; |
236 | 233 | ||
237 | #ifdef SUPPORT_JOYSTICK | 234 | #ifdef SUPPORT_JOYSTICK |
238 | struct gameport *gameport; | 235 | struct gameport *gameport; |
@@ -259,7 +256,7 @@ MODULE_DEVICE_TABLE(pci, snd_es1938_ids); | |||
259 | /* ----------------------------------------------------------------- | 256 | /* ----------------------------------------------------------------- |
260 | * Write to a mixer register | 257 | * Write to a mixer register |
261 | * -----------------------------------------------------------------*/ | 258 | * -----------------------------------------------------------------*/ |
262 | static void snd_es1938_mixer_write(es1938_t *chip, unsigned char reg, unsigned char val) | 259 | static void snd_es1938_mixer_write(struct es1938 *chip, unsigned char reg, unsigned char val) |
263 | { | 260 | { |
264 | unsigned long flags; | 261 | unsigned long flags; |
265 | spin_lock_irqsave(&chip->mixer_lock, flags); | 262 | spin_lock_irqsave(&chip->mixer_lock, flags); |
@@ -274,7 +271,7 @@ static void snd_es1938_mixer_write(es1938_t *chip, unsigned char reg, unsigned c | |||
274 | /* ----------------------------------------------------------------- | 271 | /* ----------------------------------------------------------------- |
275 | * Read from a mixer register | 272 | * Read from a mixer register |
276 | * -----------------------------------------------------------------*/ | 273 | * -----------------------------------------------------------------*/ |
277 | static int snd_es1938_mixer_read(es1938_t *chip, unsigned char reg) | 274 | static int snd_es1938_mixer_read(struct es1938 *chip, unsigned char reg) |
278 | { | 275 | { |
279 | int data; | 276 | int data; |
280 | unsigned long flags; | 277 | unsigned long flags; |
@@ -291,7 +288,8 @@ static int snd_es1938_mixer_read(es1938_t *chip, unsigned char reg) | |||
291 | /* ----------------------------------------------------------------- | 288 | /* ----------------------------------------------------------------- |
292 | * Write to some bits of a mixer register (return old value) | 289 | * Write to some bits of a mixer register (return old value) |
293 | * -----------------------------------------------------------------*/ | 290 | * -----------------------------------------------------------------*/ |
294 | static int snd_es1938_mixer_bits(es1938_t *chip, unsigned char reg, unsigned char mask, unsigned char val) | 291 | static int snd_es1938_mixer_bits(struct es1938 *chip, unsigned char reg, |
292 | unsigned char mask, unsigned char val) | ||
295 | { | 293 | { |
296 | unsigned long flags; | 294 | unsigned long flags; |
297 | unsigned char old, new, oval; | 295 | unsigned char old, new, oval; |
@@ -314,7 +312,7 @@ static int snd_es1938_mixer_bits(es1938_t *chip, unsigned char reg, unsigned cha | |||
314 | /* ----------------------------------------------------------------- | 312 | /* ----------------------------------------------------------------- |
315 | * Write command to Controller Registers | 313 | * Write command to Controller Registers |
316 | * -----------------------------------------------------------------*/ | 314 | * -----------------------------------------------------------------*/ |
317 | static void snd_es1938_write_cmd(es1938_t *chip, unsigned char cmd) | 315 | static void snd_es1938_write_cmd(struct es1938 *chip, unsigned char cmd) |
318 | { | 316 | { |
319 | int i; | 317 | int i; |
320 | unsigned char v; | 318 | unsigned char v; |
@@ -330,7 +328,7 @@ static void snd_es1938_write_cmd(es1938_t *chip, unsigned char cmd) | |||
330 | /* ----------------------------------------------------------------- | 328 | /* ----------------------------------------------------------------- |
331 | * Read the Read Data Buffer | 329 | * Read the Read Data Buffer |
332 | * -----------------------------------------------------------------*/ | 330 | * -----------------------------------------------------------------*/ |
333 | static int snd_es1938_get_byte(es1938_t *chip) | 331 | static int snd_es1938_get_byte(struct es1938 *chip) |
334 | { | 332 | { |
335 | int i; | 333 | int i; |
336 | unsigned char v; | 334 | unsigned char v; |
@@ -344,7 +342,7 @@ static int snd_es1938_get_byte(es1938_t *chip) | |||
344 | /* ----------------------------------------------------------------- | 342 | /* ----------------------------------------------------------------- |
345 | * Write value cmd register | 343 | * Write value cmd register |
346 | * -----------------------------------------------------------------*/ | 344 | * -----------------------------------------------------------------*/ |
347 | static void snd_es1938_write(es1938_t *chip, unsigned char reg, unsigned char val) | 345 | static void snd_es1938_write(struct es1938 *chip, unsigned char reg, unsigned char val) |
348 | { | 346 | { |
349 | unsigned long flags; | 347 | unsigned long flags; |
350 | spin_lock_irqsave(&chip->reg_lock, flags); | 348 | spin_lock_irqsave(&chip->reg_lock, flags); |
@@ -359,7 +357,7 @@ static void snd_es1938_write(es1938_t *chip, unsigned char reg, unsigned char va | |||
359 | /* ----------------------------------------------------------------- | 357 | /* ----------------------------------------------------------------- |
360 | * Read data from cmd register and return it | 358 | * Read data from cmd register and return it |
361 | * -----------------------------------------------------------------*/ | 359 | * -----------------------------------------------------------------*/ |
362 | static unsigned char snd_es1938_read(es1938_t *chip, unsigned char reg) | 360 | static unsigned char snd_es1938_read(struct es1938 *chip, unsigned char reg) |
363 | { | 361 | { |
364 | unsigned char val; | 362 | unsigned char val; |
365 | unsigned long flags; | 363 | unsigned long flags; |
@@ -377,7 +375,8 @@ static unsigned char snd_es1938_read(es1938_t *chip, unsigned char reg) | |||
377 | /* ----------------------------------------------------------------- | 375 | /* ----------------------------------------------------------------- |
378 | * Write data to cmd register and return old value | 376 | * Write data to cmd register and return old value |
379 | * -----------------------------------------------------------------*/ | 377 | * -----------------------------------------------------------------*/ |
380 | static int snd_es1938_bits(es1938_t *chip, unsigned char reg, unsigned char mask, unsigned char val) | 378 | static int snd_es1938_bits(struct es1938 *chip, unsigned char reg, unsigned char mask, |
379 | unsigned char val) | ||
381 | { | 380 | { |
382 | unsigned long flags; | 381 | unsigned long flags; |
383 | unsigned char old, new, oval; | 382 | unsigned char old, new, oval; |
@@ -402,7 +401,7 @@ static int snd_es1938_bits(es1938_t *chip, unsigned char reg, unsigned char mask | |||
402 | /* -------------------------------------------------------------------- | 401 | /* -------------------------------------------------------------------- |
403 | * Reset the chip | 402 | * Reset the chip |
404 | * --------------------------------------------------------------------*/ | 403 | * --------------------------------------------------------------------*/ |
405 | static void snd_es1938_reset(es1938_t *chip) | 404 | static void snd_es1938_reset(struct es1938 *chip) |
406 | { | 405 | { |
407 | int i; | 406 | int i; |
408 | 407 | ||
@@ -441,13 +440,13 @@ static void snd_es1938_reset(es1938_t *chip) | |||
441 | /* -------------------------------------------------------------------- | 440 | /* -------------------------------------------------------------------- |
442 | * Reset the FIFOs | 441 | * Reset the FIFOs |
443 | * --------------------------------------------------------------------*/ | 442 | * --------------------------------------------------------------------*/ |
444 | static void snd_es1938_reset_fifo(es1938_t *chip) | 443 | static void snd_es1938_reset_fifo(struct es1938 *chip) |
445 | { | 444 | { |
446 | outb(2, SLSB_REG(chip, RESET)); | 445 | outb(2, SLSB_REG(chip, RESET)); |
447 | outb(0, SLSB_REG(chip, RESET)); | 446 | outb(0, SLSB_REG(chip, RESET)); |
448 | } | 447 | } |
449 | 448 | ||
450 | static ratnum_t clocks[2] = { | 449 | static struct snd_ratnum clocks[2] = { |
451 | { | 450 | { |
452 | .num = 793800, | 451 | .num = 793800, |
453 | .den_min = 1, | 452 | .den_min = 1, |
@@ -462,18 +461,18 @@ static ratnum_t clocks[2] = { | |||
462 | } | 461 | } |
463 | }; | 462 | }; |
464 | 463 | ||
465 | static snd_pcm_hw_constraint_ratnums_t hw_constraints_clocks = { | 464 | static struct snd_pcm_hw_constraint_ratnums hw_constraints_clocks = { |
466 | .nrats = 2, | 465 | .nrats = 2, |
467 | .rats = clocks, | 466 | .rats = clocks, |
468 | }; | 467 | }; |
469 | 468 | ||
470 | 469 | ||
471 | static void snd_es1938_rate_set(es1938_t *chip, | 470 | static void snd_es1938_rate_set(struct es1938 *chip, |
472 | snd_pcm_substream_t *substream, | 471 | struct snd_pcm_substream *substream, |
473 | int mode) | 472 | int mode) |
474 | { | 473 | { |
475 | unsigned int bits, div0; | 474 | unsigned int bits, div0; |
476 | snd_pcm_runtime_t *runtime = substream->runtime; | 475 | struct snd_pcm_runtime *runtime = substream->runtime; |
477 | if (runtime->rate_num == clocks[0].num) | 476 | if (runtime->rate_num == clocks[0].num) |
478 | bits = 128 - runtime->rate_den; | 477 | bits = 128 - runtime->rate_den; |
479 | else | 478 | else |
@@ -495,7 +494,7 @@ static void snd_es1938_rate_set(es1938_t *chip, | |||
495 | * Configure Solo1 builtin DMA Controller | 494 | * Configure Solo1 builtin DMA Controller |
496 | * --------------------------------------------------------------------*/ | 495 | * --------------------------------------------------------------------*/ |
497 | 496 | ||
498 | static void snd_es1938_playback1_setdma(es1938_t *chip) | 497 | static void snd_es1938_playback1_setdma(struct es1938 *chip) |
499 | { | 498 | { |
500 | outb(0x00, SLIO_REG(chip, AUDIO2MODE)); | 499 | outb(0x00, SLIO_REG(chip, AUDIO2MODE)); |
501 | outl(chip->dma2_start, SLIO_REG(chip, AUDIO2DMAADDR)); | 500 | outl(chip->dma2_start, SLIO_REG(chip, AUDIO2DMAADDR)); |
@@ -503,7 +502,7 @@ static void snd_es1938_playback1_setdma(es1938_t *chip) | |||
503 | outw(chip->dma2_size, SLIO_REG(chip, AUDIO2DMACOUNT)); | 502 | outw(chip->dma2_size, SLIO_REG(chip, AUDIO2DMACOUNT)); |
504 | } | 503 | } |
505 | 504 | ||
506 | static void snd_es1938_playback2_setdma(es1938_t *chip) | 505 | static void snd_es1938_playback2_setdma(struct es1938 *chip) |
507 | { | 506 | { |
508 | /* Enable DMA controller */ | 507 | /* Enable DMA controller */ |
509 | outb(0xc4, SLDM_REG(chip, DMACOMMAND)); | 508 | outb(0xc4, SLDM_REG(chip, DMACOMMAND)); |
@@ -518,7 +517,7 @@ static void snd_es1938_playback2_setdma(es1938_t *chip) | |||
518 | outb(0, SLDM_REG(chip, DMAMASK)); | 517 | outb(0, SLDM_REG(chip, DMAMASK)); |
519 | } | 518 | } |
520 | 519 | ||
521 | static void snd_es1938_capture_setdma(es1938_t *chip) | 520 | static void snd_es1938_capture_setdma(struct es1938 *chip) |
522 | { | 521 | { |
523 | /* Enable DMA controller */ | 522 | /* Enable DMA controller */ |
524 | outb(0xc4, SLDM_REG(chip, DMACOMMAND)); | 523 | outb(0xc4, SLDM_REG(chip, DMACOMMAND)); |
@@ -538,10 +537,10 @@ static void snd_es1938_capture_setdma(es1938_t *chip) | |||
538 | * *** PCM part *** | 537 | * *** PCM part *** |
539 | */ | 538 | */ |
540 | 539 | ||
541 | static int snd_es1938_capture_trigger(snd_pcm_substream_t * substream, | 540 | static int snd_es1938_capture_trigger(struct snd_pcm_substream *substream, |
542 | int cmd) | 541 | int cmd) |
543 | { | 542 | { |
544 | es1938_t *chip = snd_pcm_substream_chip(substream); | 543 | struct es1938 *chip = snd_pcm_substream_chip(substream); |
545 | int val; | 544 | int val; |
546 | switch (cmd) { | 545 | switch (cmd) { |
547 | case SNDRV_PCM_TRIGGER_START: | 546 | case SNDRV_PCM_TRIGGER_START: |
@@ -561,10 +560,10 @@ static int snd_es1938_capture_trigger(snd_pcm_substream_t * substream, | |||
561 | return 0; | 560 | return 0; |
562 | } | 561 | } |
563 | 562 | ||
564 | static int snd_es1938_playback1_trigger(snd_pcm_substream_t * substream, | 563 | static int snd_es1938_playback1_trigger(struct snd_pcm_substream *substream, |
565 | int cmd) | 564 | int cmd) |
566 | { | 565 | { |
567 | es1938_t *chip = snd_pcm_substream_chip(substream); | 566 | struct es1938 *chip = snd_pcm_substream_chip(substream); |
568 | switch (cmd) { | 567 | switch (cmd) { |
569 | case SNDRV_PCM_TRIGGER_START: | 568 | case SNDRV_PCM_TRIGGER_START: |
570 | case SNDRV_PCM_TRIGGER_RESUME: | 569 | case SNDRV_PCM_TRIGGER_RESUME: |
@@ -591,10 +590,10 @@ static int snd_es1938_playback1_trigger(snd_pcm_substream_t * substream, | |||
591 | return 0; | 590 | return 0; |
592 | } | 591 | } |
593 | 592 | ||
594 | static int snd_es1938_playback2_trigger(snd_pcm_substream_t * substream, | 593 | static int snd_es1938_playback2_trigger(struct snd_pcm_substream *substream, |
595 | int cmd) | 594 | int cmd) |
596 | { | 595 | { |
597 | es1938_t *chip = snd_pcm_substream_chip(substream); | 596 | struct es1938 *chip = snd_pcm_substream_chip(substream); |
598 | int val; | 597 | int val; |
599 | switch (cmd) { | 598 | switch (cmd) { |
600 | case SNDRV_PCM_TRIGGER_START: | 599 | case SNDRV_PCM_TRIGGER_START: |
@@ -614,7 +613,7 @@ static int snd_es1938_playback2_trigger(snd_pcm_substream_t * substream, | |||
614 | return 0; | 613 | return 0; |
615 | } | 614 | } |
616 | 615 | ||
617 | static int snd_es1938_playback_trigger(snd_pcm_substream_t *substream, | 616 | static int snd_es1938_playback_trigger(struct snd_pcm_substream *substream, |
618 | int cmd) | 617 | int cmd) |
619 | { | 618 | { |
620 | switch (substream->number) { | 619 | switch (substream->number) { |
@@ -630,10 +629,10 @@ static int snd_es1938_playback_trigger(snd_pcm_substream_t *substream, | |||
630 | /* -------------------------------------------------------------------- | 629 | /* -------------------------------------------------------------------- |
631 | * First channel for Extended Mode Audio 1 ADC Operation | 630 | * First channel for Extended Mode Audio 1 ADC Operation |
632 | * --------------------------------------------------------------------*/ | 631 | * --------------------------------------------------------------------*/ |
633 | static int snd_es1938_capture_prepare(snd_pcm_substream_t * substream) | 632 | static int snd_es1938_capture_prepare(struct snd_pcm_substream *substream) |
634 | { | 633 | { |
635 | es1938_t *chip = snd_pcm_substream_chip(substream); | 634 | struct es1938 *chip = snd_pcm_substream_chip(substream); |
636 | snd_pcm_runtime_t *runtime = substream->runtime; | 635 | struct snd_pcm_runtime *runtime = substream->runtime; |
637 | int u, is8, mono; | 636 | int u, is8, mono; |
638 | unsigned int size = snd_pcm_lib_buffer_bytes(substream); | 637 | unsigned int size = snd_pcm_lib_buffer_bytes(substream); |
639 | unsigned int count = snd_pcm_lib_period_bytes(substream); | 638 | unsigned int count = snd_pcm_lib_period_bytes(substream); |
@@ -678,10 +677,10 @@ static int snd_es1938_capture_prepare(snd_pcm_substream_t * substream) | |||
678 | /* ------------------------------------------------------------------------------ | 677 | /* ------------------------------------------------------------------------------ |
679 | * Second Audio channel DAC Operation | 678 | * Second Audio channel DAC Operation |
680 | * ------------------------------------------------------------------------------*/ | 679 | * ------------------------------------------------------------------------------*/ |
681 | static int snd_es1938_playback1_prepare(snd_pcm_substream_t * substream) | 680 | static int snd_es1938_playback1_prepare(struct snd_pcm_substream *substream) |
682 | { | 681 | { |
683 | es1938_t *chip = snd_pcm_substream_chip(substream); | 682 | struct es1938 *chip = snd_pcm_substream_chip(substream); |
684 | snd_pcm_runtime_t *runtime = substream->runtime; | 683 | struct snd_pcm_runtime *runtime = substream->runtime; |
685 | int u, is8, mono; | 684 | int u, is8, mono; |
686 | unsigned int size = snd_pcm_lib_buffer_bytes(substream); | 685 | unsigned int size = snd_pcm_lib_buffer_bytes(substream); |
687 | unsigned int count = snd_pcm_lib_period_bytes(substream); | 686 | unsigned int count = snd_pcm_lib_period_bytes(substream); |
@@ -706,7 +705,8 @@ static int snd_es1938_playback1_prepare(snd_pcm_substream_t * substream) | |||
706 | snd_es1938_mixer_write(chip, ESSSB_IREG_AUDIO2TCOUNTH, count >> 8); | 705 | snd_es1938_mixer_write(chip, ESSSB_IREG_AUDIO2TCOUNTH, count >> 8); |
707 | 706 | ||
708 | /* initialize and configure Audio 2 DAC */ | 707 | /* initialize and configure Audio 2 DAC */ |
709 | snd_es1938_mixer_write(chip, ESSSB_IREG_AUDIO2CONTROL2, 0x40 | (u ? 0 : 4) | (mono ? 0 : 2) | (is8 ? 0 : 1)); | 708 | snd_es1938_mixer_write(chip, ESSSB_IREG_AUDIO2CONTROL2, 0x40 | (u ? 0 : 4) | |
709 | (mono ? 0 : 2) | (is8 ? 0 : 1)); | ||
710 | 710 | ||
711 | /* program DMA */ | 711 | /* program DMA */ |
712 | snd_es1938_playback1_setdma(chip); | 712 | snd_es1938_playback1_setdma(chip); |
@@ -714,10 +714,10 @@ static int snd_es1938_playback1_prepare(snd_pcm_substream_t * substream) | |||
714 | return 0; | 714 | return 0; |
715 | } | 715 | } |
716 | 716 | ||
717 | static int snd_es1938_playback2_prepare(snd_pcm_substream_t * substream) | 717 | static int snd_es1938_playback2_prepare(struct snd_pcm_substream *substream) |
718 | { | 718 | { |
719 | es1938_t *chip = snd_pcm_substream_chip(substream); | 719 | struct es1938 *chip = snd_pcm_substream_chip(substream); |
720 | snd_pcm_runtime_t *runtime = substream->runtime; | 720 | struct snd_pcm_runtime *runtime = substream->runtime; |
721 | int u, is8, mono; | 721 | int u, is8, mono; |
722 | unsigned int size = snd_pcm_lib_buffer_bytes(substream); | 722 | unsigned int size = snd_pcm_lib_buffer_bytes(substream); |
723 | unsigned int count = snd_pcm_lib_period_bytes(substream); | 723 | unsigned int count = snd_pcm_lib_period_bytes(substream); |
@@ -756,7 +756,7 @@ static int snd_es1938_playback2_prepare(snd_pcm_substream_t * substream) | |||
756 | return 0; | 756 | return 0; |
757 | } | 757 | } |
758 | 758 | ||
759 | static int snd_es1938_playback_prepare(snd_pcm_substream_t *substream) | 759 | static int snd_es1938_playback_prepare(struct snd_pcm_substream *substream) |
760 | { | 760 | { |
761 | switch (substream->number) { | 761 | switch (substream->number) { |
762 | case 0: | 762 | case 0: |
@@ -768,9 +768,9 @@ static int snd_es1938_playback_prepare(snd_pcm_substream_t *substream) | |||
768 | return -EINVAL; | 768 | return -EINVAL; |
769 | } | 769 | } |
770 | 770 | ||
771 | static snd_pcm_uframes_t snd_es1938_capture_pointer(snd_pcm_substream_t * substream) | 771 | static snd_pcm_uframes_t snd_es1938_capture_pointer(struct snd_pcm_substream *substream) |
772 | { | 772 | { |
773 | es1938_t *chip = snd_pcm_substream_chip(substream); | 773 | struct es1938 *chip = snd_pcm_substream_chip(substream); |
774 | size_t ptr; | 774 | size_t ptr; |
775 | size_t old, new; | 775 | size_t old, new; |
776 | #if 1 | 776 | #if 1 |
@@ -785,9 +785,9 @@ static snd_pcm_uframes_t snd_es1938_capture_pointer(snd_pcm_substream_t * substr | |||
785 | return ptr >> chip->dma1_shift; | 785 | return ptr >> chip->dma1_shift; |
786 | } | 786 | } |
787 | 787 | ||
788 | static snd_pcm_uframes_t snd_es1938_playback1_pointer(snd_pcm_substream_t * substream) | 788 | static snd_pcm_uframes_t snd_es1938_playback1_pointer(struct snd_pcm_substream *substream) |
789 | { | 789 | { |
790 | es1938_t *chip = snd_pcm_substream_chip(substream); | 790 | struct es1938 *chip = snd_pcm_substream_chip(substream); |
791 | size_t ptr; | 791 | size_t ptr; |
792 | #if 1 | 792 | #if 1 |
793 | ptr = chip->dma2_size - inw(SLIO_REG(chip, AUDIO2DMACOUNT)); | 793 | ptr = chip->dma2_size - inw(SLIO_REG(chip, AUDIO2DMACOUNT)); |
@@ -797,9 +797,9 @@ static snd_pcm_uframes_t snd_es1938_playback1_pointer(snd_pcm_substream_t * subs | |||
797 | return ptr >> chip->dma2_shift; | 797 | return ptr >> chip->dma2_shift; |
798 | } | 798 | } |
799 | 799 | ||
800 | static snd_pcm_uframes_t snd_es1938_playback2_pointer(snd_pcm_substream_t * substream) | 800 | static snd_pcm_uframes_t snd_es1938_playback2_pointer(struct snd_pcm_substream *substream) |
801 | { | 801 | { |
802 | es1938_t *chip = snd_pcm_substream_chip(substream); | 802 | struct es1938 *chip = snd_pcm_substream_chip(substream); |
803 | size_t ptr; | 803 | size_t ptr; |
804 | size_t old, new; | 804 | size_t old, new; |
805 | #if 1 | 805 | #if 1 |
@@ -814,7 +814,7 @@ static snd_pcm_uframes_t snd_es1938_playback2_pointer(snd_pcm_substream_t * subs | |||
814 | return ptr >> chip->dma1_shift; | 814 | return ptr >> chip->dma1_shift; |
815 | } | 815 | } |
816 | 816 | ||
817 | static snd_pcm_uframes_t snd_es1938_playback_pointer(snd_pcm_substream_t *substream) | 817 | static snd_pcm_uframes_t snd_es1938_playback_pointer(struct snd_pcm_substream *substream) |
818 | { | 818 | { |
819 | switch (substream->number) { | 819 | switch (substream->number) { |
820 | case 0: | 820 | case 0: |
@@ -826,14 +826,14 @@ static snd_pcm_uframes_t snd_es1938_playback_pointer(snd_pcm_substream_t *substr | |||
826 | return -EINVAL; | 826 | return -EINVAL; |
827 | } | 827 | } |
828 | 828 | ||
829 | static int snd_es1938_capture_copy(snd_pcm_substream_t *substream, | 829 | static int snd_es1938_capture_copy(struct snd_pcm_substream *substream, |
830 | int channel, | 830 | int channel, |
831 | snd_pcm_uframes_t pos, | 831 | snd_pcm_uframes_t pos, |
832 | void __user *dst, | 832 | void __user *dst, |
833 | snd_pcm_uframes_t count) | 833 | snd_pcm_uframes_t count) |
834 | { | 834 | { |
835 | snd_pcm_runtime_t *runtime = substream->runtime; | 835 | struct snd_pcm_runtime *runtime = substream->runtime; |
836 | es1938_t *chip = snd_pcm_substream_chip(substream); | 836 | struct es1938 *chip = snd_pcm_substream_chip(substream); |
837 | pos <<= chip->dma1_shift; | 837 | pos <<= chip->dma1_shift; |
838 | count <<= chip->dma1_shift; | 838 | count <<= chip->dma1_shift; |
839 | snd_assert(pos + count <= chip->dma1_size, return -EINVAL); | 839 | snd_assert(pos + count <= chip->dma1_size, return -EINVAL); |
@@ -852,8 +852,8 @@ static int snd_es1938_capture_copy(snd_pcm_substream_t *substream, | |||
852 | /* | 852 | /* |
853 | * buffer management | 853 | * buffer management |
854 | */ | 854 | */ |
855 | static int snd_es1938_pcm_hw_params(snd_pcm_substream_t *substream, | 855 | static int snd_es1938_pcm_hw_params(struct snd_pcm_substream *substream, |
856 | snd_pcm_hw_params_t * hw_params) | 856 | struct snd_pcm_hw_params *hw_params) |
857 | 857 | ||
858 | { | 858 | { |
859 | int err; | 859 | int err; |
@@ -863,7 +863,7 @@ static int snd_es1938_pcm_hw_params(snd_pcm_substream_t *substream, | |||
863 | return 0; | 863 | return 0; |
864 | } | 864 | } |
865 | 865 | ||
866 | static int snd_es1938_pcm_hw_free(snd_pcm_substream_t *substream) | 866 | static int snd_es1938_pcm_hw_free(struct snd_pcm_substream *substream) |
867 | { | 867 | { |
868 | return snd_pcm_lib_free_pages(substream); | 868 | return snd_pcm_lib_free_pages(substream); |
869 | } | 869 | } |
@@ -871,11 +871,12 @@ static int snd_es1938_pcm_hw_free(snd_pcm_substream_t *substream) | |||
871 | /* ---------------------------------------------------------------------- | 871 | /* ---------------------------------------------------------------------- |
872 | * Audio1 Capture (ADC) | 872 | * Audio1 Capture (ADC) |
873 | * ----------------------------------------------------------------------*/ | 873 | * ----------------------------------------------------------------------*/ |
874 | static snd_pcm_hardware_t snd_es1938_capture = | 874 | static struct snd_pcm_hardware snd_es1938_capture = |
875 | { | 875 | { |
876 | .info = (SNDRV_PCM_INFO_INTERLEAVED | | 876 | .info = (SNDRV_PCM_INFO_INTERLEAVED | |
877 | SNDRV_PCM_INFO_BLOCK_TRANSFER), | 877 | SNDRV_PCM_INFO_BLOCK_TRANSFER), |
878 | .formats = SNDRV_PCM_FMTBIT_U8 | SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S8 | SNDRV_PCM_FMTBIT_U16_LE, | 878 | .formats = (SNDRV_PCM_FMTBIT_U8 | SNDRV_PCM_FMTBIT_S16_LE | |
879 | SNDRV_PCM_FMTBIT_S8 | SNDRV_PCM_FMTBIT_U16_LE), | ||
879 | .rates = SNDRV_PCM_RATE_CONTINUOUS | SNDRV_PCM_RATE_8000_48000, | 880 | .rates = SNDRV_PCM_RATE_CONTINUOUS | SNDRV_PCM_RATE_8000_48000, |
880 | .rate_min = 6000, | 881 | .rate_min = 6000, |
881 | .rate_max = 48000, | 882 | .rate_max = 48000, |
@@ -892,12 +893,13 @@ static snd_pcm_hardware_t snd_es1938_capture = | |||
892 | /* ----------------------------------------------------------------------- | 893 | /* ----------------------------------------------------------------------- |
893 | * Audio2 Playback (DAC) | 894 | * Audio2 Playback (DAC) |
894 | * -----------------------------------------------------------------------*/ | 895 | * -----------------------------------------------------------------------*/ |
895 | static snd_pcm_hardware_t snd_es1938_playback = | 896 | static struct snd_pcm_hardware snd_es1938_playback = |
896 | { | 897 | { |
897 | .info = (SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_INTERLEAVED | | 898 | .info = (SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_INTERLEAVED | |
898 | SNDRV_PCM_INFO_BLOCK_TRANSFER | | 899 | SNDRV_PCM_INFO_BLOCK_TRANSFER | |
899 | SNDRV_PCM_INFO_MMAP_VALID), | 900 | SNDRV_PCM_INFO_MMAP_VALID), |
900 | .formats = SNDRV_PCM_FMTBIT_U8 | SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S8 | SNDRV_PCM_FMTBIT_U16_LE, | 901 | .formats = (SNDRV_PCM_FMTBIT_U8 | SNDRV_PCM_FMTBIT_S16_LE | |
902 | SNDRV_PCM_FMTBIT_S8 | SNDRV_PCM_FMTBIT_U16_LE), | ||
901 | .rates = SNDRV_PCM_RATE_CONTINUOUS | SNDRV_PCM_RATE_8000_48000, | 903 | .rates = SNDRV_PCM_RATE_CONTINUOUS | SNDRV_PCM_RATE_8000_48000, |
902 | .rate_min = 6000, | 904 | .rate_min = 6000, |
903 | .rate_max = 48000, | 905 | .rate_max = 48000, |
@@ -911,10 +913,10 @@ static snd_pcm_hardware_t snd_es1938_playback = | |||
911 | .fifo_size = 256, | 913 | .fifo_size = 256, |
912 | }; | 914 | }; |
913 | 915 | ||
914 | static int snd_es1938_capture_open(snd_pcm_substream_t * substream) | 916 | static int snd_es1938_capture_open(struct snd_pcm_substream *substream) |
915 | { | 917 | { |
916 | es1938_t *chip = snd_pcm_substream_chip(substream); | 918 | struct es1938 *chip = snd_pcm_substream_chip(substream); |
917 | snd_pcm_runtime_t *runtime = substream->runtime; | 919 | struct snd_pcm_runtime *runtime = substream->runtime; |
918 | 920 | ||
919 | if (chip->playback2_substream) | 921 | if (chip->playback2_substream) |
920 | return -EAGAIN; | 922 | return -EAGAIN; |
@@ -926,10 +928,10 @@ static int snd_es1938_capture_open(snd_pcm_substream_t * substream) | |||
926 | return 0; | 928 | return 0; |
927 | } | 929 | } |
928 | 930 | ||
929 | static int snd_es1938_playback_open(snd_pcm_substream_t * substream) | 931 | static int snd_es1938_playback_open(struct snd_pcm_substream *substream) |
930 | { | 932 | { |
931 | es1938_t *chip = snd_pcm_substream_chip(substream); | 933 | struct es1938 *chip = snd_pcm_substream_chip(substream); |
932 | snd_pcm_runtime_t *runtime = substream->runtime; | 934 | struct snd_pcm_runtime *runtime = substream->runtime; |
933 | 935 | ||
934 | switch (substream->number) { | 936 | switch (substream->number) { |
935 | case 0: | 937 | case 0: |
@@ -951,17 +953,17 @@ static int snd_es1938_playback_open(snd_pcm_substream_t * substream) | |||
951 | return 0; | 953 | return 0; |
952 | } | 954 | } |
953 | 955 | ||
954 | static int snd_es1938_capture_close(snd_pcm_substream_t * substream) | 956 | static int snd_es1938_capture_close(struct snd_pcm_substream *substream) |
955 | { | 957 | { |
956 | es1938_t *chip = snd_pcm_substream_chip(substream); | 958 | struct es1938 *chip = snd_pcm_substream_chip(substream); |
957 | 959 | ||
958 | chip->capture_substream = NULL; | 960 | chip->capture_substream = NULL; |
959 | return 0; | 961 | return 0; |
960 | } | 962 | } |
961 | 963 | ||
962 | static int snd_es1938_playback_close(snd_pcm_substream_t * substream) | 964 | static int snd_es1938_playback_close(struct snd_pcm_substream *substream) |
963 | { | 965 | { |
964 | es1938_t *chip = snd_pcm_substream_chip(substream); | 966 | struct es1938 *chip = snd_pcm_substream_chip(substream); |
965 | 967 | ||
966 | switch (substream->number) { | 968 | switch (substream->number) { |
967 | case 0: | 969 | case 0: |
@@ -977,7 +979,7 @@ static int snd_es1938_playback_close(snd_pcm_substream_t * substream) | |||
977 | return 0; | 979 | return 0; |
978 | } | 980 | } |
979 | 981 | ||
980 | static snd_pcm_ops_t snd_es1938_playback_ops = { | 982 | static struct snd_pcm_ops snd_es1938_playback_ops = { |
981 | .open = snd_es1938_playback_open, | 983 | .open = snd_es1938_playback_open, |
982 | .close = snd_es1938_playback_close, | 984 | .close = snd_es1938_playback_close, |
983 | .ioctl = snd_pcm_lib_ioctl, | 985 | .ioctl = snd_pcm_lib_ioctl, |
@@ -988,7 +990,7 @@ static snd_pcm_ops_t snd_es1938_playback_ops = { | |||
988 | .pointer = snd_es1938_playback_pointer, | 990 | .pointer = snd_es1938_playback_pointer, |
989 | }; | 991 | }; |
990 | 992 | ||
991 | static snd_pcm_ops_t snd_es1938_capture_ops = { | 993 | static struct snd_pcm_ops snd_es1938_capture_ops = { |
992 | .open = snd_es1938_capture_open, | 994 | .open = snd_es1938_capture_open, |
993 | .close = snd_es1938_capture_close, | 995 | .close = snd_es1938_capture_close, |
994 | .ioctl = snd_pcm_lib_ioctl, | 996 | .ioctl = snd_pcm_lib_ioctl, |
@@ -1000,9 +1002,9 @@ static snd_pcm_ops_t snd_es1938_capture_ops = { | |||
1000 | .copy = snd_es1938_capture_copy, | 1002 | .copy = snd_es1938_capture_copy, |
1001 | }; | 1003 | }; |
1002 | 1004 | ||
1003 | static int __devinit snd_es1938_new_pcm(es1938_t *chip, int device) | 1005 | static int __devinit snd_es1938_new_pcm(struct es1938 *chip, int device) |
1004 | { | 1006 | { |
1005 | snd_pcm_t *pcm; | 1007 | struct snd_pcm *pcm; |
1006 | int err; | 1008 | int err; |
1007 | 1009 | ||
1008 | if ((err = snd_pcm_new(chip->card, "es-1938-1946", device, 2, 1, &pcm)) < 0) | 1010 | if ((err = snd_pcm_new(chip->card, "es-1938-1946", device, 2, 1, &pcm)) < 0) |
@@ -1026,7 +1028,8 @@ static int __devinit snd_es1938_new_pcm(es1938_t *chip, int device) | |||
1026 | * *** Mixer part *** | 1028 | * *** Mixer part *** |
1027 | */ | 1029 | */ |
1028 | 1030 | ||
1029 | static int snd_es1938_info_mux(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo) | 1031 | static int snd_es1938_info_mux(struct snd_kcontrol *kcontrol, |
1032 | struct snd_ctl_elem_info *uinfo) | ||
1030 | { | 1033 | { |
1031 | static char *texts[8] = { | 1034 | static char *texts[8] = { |
1032 | "Mic", "Mic Master", "CD", "AOUT", | 1035 | "Mic", "Mic Master", "CD", "AOUT", |
@@ -1042,16 +1045,18 @@ static int snd_es1938_info_mux(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * u | |||
1042 | return 0; | 1045 | return 0; |
1043 | } | 1046 | } |
1044 | 1047 | ||
1045 | static int snd_es1938_get_mux(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol) | 1048 | static int snd_es1938_get_mux(struct snd_kcontrol *kcontrol, |
1049 | struct snd_ctl_elem_value *ucontrol) | ||
1046 | { | 1050 | { |
1047 | es1938_t *chip = snd_kcontrol_chip(kcontrol); | 1051 | struct es1938 *chip = snd_kcontrol_chip(kcontrol); |
1048 | ucontrol->value.enumerated.item[0] = snd_es1938_mixer_read(chip, 0x1c) & 0x07; | 1052 | ucontrol->value.enumerated.item[0] = snd_es1938_mixer_read(chip, 0x1c) & 0x07; |
1049 | return 0; | 1053 | return 0; |
1050 | } | 1054 | } |
1051 | 1055 | ||
1052 | static int snd_es1938_put_mux(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol) | 1056 | static int snd_es1938_put_mux(struct snd_kcontrol *kcontrol, |
1057 | struct snd_ctl_elem_value *ucontrol) | ||
1053 | { | 1058 | { |
1054 | es1938_t *chip = snd_kcontrol_chip(kcontrol); | 1059 | struct es1938 *chip = snd_kcontrol_chip(kcontrol); |
1055 | unsigned char val = ucontrol->value.enumerated.item[0]; | 1060 | unsigned char val = ucontrol->value.enumerated.item[0]; |
1056 | 1061 | ||
1057 | if (val > 7) | 1062 | if (val > 7) |
@@ -1059,7 +1064,8 @@ static int snd_es1938_put_mux(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * | |||
1059 | return snd_es1938_mixer_bits(chip, 0x1c, 0x07, val) != val; | 1064 | return snd_es1938_mixer_bits(chip, 0x1c, 0x07, val) != val; |
1060 | } | 1065 | } |
1061 | 1066 | ||
1062 | static int snd_es1938_info_spatializer_enable(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo) | 1067 | static int snd_es1938_info_spatializer_enable(struct snd_kcontrol *kcontrol, |
1068 | struct snd_ctl_elem_info *uinfo) | ||
1063 | { | 1069 | { |
1064 | uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN; | 1070 | uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN; |
1065 | uinfo->count = 1; | 1071 | uinfo->count = 1; |
@@ -1068,17 +1074,19 @@ static int snd_es1938_info_spatializer_enable(snd_kcontrol_t *kcontrol, snd_ctl_ | |||
1068 | return 0; | 1074 | return 0; |
1069 | } | 1075 | } |
1070 | 1076 | ||
1071 | static int snd_es1938_get_spatializer_enable(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol) | 1077 | static int snd_es1938_get_spatializer_enable(struct snd_kcontrol *kcontrol, |
1078 | struct snd_ctl_elem_value *ucontrol) | ||
1072 | { | 1079 | { |
1073 | es1938_t *chip = snd_kcontrol_chip(kcontrol); | 1080 | struct es1938 *chip = snd_kcontrol_chip(kcontrol); |
1074 | unsigned char val = snd_es1938_mixer_read(chip, 0x50); | 1081 | unsigned char val = snd_es1938_mixer_read(chip, 0x50); |
1075 | ucontrol->value.integer.value[0] = !!(val & 8); | 1082 | ucontrol->value.integer.value[0] = !!(val & 8); |
1076 | return 0; | 1083 | return 0; |
1077 | } | 1084 | } |
1078 | 1085 | ||
1079 | static int snd_es1938_put_spatializer_enable(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol) | 1086 | static int snd_es1938_put_spatializer_enable(struct snd_kcontrol *kcontrol, |
1087 | struct snd_ctl_elem_value *ucontrol) | ||
1080 | { | 1088 | { |
1081 | es1938_t *chip = snd_kcontrol_chip(kcontrol); | 1089 | struct es1938 *chip = snd_kcontrol_chip(kcontrol); |
1082 | unsigned char oval, nval; | 1090 | unsigned char oval, nval; |
1083 | int change; | 1091 | int change; |
1084 | nval = ucontrol->value.integer.value[0] ? 0x0c : 0x04; | 1092 | nval = ucontrol->value.integer.value[0] ? 0x0c : 0x04; |
@@ -1091,7 +1099,8 @@ static int snd_es1938_put_spatializer_enable(snd_kcontrol_t * kcontrol, snd_ctl_ | |||
1091 | return change; | 1099 | return change; |
1092 | } | 1100 | } |
1093 | 1101 | ||
1094 | static int snd_es1938_info_hw_volume(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo) | 1102 | static int snd_es1938_info_hw_volume(struct snd_kcontrol *kcontrol, |
1103 | struct snd_ctl_elem_info *uinfo) | ||
1095 | { | 1104 | { |
1096 | uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER; | 1105 | uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER; |
1097 | uinfo->count = 2; | 1106 | uinfo->count = 2; |
@@ -1100,15 +1109,17 @@ static int snd_es1938_info_hw_volume(snd_kcontrol_t *kcontrol, snd_ctl_elem_info | |||
1100 | return 0; | 1109 | return 0; |
1101 | } | 1110 | } |
1102 | 1111 | ||
1103 | static int snd_es1938_get_hw_volume(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol) | 1112 | static int snd_es1938_get_hw_volume(struct snd_kcontrol *kcontrol, |
1113 | struct snd_ctl_elem_value *ucontrol) | ||
1104 | { | 1114 | { |
1105 | es1938_t *chip = snd_kcontrol_chip(kcontrol); | 1115 | struct es1938 *chip = snd_kcontrol_chip(kcontrol); |
1106 | ucontrol->value.integer.value[0] = snd_es1938_mixer_read(chip, 0x61) & 0x3f; | 1116 | ucontrol->value.integer.value[0] = snd_es1938_mixer_read(chip, 0x61) & 0x3f; |
1107 | ucontrol->value.integer.value[1] = snd_es1938_mixer_read(chip, 0x63) & 0x3f; | 1117 | ucontrol->value.integer.value[1] = snd_es1938_mixer_read(chip, 0x63) & 0x3f; |
1108 | return 0; | 1118 | return 0; |
1109 | } | 1119 | } |
1110 | 1120 | ||
1111 | static int snd_es1938_info_hw_switch(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo) | 1121 | static int snd_es1938_info_hw_switch(struct snd_kcontrol *kcontrol, |
1122 | struct snd_ctl_elem_info *uinfo) | ||
1112 | { | 1123 | { |
1113 | uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN; | 1124 | uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN; |
1114 | uinfo->count = 2; | 1125 | uinfo->count = 2; |
@@ -1117,24 +1128,25 @@ static int snd_es1938_info_hw_switch(snd_kcontrol_t *kcontrol, snd_ctl_elem_info | |||
1117 | return 0; | 1128 | return 0; |
1118 | } | 1129 | } |
1119 | 1130 | ||
1120 | static int snd_es1938_get_hw_switch(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol) | 1131 | static int snd_es1938_get_hw_switch(struct snd_kcontrol *kcontrol, |
1132 | struct snd_ctl_elem_value *ucontrol) | ||
1121 | { | 1133 | { |
1122 | es1938_t *chip = snd_kcontrol_chip(kcontrol); | 1134 | struct es1938 *chip = snd_kcontrol_chip(kcontrol); |
1123 | ucontrol->value.integer.value[0] = !(snd_es1938_mixer_read(chip, 0x61) & 0x40); | 1135 | ucontrol->value.integer.value[0] = !(snd_es1938_mixer_read(chip, 0x61) & 0x40); |
1124 | ucontrol->value.integer.value[1] = !(snd_es1938_mixer_read(chip, 0x63) & 0x40); | 1136 | ucontrol->value.integer.value[1] = !(snd_es1938_mixer_read(chip, 0x63) & 0x40); |
1125 | return 0; | 1137 | return 0; |
1126 | } | 1138 | } |
1127 | 1139 | ||
1128 | static void snd_es1938_hwv_free(snd_kcontrol_t *kcontrol) | 1140 | static void snd_es1938_hwv_free(struct snd_kcontrol *kcontrol) |
1129 | { | 1141 | { |
1130 | es1938_t *chip = snd_kcontrol_chip(kcontrol); | 1142 | struct es1938 *chip = snd_kcontrol_chip(kcontrol); |
1131 | chip->master_volume = NULL; | 1143 | chip->master_volume = NULL; |
1132 | chip->master_switch = NULL; | 1144 | chip->master_switch = NULL; |
1133 | chip->hw_volume = NULL; | 1145 | chip->hw_volume = NULL; |
1134 | chip->hw_switch = NULL; | 1146 | chip->hw_switch = NULL; |
1135 | } | 1147 | } |
1136 | 1148 | ||
1137 | static int snd_es1938_reg_bits(es1938_t *chip, unsigned char reg, | 1149 | static int snd_es1938_reg_bits(struct es1938 *chip, unsigned char reg, |
1138 | unsigned char mask, unsigned char val) | 1150 | unsigned char mask, unsigned char val) |
1139 | { | 1151 | { |
1140 | if (reg < 0xa0) | 1152 | if (reg < 0xa0) |
@@ -1143,7 +1155,7 @@ static int snd_es1938_reg_bits(es1938_t *chip, unsigned char reg, | |||
1143 | return snd_es1938_bits(chip, reg, mask, val); | 1155 | return snd_es1938_bits(chip, reg, mask, val); |
1144 | } | 1156 | } |
1145 | 1157 | ||
1146 | static int snd_es1938_reg_read(es1938_t *chip, unsigned char reg) | 1158 | static int snd_es1938_reg_read(struct es1938 *chip, unsigned char reg) |
1147 | { | 1159 | { |
1148 | if (reg < 0xa0) | 1160 | if (reg < 0xa0) |
1149 | return snd_es1938_mixer_read(chip, reg); | 1161 | return snd_es1938_mixer_read(chip, reg); |
@@ -1157,7 +1169,8 @@ static int snd_es1938_reg_read(es1938_t *chip, unsigned char reg) | |||
1157 | .get = snd_es1938_get_single, .put = snd_es1938_put_single, \ | 1169 | .get = snd_es1938_get_single, .put = snd_es1938_put_single, \ |
1158 | .private_value = reg | (shift << 8) | (mask << 16) | (invert << 24) } | 1170 | .private_value = reg | (shift << 8) | (mask << 16) | (invert << 24) } |
1159 | 1171 | ||
1160 | static int snd_es1938_info_single(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo) | 1172 | static int snd_es1938_info_single(struct snd_kcontrol *kcontrol, |
1173 | struct snd_ctl_elem_info *uinfo) | ||
1161 | { | 1174 | { |
1162 | int mask = (kcontrol->private_value >> 16) & 0xff; | 1175 | int mask = (kcontrol->private_value >> 16) & 0xff; |
1163 | 1176 | ||
@@ -1168,9 +1181,10 @@ static int snd_es1938_info_single(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t | |||
1168 | return 0; | 1181 | return 0; |
1169 | } | 1182 | } |
1170 | 1183 | ||
1171 | static int snd_es1938_get_single(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol) | 1184 | static int snd_es1938_get_single(struct snd_kcontrol *kcontrol, |
1185 | struct snd_ctl_elem_value *ucontrol) | ||
1172 | { | 1186 | { |
1173 | es1938_t *chip = snd_kcontrol_chip(kcontrol); | 1187 | struct es1938 *chip = snd_kcontrol_chip(kcontrol); |
1174 | int reg = kcontrol->private_value & 0xff; | 1188 | int reg = kcontrol->private_value & 0xff; |
1175 | int shift = (kcontrol->private_value >> 8) & 0xff; | 1189 | int shift = (kcontrol->private_value >> 8) & 0xff; |
1176 | int mask = (kcontrol->private_value >> 16) & 0xff; | 1190 | int mask = (kcontrol->private_value >> 16) & 0xff; |
@@ -1184,9 +1198,10 @@ static int snd_es1938_get_single(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t | |||
1184 | return 0; | 1198 | return 0; |
1185 | } | 1199 | } |
1186 | 1200 | ||
1187 | static int snd_es1938_put_single(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol) | 1201 | static int snd_es1938_put_single(struct snd_kcontrol *kcontrol, |
1202 | struct snd_ctl_elem_value *ucontrol) | ||
1188 | { | 1203 | { |
1189 | es1938_t *chip = snd_kcontrol_chip(kcontrol); | 1204 | struct es1938 *chip = snd_kcontrol_chip(kcontrol); |
1190 | int reg = kcontrol->private_value & 0xff; | 1205 | int reg = kcontrol->private_value & 0xff; |
1191 | int shift = (kcontrol->private_value >> 8) & 0xff; | 1206 | int shift = (kcontrol->private_value >> 8) & 0xff; |
1192 | int mask = (kcontrol->private_value >> 16) & 0xff; | 1207 | int mask = (kcontrol->private_value >> 16) & 0xff; |
@@ -1207,7 +1222,8 @@ static int snd_es1938_put_single(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t | |||
1207 | .get = snd_es1938_get_double, .put = snd_es1938_put_double, \ | 1222 | .get = snd_es1938_get_double, .put = snd_es1938_put_double, \ |
1208 | .private_value = left_reg | (right_reg << 8) | (shift_left << 16) | (shift_right << 19) | (mask << 24) | (invert << 22) } | 1223 | .private_value = left_reg | (right_reg << 8) | (shift_left << 16) | (shift_right << 19) | (mask << 24) | (invert << 22) } |
1209 | 1224 | ||
1210 | static int snd_es1938_info_double(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo) | 1225 | static int snd_es1938_info_double(struct snd_kcontrol *kcontrol, |
1226 | struct snd_ctl_elem_info *uinfo) | ||
1211 | { | 1227 | { |
1212 | int mask = (kcontrol->private_value >> 24) & 0xff; | 1228 | int mask = (kcontrol->private_value >> 24) & 0xff; |
1213 | 1229 | ||
@@ -1218,9 +1234,10 @@ static int snd_es1938_info_double(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t | |||
1218 | return 0; | 1234 | return 0; |
1219 | } | 1235 | } |
1220 | 1236 | ||
1221 | static int snd_es1938_get_double(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol) | 1237 | static int snd_es1938_get_double(struct snd_kcontrol *kcontrol, |
1238 | struct snd_ctl_elem_value *ucontrol) | ||
1222 | { | 1239 | { |
1223 | es1938_t *chip = snd_kcontrol_chip(kcontrol); | 1240 | struct es1938 *chip = snd_kcontrol_chip(kcontrol); |
1224 | int left_reg = kcontrol->private_value & 0xff; | 1241 | int left_reg = kcontrol->private_value & 0xff; |
1225 | int right_reg = (kcontrol->private_value >> 8) & 0xff; | 1242 | int right_reg = (kcontrol->private_value >> 8) & 0xff; |
1226 | int shift_left = (kcontrol->private_value >> 16) & 0x07; | 1243 | int shift_left = (kcontrol->private_value >> 16) & 0x07; |
@@ -1243,9 +1260,10 @@ static int snd_es1938_get_double(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t | |||
1243 | return 0; | 1260 | return 0; |
1244 | } | 1261 | } |
1245 | 1262 | ||
1246 | static int snd_es1938_put_double(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol) | 1263 | static int snd_es1938_put_double(struct snd_kcontrol *kcontrol, |
1264 | struct snd_ctl_elem_value *ucontrol) | ||
1247 | { | 1265 | { |
1248 | es1938_t *chip = snd_kcontrol_chip(kcontrol); | 1266 | struct es1938 *chip = snd_kcontrol_chip(kcontrol); |
1249 | int left_reg = kcontrol->private_value & 0xff; | 1267 | int left_reg = kcontrol->private_value & 0xff; |
1250 | int right_reg = (kcontrol->private_value >> 8) & 0xff; | 1268 | int right_reg = (kcontrol->private_value >> 8) & 0xff; |
1251 | int shift_left = (kcontrol->private_value >> 16) & 0x07; | 1269 | int shift_left = (kcontrol->private_value >> 16) & 0x07; |
@@ -1278,7 +1296,7 @@ static int snd_es1938_put_double(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t | |||
1278 | return change; | 1296 | return change; |
1279 | } | 1297 | } |
1280 | 1298 | ||
1281 | static snd_kcontrol_new_t snd_es1938_controls[] = { | 1299 | static struct snd_kcontrol_new snd_es1938_controls[] = { |
1282 | ES1938_DOUBLE("Master Playback Volume", 0, 0x60, 0x62, 0, 0, 63, 0), | 1300 | ES1938_DOUBLE("Master Playback Volume", 0, 0x60, 0x62, 0, 0, 63, 0), |
1283 | ES1938_DOUBLE("Master Playback Switch", 0, 0x60, 0x62, 6, 6, 1, 1), | 1301 | ES1938_DOUBLE("Master Playback Switch", 0, 0x60, 0x62, 6, 6, 1, 1), |
1284 | { | 1302 | { |
@@ -1341,7 +1359,7 @@ ES1938_SINGLE("Mic Boost (+26dB)", 0, 0x7d, 3, 1, 0) | |||
1341 | /* | 1359 | /* |
1342 | * initialize the chip - used by resume callback, too | 1360 | * initialize the chip - used by resume callback, too |
1343 | */ | 1361 | */ |
1344 | static void snd_es1938_chip_init(es1938_t *chip) | 1362 | static void snd_es1938_chip_init(struct es1938 *chip) |
1345 | { | 1363 | { |
1346 | /* reset chip */ | 1364 | /* reset chip */ |
1347 | snd_es1938_reset(chip); | 1365 | snd_es1938_reset(chip); |
@@ -1380,9 +1398,9 @@ static unsigned char saved_regs[SAVED_REG_SIZE+1] = { | |||
1380 | }; | 1398 | }; |
1381 | 1399 | ||
1382 | 1400 | ||
1383 | static int es1938_suspend(snd_card_t *card, pm_message_t state) | 1401 | static int es1938_suspend(struct snd_card *card, pm_message_t state) |
1384 | { | 1402 | { |
1385 | es1938_t *chip = card->pm_private_data; | 1403 | struct es1938 *chip = card->pm_private_data; |
1386 | unsigned char *s, *d; | 1404 | unsigned char *s, *d; |
1387 | 1405 | ||
1388 | snd_pcm_suspend_all(chip->pcm); | 1406 | snd_pcm_suspend_all(chip->pcm); |
@@ -1393,19 +1411,19 @@ static int es1938_suspend(snd_card_t *card, pm_message_t state) | |||
1393 | 1411 | ||
1394 | outb(0x00, SLIO_REG(chip, IRQCONTROL)); /* disable irqs */ | 1412 | outb(0x00, SLIO_REG(chip, IRQCONTROL)); /* disable irqs */ |
1395 | if (chip->irq >= 0) | 1413 | if (chip->irq >= 0) |
1396 | free_irq(chip->irq, (void *)chip); | 1414 | free_irq(chip->irq, chip); |
1397 | pci_disable_device(chip->pci); | 1415 | pci_disable_device(chip->pci); |
1398 | return 0; | 1416 | return 0; |
1399 | } | 1417 | } |
1400 | 1418 | ||
1401 | static int es1938_resume(snd_card_t *card) | 1419 | static int es1938_resume(struct snd_card *card) |
1402 | { | 1420 | { |
1403 | es1938_t *chip = card->pm_private_data; | 1421 | struct es1938 *chip = card->pm_private_data; |
1404 | unsigned char *s, *d; | 1422 | unsigned char *s, *d; |
1405 | 1423 | ||
1406 | pci_enable_device(chip->pci); | 1424 | pci_enable_device(chip->pci); |
1407 | request_irq(chip->pci->irq, snd_es1938_interrupt, | 1425 | request_irq(chip->pci->irq, snd_es1938_interrupt, |
1408 | SA_INTERRUPT|SA_SHIRQ, "ES1938", (void *)chip); | 1426 | SA_INTERRUPT|SA_SHIRQ, "ES1938", chip); |
1409 | chip->irq = chip->pci->irq; | 1427 | chip->irq = chip->pci->irq; |
1410 | snd_es1938_chip_init(chip); | 1428 | snd_es1938_chip_init(chip); |
1411 | 1429 | ||
@@ -1422,7 +1440,7 @@ static int es1938_resume(snd_card_t *card) | |||
1422 | #endif /* CONFIG_PM */ | 1440 | #endif /* CONFIG_PM */ |
1423 | 1441 | ||
1424 | #ifdef SUPPORT_JOYSTICK | 1442 | #ifdef SUPPORT_JOYSTICK |
1425 | static int __devinit snd_es1938_create_gameport(es1938_t *chip) | 1443 | static int __devinit snd_es1938_create_gameport(struct es1938 *chip) |
1426 | { | 1444 | { |
1427 | struct gameport *gp; | 1445 | struct gameport *gp; |
1428 | 1446 | ||
@@ -1442,7 +1460,7 @@ static int __devinit snd_es1938_create_gameport(es1938_t *chip) | |||
1442 | return 0; | 1460 | return 0; |
1443 | } | 1461 | } |
1444 | 1462 | ||
1445 | static void snd_es1938_free_gameport(es1938_t *chip) | 1463 | static void snd_es1938_free_gameport(struct es1938 *chip) |
1446 | { | 1464 | { |
1447 | if (chip->gameport) { | 1465 | if (chip->gameport) { |
1448 | gameport_unregister_port(chip->gameport); | 1466 | gameport_unregister_port(chip->gameport); |
@@ -1450,11 +1468,11 @@ static void snd_es1938_free_gameport(es1938_t *chip) | |||
1450 | } | 1468 | } |
1451 | } | 1469 | } |
1452 | #else | 1470 | #else |
1453 | static inline int snd_es1938_create_gameport(es1938_t *chip) { return -ENOSYS; } | 1471 | static inline int snd_es1938_create_gameport(struct es1938 *chip) { return -ENOSYS; } |
1454 | static inline void snd_es1938_free_gameport(es1938_t *chip) { } | 1472 | static inline void snd_es1938_free_gameport(struct es1938 *chip) { } |
1455 | #endif /* SUPPORT_JOYSTICK */ | 1473 | #endif /* SUPPORT_JOYSTICK */ |
1456 | 1474 | ||
1457 | static int snd_es1938_free(es1938_t *chip) | 1475 | static int snd_es1938_free(struct es1938 *chip) |
1458 | { | 1476 | { |
1459 | /* disable irqs */ | 1477 | /* disable irqs */ |
1460 | outb(0x00, SLIO_REG(chip, IRQCONTROL)); | 1478 | outb(0x00, SLIO_REG(chip, IRQCONTROL)); |
@@ -1464,26 +1482,26 @@ static int snd_es1938_free(es1938_t *chip) | |||
1464 | snd_es1938_free_gameport(chip); | 1482 | snd_es1938_free_gameport(chip); |
1465 | 1483 | ||
1466 | if (chip->irq >= 0) | 1484 | if (chip->irq >= 0) |
1467 | free_irq(chip->irq, (void *)chip); | 1485 | free_irq(chip->irq, chip); |
1468 | pci_release_regions(chip->pci); | 1486 | pci_release_regions(chip->pci); |
1469 | pci_disable_device(chip->pci); | 1487 | pci_disable_device(chip->pci); |
1470 | kfree(chip); | 1488 | kfree(chip); |
1471 | return 0; | 1489 | return 0; |
1472 | } | 1490 | } |
1473 | 1491 | ||
1474 | static int snd_es1938_dev_free(snd_device_t *device) | 1492 | static int snd_es1938_dev_free(struct snd_device *device) |
1475 | { | 1493 | { |
1476 | es1938_t *chip = device->device_data; | 1494 | struct es1938 *chip = device->device_data; |
1477 | return snd_es1938_free(chip); | 1495 | return snd_es1938_free(chip); |
1478 | } | 1496 | } |
1479 | 1497 | ||
1480 | static int __devinit snd_es1938_create(snd_card_t * card, | 1498 | static int __devinit snd_es1938_create(struct snd_card *card, |
1481 | struct pci_dev * pci, | 1499 | struct pci_dev * pci, |
1482 | es1938_t ** rchip) | 1500 | struct es1938 ** rchip) |
1483 | { | 1501 | { |
1484 | es1938_t *chip; | 1502 | struct es1938 *chip; |
1485 | int err; | 1503 | int err; |
1486 | static snd_device_ops_t ops = { | 1504 | static struct snd_device_ops ops = { |
1487 | .dev_free = snd_es1938_dev_free, | 1505 | .dev_free = snd_es1938_dev_free, |
1488 | }; | 1506 | }; |
1489 | 1507 | ||
@@ -1519,7 +1537,8 @@ static int __devinit snd_es1938_create(snd_card_t * card, | |||
1519 | chip->vc_port = pci_resource_start(pci, 2); | 1537 | chip->vc_port = pci_resource_start(pci, 2); |
1520 | chip->mpu_port = pci_resource_start(pci, 3); | 1538 | chip->mpu_port = pci_resource_start(pci, 3); |
1521 | chip->game_port = pci_resource_start(pci, 4); | 1539 | chip->game_port = pci_resource_start(pci, 4); |
1522 | if (request_irq(pci->irq, snd_es1938_interrupt, SA_INTERRUPT|SA_SHIRQ, "ES1938", (void *)chip)) { | 1540 | if (request_irq(pci->irq, snd_es1938_interrupt, SA_INTERRUPT|SA_SHIRQ, |
1541 | "ES1938", chip)) { | ||
1523 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); | 1542 | snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq); |
1524 | snd_es1938_free(chip); | 1543 | snd_es1938_free(chip); |
1525 | return -EBUSY; | 1544 | return -EBUSY; |
@@ -1552,7 +1571,7 @@ static int __devinit snd_es1938_create(snd_card_t * card, | |||
1552 | * -------------------------------------------------------------------- */ | 1571 | * -------------------------------------------------------------------- */ |
1553 | static irqreturn_t snd_es1938_interrupt(int irq, void *dev_id, struct pt_regs *regs) | 1572 | static irqreturn_t snd_es1938_interrupt(int irq, void *dev_id, struct pt_regs *regs) |
1554 | { | 1573 | { |
1555 | es1938_t *chip = dev_id; | 1574 | struct es1938 *chip = dev_id; |
1556 | unsigned char status, audiostatus; | 1575 | unsigned char status, audiostatus; |
1557 | int handled = 0; | 1576 | int handled = 0; |
1558 | 1577 | ||
@@ -1565,9 +1584,12 @@ static irqreturn_t snd_es1938_interrupt(int irq, void *dev_id, struct pt_regs *r | |||
1565 | if (status & 0x10) { | 1584 | if (status & 0x10) { |
1566 | #if 0 | 1585 | #if 0 |
1567 | printk("Es1938debug - AUDIO channel 1 interrupt\n"); | 1586 | printk("Es1938debug - AUDIO channel 1 interrupt\n"); |
1568 | printk("Es1938debug - AUDIO channel 1 DMAC DMA count: %u\n", inw(SLDM_REG(chip, DMACOUNT))); | 1587 | printk("Es1938debug - AUDIO channel 1 DMAC DMA count: %u\n", |
1569 | printk("Es1938debug - AUDIO channel 1 DMAC DMA base: %u\n", inl(SLDM_REG(chip, DMAADDR))); | 1588 | inw(SLDM_REG(chip, DMACOUNT))); |
1570 | printk("Es1938debug - AUDIO channel 1 DMAC DMA status: 0x%x\n", inl(SLDM_REG(chip, DMASTATUS))); | 1589 | printk("Es1938debug - AUDIO channel 1 DMAC DMA base: %u\n", |
1590 | inl(SLDM_REG(chip, DMAADDR))); | ||
1591 | printk("Es1938debug - AUDIO channel 1 DMAC DMA status: 0x%x\n", | ||
1592 | inl(SLDM_REG(chip, DMASTATUS))); | ||
1571 | #endif | 1593 | #endif |
1572 | /* clear irq */ | 1594 | /* clear irq */ |
1573 | handled = 1; | 1595 | handled = 1; |
@@ -1582,8 +1604,10 @@ static irqreturn_t snd_es1938_interrupt(int irq, void *dev_id, struct pt_regs *r | |||
1582 | if (status & 0x20) { | 1604 | if (status & 0x20) { |
1583 | #if 0 | 1605 | #if 0 |
1584 | printk("Es1938debug - AUDIO channel 2 interrupt\n"); | 1606 | printk("Es1938debug - AUDIO channel 2 interrupt\n"); |
1585 | printk("Es1938debug - AUDIO channel 2 DMAC DMA count: %u\n", inw(SLIO_REG(chip, AUDIO2DMACOUNT))); | 1607 | printk("Es1938debug - AUDIO channel 2 DMAC DMA count: %u\n", |
1586 | printk("Es1938debug - AUDIO channel 2 DMAC DMA base: %u\n", inl(SLIO_REG(chip, AUDIO2DMAADDR))); | 1608 | inw(SLIO_REG(chip, AUDIO2DMACOUNT))); |
1609 | printk("Es1938debug - AUDIO channel 2 DMAC DMA base: %u\n", | ||
1610 | inl(SLIO_REG(chip, AUDIO2DMAADDR))); | ||
1587 | 1611 | ||
1588 | #endif | 1612 | #endif |
1589 | /* clear irq */ | 1613 | /* clear irq */ |
@@ -1600,8 +1624,10 @@ static irqreturn_t snd_es1938_interrupt(int irq, void *dev_id, struct pt_regs *r | |||
1600 | snd_ctl_notify(chip->card, SNDRV_CTL_EVENT_MASK_VALUE, &chip->hw_switch->id); | 1624 | snd_ctl_notify(chip->card, SNDRV_CTL_EVENT_MASK_VALUE, &chip->hw_switch->id); |
1601 | snd_ctl_notify(chip->card, SNDRV_CTL_EVENT_MASK_VALUE, &chip->hw_volume->id); | 1625 | snd_ctl_notify(chip->card, SNDRV_CTL_EVENT_MASK_VALUE, &chip->hw_volume->id); |
1602 | if (!split) { | 1626 | if (!split) { |
1603 | snd_ctl_notify(chip->card, SNDRV_CTL_EVENT_MASK_VALUE, &chip->master_switch->id); | 1627 | snd_ctl_notify(chip->card, SNDRV_CTL_EVENT_MASK_VALUE, |
1604 | snd_ctl_notify(chip->card, SNDRV_CTL_EVENT_MASK_VALUE, &chip->master_volume->id); | 1628 | &chip->master_switch->id); |
1629 | snd_ctl_notify(chip->card, SNDRV_CTL_EVENT_MASK_VALUE, | ||
1630 | &chip->master_volume->id); | ||
1605 | } | 1631 | } |
1606 | /* ack interrupt */ | 1632 | /* ack interrupt */ |
1607 | snd_es1938_mixer_write(chip, 0x66, 0x00); | 1633 | snd_es1938_mixer_write(chip, 0x66, 0x00); |
@@ -1623,9 +1649,9 @@ static irqreturn_t snd_es1938_interrupt(int irq, void *dev_id, struct pt_regs *r | |||
1623 | 1649 | ||
1624 | #define ES1938_DMA_SIZE 64 | 1650 | #define ES1938_DMA_SIZE 64 |
1625 | 1651 | ||
1626 | static int __devinit snd_es1938_mixer(es1938_t *chip) | 1652 | static int __devinit snd_es1938_mixer(struct es1938 *chip) |
1627 | { | 1653 | { |
1628 | snd_card_t *card; | 1654 | struct snd_card *card; |
1629 | unsigned int idx; | 1655 | unsigned int idx; |
1630 | int err; | 1656 | int err; |
1631 | 1657 | ||
@@ -1634,7 +1660,7 @@ static int __devinit snd_es1938_mixer(es1938_t *chip) | |||
1634 | strcpy(card->mixername, "ESS Solo-1"); | 1660 | strcpy(card->mixername, "ESS Solo-1"); |
1635 | 1661 | ||
1636 | for (idx = 0; idx < ARRAY_SIZE(snd_es1938_controls); idx++) { | 1662 | for (idx = 0; idx < ARRAY_SIZE(snd_es1938_controls); idx++) { |
1637 | snd_kcontrol_t *kctl; | 1663 | struct snd_kcontrol *kctl; |
1638 | kctl = snd_ctl_new1(&snd_es1938_controls[idx], chip); | 1664 | kctl = snd_ctl_new1(&snd_es1938_controls[idx], chip); |
1639 | switch (idx) { | 1665 | switch (idx) { |
1640 | case 0: | 1666 | case 0: |
@@ -1665,9 +1691,9 @@ static int __devinit snd_es1938_probe(struct pci_dev *pci, | |||
1665 | const struct pci_device_id *pci_id) | 1691 | const struct pci_device_id *pci_id) |
1666 | { | 1692 | { |
1667 | static int dev; | 1693 | static int dev; |
1668 | snd_card_t *card; | 1694 | struct snd_card *card; |
1669 | es1938_t *chip; | 1695 | struct es1938 *chip; |
1670 | opl3_t *opl3; | 1696 | struct snd_opl3 *opl3; |
1671 | int idx, err; | 1697 | int idx, err; |
1672 | 1698 | ||
1673 | if (dev >= SNDRV_CARDS) | 1699 | if (dev >= SNDRV_CARDS) |