aboutsummaryrefslogtreecommitdiffstats
path: root/sound/isa/opti9xx
diff options
context:
space:
mode:
Diffstat (limited to 'sound/isa/opti9xx')
-rw-r--r--sound/isa/opti9xx/opti92x-ad1848.c224
1 files changed, 110 insertions, 114 deletions
diff --git a/sound/isa/opti9xx/opti92x-ad1848.c b/sound/isa/opti9xx/opti92x-ad1848.c
index 1be32999dfe1..fddf7b9549ba 100644
--- a/sound/isa/opti9xx/opti92x-ad1848.c
+++ b/sound/isa/opti9xx/opti92x-ad1848.c
@@ -120,8 +120,6 @@ MODULE_PARM_DESC(dma2, "2nd dma # for opti9xx driver.");
120 120
121#define OPTi9XX_MC_REG(n) n 121#define OPTi9XX_MC_REG(n) n
122 122
123typedef struct _snd_opti9xx opti9xx_t;
124
125#ifdef OPTi93X 123#ifdef OPTi93X
126 124
127#define OPTi93X_INDEX 0x00 125#define OPTi93X_INDEX 0x00
@@ -193,16 +191,14 @@ typedef struct _snd_opti9xx opti9xx_t;
193#define OPTi93X_IRQ_CAPTURE 0x08 191#define OPTi93X_IRQ_CAPTURE 0x08
194 192
195 193
196typedef struct _snd_opti93x opti93x_t; 194struct snd_opti93x {
197
198struct _snd_opti93x {
199 unsigned long port; 195 unsigned long port;
200 struct resource *res_port; 196 struct resource *res_port;
201 int irq; 197 int irq;
202 int dma1; 198 int dma1;
203 int dma2; 199 int dma2;
204 200
205 opti9xx_t *chip; 201 struct snd_opti9xx *chip;
206 unsigned short hardware; 202 unsigned short hardware;
207 unsigned char image[32]; 203 unsigned char image[32];
208 204
@@ -212,10 +208,10 @@ struct _snd_opti93x {
212 208
213 spinlock_t lock; 209 spinlock_t lock;
214 210
215 snd_card_t *card; 211 struct snd_card *card;
216 snd_pcm_t *pcm; 212 struct snd_pcm *pcm;
217 snd_pcm_substream_t *playback_substream; 213 struct snd_pcm_substream *playback_substream;
218 snd_pcm_substream_t *capture_substream; 214 struct snd_pcm_substream *capture_substream;
219 unsigned int p_dma_size; 215 unsigned int p_dma_size;
220 unsigned int c_dma_size; 216 unsigned int c_dma_size;
221}; 217};
@@ -227,7 +223,7 @@ struct _snd_opti93x {
227 223
228#endif /* OPTi93X */ 224#endif /* OPTi93X */
229 225
230struct _snd_opti9xx { 226struct snd_opti9xx {
231 unsigned short hardware; 227 unsigned short hardware;
232 unsigned char password; 228 unsigned char password;
233 char name[7]; 229 char name[7];
@@ -261,7 +257,7 @@ struct _snd_opti9xx {
261}; 257};
262 258
263static int snd_opti9xx_first_hit = 1; 259static int snd_opti9xx_first_hit = 1;
264static snd_card_t *snd_opti9xx_legacy = SNDRV_DEFAULT_PTR1; 260static struct snd_card *snd_opti9xx_legacy = SNDRV_DEFAULT_PTR1;
265 261
266#ifdef CONFIG_PNP 262#ifdef CONFIG_PNP
267 263
@@ -308,7 +304,7 @@ static long snd_legacy_find_free_ioport(long *port_table, long size)
308 return -1; 304 return -1;
309} 305}
310 306
311static int __devinit snd_opti9xx_init(opti9xx_t *chip, unsigned short hardware) 307static int __devinit snd_opti9xx_init(struct snd_opti9xx *chip, unsigned short hardware)
312{ 308{
313 static int opti9xx_mc_size[] = {7, 7, 10, 10, 2, 2, 2}; 309 static int opti9xx_mc_size[] = {7, 7, 10, 10, 2, 2, 2};
314 310
@@ -363,7 +359,7 @@ static int __devinit snd_opti9xx_init(opti9xx_t *chip, unsigned short hardware)
363 return 0; 359 return 0;
364} 360}
365 361
366static unsigned char snd_opti9xx_read(opti9xx_t *chip, 362static unsigned char snd_opti9xx_read(struct snd_opti9xx *chip,
367 unsigned char reg) 363 unsigned char reg)
368{ 364{
369 unsigned long flags; 365 unsigned long flags;
@@ -406,7 +402,7 @@ static unsigned char snd_opti9xx_read(opti9xx_t *chip,
406 return retval; 402 return retval;
407} 403}
408 404
409static void snd_opti9xx_write(opti9xx_t *chip, unsigned char reg, 405static void snd_opti9xx_write(struct snd_opti9xx *chip, unsigned char reg,
410 unsigned char value) 406 unsigned char value)
411{ 407{
412 unsigned long flags; 408 unsigned long flags;
@@ -453,7 +449,7 @@ static void snd_opti9xx_write(opti9xx_t *chip, unsigned char reg,
453 (snd_opti9xx_read(chip, reg) & ~(mask)) | ((value) & (mask))) 449 (snd_opti9xx_read(chip, reg) & ~(mask)) | ((value) & (mask)))
454 450
455 451
456static int __devinit snd_opti9xx_configure(opti9xx_t *chip) 452static int __devinit snd_opti9xx_configure(struct snd_opti9xx *chip)
457{ 453{
458 unsigned char wss_base_bits; 454 unsigned char wss_base_bits;
459 unsigned char irq_bits; 455 unsigned char irq_bits;
@@ -684,7 +680,7 @@ static unsigned char snd_opti93x_default_image[32] =
684}; 680};
685 681
686 682
687static int snd_opti93x_busy_wait(opti93x_t *chip) 683static int snd_opti93x_busy_wait(struct snd_opti93x *chip)
688{ 684{
689 int timeout; 685 int timeout;
690 686
@@ -696,14 +692,14 @@ static int snd_opti93x_busy_wait(opti93x_t *chip)
696 return -EBUSY; 692 return -EBUSY;
697} 693}
698 694
699static unsigned char snd_opti93x_in(opti93x_t *chip, unsigned char reg) 695static unsigned char snd_opti93x_in(struct snd_opti93x *chip, unsigned char reg)
700{ 696{
701 snd_opti93x_busy_wait(chip); 697 snd_opti93x_busy_wait(chip);
702 outb(chip->mce_bit | (reg & 0x1f), OPTi93X_PORT(chip, INDEX)); 698 outb(chip->mce_bit | (reg & 0x1f), OPTi93X_PORT(chip, INDEX));
703 return inb(OPTi93X_PORT(chip, DATA)); 699 return inb(OPTi93X_PORT(chip, DATA));
704} 700}
705 701
706static void snd_opti93x_out(opti93x_t *chip, unsigned char reg, 702static void snd_opti93x_out(struct snd_opti93x *chip, unsigned char reg,
707 unsigned char value) 703 unsigned char value)
708{ 704{
709 snd_opti93x_busy_wait(chip); 705 snd_opti93x_busy_wait(chip);
@@ -711,13 +707,13 @@ static void snd_opti93x_out(opti93x_t *chip, unsigned char reg,
711 outb(value, OPTi93X_PORT(chip, DATA)); 707 outb(value, OPTi93X_PORT(chip, DATA));
712} 708}
713 709
714static void snd_opti93x_out_image(opti93x_t *chip, unsigned char reg, 710static void snd_opti93x_out_image(struct snd_opti93x *chip, unsigned char reg,
715 unsigned char value) 711 unsigned char value)
716{ 712{
717 snd_opti93x_out(chip, reg, chip->image[reg] = value); 713 snd_opti93x_out(chip, reg, chip->image[reg] = value);
718} 714}
719 715
720static void snd_opti93x_out_mask(opti93x_t *chip, unsigned char reg, 716static void snd_opti93x_out_mask(struct snd_opti93x *chip, unsigned char reg,
721 unsigned char mask, unsigned char value) 717 unsigned char mask, unsigned char value)
722{ 718{
723 snd_opti93x_out_image(chip, reg, 719 snd_opti93x_out_image(chip, reg,
@@ -725,7 +721,7 @@ static void snd_opti93x_out_mask(opti93x_t *chip, unsigned char reg,
725} 721}
726 722
727 723
728static void snd_opti93x_mce_up(opti93x_t *chip) 724static void snd_opti93x_mce_up(struct snd_opti93x *chip)
729{ 725{
730 snd_opti93x_busy_wait(chip); 726 snd_opti93x_busy_wait(chip);
731 727
@@ -734,7 +730,7 @@ static void snd_opti93x_mce_up(opti93x_t *chip)
734 outb(chip->mce_bit, OPTi93X_PORT(chip, INDEX)); 730 outb(chip->mce_bit, OPTi93X_PORT(chip, INDEX));
735} 731}
736 732
737static void snd_opti93x_mce_down(opti93x_t *chip) 733static void snd_opti93x_mce_down(struct snd_opti93x *chip)
738{ 734{
739 snd_opti93x_busy_wait(chip); 735 snd_opti93x_busy_wait(chip);
740 736
@@ -746,7 +742,7 @@ static void snd_opti93x_mce_down(opti93x_t *chip)
746#define snd_opti93x_mute_reg(chip, reg, mute) \ 742#define snd_opti93x_mute_reg(chip, reg, mute) \
747 snd_opti93x_out(chip, reg, mute ? 0x80 : chip->image[reg]); 743 snd_opti93x_out(chip, reg, mute ? 0x80 : chip->image[reg]);
748 744
749static void snd_opti93x_mute(opti93x_t *chip, int mute) 745static void snd_opti93x_mute(struct snd_opti93x *chip, int mute)
750{ 746{
751 mute = mute ? 1 : 0; 747 mute = mute ? 1 : 0;
752 if (chip->mute == mute) 748 if (chip->mute == mute)
@@ -798,7 +794,7 @@ static unsigned int rates[] = { 5512, 6615, 8000, 9600, 11025, 16000,
798 44100, 48000 }; 794 44100, 48000 };
799#define RATES ARRAY_SIZE(rates) 795#define RATES ARRAY_SIZE(rates)
800 796
801static snd_pcm_hw_constraint_list_t hw_constraints_rates = { 797static struct snd_pcm_hw_constraint_list hw_constraints_rates = {
802 .count = RATES, 798 .count = RATES,
803 .list = rates, 799 .list = rates,
804 .mask = 0, 800 .mask = 0,
@@ -820,7 +816,7 @@ static unsigned char snd_opti93x_get_freq(unsigned int rate)
820 return bits[RATES-1]; 816 return bits[RATES-1];
821} 817}
822 818
823static unsigned char snd_opti93x_get_format(opti93x_t *chip, 819static unsigned char snd_opti93x_get_format(struct snd_opti93x *chip,
824 unsigned int format, int channels) 820 unsigned int format, int channels)
825{ 821{
826 unsigned char retval = OPTi93X_LINEAR_8; 822 unsigned char retval = OPTi93X_LINEAR_8;
@@ -845,7 +841,7 @@ static unsigned char snd_opti93x_get_format(opti93x_t *chip,
845} 841}
846 842
847 843
848static void snd_opti93x_playback_format(opti93x_t *chip, unsigned char fmt) 844static void snd_opti93x_playback_format(struct snd_opti93x *chip, unsigned char fmt)
849{ 845{
850 unsigned char mask; 846 unsigned char mask;
851 847
@@ -859,7 +855,7 @@ static void snd_opti93x_playback_format(opti93x_t *chip, unsigned char fmt)
859 snd_opti93x_mute(chip, 0); 855 snd_opti93x_mute(chip, 0);
860} 856}
861 857
862static void snd_opti93x_capture_format(opti93x_t *chip, unsigned char fmt) 858static void snd_opti93x_capture_format(struct snd_opti93x *chip, unsigned char fmt)
863{ 859{
864 snd_opti93x_mute(chip, 1); 860 snd_opti93x_mute(chip, 1);
865 861
@@ -875,7 +871,7 @@ static void snd_opti93x_capture_format(opti93x_t *chip, unsigned char fmt)
875} 871}
876 872
877 873
878static int snd_opti93x_open(opti93x_t *chip, unsigned int mode) 874static int snd_opti93x_open(struct snd_opti93x *chip, unsigned int mode)
879{ 875{
880 unsigned long flags; 876 unsigned long flags;
881 877
@@ -899,7 +895,7 @@ static int snd_opti93x_open(opti93x_t *chip, unsigned int mode)
899 return 0; 895 return 0;
900} 896}
901 897
902static void snd_opti93x_close(opti93x_t *chip, unsigned int mode) 898static void snd_opti93x_close(struct snd_opti93x *chip, unsigned int mode)
903{ 899{
904 unsigned long flags; 900 unsigned long flags;
905 901
@@ -926,10 +922,10 @@ static void snd_opti93x_close(opti93x_t *chip, unsigned int mode)
926 spin_unlock_irqrestore(&chip->lock, flags); 922 spin_unlock_irqrestore(&chip->lock, flags);
927} 923}
928 924
929static int snd_opti93x_trigger(snd_pcm_substream_t *substream, 925static int snd_opti93x_trigger(struct snd_pcm_substream *substream,
930 unsigned char what, int cmd) 926 unsigned char what, int cmd)
931{ 927{
932 opti93x_t *chip = snd_pcm_substream_chip(substream); 928 struct snd_opti93x *chip = snd_pcm_substream_chip(substream);
933 929
934 switch (cmd) { 930 switch (cmd) {
935 case SNDRV_PCM_TRIGGER_START: 931 case SNDRV_PCM_TRIGGER_START:
@@ -937,7 +933,7 @@ static int snd_opti93x_trigger(snd_pcm_substream_t *substream,
937 { 933 {
938 unsigned int what = 0; 934 unsigned int what = 0;
939 struct list_head *pos; 935 struct list_head *pos;
940 snd_pcm_substream_t *s; 936 struct snd_pcm_substream *s;
941 snd_pcm_group_for_each(pos, substream) { 937 snd_pcm_group_for_each(pos, substream) {
942 s = snd_pcm_group_substream_entry(pos); 938 s = snd_pcm_group_substream_entry(pos);
943 if (s == chip->playback_substream) { 939 if (s == chip->playback_substream) {
@@ -964,36 +960,36 @@ static int snd_opti93x_trigger(snd_pcm_substream_t *substream,
964 return 0; 960 return 0;
965} 961}
966 962
967static int snd_opti93x_playback_trigger(snd_pcm_substream_t *substream, int cmd) 963static int snd_opti93x_playback_trigger(struct snd_pcm_substream *substream, int cmd)
968{ 964{
969 return snd_opti93x_trigger(substream, 965 return snd_opti93x_trigger(substream,
970 OPTi93X_PLAYBACK_ENABLE, cmd); 966 OPTi93X_PLAYBACK_ENABLE, cmd);
971} 967}
972 968
973static int snd_opti93x_capture_trigger(snd_pcm_substream_t * substream, int cmd) 969static int snd_opti93x_capture_trigger(struct snd_pcm_substream *substream, int cmd)
974{ 970{
975 return snd_opti93x_trigger(substream, 971 return snd_opti93x_trigger(substream,
976 OPTi93X_CAPTURE_ENABLE, cmd); 972 OPTi93X_CAPTURE_ENABLE, cmd);
977} 973}
978 974
979static int snd_opti93x_hw_params(snd_pcm_substream_t * substream, 975static int snd_opti93x_hw_params(struct snd_pcm_substream *substream,
980 snd_pcm_hw_params_t * hw_params) 976 struct snd_pcm_hw_params *hw_params)
981{ 977{
982 return snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(hw_params)); 978 return snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(hw_params));
983} 979}
984 980
985 981
986static int snd_opti93x_hw_free(snd_pcm_substream_t * substream) 982static int snd_opti93x_hw_free(struct snd_pcm_substream *substream)
987{ 983{
988 snd_pcm_lib_free_pages(substream); 984 snd_pcm_lib_free_pages(substream);
989 return 0; 985 return 0;
990} 986}
991 987
992 988
993static int snd_opti93x_playback_prepare(snd_pcm_substream_t * substream) 989static int snd_opti93x_playback_prepare(struct snd_pcm_substream *substream)
994{ 990{
995 opti93x_t *chip = snd_pcm_substream_chip(substream); 991 struct snd_opti93x *chip = snd_pcm_substream_chip(substream);
996 snd_pcm_runtime_t *runtime = substream->runtime; 992 struct snd_pcm_runtime *runtime = substream->runtime;
997 unsigned long flags; 993 unsigned long flags;
998 unsigned char format; 994 unsigned char format;
999 unsigned int count = snd_pcm_lib_period_bytes(substream); 995 unsigned int count = snd_pcm_lib_period_bytes(substream);
@@ -1023,10 +1019,10 @@ static int snd_opti93x_playback_prepare(snd_pcm_substream_t * substream)
1023 return 0; 1019 return 0;
1024} 1020}
1025 1021
1026static int snd_opti93x_capture_prepare(snd_pcm_substream_t *substream) 1022static int snd_opti93x_capture_prepare(struct snd_pcm_substream *substream)
1027{ 1023{
1028 opti93x_t *chip = snd_pcm_substream_chip(substream); 1024 struct snd_opti93x *chip = snd_pcm_substream_chip(substream);
1029 snd_pcm_runtime_t *runtime = substream->runtime; 1025 struct snd_pcm_runtime *runtime = substream->runtime;
1030 unsigned long flags; 1026 unsigned long flags;
1031 unsigned char format; 1027 unsigned char format;
1032 unsigned int count = snd_pcm_lib_period_bytes(substream); 1028 unsigned int count = snd_pcm_lib_period_bytes(substream);
@@ -1055,9 +1051,9 @@ static int snd_opti93x_capture_prepare(snd_pcm_substream_t *substream)
1055 return 0; 1051 return 0;
1056} 1052}
1057 1053
1058static snd_pcm_uframes_t snd_opti93x_playback_pointer(snd_pcm_substream_t *substream) 1054static snd_pcm_uframes_t snd_opti93x_playback_pointer(struct snd_pcm_substream *substream)
1059{ 1055{
1060 opti93x_t *chip = snd_pcm_substream_chip(substream); 1056 struct snd_opti93x *chip = snd_pcm_substream_chip(substream);
1061 size_t ptr; 1057 size_t ptr;
1062 1058
1063 if (!(chip->image[OPTi93X_IFACE_CONF] & OPTi93X_PLAYBACK_ENABLE)) 1059 if (!(chip->image[OPTi93X_IFACE_CONF] & OPTi93X_PLAYBACK_ENABLE))
@@ -1067,9 +1063,9 @@ static snd_pcm_uframes_t snd_opti93x_playback_pointer(snd_pcm_substream_t *subst
1067 return bytes_to_frames(substream->runtime, ptr); 1063 return bytes_to_frames(substream->runtime, ptr);
1068} 1064}
1069 1065
1070static snd_pcm_uframes_t snd_opti93x_capture_pointer(snd_pcm_substream_t *substream) 1066static snd_pcm_uframes_t snd_opti93x_capture_pointer(struct snd_pcm_substream *substream)
1071{ 1067{
1072 opti93x_t *chip = snd_pcm_substream_chip(substream); 1068 struct snd_opti93x *chip = snd_pcm_substream_chip(substream);
1073 size_t ptr; 1069 size_t ptr;
1074 1070
1075 if (!(chip->image[OPTi93X_IFACE_CONF] & OPTi93X_CAPTURE_ENABLE)) 1071 if (!(chip->image[OPTi93X_IFACE_CONF] & OPTi93X_CAPTURE_ENABLE))
@@ -1080,7 +1076,7 @@ static snd_pcm_uframes_t snd_opti93x_capture_pointer(snd_pcm_substream_t *substr
1080} 1076}
1081 1077
1082 1078
1083static void snd_opti93x_overrange(opti93x_t *chip) 1079static void snd_opti93x_overrange(struct snd_opti93x *chip)
1084{ 1080{
1085 unsigned long flags; 1081 unsigned long flags;
1086 1082
@@ -1094,7 +1090,7 @@ static void snd_opti93x_overrange(opti93x_t *chip)
1094 1090
1095static irqreturn_t snd_opti93x_interrupt(int irq, void *dev_id, struct pt_regs *regs) 1091static irqreturn_t snd_opti93x_interrupt(int irq, void *dev_id, struct pt_regs *regs)
1096{ 1092{
1097 opti93x_t *codec = dev_id; 1093 struct snd_opti93x *codec = dev_id;
1098 unsigned char status; 1094 unsigned char status;
1099 1095
1100 status = snd_opti9xx_read(codec->chip, OPTi9XX_MC_REG(11)); 1096 status = snd_opti9xx_read(codec->chip, OPTi9XX_MC_REG(11));
@@ -1109,7 +1105,7 @@ static irqreturn_t snd_opti93x_interrupt(int irq, void *dev_id, struct pt_regs *
1109} 1105}
1110 1106
1111 1107
1112static snd_pcm_hardware_t snd_opti93x_playback = { 1108static struct snd_pcm_hardware snd_opti93x_playback = {
1113 .info = (SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_INTERLEAVED | 1109 .info = (SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_INTERLEAVED |
1114 SNDRV_PCM_INFO_MMAP_VALID | SNDRV_PCM_INFO_SYNC_START), 1110 SNDRV_PCM_INFO_MMAP_VALID | SNDRV_PCM_INFO_SYNC_START),
1115 .formats = (SNDRV_PCM_FMTBIT_MU_LAW | SNDRV_PCM_FMTBIT_A_LAW | SNDRV_PCM_FMTBIT_IMA_ADPCM | 1111 .formats = (SNDRV_PCM_FMTBIT_MU_LAW | SNDRV_PCM_FMTBIT_A_LAW | SNDRV_PCM_FMTBIT_IMA_ADPCM |
@@ -1127,7 +1123,7 @@ static snd_pcm_hardware_t snd_opti93x_playback = {
1127 .fifo_size = 0, 1123 .fifo_size = 0,
1128}; 1124};
1129 1125
1130static snd_pcm_hardware_t snd_opti93x_capture = { 1126static struct snd_pcm_hardware snd_opti93x_capture = {
1131 .info = (SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_INTERLEAVED | 1127 .info = (SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_INTERLEAVED |
1132 SNDRV_PCM_INFO_MMAP_VALID | SNDRV_PCM_INFO_SYNC_START), 1128 SNDRV_PCM_INFO_MMAP_VALID | SNDRV_PCM_INFO_SYNC_START),
1133 .formats = (SNDRV_PCM_FMTBIT_MU_LAW | SNDRV_PCM_FMTBIT_A_LAW | SNDRV_PCM_FMTBIT_IMA_ADPCM | 1129 .formats = (SNDRV_PCM_FMTBIT_MU_LAW | SNDRV_PCM_FMTBIT_A_LAW | SNDRV_PCM_FMTBIT_IMA_ADPCM |
@@ -1145,11 +1141,11 @@ static snd_pcm_hardware_t snd_opti93x_capture = {
1145 .fifo_size = 0, 1141 .fifo_size = 0,
1146}; 1142};
1147 1143
1148static int snd_opti93x_playback_open(snd_pcm_substream_t *substream) 1144static int snd_opti93x_playback_open(struct snd_pcm_substream *substream)
1149{ 1145{
1150 int error; 1146 int error;
1151 opti93x_t *chip = snd_pcm_substream_chip(substream); 1147 struct snd_opti93x *chip = snd_pcm_substream_chip(substream);
1152 snd_pcm_runtime_t *runtime = substream->runtime; 1148 struct snd_pcm_runtime *runtime = substream->runtime;
1153 1149
1154 if ((error = snd_opti93x_open(chip, OPTi93X_MODE_PLAY)) < 0) 1150 if ((error = snd_opti93x_open(chip, OPTi93X_MODE_PLAY)) < 0)
1155 return error; 1151 return error;
@@ -1161,11 +1157,11 @@ static int snd_opti93x_playback_open(snd_pcm_substream_t *substream)
1161 return error; 1157 return error;
1162} 1158}
1163 1159
1164static int snd_opti93x_capture_open(snd_pcm_substream_t *substream) 1160static int snd_opti93x_capture_open(struct snd_pcm_substream *substream)
1165{ 1161{
1166 int error; 1162 int error;
1167 opti93x_t *chip = snd_pcm_substream_chip(substream); 1163 struct snd_opti93x *chip = snd_pcm_substream_chip(substream);
1168 snd_pcm_runtime_t *runtime = substream->runtime; 1164 struct snd_pcm_runtime *runtime = substream->runtime;
1169 1165
1170 if ((error = snd_opti93x_open(chip, OPTi93X_MODE_CAPTURE)) < 0) 1166 if ((error = snd_opti93x_open(chip, OPTi93X_MODE_CAPTURE)) < 0)
1171 return error; 1167 return error;
@@ -1177,18 +1173,18 @@ static int snd_opti93x_capture_open(snd_pcm_substream_t *substream)
1177 return error; 1173 return error;
1178} 1174}
1179 1175
1180static int snd_opti93x_playback_close(snd_pcm_substream_t *substream) 1176static int snd_opti93x_playback_close(struct snd_pcm_substream *substream)
1181{ 1177{
1182 opti93x_t *chip = snd_pcm_substream_chip(substream); 1178 struct snd_opti93x *chip = snd_pcm_substream_chip(substream);
1183 1179
1184 chip->playback_substream = NULL; 1180 chip->playback_substream = NULL;
1185 snd_opti93x_close(chip, OPTi93X_MODE_PLAY); 1181 snd_opti93x_close(chip, OPTi93X_MODE_PLAY);
1186 return 0; 1182 return 0;
1187} 1183}
1188 1184
1189static int snd_opti93x_capture_close(snd_pcm_substream_t *substream) 1185static int snd_opti93x_capture_close(struct snd_pcm_substream *substream)
1190{ 1186{
1191 opti93x_t *chip = snd_pcm_substream_chip(substream); 1187 struct snd_opti93x *chip = snd_pcm_substream_chip(substream);
1192 1188
1193 chip->capture_substream = NULL; 1189 chip->capture_substream = NULL;
1194 snd_opti93x_close(chip, OPTi93X_MODE_CAPTURE); 1190 snd_opti93x_close(chip, OPTi93X_MODE_CAPTURE);
@@ -1196,7 +1192,7 @@ static int snd_opti93x_capture_close(snd_pcm_substream_t *substream)
1196} 1192}
1197 1193
1198 1194
1199static void snd_opti93x_init(opti93x_t *chip) 1195static void snd_opti93x_init(struct snd_opti93x *chip)
1200{ 1196{
1201 unsigned long flags; 1197 unsigned long flags;
1202 int i; 1198 int i;
@@ -1211,7 +1207,7 @@ static void snd_opti93x_init(opti93x_t *chip)
1211 spin_unlock_irqrestore(&chip->lock, flags); 1207 spin_unlock_irqrestore(&chip->lock, flags);
1212} 1208}
1213 1209
1214static int snd_opti93x_probe(opti93x_t *chip) 1210static int snd_opti93x_probe(struct snd_opti93x *chip)
1215{ 1211{
1216 unsigned long flags; 1212 unsigned long flags;
1217 unsigned char val; 1213 unsigned char val;
@@ -1223,7 +1219,7 @@ static int snd_opti93x_probe(opti93x_t *chip)
1223 return (val == 0x0a) ? 0 : -ENODEV; 1219 return (val == 0x0a) ? 0 : -ENODEV;
1224} 1220}
1225 1221
1226static int snd_opti93x_free(opti93x_t *chip) 1222static int snd_opti93x_free(struct snd_opti93x *chip)
1227{ 1223{
1228 release_and_free_resource(chip->res_port); 1224 release_and_free_resource(chip->res_port);
1229 if (chip->dma1 >= 0) { 1225 if (chip->dma1 >= 0) {
@@ -1241,13 +1237,13 @@ static int snd_opti93x_free(opti93x_t *chip)
1241 return 0; 1237 return 0;
1242} 1238}
1243 1239
1244static int snd_opti93x_dev_free(snd_device_t *device) 1240static int snd_opti93x_dev_free(struct snd_device *device)
1245{ 1241{
1246 opti93x_t *chip = device->device_data; 1242 struct snd_opti93x *chip = device->device_data;
1247 return snd_opti93x_free(chip); 1243 return snd_opti93x_free(chip);
1248} 1244}
1249 1245
1250static const char *snd_opti93x_chip_id(opti93x_t *codec) 1246static const char *snd_opti93x_chip_id(struct snd_opti93x *codec)
1251{ 1247{
1252 switch (codec->hardware) { 1248 switch (codec->hardware) {
1253 case OPTi9XX_HW_82C930: return "82C930"; 1249 case OPTi9XX_HW_82C930: return "82C930";
@@ -1257,15 +1253,15 @@ static const char *snd_opti93x_chip_id(opti93x_t *codec)
1257 } 1253 }
1258} 1254}
1259 1255
1260static int snd_opti93x_create(snd_card_t *card, opti9xx_t *chip, 1256static int snd_opti93x_create(struct snd_card *card, struct snd_opti9xx *chip,
1261 int dma1, int dma2, 1257 int dma1, int dma2,
1262 opti93x_t **rcodec) 1258 struct snd_opti93x **rcodec)
1263{ 1259{
1264 static snd_device_ops_t ops = { 1260 static struct snd_device_ops ops = {
1265 .dev_free = snd_opti93x_dev_free, 1261 .dev_free = snd_opti93x_dev_free,
1266 }; 1262 };
1267 int error; 1263 int error;
1268 opti93x_t *codec; 1264 struct snd_opti93x *codec;
1269 1265
1270 *rcodec = NULL; 1266 *rcodec = NULL;
1271 codec = kzalloc(sizeof(*codec), GFP_KERNEL); 1267 codec = kzalloc(sizeof(*codec), GFP_KERNEL);
@@ -1324,7 +1320,7 @@ static int snd_opti93x_create(snd_card_t *card, opti9xx_t *chip,
1324 return 0; 1320 return 0;
1325} 1321}
1326 1322
1327static snd_pcm_ops_t snd_opti93x_playback_ops = { 1323static struct snd_pcm_ops snd_opti93x_playback_ops = {
1328 .open = snd_opti93x_playback_open, 1324 .open = snd_opti93x_playback_open,
1329 .close = snd_opti93x_playback_close, 1325 .close = snd_opti93x_playback_close,
1330 .ioctl = snd_pcm_lib_ioctl, 1326 .ioctl = snd_pcm_lib_ioctl,
@@ -1335,7 +1331,7 @@ static snd_pcm_ops_t snd_opti93x_playback_ops = {
1335 .pointer = snd_opti93x_playback_pointer, 1331 .pointer = snd_opti93x_playback_pointer,
1336}; 1332};
1337 1333
1338static snd_pcm_ops_t snd_opti93x_capture_ops = { 1334static struct snd_pcm_ops snd_opti93x_capture_ops = {
1339 .open = snd_opti93x_capture_open, 1335 .open = snd_opti93x_capture_open,
1340 .close = snd_opti93x_capture_close, 1336 .close = snd_opti93x_capture_close,
1341 .ioctl = snd_pcm_lib_ioctl, 1337 .ioctl = snd_pcm_lib_ioctl,
@@ -1346,10 +1342,10 @@ static snd_pcm_ops_t snd_opti93x_capture_ops = {
1346 .pointer = snd_opti93x_capture_pointer, 1342 .pointer = snd_opti93x_capture_pointer,
1347}; 1343};
1348 1344
1349static int snd_opti93x_pcm(opti93x_t *codec, int device, snd_pcm_t **rpcm) 1345static int snd_opti93x_pcm(struct snd_opti93x *codec, int device, struct snd_pcm **rpcm)
1350{ 1346{
1351 int error; 1347 int error;
1352 snd_pcm_t *pcm; 1348 struct snd_pcm *pcm;
1353 1349
1354 if ((error = snd_pcm_new(codec->card, "OPTi 82C93X", device, 1, 1, &pcm))) 1350 if ((error = snd_pcm_new(codec->card, "OPTi 82C93X", device, 1, 1, &pcm)))
1355 return error; 1351 return error;
@@ -1376,7 +1372,7 @@ static int snd_opti93x_pcm(opti93x_t *codec, int device, snd_pcm_t **rpcm)
1376 * MIXER part 1372 * MIXER part
1377 */ 1373 */
1378 1374
1379static int snd_opti93x_info_mux(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo) 1375static int snd_opti93x_info_mux(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo)
1380{ 1376{
1381 static char *texts[4] = { 1377 static char *texts[4] = {
1382 "Line1", "Aux", "Mic", "Mix" 1378 "Line1", "Aux", "Mic", "Mix"
@@ -1391,9 +1387,9 @@ static int snd_opti93x_info_mux(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t *
1391 return 0; 1387 return 0;
1392} 1388}
1393 1389
1394static int snd_opti93x_get_mux(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol) 1390static int snd_opti93x_get_mux(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol)
1395{ 1391{
1396 opti93x_t *chip = snd_kcontrol_chip(kcontrol); 1392 struct snd_opti93x *chip = snd_kcontrol_chip(kcontrol);
1397 unsigned long flags; 1393 unsigned long flags;
1398 1394
1399 spin_lock_irqsave(&chip->lock, flags); 1395 spin_lock_irqsave(&chip->lock, flags);
@@ -1403,9 +1399,9 @@ static int snd_opti93x_get_mux(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t *
1403 return 0; 1399 return 0;
1404} 1400}
1405 1401
1406static int snd_opti93x_put_mux(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol) 1402static int snd_opti93x_put_mux(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol)
1407{ 1403{
1408 opti93x_t *chip = snd_kcontrol_chip(kcontrol); 1404 struct snd_opti93x *chip = snd_kcontrol_chip(kcontrol);
1409 unsigned long flags; 1405 unsigned long flags;
1410 unsigned short left, right; 1406 unsigned short left, right;
1411 int change; 1407 int change;
@@ -1434,7 +1430,7 @@ static int snd_opti93x_put_mux(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t *
1434 .get = snd_opti93x_get_single, .put = snd_opti93x_put_single, \ 1430 .get = snd_opti93x_get_single, .put = snd_opti93x_put_single, \
1435 .private_value = reg | (shift << 8) | (mask << 16) | (invert << 24) } 1431 .private_value = reg | (shift << 8) | (mask << 16) | (invert << 24) }
1436 1432
1437static int snd_opti93x_info_single(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo) 1433static int snd_opti93x_info_single(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo)
1438{ 1434{
1439 int mask = (kcontrol->private_value >> 16) & 0xff; 1435 int mask = (kcontrol->private_value >> 16) & 0xff;
1440 1436
@@ -1445,9 +1441,9 @@ static int snd_opti93x_info_single(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t
1445 return 0; 1441 return 0;
1446} 1442}
1447 1443
1448static int snd_opti93x_get_single(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol) 1444static int snd_opti93x_get_single(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol)
1449{ 1445{
1450 opti93x_t *chip = snd_kcontrol_chip(kcontrol); 1446 struct snd_opti93x *chip = snd_kcontrol_chip(kcontrol);
1451 unsigned long flags; 1447 unsigned long flags;
1452 int reg = kcontrol->private_value & 0xff; 1448 int reg = kcontrol->private_value & 0xff;
1453 int shift = (kcontrol->private_value >> 8) & 0xff; 1449 int shift = (kcontrol->private_value >> 8) & 0xff;
@@ -1462,9 +1458,9 @@ static int snd_opti93x_get_single(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_
1462 return 0; 1458 return 0;
1463} 1459}
1464 1460
1465static int snd_opti93x_put_single(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol) 1461static int snd_opti93x_put_single(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol)
1466{ 1462{
1467 opti93x_t *chip = snd_kcontrol_chip(kcontrol); 1463 struct snd_opti93x *chip = snd_kcontrol_chip(kcontrol);
1468 unsigned long flags; 1464 unsigned long flags;
1469 int reg = kcontrol->private_value & 0xff; 1465 int reg = kcontrol->private_value & 0xff;
1470 int shift = (kcontrol->private_value >> 8) & 0xff; 1466 int shift = (kcontrol->private_value >> 8) & 0xff;
@@ -1499,7 +1495,7 @@ static int snd_opti93x_put_single(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_
1499 do { xctl.private_value &= ~0x0000ffff; \ 1495 do { xctl.private_value &= ~0x0000ffff; \
1500 xctl.private_value |= left_reg | (right_reg << 8); } while (0) 1496 xctl.private_value |= left_reg | (right_reg << 8); } while (0)
1501 1497
1502static int snd_opti93x_info_double(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo) 1498static int snd_opti93x_info_double(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo)
1503{ 1499{
1504 int mask = (kcontrol->private_value >> 24) & 0xff; 1500 int mask = (kcontrol->private_value >> 24) & 0xff;
1505 1501
@@ -1510,9 +1506,9 @@ static int snd_opti93x_info_double(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t
1510 return 0; 1506 return 0;
1511} 1507}
1512 1508
1513static int snd_opti93x_get_double(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol) 1509static int snd_opti93x_get_double(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol)
1514{ 1510{
1515 opti93x_t *chip = snd_kcontrol_chip(kcontrol); 1511 struct snd_opti93x *chip = snd_kcontrol_chip(kcontrol);
1516 unsigned long flags; 1512 unsigned long flags;
1517 int left_reg = kcontrol->private_value & 0xff; 1513 int left_reg = kcontrol->private_value & 0xff;
1518 int right_reg = (kcontrol->private_value >> 8) & 0xff; 1514 int right_reg = (kcontrol->private_value >> 8) & 0xff;
@@ -1532,9 +1528,9 @@ static int snd_opti93x_get_double(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_
1532 return 0; 1528 return 0;
1533} 1529}
1534 1530
1535static int snd_opti93x_put_double(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol) 1531static int snd_opti93x_put_double(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol)
1536{ 1532{
1537 opti93x_t *chip = snd_kcontrol_chip(kcontrol); 1533 struct snd_opti93x *chip = snd_kcontrol_chip(kcontrol);
1538 unsigned long flags; 1534 unsigned long flags;
1539 int left_reg = kcontrol->private_value & 0xff; 1535 int left_reg = kcontrol->private_value & 0xff;
1540 int right_reg = (kcontrol->private_value >> 8) & 0xff; 1536 int right_reg = (kcontrol->private_value >> 8) & 0xff;
@@ -1563,7 +1559,7 @@ static int snd_opti93x_put_double(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_
1563 return change; 1559 return change;
1564} 1560}
1565 1561
1566static snd_kcontrol_new_t snd_opti93x_controls[] = { 1562static struct snd_kcontrol_new snd_opti93x_controls[] = {
1567OPTi93X_DOUBLE("Master Playback Switch", 0, OPTi93X_OUT_LEFT, OPTi93X_OUT_RIGHT, 7, 7, 1, 1), 1563OPTi93X_DOUBLE("Master Playback Switch", 0, OPTi93X_OUT_LEFT, OPTi93X_OUT_RIGHT, 7, 7, 1, 1),
1568OPTi93X_DOUBLE("Master Playback Volume", 0, OPTi93X_OUT_LEFT, OPTi93X_OUT_RIGHT, 1, 1, 31, 1), 1564OPTi93X_DOUBLE("Master Playback Volume", 0, OPTi93X_OUT_LEFT, OPTi93X_OUT_RIGHT, 1, 1, 31, 1),
1569OPTi93X_DOUBLE("PCM Playback Switch", 0, OPTi93X_DAC_LEFT, OPTi93X_DAC_RIGHT, 7, 7, 1, 1), 1565OPTi93X_DOUBLE("PCM Playback Switch", 0, OPTi93X_DAC_LEFT, OPTi93X_DAC_RIGHT, 7, 7, 1, 1),
@@ -1589,10 +1585,10 @@ OPTi93X_DOUBLE("Capture Volume", 0, OPTi93X_MIXOUT_LEFT, OPTi93X_MIXOUT_RIGHT, 0
1589} 1585}
1590}; 1586};
1591 1587
1592static int snd_opti93x_mixer(opti93x_t *chip) 1588static int snd_opti93x_mixer(struct snd_opti93x *chip)
1593{ 1589{
1594 snd_card_t *card; 1590 struct snd_card *card;
1595 snd_kcontrol_new_t knew; 1591 struct snd_kcontrol_new knew;
1596 int err; 1592 int err;
1597 unsigned int idx; 1593 unsigned int idx;
1598 1594
@@ -1624,7 +1620,7 @@ static int snd_opti93x_mixer(opti93x_t *chip)
1624 1620
1625#endif /* OPTi93X */ 1621#endif /* OPTi93X */
1626 1622
1627static int __devinit snd_card_opti9xx_detect(snd_card_t *card, opti9xx_t *chip) 1623static int __devinit snd_card_opti9xx_detect(struct snd_card *card, struct snd_opti9xx *chip)
1628{ 1624{
1629 int i, err; 1625 int i, err;
1630 1626
@@ -1678,7 +1674,7 @@ static int __devinit snd_card_opti9xx_detect(snd_card_t *card, opti9xx_t *chip)
1678} 1674}
1679 1675
1680#ifdef CONFIG_PNP 1676#ifdef CONFIG_PNP
1681static int __devinit snd_card_opti9xx_pnp(opti9xx_t *chip, struct pnp_card_link *card, 1677static int __devinit snd_card_opti9xx_pnp(struct snd_opti9xx *chip, struct pnp_card_link *card,
1682 const struct pnp_card_device_id *pid) 1678 const struct pnp_card_device_id *pid)
1683{ 1679{
1684 struct pnp_dev *pdev; 1680 struct pnp_dev *pdev;
@@ -1772,7 +1768,7 @@ static int __devinit snd_card_opti9xx_pnp(opti9xx_t *chip, struct pnp_card_link
1772 1768
1773#if 0 1769#if 0
1774static int __devinit snd_card_opti9xx_resources(struct snd_card_opti9xx *chip, 1770static int __devinit snd_card_opti9xx_resources(struct snd_card_opti9xx *chip,
1775 snd_card_t *card) 1771 struct snd_card *card)
1776{ 1772{
1777 int error, i, pnp = 0; 1773 int error, i, pnp = 0;
1778 1774
@@ -1867,9 +1863,9 @@ static int __devinit snd_card_opti9xx_resources(struct snd_card_opti9xx *chip,
1867} 1863}
1868#endif 1864#endif
1869 1865
1870static void snd_card_opti9xx_free(snd_card_t *card) 1866static void snd_card_opti9xx_free(struct snd_card *card)
1871{ 1867{
1872 opti9xx_t *chip = (opti9xx_t *)card->private_data; 1868 struct snd_opti9xx *chip = (struct snd_opti9xx *)card->private_data;
1873 1869
1874 if (chip) 1870 if (chip)
1875 release_and_free_resource(chip->res_mc_base); 1871 release_and_free_resource(chip->res_mc_base);
@@ -1891,19 +1887,19 @@ static int snd_card_opti9xx_probe(struct pnp_card_link *pcard,
1891 static int possible_dma2s[][2] = {{1,-1}, {0,-1}, {-1,-1}, {0,-1}}; 1887 static int possible_dma2s[][2] = {{1,-1}, {0,-1}, {-1,-1}, {0,-1}};
1892#endif /* CS4231 || OPTi93X */ 1888#endif /* CS4231 || OPTi93X */
1893 int error; 1889 int error;
1894 opti9xx_t *chip; 1890 struct snd_opti9xx *chip;
1895#if defined(OPTi93X) 1891#if defined(OPTi93X)
1896 opti93x_t *codec; 1892 struct snd_opti93x *codec;
1897#elif defined(CS4231) 1893#elif defined(CS4231)
1898 cs4231_t *codec; 1894 struct snd_cs4231 *codec;
1899 snd_timer_t *timer; 1895 struct snd_timer *timer;
1900#else 1896#else
1901 ad1848_t *codec; 1897 struct snd_ad1848 *codec;
1902#endif 1898#endif
1903 snd_card_t *card; 1899 struct snd_card *card;
1904 snd_pcm_t *pcm; 1900 struct snd_pcm *pcm;
1905 snd_rawmidi_t *rmidi; 1901 struct snd_rawmidi *rmidi;
1906 snd_hwdep_t *synth; 1902 struct snd_hwdep *synth;
1907#ifdef CONFIG_PNP 1903#ifdef CONFIG_PNP
1908 int hw; 1904 int hw;
1909#endif /* CONFIG_PNP */ 1905#endif /* CONFIG_PNP */
@@ -1911,10 +1907,10 @@ static int snd_card_opti9xx_probe(struct pnp_card_link *pcard,
1911 if (pcard && !snd_opti9xx_first_hit) 1907 if (pcard && !snd_opti9xx_first_hit)
1912 return -EBUSY; 1908 return -EBUSY;
1913 if (!(card = snd_card_new(index, id, THIS_MODULE, 1909 if (!(card = snd_card_new(index, id, THIS_MODULE,
1914 sizeof(opti9xx_t)))) 1910 sizeof(struct snd_opti9xx))))
1915 return -ENOMEM; 1911 return -ENOMEM;
1916 card->private_free = snd_card_opti9xx_free; 1912 card->private_free = snd_card_opti9xx_free;
1917 chip = (opti9xx_t *)card->private_data; 1913 chip = (struct snd_opti9xx *)card->private_data;
1918 1914
1919#ifdef CONFIG_PNP 1915#ifdef CONFIG_PNP
1920 if (isapnp && pcard && (hw = snd_card_opti9xx_pnp(chip, pcard, pid)) > 0) { 1916 if (isapnp && pcard && (hw = snd_card_opti9xx_pnp(chip, pcard, pid)) > 0) {
@@ -2098,12 +2094,12 @@ static int snd_card_opti9xx_probe(struct pnp_card_link *pcard,
2098 snd_printk("no MPU-401 device at 0x%lx?\n", chip->mpu_port); 2094 snd_printk("no MPU-401 device at 0x%lx?\n", chip->mpu_port);
2099 2095
2100 if (chip->fm_port > 0 && chip->fm_port != SNDRV_AUTO_PORT) { 2096 if (chip->fm_port > 0 && chip->fm_port != SNDRV_AUTO_PORT) {
2101 opl3_t *opl3 = NULL; 2097 struct snd_opl3 *opl3 = NULL;
2102#ifndef OPTi93X 2098#ifndef OPTi93X
2103 if (chip->hardware == OPTi9XX_HW_82C928 || 2099 if (chip->hardware == OPTi9XX_HW_82C928 ||
2104 chip->hardware == OPTi9XX_HW_82C929 || 2100 chip->hardware == OPTi9XX_HW_82C929 ||
2105 chip->hardware == OPTi9XX_HW_82C924) { 2101 chip->hardware == OPTi9XX_HW_82C924) {
2106 opl4_t *opl4; 2102 struct snd_opl4 *opl4;
2107 /* assume we have an OPL4 */ 2103 /* assume we have an OPL4 */
2108 snd_opti9xx_write_mask(chip, OPTi9XX_MC_REG(2), 2104 snd_opti9xx_write_mask(chip, OPTi9XX_MC_REG(2),
2109 0x20, 0x20); 2105 0x20, 0x20);
@@ -2156,7 +2152,7 @@ static int snd_card_opti9xx_probe(struct pnp_card_link *pcard,
2156#ifdef CONFIG_PNP 2152#ifdef CONFIG_PNP
2157static void __devexit snd_opti9xx_pnp_remove(struct pnp_card_link * pcard) 2153static void __devexit snd_opti9xx_pnp_remove(struct pnp_card_link * pcard)
2158{ 2154{
2159 snd_card_t *card = (snd_card_t *) pnp_get_card_drvdata(pcard); 2155 struct snd_card *card = (struct snd_card *) pnp_get_card_drvdata(pcard);
2160 2156
2161 snd_card_disconnect(card); 2157 snd_card_disconnect(card);
2162 snd_card_free_in_thread(card); 2158 snd_card_free_in_thread(card);