|
@@ -44,17 +44,23 @@
|
|
|
|
|
|
#include <asm/io.h>
|
|
#include <asm/io.h>
|
|
|
|
|
|
-static int snd_trident_pcm_mixer_build(trident_t *trident, snd_trident_voice_t * voice, snd_pcm_substream_t *substream);
|
|
|
|
-static int snd_trident_pcm_mixer_free(trident_t *trident, snd_trident_voice_t * voice, snd_pcm_substream_t *substream);
|
|
|
|
-static irqreturn_t snd_trident_interrupt(int irq, void *dev_id, struct pt_regs *regs);
|
|
|
|
|
|
+static int snd_trident_pcm_mixer_build(struct snd_trident *trident,
|
|
|
|
+ struct snd_trident_voice * voice,
|
|
|
|
+ struct snd_pcm_substream *substream);
|
|
|
|
+static int snd_trident_pcm_mixer_free(struct snd_trident *trident,
|
|
|
|
+ struct snd_trident_voice * voice,
|
|
|
|
+ struct snd_pcm_substream *substream);
|
|
|
|
+static irqreturn_t snd_trident_interrupt(int irq, void *dev_id,
|
|
|
|
+ struct pt_regs *regs);
|
|
#ifdef CONFIG_PM
|
|
#ifdef CONFIG_PM
|
|
-static int snd_trident_suspend(snd_card_t *card, pm_message_t state);
|
|
|
|
-static int snd_trident_resume(snd_card_t *card);
|
|
|
|
|
|
+static int snd_trident_suspend(struct snd_card *card, pm_message_t state);
|
|
|
|
+static int snd_trident_resume(struct snd_card *card);
|
|
#endif
|
|
#endif
|
|
-static int snd_trident_sis_reset(trident_t *trident);
|
|
|
|
|
|
+static int snd_trident_sis_reset(struct snd_trident *trident);
|
|
|
|
|
|
-static void snd_trident_clear_voices(trident_t * trident, unsigned short v_min, unsigned short v_max);
|
|
|
|
-static int snd_trident_free(trident_t *trident);
|
|
|
|
|
|
+static void snd_trident_clear_voices(struct snd_trident * trident,
|
|
|
|
+ unsigned short v_min, unsigned short v_max);
|
|
|
|
+static int snd_trident_free(struct snd_trident *trident);
|
|
|
|
|
|
/*
|
|
/*
|
|
* common I/O routines
|
|
* common I/O routines
|
|
@@ -62,7 +68,7 @@ static int snd_trident_free(trident_t *trident);
|
|
|
|
|
|
|
|
|
|
#if 0
|
|
#if 0
|
|
-static void snd_trident_print_voice_regs(trident_t *trident, int voice)
|
|
|
|
|
|
+static void snd_trident_print_voice_regs(struct snd_trident *trident, int voice)
|
|
{
|
|
{
|
|
unsigned int val, tmp;
|
|
unsigned int val, tmp;
|
|
|
|
|
|
@@ -104,7 +110,7 @@ static void snd_trident_print_voice_regs(trident_t *trident, int voice)
|
|
#endif
|
|
#endif
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
/*---------------------------------------------------------------------------
|
|
- unsigned short snd_trident_codec_read(ac97_t *ac97, unsigned short reg)
|
|
|
|
|
|
+ unsigned short snd_trident_codec_read(struct snd_ac97 *ac97, unsigned short reg)
|
|
|
|
|
|
Description: This routine will do all of the reading from the external
|
|
Description: This routine will do all of the reading from the external
|
|
CODEC (AC97).
|
|
CODEC (AC97).
|
|
@@ -115,12 +121,12 @@ static void snd_trident_print_voice_regs(trident_t *trident, int voice)
|
|
returns: 16 bit value read from the AC97.
|
|
returns: 16 bit value read from the AC97.
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
-static unsigned short snd_trident_codec_read(ac97_t *ac97, unsigned short reg)
|
|
|
|
|
|
+static unsigned short snd_trident_codec_read(struct snd_ac97 *ac97, unsigned short reg)
|
|
{
|
|
{
|
|
unsigned int data = 0, treg;
|
|
unsigned int data = 0, treg;
|
|
unsigned short count = 0xffff;
|
|
unsigned short count = 0xffff;
|
|
unsigned long flags;
|
|
unsigned long flags;
|
|
- trident_t *trident = ac97->private_data;
|
|
|
|
|
|
+ struct snd_trident *trident = ac97->private_data;
|
|
|
|
|
|
spin_lock_irqsave(&trident->reg_lock, flags);
|
|
spin_lock_irqsave(&trident->reg_lock, flags);
|
|
if (trident->device == TRIDENT_DEVICE_ID_DX) {
|
|
if (trident->device == TRIDENT_DEVICE_ID_DX) {
|
|
@@ -153,7 +159,8 @@ static unsigned short snd_trident_codec_read(ac97_t *ac97, unsigned short reg)
|
|
}
|
|
}
|
|
|
|
|
|
if (count == 0 && !trident->ac97_detect) {
|
|
if (count == 0 && !trident->ac97_detect) {
|
|
- snd_printk(KERN_ERR "ac97 codec read TIMEOUT [0x%x/0x%x]!!!\n", reg, data);
|
|
|
|
|
|
+ snd_printk(KERN_ERR "ac97 codec read TIMEOUT [0x%x/0x%x]!!!\n",
|
|
|
|
+ reg, data);
|
|
data = 0;
|
|
data = 0;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -162,7 +169,8 @@ static unsigned short snd_trident_codec_read(ac97_t *ac97, unsigned short reg)
|
|
}
|
|
}
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
/*---------------------------------------------------------------------------
|
|
- void snd_trident_codec_write(ac97_t *ac97, unsigned short reg, unsigned short wdata)
|
|
|
|
|
|
+ void snd_trident_codec_write(struct snd_ac97 *ac97, unsigned short reg,
|
|
|
|
+ unsigned short wdata)
|
|
|
|
|
|
Description: This routine will do all of the writing to the external
|
|
Description: This routine will do all of the writing to the external
|
|
CODEC (AC97).
|
|
CODEC (AC97).
|
|
@@ -174,12 +182,13 @@ static unsigned short snd_trident_codec_read(ac97_t *ac97, unsigned short reg)
|
|
returns: TRUE if everything went ok, else FALSE.
|
|
returns: TRUE if everything went ok, else FALSE.
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
-static void snd_trident_codec_write(ac97_t *ac97, unsigned short reg, unsigned short wdata)
|
|
|
|
|
|
+static void snd_trident_codec_write(struct snd_ac97 *ac97, unsigned short reg,
|
|
|
|
+ unsigned short wdata)
|
|
{
|
|
{
|
|
unsigned int address, data;
|
|
unsigned int address, data;
|
|
unsigned short count = 0xffff;
|
|
unsigned short count = 0xffff;
|
|
unsigned long flags;
|
|
unsigned long flags;
|
|
- trident_t *trident = ac97->private_data;
|
|
|
|
|
|
+ struct snd_trident *trident = ac97->private_data;
|
|
|
|
|
|
data = ((unsigned long) wdata) << 16;
|
|
data = ((unsigned long) wdata) << 16;
|
|
|
|
|
|
@@ -230,7 +239,7 @@ static void snd_trident_codec_write(ac97_t *ac97, unsigned short reg, unsigned s
|
|
}
|
|
}
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
/*---------------------------------------------------------------------------
|
|
- void snd_trident_enable_eso(trident_t *trident)
|
|
|
|
|
|
+ void snd_trident_enable_eso(struct snd_trident *trident)
|
|
|
|
|
|
Description: This routine will enable end of loop interrupts.
|
|
Description: This routine will enable end of loop interrupts.
|
|
End of loop interrupts will occur when a running
|
|
End of loop interrupts will occur when a running
|
|
@@ -241,7 +250,7 @@ static void snd_trident_codec_write(ac97_t *ac97, unsigned short reg, unsigned s
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static void snd_trident_enable_eso(trident_t * trident)
|
|
|
|
|
|
+static void snd_trident_enable_eso(struct snd_trident * trident)
|
|
{
|
|
{
|
|
unsigned int val;
|
|
unsigned int val;
|
|
|
|
|
|
@@ -254,7 +263,7 @@ static void snd_trident_enable_eso(trident_t * trident)
|
|
}
|
|
}
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
/*---------------------------------------------------------------------------
|
|
- void snd_trident_disable_eso(trident_t *trident)
|
|
|
|
|
|
+ void snd_trident_disable_eso(struct snd_trident *trident)
|
|
|
|
|
|
Description: This routine will disable end of loop interrupts.
|
|
Description: This routine will disable end of loop interrupts.
|
|
End of loop interrupts will occur when a running
|
|
End of loop interrupts will occur when a running
|
|
@@ -268,7 +277,7 @@ static void snd_trident_enable_eso(trident_t * trident)
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static void snd_trident_disable_eso(trident_t * trident)
|
|
|
|
|
|
+static void snd_trident_disable_eso(struct snd_trident * trident)
|
|
{
|
|
{
|
|
unsigned int tmp;
|
|
unsigned int tmp;
|
|
|
|
|
|
@@ -279,7 +288,7 @@ static void snd_trident_disable_eso(trident_t * trident)
|
|
}
|
|
}
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
/*---------------------------------------------------------------------------
|
|
- void snd_trident_start_voice(trident_t * trident, unsigned int voice)
|
|
|
|
|
|
+ void snd_trident_start_voice(struct snd_trident * trident, unsigned int voice)
|
|
|
|
|
|
Description: Start a voice, any channel 0 thru 63.
|
|
Description: Start a voice, any channel 0 thru 63.
|
|
This routine automatically handles the fact that there are
|
|
This routine automatically handles the fact that there are
|
|
@@ -292,7 +301,7 @@ static void snd_trident_disable_eso(trident_t * trident)
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-void snd_trident_start_voice(trident_t * trident, unsigned int voice)
|
|
|
|
|
|
+void snd_trident_start_voice(struct snd_trident * trident, unsigned int voice)
|
|
{
|
|
{
|
|
unsigned int mask = 1 << (voice & 0x1f);
|
|
unsigned int mask = 1 << (voice & 0x1f);
|
|
unsigned int reg = (voice & 0x20) ? T4D_START_B : T4D_START_A;
|
|
unsigned int reg = (voice & 0x20) ? T4D_START_B : T4D_START_A;
|
|
@@ -301,7 +310,7 @@ void snd_trident_start_voice(trident_t * trident, unsigned int voice)
|
|
}
|
|
}
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
/*---------------------------------------------------------------------------
|
|
- void snd_trident_stop_voice(trident_t * trident, unsigned int voice)
|
|
|
|
|
|
+ void snd_trident_stop_voice(struct snd_trident * trident, unsigned int voice)
|
|
|
|
|
|
Description: Stop a voice, any channel 0 thru 63.
|
|
Description: Stop a voice, any channel 0 thru 63.
|
|
This routine automatically handles the fact that there are
|
|
This routine automatically handles the fact that there are
|
|
@@ -314,7 +323,7 @@ void snd_trident_start_voice(trident_t * trident, unsigned int voice)
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-void snd_trident_stop_voice(trident_t * trident, unsigned int voice)
|
|
|
|
|
|
+void snd_trident_stop_voice(struct snd_trident * trident, unsigned int voice)
|
|
{
|
|
{
|
|
unsigned int mask = 1 << (voice & 0x1f);
|
|
unsigned int mask = 1 << (voice & 0x1f);
|
|
unsigned int reg = (voice & 0x20) ? T4D_STOP_B : T4D_STOP_A;
|
|
unsigned int reg = (voice & 0x20) ? T4D_STOP_B : T4D_STOP_A;
|
|
@@ -323,7 +332,7 @@ void snd_trident_stop_voice(trident_t * trident, unsigned int voice)
|
|
}
|
|
}
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
/*---------------------------------------------------------------------------
|
|
- int snd_trident_allocate_pcm_channel(trident_t *trident)
|
|
|
|
|
|
+ int snd_trident_allocate_pcm_channel(struct snd_trident *trident)
|
|
|
|
|
|
Description: Allocate hardware channel in Bank B (32-63).
|
|
Description: Allocate hardware channel in Bank B (32-63).
|
|
|
|
|
|
@@ -333,7 +342,7 @@ void snd_trident_stop_voice(trident_t * trident, unsigned int voice)
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static int snd_trident_allocate_pcm_channel(trident_t * trident)
|
|
|
|
|
|
+static int snd_trident_allocate_pcm_channel(struct snd_trident * trident)
|
|
{
|
|
{
|
|
int idx;
|
|
int idx;
|
|
|
|
|
|
@@ -361,7 +370,7 @@ static int snd_trident_allocate_pcm_channel(trident_t * trident)
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static void snd_trident_free_pcm_channel(trident_t *trident, int channel)
|
|
|
|
|
|
+static void snd_trident_free_pcm_channel(struct snd_trident *trident, int channel)
|
|
{
|
|
{
|
|
if (channel < 32 || channel > 63)
|
|
if (channel < 32 || channel > 63)
|
|
return;
|
|
return;
|
|
@@ -383,7 +392,7 @@ static void snd_trident_free_pcm_channel(trident_t *trident, int channel)
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static int snd_trident_allocate_synth_channel(trident_t * trident)
|
|
|
|
|
|
+static int snd_trident_allocate_synth_channel(struct snd_trident * trident)
|
|
{
|
|
{
|
|
int idx;
|
|
int idx;
|
|
|
|
|
|
@@ -409,7 +418,7 @@ static int snd_trident_allocate_synth_channel(trident_t * trident)
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static void snd_trident_free_synth_channel(trident_t *trident, int channel)
|
|
|
|
|
|
+static void snd_trident_free_synth_channel(struct snd_trident *trident, int channel)
|
|
{
|
|
{
|
|
if (channel < 0 || channel > 31)
|
|
if (channel < 0 || channel > 31)
|
|
return;
|
|
return;
|
|
@@ -432,8 +441,8 @@ static void snd_trident_free_synth_channel(trident_t *trident, int channel)
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-void snd_trident_write_voice_regs(trident_t * trident,
|
|
|
|
- snd_trident_voice_t * voice)
|
|
|
|
|
|
+void snd_trident_write_voice_regs(struct snd_trident * trident,
|
|
|
|
+ struct snd_trident_voice * voice)
|
|
{
|
|
{
|
|
unsigned int FmcRvolCvol;
|
|
unsigned int FmcRvolCvol;
|
|
unsigned int regs[5];
|
|
unsigned int regs[5];
|
|
@@ -452,14 +461,16 @@ void snd_trident_write_voice_regs(trident_t * trident,
|
|
(voice->Vol & 0x000003ff) :
|
|
(voice->Vol & 0x000003ff) :
|
|
((voice->Vol & 0x00003fc) << (16-2)) |
|
|
((voice->Vol & 0x00003fc) << (16-2)) |
|
|
(voice->EC & 0x00000fff);
|
|
(voice->EC & 0x00000fff);
|
|
- regs[0] = (voice->CSO << 16) | ((voice->Alpha & 0x00000fff) << 4) | (voice->FMS & 0x0000000f);
|
|
|
|
|
|
+ regs[0] = (voice->CSO << 16) | ((voice->Alpha & 0x00000fff) << 4) |
|
|
|
|
+ (voice->FMS & 0x0000000f);
|
|
regs[2] = (voice->ESO << 16) | (voice->Delta & 0x0ffff);
|
|
regs[2] = (voice->ESO << 16) | (voice->Delta & 0x0ffff);
|
|
regs[3] = (voice->Attribute << 16) | FmcRvolCvol;
|
|
regs[3] = (voice->Attribute << 16) | FmcRvolCvol;
|
|
break;
|
|
break;
|
|
case TRIDENT_DEVICE_ID_DX:
|
|
case TRIDENT_DEVICE_ID_DX:
|
|
regs[4] |= ((voice->Vol & 0x000003fc) << (16-2)) |
|
|
regs[4] |= ((voice->Vol & 0x000003fc) << (16-2)) |
|
|
(voice->EC & 0x00000fff);
|
|
(voice->EC & 0x00000fff);
|
|
- regs[0] = (voice->CSO << 16) | ((voice->Alpha & 0x00000fff) << 4) | (voice->FMS & 0x0000000f);
|
|
|
|
|
|
+ regs[0] = (voice->CSO << 16) | ((voice->Alpha & 0x00000fff) << 4) |
|
|
|
|
+ (voice->FMS & 0x0000000f);
|
|
regs[2] = (voice->ESO << 16) | (voice->Delta & 0x0ffff);
|
|
regs[2] = (voice->ESO << 16) | (voice->Delta & 0x0ffff);
|
|
regs[3] = FmcRvolCvol;
|
|
regs[3] = FmcRvolCvol;
|
|
break;
|
|
break;
|
|
@@ -467,8 +478,10 @@ void snd_trident_write_voice_regs(trident_t * trident,
|
|
regs[4] |= ((voice->Vol & 0x000003fc) << (16-2)) |
|
|
regs[4] |= ((voice->Vol & 0x000003fc) << (16-2)) |
|
|
(voice->EC & 0x00000fff);
|
|
(voice->EC & 0x00000fff);
|
|
regs[0] = (voice->Delta << 24) | (voice->CSO & 0x00ffffff);
|
|
regs[0] = (voice->Delta << 24) | (voice->CSO & 0x00ffffff);
|
|
- regs[2] = ((voice->Delta << 16) & 0xff000000) | (voice->ESO & 0x00ffffff);
|
|
|
|
- regs[3] = (voice->Alpha << 20) | ((voice->FMS & 0x0000000f) << 16) | FmcRvolCvol;
|
|
|
|
|
|
+ regs[2] = ((voice->Delta << 16) & 0xff000000) |
|
|
|
|
+ (voice->ESO & 0x00ffffff);
|
|
|
|
+ regs[3] = (voice->Alpha << 20) |
|
|
|
|
+ ((voice->FMS & 0x0000000f) << 16) | FmcRvolCvol;
|
|
break;
|
|
break;
|
|
default:
|
|
default:
|
|
snd_BUG();
|
|
snd_BUG();
|
|
@@ -504,14 +517,17 @@ void snd_trident_write_voice_regs(trident_t * trident,
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static void snd_trident_write_cso_reg(trident_t * trident, snd_trident_voice_t * voice, unsigned int CSO)
|
|
|
|
|
|
+static void snd_trident_write_cso_reg(struct snd_trident * trident,
|
|
|
|
+ struct snd_trident_voice * voice,
|
|
|
|
+ unsigned int CSO)
|
|
{
|
|
{
|
|
voice->CSO = CSO;
|
|
voice->CSO = CSO;
|
|
outb(voice->number, TRID_REG(trident, T4D_LFO_GC_CIR));
|
|
outb(voice->number, TRID_REG(trident, T4D_LFO_GC_CIR));
|
|
if (trident->device != TRIDENT_DEVICE_ID_NX) {
|
|
if (trident->device != TRIDENT_DEVICE_ID_NX) {
|
|
outw(voice->CSO, TRID_REG(trident, CH_DX_CSO_ALPHA_FMS) + 2);
|
|
outw(voice->CSO, TRID_REG(trident, CH_DX_CSO_ALPHA_FMS) + 2);
|
|
} else {
|
|
} else {
|
|
- outl((voice->Delta << 24) | (voice->CSO & 0x00ffffff), TRID_REG(trident, CH_NX_DELTA_CSO));
|
|
|
|
|
|
+ outl((voice->Delta << 24) |
|
|
|
|
+ (voice->CSO & 0x00ffffff), TRID_REG(trident, CH_NX_DELTA_CSO));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -527,14 +543,17 @@ static void snd_trident_write_cso_reg(trident_t * trident, snd_trident_voice_t *
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static void snd_trident_write_eso_reg(trident_t * trident, snd_trident_voice_t * voice, unsigned int ESO)
|
|
|
|
|
|
+static void snd_trident_write_eso_reg(struct snd_trident * trident,
|
|
|
|
+ struct snd_trident_voice * voice,
|
|
|
|
+ unsigned int ESO)
|
|
{
|
|
{
|
|
voice->ESO = ESO;
|
|
voice->ESO = ESO;
|
|
outb(voice->number, TRID_REG(trident, T4D_LFO_GC_CIR));
|
|
outb(voice->number, TRID_REG(trident, T4D_LFO_GC_CIR));
|
|
if (trident->device != TRIDENT_DEVICE_ID_NX) {
|
|
if (trident->device != TRIDENT_DEVICE_ID_NX) {
|
|
outw(voice->ESO, TRID_REG(trident, CH_DX_ESO_DELTA) + 2);
|
|
outw(voice->ESO, TRID_REG(trident, CH_DX_ESO_DELTA) + 2);
|
|
} else {
|
|
} else {
|
|
- outl(((voice->Delta << 16) & 0xff000000) | (voice->ESO & 0x00ffffff), TRID_REG(trident, CH_NX_DELTA_ESO));
|
|
|
|
|
|
+ outl(((voice->Delta << 16) & 0xff000000) | (voice->ESO & 0x00ffffff),
|
|
|
|
+ TRID_REG(trident, CH_NX_DELTA_ESO));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
@@ -550,7 +569,9 @@ static void snd_trident_write_eso_reg(trident_t * trident, snd_trident_voice_t *
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static void snd_trident_write_vol_reg(trident_t * trident, snd_trident_voice_t * voice, unsigned int Vol)
|
|
|
|
|
|
+static void snd_trident_write_vol_reg(struct snd_trident * trident,
|
|
|
|
+ struct snd_trident_voice * voice,
|
|
|
|
+ unsigned int Vol)
|
|
{
|
|
{
|
|
voice->Vol = Vol;
|
|
voice->Vol = Vol;
|
|
outb(voice->number, TRID_REG(trident, T4D_LFO_GC_CIR));
|
|
outb(voice->number, TRID_REG(trident, T4D_LFO_GC_CIR));
|
|
@@ -561,7 +582,8 @@ static void snd_trident_write_vol_reg(trident_t * trident, snd_trident_voice_t *
|
|
break;
|
|
break;
|
|
case TRIDENT_DEVICE_ID_SI7018:
|
|
case TRIDENT_DEVICE_ID_SI7018:
|
|
// printk("voice->Vol = 0x%x\n", voice->Vol);
|
|
// printk("voice->Vol = 0x%x\n", voice->Vol);
|
|
- outw((voice->CTRL << 12) | voice->Vol, TRID_REG(trident, CH_GVSEL_PAN_VOL_CTRL_EC));
|
|
|
|
|
|
+ outw((voice->CTRL << 12) | voice->Vol,
|
|
|
|
+ TRID_REG(trident, CH_GVSEL_PAN_VOL_CTRL_EC));
|
|
break;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
@@ -578,11 +600,14 @@ static void snd_trident_write_vol_reg(trident_t * trident, snd_trident_voice_t *
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static void snd_trident_write_pan_reg(trident_t * trident, snd_trident_voice_t * voice, unsigned int Pan)
|
|
|
|
|
|
+static void snd_trident_write_pan_reg(struct snd_trident * trident,
|
|
|
|
+ struct snd_trident_voice * voice,
|
|
|
|
+ unsigned int Pan)
|
|
{
|
|
{
|
|
voice->Pan = Pan;
|
|
voice->Pan = Pan;
|
|
outb(voice->number, TRID_REG(trident, T4D_LFO_GC_CIR));
|
|
outb(voice->number, TRID_REG(trident, T4D_LFO_GC_CIR));
|
|
- outb(((voice->GVSel & 0x01) << 7) | (voice->Pan & 0x7f), TRID_REG(trident, CH_GVSEL_PAN_VOL_CTRL_EC + 3));
|
|
|
|
|
|
+ outb(((voice->GVSel & 0x01) << 7) | (voice->Pan & 0x7f),
|
|
|
|
+ TRID_REG(trident, CH_GVSEL_PAN_VOL_CTRL_EC + 3));
|
|
}
|
|
}
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
/*---------------------------------------------------------------------------
|
|
@@ -597,12 +622,16 @@ static void snd_trident_write_pan_reg(trident_t * trident, snd_trident_voice_t *
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static void snd_trident_write_rvol_reg(trident_t * trident, snd_trident_voice_t * voice, unsigned int RVol)
|
|
|
|
|
|
+static void snd_trident_write_rvol_reg(struct snd_trident * trident,
|
|
|
|
+ struct snd_trident_voice * voice,
|
|
|
|
+ unsigned int RVol)
|
|
{
|
|
{
|
|
voice->RVol = RVol;
|
|
voice->RVol = RVol;
|
|
outb(voice->number, TRID_REG(trident, T4D_LFO_GC_CIR));
|
|
outb(voice->number, TRID_REG(trident, T4D_LFO_GC_CIR));
|
|
- outw(((voice->FMC & 0x0003) << 14) | ((voice->RVol & 0x007f) << 7) | (voice->CVol & 0x007f),
|
|
|
|
- TRID_REG(trident, trident->device == TRIDENT_DEVICE_ID_NX ? CH_NX_ALPHA_FMS_FMC_RVOL_CVOL : CH_DX_FMC_RVOL_CVOL));
|
|
|
|
|
|
+ outw(((voice->FMC & 0x0003) << 14) | ((voice->RVol & 0x007f) << 7) |
|
|
|
|
+ (voice->CVol & 0x007f),
|
|
|
|
+ TRID_REG(trident, trident->device == TRIDENT_DEVICE_ID_NX ?
|
|
|
|
+ CH_NX_ALPHA_FMS_FMC_RVOL_CVOL : CH_DX_FMC_RVOL_CVOL));
|
|
}
|
|
}
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
/*---------------------------------------------------------------------------
|
|
@@ -617,12 +646,16 @@ static void snd_trident_write_rvol_reg(trident_t * trident, snd_trident_voice_t
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static void snd_trident_write_cvol_reg(trident_t * trident, snd_trident_voice_t * voice, unsigned int CVol)
|
|
|
|
|
|
+static void snd_trident_write_cvol_reg(struct snd_trident * trident,
|
|
|
|
+ struct snd_trident_voice * voice,
|
|
|
|
+ unsigned int CVol)
|
|
{
|
|
{
|
|
voice->CVol = CVol;
|
|
voice->CVol = CVol;
|
|
outb(voice->number, TRID_REG(trident, T4D_LFO_GC_CIR));
|
|
outb(voice->number, TRID_REG(trident, T4D_LFO_GC_CIR));
|
|
- outw(((voice->FMC & 0x0003) << 14) | ((voice->RVol & 0x007f) << 7) | (voice->CVol & 0x007f),
|
|
|
|
- TRID_REG(trident, trident->device == TRIDENT_DEVICE_ID_NX ? CH_NX_ALPHA_FMS_FMC_RVOL_CVOL : CH_DX_FMC_RVOL_CVOL));
|
|
|
|
|
|
+ outw(((voice->FMC & 0x0003) << 14) | ((voice->RVol & 0x007f) << 7) |
|
|
|
|
+ (voice->CVol & 0x007f),
|
|
|
|
+ TRID_REG(trident, trident->device == TRIDENT_DEVICE_ID_NX ?
|
|
|
|
+ CH_NX_ALPHA_FMS_FMC_RVOL_CVOL : CH_DX_FMC_RVOL_CVOL));
|
|
}
|
|
}
|
|
|
|
|
|
/*---------------------------------------------------------------------------
|
|
/*---------------------------------------------------------------------------
|
|
@@ -696,7 +729,8 @@ static unsigned int snd_trident_convert_adc_rate(unsigned int rate)
|
|
Returns: Delta value.
|
|
Returns: Delta value.
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
-static unsigned int snd_trident_spurious_threshold(unsigned int rate, unsigned int period_size)
|
|
|
|
|
|
+static unsigned int snd_trident_spurious_threshold(unsigned int rate,
|
|
|
|
+ unsigned int period_size)
|
|
{
|
|
{
|
|
unsigned int res = (rate * period_size) / 48000;
|
|
unsigned int res = (rate * period_size) / 48000;
|
|
if (res < 64)
|
|
if (res < 64)
|
|
@@ -717,10 +751,10 @@ static unsigned int snd_trident_spurious_threshold(unsigned int rate, unsigned i
|
|
Returns: Control value.
|
|
Returns: Control value.
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
-static unsigned int snd_trident_control_mode(snd_pcm_substream_t *substream)
|
|
|
|
|
|
+static unsigned int snd_trident_control_mode(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
unsigned int CTRL;
|
|
unsigned int CTRL;
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
|
|
|
|
/* set ctrl mode
|
|
/* set ctrl mode
|
|
CTRL default: 8-bit (unsigned) mono, loop mode enabled
|
|
CTRL default: 8-bit (unsigned) mono, loop mode enabled
|
|
@@ -752,7 +786,7 @@ static unsigned int snd_trident_control_mode(snd_pcm_substream_t *substream)
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static int snd_trident_ioctl(snd_pcm_substream_t * substream,
|
|
|
|
|
|
+static int snd_trident_ioctl(struct snd_pcm_substream *substream,
|
|
unsigned int cmd,
|
|
unsigned int cmd,
|
|
void *arg)
|
|
void *arg)
|
|
{
|
|
{
|
|
@@ -774,12 +808,12 @@ static int snd_trident_ioctl(snd_pcm_substream_t * substream,
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static int snd_trident_allocate_pcm_mem(snd_pcm_substream_t * substream,
|
|
|
|
- snd_pcm_hw_params_t * hw_params)
|
|
|
|
|
|
+static int snd_trident_allocate_pcm_mem(struct snd_pcm_substream *substream,
|
|
|
|
+ struct snd_pcm_hw_params *hw_params)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
- snd_trident_voice_t *voice = (snd_trident_voice_t *) runtime->private_data;
|
|
|
|
|
|
+ struct snd_trident *trident = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
|
|
+ struct snd_trident_voice *voice = runtime->private_data;
|
|
int err;
|
|
int err;
|
|
|
|
|
|
if ((err = snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(hw_params))) < 0)
|
|
if ((err = snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(hw_params))) < 0)
|
|
@@ -808,13 +842,13 @@ static int snd_trident_allocate_pcm_mem(snd_pcm_substream_t * substream,
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static int snd_trident_allocate_evoice(snd_pcm_substream_t * substream,
|
|
|
|
- snd_pcm_hw_params_t * hw_params)
|
|
|
|
|
|
+static int snd_trident_allocate_evoice(struct snd_pcm_substream *substream,
|
|
|
|
+ struct snd_pcm_hw_params *hw_params)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
- snd_trident_voice_t *voice = (snd_trident_voice_t *) runtime->private_data;
|
|
|
|
- snd_trident_voice_t *evoice = voice->extra;
|
|
|
|
|
|
+ struct snd_trident *trident = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
|
|
+ struct snd_trident_voice *voice = runtime->private_data;
|
|
|
|
+ struct snd_trident_voice *evoice = voice->extra;
|
|
|
|
|
|
/* voice management */
|
|
/* voice management */
|
|
|
|
|
|
@@ -848,8 +882,8 @@ static int snd_trident_allocate_evoice(snd_pcm_substream_t * substream,
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static int snd_trident_hw_params(snd_pcm_substream_t * substream,
|
|
|
|
- snd_pcm_hw_params_t * hw_params)
|
|
|
|
|
|
+static int snd_trident_hw_params(struct snd_pcm_substream *substream,
|
|
|
|
+ struct snd_pcm_hw_params *hw_params)
|
|
{
|
|
{
|
|
int err;
|
|
int err;
|
|
|
|
|
|
@@ -870,12 +904,12 @@ static int snd_trident_hw_params(snd_pcm_substream_t * substream,
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static int snd_trident_hw_free(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static int snd_trident_hw_free(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
- snd_trident_voice_t *voice = (snd_trident_voice_t *) runtime->private_data;
|
|
|
|
- snd_trident_voice_t *evoice = voice ? voice->extra : NULL;
|
|
|
|
|
|
+ struct snd_trident *trident = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
|
|
+ struct snd_trident_voice *voice = runtime->private_data;
|
|
|
|
+ struct snd_trident_voice *evoice = voice ? voice->extra : NULL;
|
|
|
|
|
|
if (trident->tlb.entries) {
|
|
if (trident->tlb.entries) {
|
|
if (voice && voice->memblk) {
|
|
if (voice && voice->memblk) {
|
|
@@ -902,13 +936,13 @@ static int snd_trident_hw_free(snd_pcm_substream_t * substream)
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static int snd_trident_playback_prepare(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static int snd_trident_playback_prepare(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
- snd_trident_voice_t *voice = (snd_trident_voice_t *) runtime->private_data;
|
|
|
|
- snd_trident_voice_t *evoice = voice->extra;
|
|
|
|
- snd_trident_pcm_mixer_t *mix = &trident->pcm_mixer[substream->number];
|
|
|
|
|
|
+ struct snd_trident *trident = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
|
|
+ struct snd_trident_voice *voice = runtime->private_data;
|
|
|
|
+ struct snd_trident_voice *evoice = voice->extra;
|
|
|
|
+ struct snd_trident_pcm_mixer *mix = &trident->pcm_mixer[substream->number];
|
|
|
|
|
|
spin_lock_irq(&trident->reg_lock);
|
|
spin_lock_irq(&trident->reg_lock);
|
|
|
|
|
|
@@ -988,8 +1022,8 @@ static int snd_trident_playback_prepare(snd_pcm_substream_t * substream)
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static int snd_trident_capture_hw_params(snd_pcm_substream_t * substream,
|
|
|
|
- snd_pcm_hw_params_t * hw_params)
|
|
|
|
|
|
+static int snd_trident_capture_hw_params(struct snd_pcm_substream *substream,
|
|
|
|
+ struct snd_pcm_hw_params *hw_params)
|
|
{
|
|
{
|
|
return snd_trident_allocate_pcm_mem(substream, hw_params);
|
|
return snd_trident_allocate_pcm_mem(substream, hw_params);
|
|
}
|
|
}
|
|
@@ -1005,11 +1039,11 @@ static int snd_trident_capture_hw_params(snd_pcm_substream_t * substream,
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static int snd_trident_capture_prepare(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static int snd_trident_capture_prepare(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
- snd_trident_voice_t *voice = (snd_trident_voice_t *) runtime->private_data;
|
|
|
|
|
|
+ struct snd_trident *trident = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
|
|
+ struct snd_trident_voice *voice = runtime->private_data;
|
|
unsigned int val, ESO_bytes;
|
|
unsigned int val, ESO_bytes;
|
|
|
|
|
|
spin_lock_irq(&trident->reg_lock);
|
|
spin_lock_irq(&trident->reg_lock);
|
|
@@ -1097,8 +1131,8 @@ static int snd_trident_capture_prepare(snd_pcm_substream_t * substream)
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static int snd_trident_si7018_capture_hw_params(snd_pcm_substream_t * substream,
|
|
|
|
- snd_pcm_hw_params_t * hw_params)
|
|
|
|
|
|
+static int snd_trident_si7018_capture_hw_params(struct snd_pcm_substream *substream,
|
|
|
|
+ struct snd_pcm_hw_params *hw_params)
|
|
{
|
|
{
|
|
int err;
|
|
int err;
|
|
|
|
|
|
@@ -1119,12 +1153,12 @@ static int snd_trident_si7018_capture_hw_params(snd_pcm_substream_t * substream,
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static int snd_trident_si7018_capture_hw_free(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static int snd_trident_si7018_capture_hw_free(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
- snd_trident_voice_t *voice = (snd_trident_voice_t *) runtime->private_data;
|
|
|
|
- snd_trident_voice_t *evoice = voice ? voice->extra : NULL;
|
|
|
|
|
|
+ struct snd_trident *trident = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
|
|
+ struct snd_trident_voice *voice = runtime->private_data;
|
|
|
|
+ struct snd_trident_voice *evoice = voice ? voice->extra : NULL;
|
|
|
|
|
|
snd_pcm_lib_free_pages(substream);
|
|
snd_pcm_lib_free_pages(substream);
|
|
if (evoice != NULL) {
|
|
if (evoice != NULL) {
|
|
@@ -1145,12 +1179,12 @@ static int snd_trident_si7018_capture_hw_free(snd_pcm_substream_t * substream)
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static int snd_trident_si7018_capture_prepare(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static int snd_trident_si7018_capture_prepare(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
- snd_trident_voice_t *voice = (snd_trident_voice_t *) runtime->private_data;
|
|
|
|
- snd_trident_voice_t *evoice = voice->extra;
|
|
|
|
|
|
+ struct snd_trident *trident = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
|
|
+ struct snd_trident_voice *voice = runtime->private_data;
|
|
|
|
+ struct snd_trident_voice *evoice = voice->extra;
|
|
|
|
|
|
spin_lock_irq(&trident->reg_lock);
|
|
spin_lock_irq(&trident->reg_lock);
|
|
|
|
|
|
@@ -1216,12 +1250,12 @@ static int snd_trident_si7018_capture_prepare(snd_pcm_substream_t * substream)
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static int snd_trident_foldback_prepare(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static int snd_trident_foldback_prepare(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
- snd_trident_voice_t *voice = (snd_trident_voice_t *) runtime->private_data;
|
|
|
|
- snd_trident_voice_t *evoice = voice->extra;
|
|
|
|
|
|
+ struct snd_trident *trident = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
|
|
+ struct snd_trident_voice *voice = runtime->private_data;
|
|
|
|
+ struct snd_trident_voice *evoice = voice->extra;
|
|
|
|
|
|
spin_lock_irq(&trident->reg_lock);
|
|
spin_lock_irq(&trident->reg_lock);
|
|
|
|
|
|
@@ -1294,10 +1328,10 @@ static int snd_trident_foldback_prepare(snd_pcm_substream_t * substream)
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static int snd_trident_spdif_hw_params(snd_pcm_substream_t * substream,
|
|
|
|
- snd_pcm_hw_params_t * hw_params)
|
|
|
|
|
|
+static int snd_trident_spdif_hw_params(struct snd_pcm_substream *substream,
|
|
|
|
+ struct snd_pcm_hw_params *hw_params)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_pcm_substream_chip(substream);
|
|
|
|
|
|
+ struct snd_trident *trident = snd_pcm_substream_chip(substream);
|
|
unsigned int old_bits = 0, change = 0;
|
|
unsigned int old_bits = 0, change = 0;
|
|
int err;
|
|
int err;
|
|
|
|
|
|
@@ -1359,13 +1393,13 @@ static int snd_trident_spdif_hw_params(snd_pcm_substream_t * substream,
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static int snd_trident_spdif_prepare(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static int snd_trident_spdif_prepare(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
- snd_trident_voice_t *voice = (snd_trident_voice_t *) runtime->private_data;
|
|
|
|
- snd_trident_voice_t *evoice = voice->extra;
|
|
|
|
- snd_trident_pcm_mixer_t *mix = &trident->pcm_mixer[substream->number];
|
|
|
|
|
|
+ struct snd_trident *trident = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
|
|
+ struct snd_trident_voice *voice = runtime->private_data;
|
|
|
|
+ struct snd_trident_voice *evoice = voice->extra;
|
|
|
|
+ struct snd_trident_pcm_mixer *mix = &trident->pcm_mixer[substream->number];
|
|
unsigned int RESO, LBAO;
|
|
unsigned int RESO, LBAO;
|
|
unsigned int temp;
|
|
unsigned int temp;
|
|
|
|
|
|
@@ -1498,15 +1532,15 @@ static int snd_trident_spdif_prepare(snd_pcm_substream_t * substream)
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static int snd_trident_trigger(snd_pcm_substream_t *substream,
|
|
|
|
|
|
+static int snd_trident_trigger(struct snd_pcm_substream *substream,
|
|
int cmd)
|
|
int cmd)
|
|
|
|
|
|
{
|
|
{
|
|
- trident_t *trident = snd_pcm_substream_chip(substream);
|
|
|
|
|
|
+ struct snd_trident *trident = snd_pcm_substream_chip(substream);
|
|
struct list_head *pos;
|
|
struct list_head *pos;
|
|
- snd_pcm_substream_t *s;
|
|
|
|
|
|
+ struct snd_pcm_substream *s;
|
|
unsigned int what, whati, capture_flag, spdif_flag;
|
|
unsigned int what, whati, capture_flag, spdif_flag;
|
|
- snd_trident_voice_t *voice, *evoice;
|
|
|
|
|
|
+ struct snd_trident_voice *voice, *evoice;
|
|
unsigned int val, go;
|
|
unsigned int val, go;
|
|
|
|
|
|
switch (cmd) {
|
|
switch (cmd) {
|
|
@@ -1528,8 +1562,8 @@ static int snd_trident_trigger(snd_pcm_substream_t *substream,
|
|
val = inl(TRID_REG(trident, T4D_STIMER)) & 0x00ffffff;
|
|
val = inl(TRID_REG(trident, T4D_STIMER)) & 0x00ffffff;
|
|
snd_pcm_group_for_each(pos, substream) {
|
|
snd_pcm_group_for_each(pos, substream) {
|
|
s = snd_pcm_group_substream_entry(pos);
|
|
s = snd_pcm_group_substream_entry(pos);
|
|
- if ((trident_t *) snd_pcm_substream_chip(s) == trident) {
|
|
|
|
- voice = (snd_trident_voice_t *) s->runtime->private_data;
|
|
|
|
|
|
+ if ((struct snd_trident *) snd_pcm_substream_chip(s) == trident) {
|
|
|
|
+ voice = s->runtime->private_data;
|
|
evoice = voice->extra;
|
|
evoice = voice->extra;
|
|
what |= 1 << (voice->number & 0x1f);
|
|
what |= 1 << (voice->number & 0x1f);
|
|
if (evoice == NULL) {
|
|
if (evoice == NULL) {
|
|
@@ -1596,11 +1630,11 @@ static int snd_trident_trigger(snd_pcm_substream_t *substream,
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static snd_pcm_uframes_t snd_trident_playback_pointer(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static snd_pcm_uframes_t snd_trident_playback_pointer(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
- snd_trident_voice_t *voice = (snd_trident_voice_t *) runtime->private_data;
|
|
|
|
|
|
+ struct snd_trident *trident = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
|
|
+ struct snd_trident_voice *voice = runtime->private_data;
|
|
unsigned int cso;
|
|
unsigned int cso;
|
|
|
|
|
|
if (!voice->running)
|
|
if (!voice->running)
|
|
@@ -1635,11 +1669,11 @@ static snd_pcm_uframes_t snd_trident_playback_pointer(snd_pcm_substream_t * subs
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static snd_pcm_uframes_t snd_trident_capture_pointer(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static snd_pcm_uframes_t snd_trident_capture_pointer(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
- snd_trident_voice_t *voice = (snd_trident_voice_t *) runtime->private_data;
|
|
|
|
|
|
+ struct snd_trident *trident = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
|
|
+ struct snd_trident_voice *voice = runtime->private_data;
|
|
unsigned int result;
|
|
unsigned int result;
|
|
|
|
|
|
if (!voice->running)
|
|
if (!voice->running)
|
|
@@ -1665,11 +1699,11 @@ static snd_pcm_uframes_t snd_trident_capture_pointer(snd_pcm_substream_t * subst
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static snd_pcm_uframes_t snd_trident_spdif_pointer(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static snd_pcm_uframes_t snd_trident_spdif_pointer(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
- snd_trident_voice_t *voice = (snd_trident_voice_t *) runtime->private_data;
|
|
|
|
|
|
+ struct snd_trident *trident = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
|
|
+ struct snd_trident_voice *voice = runtime->private_data;
|
|
unsigned int result;
|
|
unsigned int result;
|
|
|
|
|
|
if (!voice->running)
|
|
if (!voice->running)
|
|
@@ -1684,7 +1718,7 @@ static snd_pcm_uframes_t snd_trident_spdif_pointer(snd_pcm_substream_t * substre
|
|
* Playback support device description
|
|
* Playback support device description
|
|
*/
|
|
*/
|
|
|
|
|
|
-static snd_pcm_hardware_t snd_trident_playback =
|
|
|
|
|
|
+static struct snd_pcm_hardware snd_trident_playback =
|
|
{
|
|
{
|
|
.info = (SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_INTERLEAVED |
|
|
.info = (SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_INTERLEAVED |
|
|
SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
|
SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
|
@@ -1709,7 +1743,7 @@ static snd_pcm_hardware_t snd_trident_playback =
|
|
* Capture support device description
|
|
* Capture support device description
|
|
*/
|
|
*/
|
|
|
|
|
|
-static snd_pcm_hardware_t snd_trident_capture =
|
|
|
|
|
|
+static struct snd_pcm_hardware snd_trident_capture =
|
|
{
|
|
{
|
|
.info = (SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_INTERLEAVED |
|
|
.info = (SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_INTERLEAVED |
|
|
SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
|
SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
|
@@ -1734,7 +1768,7 @@ static snd_pcm_hardware_t snd_trident_capture =
|
|
* Foldback capture support device description
|
|
* Foldback capture support device description
|
|
*/
|
|
*/
|
|
|
|
|
|
-static snd_pcm_hardware_t snd_trident_foldback =
|
|
|
|
|
|
+static struct snd_pcm_hardware snd_trident_foldback =
|
|
{
|
|
{
|
|
.info = (SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_INTERLEAVED |
|
|
.info = (SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_INTERLEAVED |
|
|
SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
|
SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
|
@@ -1758,7 +1792,7 @@ static snd_pcm_hardware_t snd_trident_foldback =
|
|
* SPDIF playback support device description
|
|
* SPDIF playback support device description
|
|
*/
|
|
*/
|
|
|
|
|
|
-static snd_pcm_hardware_t snd_trident_spdif =
|
|
|
|
|
|
+static struct snd_pcm_hardware snd_trident_spdif =
|
|
{
|
|
{
|
|
.info = (SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_INTERLEAVED |
|
|
.info = (SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_INTERLEAVED |
|
|
SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
|
SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
|
@@ -1779,7 +1813,7 @@ static snd_pcm_hardware_t snd_trident_spdif =
|
|
.fifo_size = 0,
|
|
.fifo_size = 0,
|
|
};
|
|
};
|
|
|
|
|
|
-static snd_pcm_hardware_t snd_trident_spdif_7018 =
|
|
|
|
|
|
+static struct snd_pcm_hardware snd_trident_spdif_7018 =
|
|
{
|
|
{
|
|
.info = (SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_INTERLEAVED |
|
|
.info = (SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_INTERLEAVED |
|
|
SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
|
SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
|
@@ -1799,10 +1833,10 @@ static snd_pcm_hardware_t snd_trident_spdif_7018 =
|
|
.fifo_size = 0,
|
|
.fifo_size = 0,
|
|
};
|
|
};
|
|
|
|
|
|
-static void snd_trident_pcm_free_substream(snd_pcm_runtime_t *runtime)
|
|
|
|
|
|
+static void snd_trident_pcm_free_substream(struct snd_pcm_runtime *runtime)
|
|
{
|
|
{
|
|
- snd_trident_voice_t *voice = (snd_trident_voice_t *) runtime->private_data;
|
|
|
|
- trident_t *trident;
|
|
|
|
|
|
+ struct snd_trident_voice *voice = runtime->private_data;
|
|
|
|
+ struct snd_trident *trident;
|
|
|
|
|
|
if (voice) {
|
|
if (voice) {
|
|
trident = voice->trident;
|
|
trident = voice->trident;
|
|
@@ -1810,11 +1844,11 @@ static void snd_trident_pcm_free_substream(snd_pcm_runtime_t *runtime)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_trident_playback_open(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static int snd_trident_playback_open(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
- snd_trident_voice_t *voice;
|
|
|
|
|
|
+ struct snd_trident *trident = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
|
|
+ struct snd_trident_voice *voice;
|
|
|
|
|
|
voice = snd_trident_alloc_voice(trident, SNDRV_TRIDENT_VOICE_TYPE_PCM, 0, 0);
|
|
voice = snd_trident_alloc_voice(trident, SNDRV_TRIDENT_VOICE_TYPE_PCM, 0, 0);
|
|
if (voice == NULL)
|
|
if (voice == NULL)
|
|
@@ -1838,11 +1872,11 @@ static int snd_trident_playback_open(snd_pcm_substream_t * substream)
|
|
Parameters: substream - PCM substream class
|
|
Parameters: substream - PCM substream class
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
-static int snd_trident_playback_close(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static int snd_trident_playback_close(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
- snd_trident_voice_t *voice = (snd_trident_voice_t *) runtime->private_data;
|
|
|
|
|
|
+ struct snd_trident *trident = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
|
|
+ struct snd_trident_voice *voice = runtime->private_data;
|
|
|
|
|
|
snd_trident_pcm_mixer_free(trident, voice, substream);
|
|
snd_trident_pcm_mixer_free(trident, voice, substream);
|
|
return 0;
|
|
return 0;
|
|
@@ -1859,11 +1893,11 @@ static int snd_trident_playback_close(snd_pcm_substream_t * substream)
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static int snd_trident_spdif_open(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static int snd_trident_spdif_open(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_trident_voice_t *voice;
|
|
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
|
|
+ struct snd_trident *trident = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_trident_voice *voice;
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
|
|
|
|
voice = snd_trident_alloc_voice(trident, SNDRV_TRIDENT_VOICE_TYPE_PCM, 0, 0);
|
|
voice = snd_trident_alloc_voice(trident, SNDRV_TRIDENT_VOICE_TYPE_PCM, 0, 0);
|
|
if (voice == NULL)
|
|
if (voice == NULL)
|
|
@@ -1900,9 +1934,9 @@ static int snd_trident_spdif_open(snd_pcm_substream_t * substream)
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static int snd_trident_spdif_close(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static int snd_trident_spdif_close(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_pcm_substream_chip(substream);
|
|
|
|
|
|
+ struct snd_trident *trident = snd_pcm_substream_chip(substream);
|
|
unsigned int temp;
|
|
unsigned int temp;
|
|
|
|
|
|
spin_lock_irq(&trident->reg_lock);
|
|
spin_lock_irq(&trident->reg_lock);
|
|
@@ -1938,11 +1972,11 @@ static int snd_trident_spdif_close(snd_pcm_substream_t * substream)
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static int snd_trident_capture_open(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static int snd_trident_capture_open(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_trident_voice_t *voice;
|
|
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
|
|
+ struct snd_trident *trident = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_trident_voice *voice;
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
|
|
|
|
voice = snd_trident_alloc_voice(trident, SNDRV_TRIDENT_VOICE_TYPE_PCM, 0, 0);
|
|
voice = snd_trident_alloc_voice(trident, SNDRV_TRIDENT_VOICE_TYPE_PCM, 0, 0);
|
|
if (voice == NULL)
|
|
if (voice == NULL)
|
|
@@ -1966,7 +2000,7 @@ static int snd_trident_capture_open(snd_pcm_substream_t * substream)
|
|
Parameters: substream - PCM substream class
|
|
Parameters: substream - PCM substream class
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
-static int snd_trident_capture_close(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static int snd_trident_capture_close(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
@@ -1982,11 +2016,11 @@ static int snd_trident_capture_close(snd_pcm_substream_t * substream)
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static int snd_trident_foldback_open(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static int snd_trident_foldback_open(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_trident_voice_t *voice;
|
|
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
|
|
+ struct snd_trident *trident = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_trident_voice *voice;
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
|
|
|
|
voice = snd_trident_alloc_voice(trident, SNDRV_TRIDENT_VOICE_TYPE_PCM, 0, 0);
|
|
voice = snd_trident_alloc_voice(trident, SNDRV_TRIDENT_VOICE_TYPE_PCM, 0, 0);
|
|
if (voice == NULL)
|
|
if (voice == NULL)
|
|
@@ -2009,12 +2043,12 @@ static int snd_trident_foldback_open(snd_pcm_substream_t * substream)
|
|
Parameters: substream - PCM substream class
|
|
Parameters: substream - PCM substream class
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
-static int snd_trident_foldback_close(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static int snd_trident_foldback_close(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_trident_voice_t *voice;
|
|
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
- voice = (snd_trident_voice_t *) runtime->private_data;
|
|
|
|
|
|
+ struct snd_trident *trident = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_trident_voice *voice;
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
|
|
+ voice = runtime->private_data;
|
|
|
|
|
|
/* stop capture channel */
|
|
/* stop capture channel */
|
|
spin_lock_irq(&trident->reg_lock);
|
|
spin_lock_irq(&trident->reg_lock);
|
|
@@ -2027,7 +2061,7 @@ static int snd_trident_foldback_close(snd_pcm_substream_t * substream)
|
|
PCM operations
|
|
PCM operations
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static snd_pcm_ops_t snd_trident_playback_ops = {
|
|
|
|
|
|
+static struct snd_pcm_ops snd_trident_playback_ops = {
|
|
.open = snd_trident_playback_open,
|
|
.open = snd_trident_playback_open,
|
|
.close = snd_trident_playback_close,
|
|
.close = snd_trident_playback_close,
|
|
.ioctl = snd_trident_ioctl,
|
|
.ioctl = snd_trident_ioctl,
|
|
@@ -2038,7 +2072,7 @@ static snd_pcm_ops_t snd_trident_playback_ops = {
|
|
.pointer = snd_trident_playback_pointer,
|
|
.pointer = snd_trident_playback_pointer,
|
|
};
|
|
};
|
|
|
|
|
|
-static snd_pcm_ops_t snd_trident_nx_playback_ops = {
|
|
|
|
|
|
+static struct snd_pcm_ops snd_trident_nx_playback_ops = {
|
|
.open = snd_trident_playback_open,
|
|
.open = snd_trident_playback_open,
|
|
.close = snd_trident_playback_close,
|
|
.close = snd_trident_playback_close,
|
|
.ioctl = snd_trident_ioctl,
|
|
.ioctl = snd_trident_ioctl,
|
|
@@ -2050,7 +2084,7 @@ static snd_pcm_ops_t snd_trident_nx_playback_ops = {
|
|
.page = snd_pcm_sgbuf_ops_page,
|
|
.page = snd_pcm_sgbuf_ops_page,
|
|
};
|
|
};
|
|
|
|
|
|
-static snd_pcm_ops_t snd_trident_capture_ops = {
|
|
|
|
|
|
+static struct snd_pcm_ops snd_trident_capture_ops = {
|
|
.open = snd_trident_capture_open,
|
|
.open = snd_trident_capture_open,
|
|
.close = snd_trident_capture_close,
|
|
.close = snd_trident_capture_close,
|
|
.ioctl = snd_trident_ioctl,
|
|
.ioctl = snd_trident_ioctl,
|
|
@@ -2061,7 +2095,7 @@ static snd_pcm_ops_t snd_trident_capture_ops = {
|
|
.pointer = snd_trident_capture_pointer,
|
|
.pointer = snd_trident_capture_pointer,
|
|
};
|
|
};
|
|
|
|
|
|
-static snd_pcm_ops_t snd_trident_si7018_capture_ops = {
|
|
|
|
|
|
+static struct snd_pcm_ops snd_trident_si7018_capture_ops = {
|
|
.open = snd_trident_capture_open,
|
|
.open = snd_trident_capture_open,
|
|
.close = snd_trident_capture_close,
|
|
.close = snd_trident_capture_close,
|
|
.ioctl = snd_trident_ioctl,
|
|
.ioctl = snd_trident_ioctl,
|
|
@@ -2072,7 +2106,7 @@ static snd_pcm_ops_t snd_trident_si7018_capture_ops = {
|
|
.pointer = snd_trident_playback_pointer,
|
|
.pointer = snd_trident_playback_pointer,
|
|
};
|
|
};
|
|
|
|
|
|
-static snd_pcm_ops_t snd_trident_foldback_ops = {
|
|
|
|
|
|
+static struct snd_pcm_ops snd_trident_foldback_ops = {
|
|
.open = snd_trident_foldback_open,
|
|
.open = snd_trident_foldback_open,
|
|
.close = snd_trident_foldback_close,
|
|
.close = snd_trident_foldback_close,
|
|
.ioctl = snd_trident_ioctl,
|
|
.ioctl = snd_trident_ioctl,
|
|
@@ -2083,7 +2117,7 @@ static snd_pcm_ops_t snd_trident_foldback_ops = {
|
|
.pointer = snd_trident_playback_pointer,
|
|
.pointer = snd_trident_playback_pointer,
|
|
};
|
|
};
|
|
|
|
|
|
-static snd_pcm_ops_t snd_trident_nx_foldback_ops = {
|
|
|
|
|
|
+static struct snd_pcm_ops snd_trident_nx_foldback_ops = {
|
|
.open = snd_trident_foldback_open,
|
|
.open = snd_trident_foldback_open,
|
|
.close = snd_trident_foldback_close,
|
|
.close = snd_trident_foldback_close,
|
|
.ioctl = snd_trident_ioctl,
|
|
.ioctl = snd_trident_ioctl,
|
|
@@ -2095,7 +2129,7 @@ static snd_pcm_ops_t snd_trident_nx_foldback_ops = {
|
|
.page = snd_pcm_sgbuf_ops_page,
|
|
.page = snd_pcm_sgbuf_ops_page,
|
|
};
|
|
};
|
|
|
|
|
|
-static snd_pcm_ops_t snd_trident_spdif_ops = {
|
|
|
|
|
|
+static struct snd_pcm_ops snd_trident_spdif_ops = {
|
|
.open = snd_trident_spdif_open,
|
|
.open = snd_trident_spdif_open,
|
|
.close = snd_trident_spdif_close,
|
|
.close = snd_trident_spdif_close,
|
|
.ioctl = snd_trident_ioctl,
|
|
.ioctl = snd_trident_ioctl,
|
|
@@ -2106,7 +2140,7 @@ static snd_pcm_ops_t snd_trident_spdif_ops = {
|
|
.pointer = snd_trident_spdif_pointer,
|
|
.pointer = snd_trident_spdif_pointer,
|
|
};
|
|
};
|
|
|
|
|
|
-static snd_pcm_ops_t snd_trident_spdif_7018_ops = {
|
|
|
|
|
|
+static struct snd_pcm_ops snd_trident_spdif_7018_ops = {
|
|
.open = snd_trident_spdif_open,
|
|
.open = snd_trident_spdif_open,
|
|
.close = snd_trident_spdif_close,
|
|
.close = snd_trident_spdif_close,
|
|
.ioctl = snd_trident_ioctl,
|
|
.ioctl = snd_trident_ioctl,
|
|
@@ -2128,9 +2162,10 @@ static snd_pcm_ops_t snd_trident_spdif_7018_ops = {
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-int __devinit snd_trident_pcm(trident_t * trident, int device, snd_pcm_t ** rpcm)
|
|
|
|
|
|
+int __devinit snd_trident_pcm(struct snd_trident * trident,
|
|
|
|
+ int device, struct snd_pcm ** rpcm)
|
|
{
|
|
{
|
|
- snd_pcm_t *pcm;
|
|
|
|
|
|
+ struct snd_pcm *pcm;
|
|
int err;
|
|
int err;
|
|
|
|
|
|
if (rpcm)
|
|
if (rpcm)
|
|
@@ -2156,7 +2191,7 @@ int __devinit snd_trident_pcm(trident_t * trident, int device, snd_pcm_t ** rpcm
|
|
trident->pcm = pcm;
|
|
trident->pcm = pcm;
|
|
|
|
|
|
if (trident->tlb.entries) {
|
|
if (trident->tlb.entries) {
|
|
- snd_pcm_substream_t *substream;
|
|
|
|
|
|
+ struct snd_pcm_substream *substream;
|
|
for (substream = pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream; substream; substream = substream->next)
|
|
for (substream = pcm->streams[SNDRV_PCM_STREAM_PLAYBACK].substream; substream; substream = substream->next)
|
|
snd_pcm_lib_preallocate_pages(substream, SNDRV_DMA_TYPE_DEV_SG,
|
|
snd_pcm_lib_preallocate_pages(substream, SNDRV_DMA_TYPE_DEV_SG,
|
|
snd_dma_pci_data(trident->pci),
|
|
snd_dma_pci_data(trident->pci),
|
|
@@ -2185,12 +2220,13 @@ int __devinit snd_trident_pcm(trident_t * trident, int device, snd_pcm_t ** rpcm
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-int __devinit snd_trident_foldback_pcm(trident_t * trident, int device, snd_pcm_t ** rpcm)
|
|
|
|
|
|
+int __devinit snd_trident_foldback_pcm(struct snd_trident * trident,
|
|
|
|
+ int device, struct snd_pcm ** rpcm)
|
|
{
|
|
{
|
|
- snd_pcm_t *foldback;
|
|
|
|
|
|
+ struct snd_pcm *foldback;
|
|
int err;
|
|
int err;
|
|
int num_chan = 3;
|
|
int num_chan = 3;
|
|
- snd_pcm_substream_t *substream;
|
|
|
|
|
|
+ struct snd_pcm_substream *substream;
|
|
|
|
|
|
if (rpcm)
|
|
if (rpcm)
|
|
*rpcm = NULL;
|
|
*rpcm = NULL;
|
|
@@ -2241,9 +2277,10 @@ int __devinit snd_trident_foldback_pcm(trident_t * trident, int device, snd_pcm_
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-int __devinit snd_trident_spdif_pcm(trident_t * trident, int device, snd_pcm_t ** rpcm)
|
|
|
|
|
|
+int __devinit snd_trident_spdif_pcm(struct snd_trident * trident,
|
|
|
|
+ int device, struct snd_pcm ** rpcm)
|
|
{
|
|
{
|
|
- snd_pcm_t *spdif;
|
|
|
|
|
|
+ struct snd_pcm *spdif;
|
|
int err;
|
|
int err;
|
|
|
|
|
|
if (rpcm)
|
|
if (rpcm)
|
|
@@ -2279,7 +2316,8 @@ int __devinit snd_trident_spdif_pcm(trident_t * trident, int device, snd_pcm_t *
|
|
Description: enable/disable S/PDIF out from ac97 mixer
|
|
Description: enable/disable S/PDIF out from ac97 mixer
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static int snd_trident_spdif_control_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
|
|
|
|
|
|
+static int snd_trident_spdif_control_info(struct snd_kcontrol *kcontrol,
|
|
|
|
+ struct snd_ctl_elem_info *uinfo)
|
|
{
|
|
{
|
|
uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN;
|
|
uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN;
|
|
uinfo->count = 1;
|
|
uinfo->count = 1;
|
|
@@ -2288,10 +2326,10 @@ static int snd_trident_spdif_control_info(snd_kcontrol_t *kcontrol, snd_ctl_elem
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_trident_spdif_control_get(snd_kcontrol_t * kcontrol,
|
|
|
|
- snd_ctl_elem_value_t * ucontrol)
|
|
|
|
|
|
+static int snd_trident_spdif_control_get(struct snd_kcontrol *kcontrol,
|
|
|
|
+ struct snd_ctl_elem_value *ucontrol)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_kcontrol_chip(kcontrol);
|
|
|
|
|
|
+ struct snd_trident *trident = snd_kcontrol_chip(kcontrol);
|
|
unsigned char val;
|
|
unsigned char val;
|
|
|
|
|
|
spin_lock_irq(&trident->reg_lock);
|
|
spin_lock_irq(&trident->reg_lock);
|
|
@@ -2301,10 +2339,10 @@ static int snd_trident_spdif_control_get(snd_kcontrol_t * kcontrol,
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_trident_spdif_control_put(snd_kcontrol_t * kcontrol,
|
|
|
|
- snd_ctl_elem_value_t * ucontrol)
|
|
|
|
|
|
+static int snd_trident_spdif_control_put(struct snd_kcontrol *kcontrol,
|
|
|
|
+ struct snd_ctl_elem_value *ucontrol)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_kcontrol_chip(kcontrol);
|
|
|
|
|
|
+ struct snd_trident *trident = snd_kcontrol_chip(kcontrol);
|
|
unsigned char val;
|
|
unsigned char val;
|
|
int change;
|
|
int change;
|
|
|
|
|
|
@@ -2332,7 +2370,7 @@ static int snd_trident_spdif_control_put(snd_kcontrol_t * kcontrol,
|
|
return change;
|
|
return change;
|
|
}
|
|
}
|
|
|
|
|
|
-static snd_kcontrol_new_t snd_trident_spdif_control __devinitdata =
|
|
|
|
|
|
+static struct snd_kcontrol_new snd_trident_spdif_control __devinitdata =
|
|
{
|
|
{
|
|
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
|
|
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
|
|
.name = SNDRV_CTL_NAME_IEC958("",PLAYBACK,SWITCH),
|
|
.name = SNDRV_CTL_NAME_IEC958("",PLAYBACK,SWITCH),
|
|
@@ -2348,17 +2386,18 @@ static snd_kcontrol_new_t snd_trident_spdif_control __devinitdata =
|
|
Description: put/get the S/PDIF default settings
|
|
Description: put/get the S/PDIF default settings
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static int snd_trident_spdif_default_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
|
|
|
|
|
|
+static int snd_trident_spdif_default_info(struct snd_kcontrol *kcontrol,
|
|
|
|
+ struct snd_ctl_elem_info *uinfo)
|
|
{
|
|
{
|
|
uinfo->type = SNDRV_CTL_ELEM_TYPE_IEC958;
|
|
uinfo->type = SNDRV_CTL_ELEM_TYPE_IEC958;
|
|
uinfo->count = 1;
|
|
uinfo->count = 1;
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_trident_spdif_default_get(snd_kcontrol_t * kcontrol,
|
|
|
|
- snd_ctl_elem_value_t * ucontrol)
|
|
|
|
|
|
+static int snd_trident_spdif_default_get(struct snd_kcontrol *kcontrol,
|
|
|
|
+ struct snd_ctl_elem_value *ucontrol)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_kcontrol_chip(kcontrol);
|
|
|
|
|
|
+ struct snd_trident *trident = snd_kcontrol_chip(kcontrol);
|
|
|
|
|
|
spin_lock_irq(&trident->reg_lock);
|
|
spin_lock_irq(&trident->reg_lock);
|
|
ucontrol->value.iec958.status[0] = (trident->spdif_bits >> 0) & 0xff;
|
|
ucontrol->value.iec958.status[0] = (trident->spdif_bits >> 0) & 0xff;
|
|
@@ -2369,10 +2408,10 @@ static int snd_trident_spdif_default_get(snd_kcontrol_t * kcontrol,
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_trident_spdif_default_put(snd_kcontrol_t * kcontrol,
|
|
|
|
- snd_ctl_elem_value_t * ucontrol)
|
|
|
|
|
|
+static int snd_trident_spdif_default_put(struct snd_kcontrol *kcontrol,
|
|
|
|
+ struct snd_ctl_elem_value *ucontrol)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_kcontrol_chip(kcontrol);
|
|
|
|
|
|
+ struct snd_trident *trident = snd_kcontrol_chip(kcontrol);
|
|
unsigned int val;
|
|
unsigned int val;
|
|
int change;
|
|
int change;
|
|
|
|
|
|
@@ -2394,7 +2433,7 @@ static int snd_trident_spdif_default_put(snd_kcontrol_t * kcontrol,
|
|
return change;
|
|
return change;
|
|
}
|
|
}
|
|
|
|
|
|
-static snd_kcontrol_new_t snd_trident_spdif_default __devinitdata =
|
|
|
|
|
|
+static struct snd_kcontrol_new snd_trident_spdif_default __devinitdata =
|
|
{
|
|
{
|
|
.iface = SNDRV_CTL_ELEM_IFACE_PCM,
|
|
.iface = SNDRV_CTL_ELEM_IFACE_PCM,
|
|
.name = SNDRV_CTL_NAME_IEC958("",PLAYBACK,DEFAULT),
|
|
.name = SNDRV_CTL_NAME_IEC958("",PLAYBACK,DEFAULT),
|
|
@@ -2409,15 +2448,16 @@ static snd_kcontrol_new_t snd_trident_spdif_default __devinitdata =
|
|
Description: put/get the S/PDIF mask
|
|
Description: put/get the S/PDIF mask
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static int snd_trident_spdif_mask_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
|
|
|
|
|
|
+static int snd_trident_spdif_mask_info(struct snd_kcontrol *kcontrol,
|
|
|
|
+ struct snd_ctl_elem_info *uinfo)
|
|
{
|
|
{
|
|
uinfo->type = SNDRV_CTL_ELEM_TYPE_IEC958;
|
|
uinfo->type = SNDRV_CTL_ELEM_TYPE_IEC958;
|
|
uinfo->count = 1;
|
|
uinfo->count = 1;
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_trident_spdif_mask_get(snd_kcontrol_t * kcontrol,
|
|
|
|
- snd_ctl_elem_value_t * ucontrol)
|
|
|
|
|
|
+static int snd_trident_spdif_mask_get(struct snd_kcontrol *kcontrol,
|
|
|
|
+ struct snd_ctl_elem_value *ucontrol)
|
|
{
|
|
{
|
|
ucontrol->value.iec958.status[0] = 0xff;
|
|
ucontrol->value.iec958.status[0] = 0xff;
|
|
ucontrol->value.iec958.status[1] = 0xff;
|
|
ucontrol->value.iec958.status[1] = 0xff;
|
|
@@ -2426,7 +2466,7 @@ static int snd_trident_spdif_mask_get(snd_kcontrol_t * kcontrol,
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static snd_kcontrol_new_t snd_trident_spdif_mask __devinitdata =
|
|
|
|
|
|
+static struct snd_kcontrol_new snd_trident_spdif_mask __devinitdata =
|
|
{
|
|
{
|
|
.access = SNDRV_CTL_ELEM_ACCESS_READ,
|
|
.access = SNDRV_CTL_ELEM_ACCESS_READ,
|
|
.iface = SNDRV_CTL_ELEM_IFACE_PCM,
|
|
.iface = SNDRV_CTL_ELEM_IFACE_PCM,
|
|
@@ -2441,17 +2481,18 @@ static snd_kcontrol_new_t snd_trident_spdif_mask __devinitdata =
|
|
Description: put/get the S/PDIF stream settings
|
|
Description: put/get the S/PDIF stream settings
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static int snd_trident_spdif_stream_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
|
|
|
|
|
|
+static int snd_trident_spdif_stream_info(struct snd_kcontrol *kcontrol,
|
|
|
|
+ struct snd_ctl_elem_info *uinfo)
|
|
{
|
|
{
|
|
uinfo->type = SNDRV_CTL_ELEM_TYPE_IEC958;
|
|
uinfo->type = SNDRV_CTL_ELEM_TYPE_IEC958;
|
|
uinfo->count = 1;
|
|
uinfo->count = 1;
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_trident_spdif_stream_get(snd_kcontrol_t * kcontrol,
|
|
|
|
- snd_ctl_elem_value_t * ucontrol)
|
|
|
|
|
|
+static int snd_trident_spdif_stream_get(struct snd_kcontrol *kcontrol,
|
|
|
|
+ struct snd_ctl_elem_value *ucontrol)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_kcontrol_chip(kcontrol);
|
|
|
|
|
|
+ struct snd_trident *trident = snd_kcontrol_chip(kcontrol);
|
|
|
|
|
|
spin_lock_irq(&trident->reg_lock);
|
|
spin_lock_irq(&trident->reg_lock);
|
|
ucontrol->value.iec958.status[0] = (trident->spdif_pcm_bits >> 0) & 0xff;
|
|
ucontrol->value.iec958.status[0] = (trident->spdif_pcm_bits >> 0) & 0xff;
|
|
@@ -2462,10 +2503,10 @@ static int snd_trident_spdif_stream_get(snd_kcontrol_t * kcontrol,
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_trident_spdif_stream_put(snd_kcontrol_t * kcontrol,
|
|
|
|
- snd_ctl_elem_value_t * ucontrol)
|
|
|
|
|
|
+static int snd_trident_spdif_stream_put(struct snd_kcontrol *kcontrol,
|
|
|
|
+ struct snd_ctl_elem_value *ucontrol)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_kcontrol_chip(kcontrol);
|
|
|
|
|
|
+ struct snd_trident *trident = snd_kcontrol_chip(kcontrol);
|
|
unsigned int val;
|
|
unsigned int val;
|
|
int change;
|
|
int change;
|
|
|
|
|
|
@@ -2487,7 +2528,7 @@ static int snd_trident_spdif_stream_put(snd_kcontrol_t * kcontrol,
|
|
return change;
|
|
return change;
|
|
}
|
|
}
|
|
|
|
|
|
-static snd_kcontrol_new_t snd_trident_spdif_stream __devinitdata =
|
|
|
|
|
|
+static struct snd_kcontrol_new snd_trident_spdif_stream __devinitdata =
|
|
{
|
|
{
|
|
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE | SNDRV_CTL_ELEM_ACCESS_INACTIVE,
|
|
.access = SNDRV_CTL_ELEM_ACCESS_READWRITE | SNDRV_CTL_ELEM_ACCESS_INACTIVE,
|
|
.iface = SNDRV_CTL_ELEM_IFACE_PCM,
|
|
.iface = SNDRV_CTL_ELEM_IFACE_PCM,
|
|
@@ -2503,7 +2544,8 @@ static snd_kcontrol_new_t snd_trident_spdif_stream __devinitdata =
|
|
Description: enable/disable rear path for ac97
|
|
Description: enable/disable rear path for ac97
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static int snd_trident_ac97_control_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
|
|
|
|
|
|
+static int snd_trident_ac97_control_info(struct snd_kcontrol *kcontrol,
|
|
|
|
+ struct snd_ctl_elem_info *uinfo)
|
|
{
|
|
{
|
|
uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN;
|
|
uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN;
|
|
uinfo->count = 1;
|
|
uinfo->count = 1;
|
|
@@ -2512,10 +2554,10 @@ static int snd_trident_ac97_control_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_trident_ac97_control_get(snd_kcontrol_t * kcontrol,
|
|
|
|
- snd_ctl_elem_value_t * ucontrol)
|
|
|
|
|
|
+static int snd_trident_ac97_control_get(struct snd_kcontrol *kcontrol,
|
|
|
|
+ struct snd_ctl_elem_value *ucontrol)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_kcontrol_chip(kcontrol);
|
|
|
|
|
|
+ struct snd_trident *trident = snd_kcontrol_chip(kcontrol);
|
|
unsigned char val;
|
|
unsigned char val;
|
|
|
|
|
|
spin_lock_irq(&trident->reg_lock);
|
|
spin_lock_irq(&trident->reg_lock);
|
|
@@ -2525,10 +2567,10 @@ static int snd_trident_ac97_control_get(snd_kcontrol_t * kcontrol,
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_trident_ac97_control_put(snd_kcontrol_t * kcontrol,
|
|
|
|
- snd_ctl_elem_value_t * ucontrol)
|
|
|
|
|
|
+static int snd_trident_ac97_control_put(struct snd_kcontrol *kcontrol,
|
|
|
|
+ struct snd_ctl_elem_value *ucontrol)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_kcontrol_chip(kcontrol);
|
|
|
|
|
|
+ struct snd_trident *trident = snd_kcontrol_chip(kcontrol);
|
|
unsigned char val;
|
|
unsigned char val;
|
|
int change = 0;
|
|
int change = 0;
|
|
|
|
|
|
@@ -2544,7 +2586,7 @@ static int snd_trident_ac97_control_put(snd_kcontrol_t * kcontrol,
|
|
return change;
|
|
return change;
|
|
}
|
|
}
|
|
|
|
|
|
-static snd_kcontrol_new_t snd_trident_ac97_rear_control __devinitdata =
|
|
|
|
|
|
+static struct snd_kcontrol_new snd_trident_ac97_rear_control __devinitdata =
|
|
{
|
|
{
|
|
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
|
|
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
|
|
.name = "Rear Path",
|
|
.name = "Rear Path",
|
|
@@ -2560,7 +2602,8 @@ static snd_kcontrol_new_t snd_trident_ac97_rear_control __devinitdata =
|
|
Description: wave & music volume control
|
|
Description: wave & music volume control
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static int snd_trident_vol_control_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
|
|
|
|
|
|
+static int snd_trident_vol_control_info(struct snd_kcontrol *kcontrol,
|
|
|
|
+ struct snd_ctl_elem_info *uinfo)
|
|
{
|
|
{
|
|
uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
|
|
uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
|
|
uinfo->count = 2;
|
|
uinfo->count = 2;
|
|
@@ -2569,10 +2612,10 @@ static int snd_trident_vol_control_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_i
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_trident_vol_control_get(snd_kcontrol_t * kcontrol,
|
|
|
|
- snd_ctl_elem_value_t * ucontrol)
|
|
|
|
|
|
+static int snd_trident_vol_control_get(struct snd_kcontrol *kcontrol,
|
|
|
|
+ struct snd_ctl_elem_value *ucontrol)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_kcontrol_chip(kcontrol);
|
|
|
|
|
|
+ struct snd_trident *trident = snd_kcontrol_chip(kcontrol);
|
|
unsigned int val;
|
|
unsigned int val;
|
|
|
|
|
|
val = trident->musicvol_wavevol;
|
|
val = trident->musicvol_wavevol;
|
|
@@ -2581,10 +2624,10 @@ static int snd_trident_vol_control_get(snd_kcontrol_t * kcontrol,
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_trident_vol_control_put(snd_kcontrol_t * kcontrol,
|
|
|
|
- snd_ctl_elem_value_t * ucontrol)
|
|
|
|
|
|
+static int snd_trident_vol_control_put(struct snd_kcontrol *kcontrol,
|
|
|
|
+ struct snd_ctl_elem_value *ucontrol)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_kcontrol_chip(kcontrol);
|
|
|
|
|
|
+ struct snd_trident *trident = snd_kcontrol_chip(kcontrol);
|
|
unsigned int val;
|
|
unsigned int val;
|
|
int change = 0;
|
|
int change = 0;
|
|
|
|
|
|
@@ -2599,7 +2642,7 @@ static int snd_trident_vol_control_put(snd_kcontrol_t * kcontrol,
|
|
return change;
|
|
return change;
|
|
}
|
|
}
|
|
|
|
|
|
-static snd_kcontrol_new_t snd_trident_vol_music_control __devinitdata =
|
|
|
|
|
|
+static struct snd_kcontrol_new snd_trident_vol_music_control __devinitdata =
|
|
{
|
|
{
|
|
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
|
|
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
|
|
.name = "Music Playback Volume",
|
|
.name = "Music Playback Volume",
|
|
@@ -2609,7 +2652,7 @@ static snd_kcontrol_new_t snd_trident_vol_music_control __devinitdata =
|
|
.private_value = 16,
|
|
.private_value = 16,
|
|
};
|
|
};
|
|
|
|
|
|
-static snd_kcontrol_new_t snd_trident_vol_wave_control __devinitdata =
|
|
|
|
|
|
+static struct snd_kcontrol_new snd_trident_vol_wave_control __devinitdata =
|
|
{
|
|
{
|
|
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
|
|
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
|
|
.name = "Wave Playback Volume",
|
|
.name = "Wave Playback Volume",
|
|
@@ -2625,9 +2668,10 @@ static snd_kcontrol_new_t snd_trident_vol_wave_control __devinitdata =
|
|
Description: PCM front volume control
|
|
Description: PCM front volume control
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static int snd_trident_pcm_vol_control_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
|
|
|
|
|
|
+static int snd_trident_pcm_vol_control_info(struct snd_kcontrol *kcontrol,
|
|
|
|
+ struct snd_ctl_elem_info *uinfo)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_kcontrol_chip(kcontrol);
|
|
|
|
|
|
+ struct snd_trident *trident = snd_kcontrol_chip(kcontrol);
|
|
|
|
|
|
uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
|
|
uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
|
|
uinfo->count = 1;
|
|
uinfo->count = 1;
|
|
@@ -2638,11 +2682,11 @@ static int snd_trident_pcm_vol_control_info(snd_kcontrol_t *kcontrol, snd_ctl_el
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_trident_pcm_vol_control_get(snd_kcontrol_t * kcontrol,
|
|
|
|
- snd_ctl_elem_value_t * ucontrol)
|
|
|
|
|
|
+static int snd_trident_pcm_vol_control_get(struct snd_kcontrol *kcontrol,
|
|
|
|
+ struct snd_ctl_elem_value *ucontrol)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_kcontrol_chip(kcontrol);
|
|
|
|
- snd_trident_pcm_mixer_t *mix = &trident->pcm_mixer[snd_ctl_get_ioffnum(kcontrol, &ucontrol->id)];
|
|
|
|
|
|
+ struct snd_trident *trident = snd_kcontrol_chip(kcontrol);
|
|
|
|
+ struct snd_trident_pcm_mixer *mix = &trident->pcm_mixer[snd_ctl_get_ioffnum(kcontrol, &ucontrol->id)];
|
|
|
|
|
|
if (trident->device == TRIDENT_DEVICE_ID_SI7018) {
|
|
if (trident->device == TRIDENT_DEVICE_ID_SI7018) {
|
|
ucontrol->value.integer.value[0] = 1023 - mix->vol;
|
|
ucontrol->value.integer.value[0] = 1023 - mix->vol;
|
|
@@ -2652,11 +2696,11 @@ static int snd_trident_pcm_vol_control_get(snd_kcontrol_t * kcontrol,
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_trident_pcm_vol_control_put(snd_kcontrol_t * kcontrol,
|
|
|
|
- snd_ctl_elem_value_t * ucontrol)
|
|
|
|
|
|
+static int snd_trident_pcm_vol_control_put(struct snd_kcontrol *kcontrol,
|
|
|
|
+ struct snd_ctl_elem_value *ucontrol)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_kcontrol_chip(kcontrol);
|
|
|
|
- snd_trident_pcm_mixer_t *mix = &trident->pcm_mixer[snd_ctl_get_ioffnum(kcontrol, &ucontrol->id)];
|
|
|
|
|
|
+ struct snd_trident *trident = snd_kcontrol_chip(kcontrol);
|
|
|
|
+ struct snd_trident_pcm_mixer *mix = &trident->pcm_mixer[snd_ctl_get_ioffnum(kcontrol, &ucontrol->id)];
|
|
unsigned int val;
|
|
unsigned int val;
|
|
int change = 0;
|
|
int change = 0;
|
|
|
|
|
|
@@ -2674,7 +2718,7 @@ static int snd_trident_pcm_vol_control_put(snd_kcontrol_t * kcontrol,
|
|
return change;
|
|
return change;
|
|
}
|
|
}
|
|
|
|
|
|
-static snd_kcontrol_new_t snd_trident_pcm_vol_control __devinitdata =
|
|
|
|
|
|
+static struct snd_kcontrol_new snd_trident_pcm_vol_control __devinitdata =
|
|
{
|
|
{
|
|
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
|
|
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
|
|
.name = "PCM Front Playback Volume",
|
|
.name = "PCM Front Playback Volume",
|
|
@@ -2691,7 +2735,8 @@ static snd_kcontrol_new_t snd_trident_pcm_vol_control __devinitdata =
|
|
Description: PCM front pan control
|
|
Description: PCM front pan control
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static int snd_trident_pcm_pan_control_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
|
|
|
|
|
|
+static int snd_trident_pcm_pan_control_info(struct snd_kcontrol *kcontrol,
|
|
|
|
+ struct snd_ctl_elem_info *uinfo)
|
|
{
|
|
{
|
|
uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
|
|
uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
|
|
uinfo->count = 1;
|
|
uinfo->count = 1;
|
|
@@ -2700,11 +2745,11 @@ static int snd_trident_pcm_pan_control_info(snd_kcontrol_t *kcontrol, snd_ctl_el
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_trident_pcm_pan_control_get(snd_kcontrol_t * kcontrol,
|
|
|
|
- snd_ctl_elem_value_t * ucontrol)
|
|
|
|
|
|
+static int snd_trident_pcm_pan_control_get(struct snd_kcontrol *kcontrol,
|
|
|
|
+ struct snd_ctl_elem_value *ucontrol)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_kcontrol_chip(kcontrol);
|
|
|
|
- snd_trident_pcm_mixer_t *mix = &trident->pcm_mixer[snd_ctl_get_ioffnum(kcontrol, &ucontrol->id)];
|
|
|
|
|
|
+ struct snd_trident *trident = snd_kcontrol_chip(kcontrol);
|
|
|
|
+ struct snd_trident_pcm_mixer *mix = &trident->pcm_mixer[snd_ctl_get_ioffnum(kcontrol, &ucontrol->id)];
|
|
|
|
|
|
ucontrol->value.integer.value[0] = mix->pan;
|
|
ucontrol->value.integer.value[0] = mix->pan;
|
|
if (ucontrol->value.integer.value[0] & 0x40) {
|
|
if (ucontrol->value.integer.value[0] & 0x40) {
|
|
@@ -2715,11 +2760,11 @@ static int snd_trident_pcm_pan_control_get(snd_kcontrol_t * kcontrol,
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_trident_pcm_pan_control_put(snd_kcontrol_t * kcontrol,
|
|
|
|
- snd_ctl_elem_value_t * ucontrol)
|
|
|
|
|
|
+static int snd_trident_pcm_pan_control_put(struct snd_kcontrol *kcontrol,
|
|
|
|
+ struct snd_ctl_elem_value *ucontrol)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_kcontrol_chip(kcontrol);
|
|
|
|
- snd_trident_pcm_mixer_t *mix = &trident->pcm_mixer[snd_ctl_get_ioffnum(kcontrol, &ucontrol->id)];
|
|
|
|
|
|
+ struct snd_trident *trident = snd_kcontrol_chip(kcontrol);
|
|
|
|
+ struct snd_trident_pcm_mixer *mix = &trident->pcm_mixer[snd_ctl_get_ioffnum(kcontrol, &ucontrol->id)];
|
|
unsigned char val;
|
|
unsigned char val;
|
|
int change = 0;
|
|
int change = 0;
|
|
|
|
|
|
@@ -2736,7 +2781,7 @@ static int snd_trident_pcm_pan_control_put(snd_kcontrol_t * kcontrol,
|
|
return change;
|
|
return change;
|
|
}
|
|
}
|
|
|
|
|
|
-static snd_kcontrol_new_t snd_trident_pcm_pan_control __devinitdata =
|
|
|
|
|
|
+static struct snd_kcontrol_new snd_trident_pcm_pan_control __devinitdata =
|
|
{
|
|
{
|
|
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
|
|
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
|
|
.name = "PCM Pan Playback Control",
|
|
.name = "PCM Pan Playback Control",
|
|
@@ -2753,7 +2798,8 @@ static snd_kcontrol_new_t snd_trident_pcm_pan_control __devinitdata =
|
|
Description: PCM reverb volume control
|
|
Description: PCM reverb volume control
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static int snd_trident_pcm_rvol_control_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
|
|
|
|
|
|
+static int snd_trident_pcm_rvol_control_info(struct snd_kcontrol *kcontrol,
|
|
|
|
+ struct snd_ctl_elem_info *uinfo)
|
|
{
|
|
{
|
|
uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
|
|
uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
|
|
uinfo->count = 1;
|
|
uinfo->count = 1;
|
|
@@ -2762,21 +2808,21 @@ static int snd_trident_pcm_rvol_control_info(snd_kcontrol_t *kcontrol, snd_ctl_e
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_trident_pcm_rvol_control_get(snd_kcontrol_t * kcontrol,
|
|
|
|
- snd_ctl_elem_value_t * ucontrol)
|
|
|
|
|
|
+static int snd_trident_pcm_rvol_control_get(struct snd_kcontrol *kcontrol,
|
|
|
|
+ struct snd_ctl_elem_value *ucontrol)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_kcontrol_chip(kcontrol);
|
|
|
|
- snd_trident_pcm_mixer_t *mix = &trident->pcm_mixer[snd_ctl_get_ioffnum(kcontrol, &ucontrol->id)];
|
|
|
|
|
|
+ struct snd_trident *trident = snd_kcontrol_chip(kcontrol);
|
|
|
|
+ struct snd_trident_pcm_mixer *mix = &trident->pcm_mixer[snd_ctl_get_ioffnum(kcontrol, &ucontrol->id)];
|
|
|
|
|
|
ucontrol->value.integer.value[0] = 127 - mix->rvol;
|
|
ucontrol->value.integer.value[0] = 127 - mix->rvol;
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_trident_pcm_rvol_control_put(snd_kcontrol_t * kcontrol,
|
|
|
|
- snd_ctl_elem_value_t * ucontrol)
|
|
|
|
|
|
+static int snd_trident_pcm_rvol_control_put(struct snd_kcontrol *kcontrol,
|
|
|
|
+ struct snd_ctl_elem_value *ucontrol)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_kcontrol_chip(kcontrol);
|
|
|
|
- snd_trident_pcm_mixer_t *mix = &trident->pcm_mixer[snd_ctl_get_ioffnum(kcontrol, &ucontrol->id)];
|
|
|
|
|
|
+ struct snd_trident *trident = snd_kcontrol_chip(kcontrol);
|
|
|
|
+ struct snd_trident_pcm_mixer *mix = &trident->pcm_mixer[snd_ctl_get_ioffnum(kcontrol, &ucontrol->id)];
|
|
unsigned short val;
|
|
unsigned short val;
|
|
int change = 0;
|
|
int change = 0;
|
|
|
|
|
|
@@ -2790,7 +2836,7 @@ static int snd_trident_pcm_rvol_control_put(snd_kcontrol_t * kcontrol,
|
|
return change;
|
|
return change;
|
|
}
|
|
}
|
|
|
|
|
|
-static snd_kcontrol_new_t snd_trident_pcm_rvol_control __devinitdata =
|
|
|
|
|
|
+static struct snd_kcontrol_new snd_trident_pcm_rvol_control __devinitdata =
|
|
{
|
|
{
|
|
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
|
|
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
|
|
.name = "PCM Reverb Playback Volume",
|
|
.name = "PCM Reverb Playback Volume",
|
|
@@ -2807,7 +2853,8 @@ static snd_kcontrol_new_t snd_trident_pcm_rvol_control __devinitdata =
|
|
Description: PCM chorus volume control
|
|
Description: PCM chorus volume control
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static int snd_trident_pcm_cvol_control_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
|
|
|
|
|
|
+static int snd_trident_pcm_cvol_control_info(struct snd_kcontrol *kcontrol,
|
|
|
|
+ struct snd_ctl_elem_info *uinfo)
|
|
{
|
|
{
|
|
uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
|
|
uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
|
|
uinfo->count = 1;
|
|
uinfo->count = 1;
|
|
@@ -2816,21 +2863,21 @@ static int snd_trident_pcm_cvol_control_info(snd_kcontrol_t *kcontrol, snd_ctl_e
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_trident_pcm_cvol_control_get(snd_kcontrol_t * kcontrol,
|
|
|
|
- snd_ctl_elem_value_t * ucontrol)
|
|
|
|
|
|
+static int snd_trident_pcm_cvol_control_get(struct snd_kcontrol *kcontrol,
|
|
|
|
+ struct snd_ctl_elem_value *ucontrol)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_kcontrol_chip(kcontrol);
|
|
|
|
- snd_trident_pcm_mixer_t *mix = &trident->pcm_mixer[snd_ctl_get_ioffnum(kcontrol, &ucontrol->id)];
|
|
|
|
|
|
+ struct snd_trident *trident = snd_kcontrol_chip(kcontrol);
|
|
|
|
+ struct snd_trident_pcm_mixer *mix = &trident->pcm_mixer[snd_ctl_get_ioffnum(kcontrol, &ucontrol->id)];
|
|
|
|
|
|
ucontrol->value.integer.value[0] = 127 - mix->cvol;
|
|
ucontrol->value.integer.value[0] = 127 - mix->cvol;
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_trident_pcm_cvol_control_put(snd_kcontrol_t * kcontrol,
|
|
|
|
- snd_ctl_elem_value_t * ucontrol)
|
|
|
|
|
|
+static int snd_trident_pcm_cvol_control_put(struct snd_kcontrol *kcontrol,
|
|
|
|
+ struct snd_ctl_elem_value *ucontrol)
|
|
{
|
|
{
|
|
- trident_t *trident = snd_kcontrol_chip(kcontrol);
|
|
|
|
- snd_trident_pcm_mixer_t *mix = &trident->pcm_mixer[snd_ctl_get_ioffnum(kcontrol, &ucontrol->id)];
|
|
|
|
|
|
+ struct snd_trident *trident = snd_kcontrol_chip(kcontrol);
|
|
|
|
+ struct snd_trident_pcm_mixer *mix = &trident->pcm_mixer[snd_ctl_get_ioffnum(kcontrol, &ucontrol->id)];
|
|
unsigned short val;
|
|
unsigned short val;
|
|
int change = 0;
|
|
int change = 0;
|
|
|
|
|
|
@@ -2844,7 +2891,7 @@ static int snd_trident_pcm_cvol_control_put(snd_kcontrol_t * kcontrol,
|
|
return change;
|
|
return change;
|
|
}
|
|
}
|
|
|
|
|
|
-static snd_kcontrol_new_t snd_trident_pcm_cvol_control __devinitdata =
|
|
|
|
|
|
+static struct snd_kcontrol_new snd_trident_pcm_cvol_control __devinitdata =
|
|
{
|
|
{
|
|
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
|
|
.iface = SNDRV_CTL_ELEM_IFACE_MIXER,
|
|
.name = "PCM Chorus Playback Volume",
|
|
.name = "PCM Chorus Playback Volume",
|
|
@@ -2855,9 +2902,11 @@ static snd_kcontrol_new_t snd_trident_pcm_cvol_control __devinitdata =
|
|
.put = snd_trident_pcm_cvol_control_put,
|
|
.put = snd_trident_pcm_cvol_control_put,
|
|
};
|
|
};
|
|
|
|
|
|
-static void snd_trident_notify_pcm_change1(snd_card_t * card, snd_kcontrol_t *kctl, int num, int activate)
|
|
|
|
|
|
+static void snd_trident_notify_pcm_change1(struct snd_card *card,
|
|
|
|
+ struct snd_kcontrol *kctl,
|
|
|
|
+ int num, int activate)
|
|
{
|
|
{
|
|
- snd_ctl_elem_id_t id;
|
|
|
|
|
|
+ struct snd_ctl_elem_id id;
|
|
|
|
|
|
if (! kctl)
|
|
if (! kctl)
|
|
return;
|
|
return;
|
|
@@ -2870,7 +2919,9 @@ static void snd_trident_notify_pcm_change1(snd_card_t * card, snd_kcontrol_t *kc
|
|
snd_ctl_build_ioff(&id, kctl, num));
|
|
snd_ctl_build_ioff(&id, kctl, num));
|
|
}
|
|
}
|
|
|
|
|
|
-static void snd_trident_notify_pcm_change(trident_t *trident, snd_trident_pcm_mixer_t *tmix, int num, int activate)
|
|
|
|
|
|
+static void snd_trident_notify_pcm_change(struct snd_trident *trident,
|
|
|
|
+ struct snd_trident_pcm_mixer *tmix,
|
|
|
|
+ int num, int activate)
|
|
{
|
|
{
|
|
snd_trident_notify_pcm_change1(trident->card, trident->ctl_vol, num, activate);
|
|
snd_trident_notify_pcm_change1(trident->card, trident->ctl_vol, num, activate);
|
|
snd_trident_notify_pcm_change1(trident->card, trident->ctl_pan, num, activate);
|
|
snd_trident_notify_pcm_change1(trident->card, trident->ctl_pan, num, activate);
|
|
@@ -2878,9 +2929,11 @@ static void snd_trident_notify_pcm_change(trident_t *trident, snd_trident_pcm_mi
|
|
snd_trident_notify_pcm_change1(trident->card, trident->ctl_cvol, num, activate);
|
|
snd_trident_notify_pcm_change1(trident->card, trident->ctl_cvol, num, activate);
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_trident_pcm_mixer_build(trident_t *trident, snd_trident_voice_t *voice, snd_pcm_substream_t *substream)
|
|
|
|
|
|
+static int snd_trident_pcm_mixer_build(struct snd_trident *trident,
|
|
|
|
+ struct snd_trident_voice *voice,
|
|
|
|
+ struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- snd_trident_pcm_mixer_t *tmix;
|
|
|
|
|
|
+ struct snd_trident_pcm_mixer *tmix;
|
|
|
|
|
|
snd_assert(trident != NULL && voice != NULL && substream != NULL, return -EINVAL);
|
|
snd_assert(trident != NULL && voice != NULL && substream != NULL, return -EINVAL);
|
|
tmix = &trident->pcm_mixer[substream->number];
|
|
tmix = &trident->pcm_mixer[substream->number];
|
|
@@ -2893,9 +2946,9 @@ static int snd_trident_pcm_mixer_build(trident_t *trident, snd_trident_voice_t *
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_trident_pcm_mixer_free(trident_t *trident, snd_trident_voice_t *voice, snd_pcm_substream_t *substream)
|
|
|
|
|
|
+static int snd_trident_pcm_mixer_free(struct snd_trident *trident, struct snd_trident_voice *voice, struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- snd_trident_pcm_mixer_t *tmix;
|
|
|
|
|
|
+ struct snd_trident_pcm_mixer *tmix;
|
|
|
|
|
|
snd_assert(trident != NULL && substream != NULL, return -EINVAL);
|
|
snd_assert(trident != NULL && substream != NULL, return -EINVAL);
|
|
tmix = &trident->pcm_mixer[substream->number];
|
|
tmix = &trident->pcm_mixer[substream->number];
|
|
@@ -2915,14 +2968,14 @@ static int snd_trident_pcm_mixer_free(trident_t *trident, snd_trident_voice_t *v
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static int __devinit snd_trident_mixer(trident_t * trident, int pcm_spdif_device)
|
|
|
|
|
|
+static int __devinit snd_trident_mixer(struct snd_trident * trident, int pcm_spdif_device)
|
|
{
|
|
{
|
|
- ac97_template_t _ac97;
|
|
|
|
- snd_card_t * card = trident->card;
|
|
|
|
- snd_kcontrol_t *kctl;
|
|
|
|
- snd_ctl_elem_value_t *uctl;
|
|
|
|
|
|
+ struct snd_ac97_template _ac97;
|
|
|
|
+ struct snd_card *card = trident->card;
|
|
|
|
+ struct snd_kcontrol *kctl;
|
|
|
|
+ struct snd_ctl_elem_value *uctl;
|
|
int idx, err, retries = 2;
|
|
int idx, err, retries = 2;
|
|
- static ac97_bus_ops_t ops = {
|
|
|
|
|
|
+ static struct snd_ac97_bus_ops ops = {
|
|
.write = snd_trident_codec_write,
|
|
.write = snd_trident_codec_write,
|
|
.read = snd_trident_codec_read,
|
|
.read = snd_trident_codec_read,
|
|
};
|
|
};
|
|
@@ -2959,7 +3012,7 @@ static int __devinit snd_trident_mixer(trident_t * trident, int pcm_spdif_device
|
|
snd_printk(KERN_ERR "SI7018: the secondary codec - invalid access\n");
|
|
snd_printk(KERN_ERR "SI7018: the secondary codec - invalid access\n");
|
|
#if 0 // only for my testing purpose --jk
|
|
#if 0 // only for my testing purpose --jk
|
|
{
|
|
{
|
|
- ac97_t *mc97;
|
|
|
|
|
|
+ struct snd_ac97 *mc97;
|
|
err = snd_ac97_modem(trident->card, &_ac97, &mc97);
|
|
err = snd_ac97_modem(trident->card, &_ac97, &mc97);
|
|
if (err < 0)
|
|
if (err < 0)
|
|
snd_printk(KERN_ERR "snd_ac97_modem returned error %i\n", err);
|
|
snd_printk(KERN_ERR "snd_ac97_modem returned error %i\n", err);
|
|
@@ -2982,7 +3035,7 @@ static int __devinit snd_trident_mixer(trident_t * trident, int pcm_spdif_device
|
|
}
|
|
}
|
|
|
|
|
|
for (idx = 0; idx < 32; idx++) {
|
|
for (idx = 0; idx < 32; idx++) {
|
|
- snd_trident_pcm_mixer_t *tmix;
|
|
|
|
|
|
+ struct snd_trident_pcm_mixer *tmix;
|
|
|
|
|
|
tmix = &trident->pcm_mixer[idx];
|
|
tmix = &trident->pcm_mixer[idx];
|
|
tmix->voice = NULL;
|
|
tmix->voice = NULL;
|
|
@@ -3080,7 +3133,7 @@ static int __devinit snd_trident_mixer(trident_t * trident, int pcm_spdif_device
|
|
|
|
|
|
static unsigned char snd_trident_gameport_read(struct gameport *gameport)
|
|
static unsigned char snd_trident_gameport_read(struct gameport *gameport)
|
|
{
|
|
{
|
|
- trident_t *chip = gameport_get_port_data(gameport);
|
|
|
|
|
|
+ struct snd_trident *chip = gameport_get_port_data(gameport);
|
|
|
|
|
|
snd_assert(chip, return 0);
|
|
snd_assert(chip, return 0);
|
|
return inb(TRID_REG(chip, GAMEPORT_LEGACY));
|
|
return inb(TRID_REG(chip, GAMEPORT_LEGACY));
|
|
@@ -3088,7 +3141,7 @@ static unsigned char snd_trident_gameport_read(struct gameport *gameport)
|
|
|
|
|
|
static void snd_trident_gameport_trigger(struct gameport *gameport)
|
|
static void snd_trident_gameport_trigger(struct gameport *gameport)
|
|
{
|
|
{
|
|
- trident_t *chip = gameport_get_port_data(gameport);
|
|
|
|
|
|
+ struct snd_trident *chip = gameport_get_port_data(gameport);
|
|
|
|
|
|
snd_assert(chip, return);
|
|
snd_assert(chip, return);
|
|
outb(0xff, TRID_REG(chip, GAMEPORT_LEGACY));
|
|
outb(0xff, TRID_REG(chip, GAMEPORT_LEGACY));
|
|
@@ -3096,7 +3149,7 @@ static void snd_trident_gameport_trigger(struct gameport *gameport)
|
|
|
|
|
|
static int snd_trident_gameport_cooked_read(struct gameport *gameport, int *axes, int *buttons)
|
|
static int snd_trident_gameport_cooked_read(struct gameport *gameport, int *axes, int *buttons)
|
|
{
|
|
{
|
|
- trident_t *chip = gameport_get_port_data(gameport);
|
|
|
|
|
|
+ struct snd_trident *chip = gameport_get_port_data(gameport);
|
|
int i;
|
|
int i;
|
|
|
|
|
|
snd_assert(chip, return 0);
|
|
snd_assert(chip, return 0);
|
|
@@ -3113,7 +3166,7 @@ static int snd_trident_gameport_cooked_read(struct gameport *gameport, int *axes
|
|
|
|
|
|
static int snd_trident_gameport_open(struct gameport *gameport, int mode)
|
|
static int snd_trident_gameport_open(struct gameport *gameport, int mode)
|
|
{
|
|
{
|
|
- trident_t *chip = gameport_get_port_data(gameport);
|
|
|
|
|
|
+ struct snd_trident *chip = gameport_get_port_data(gameport);
|
|
|
|
|
|
snd_assert(chip, return 0);
|
|
snd_assert(chip, return 0);
|
|
|
|
|
|
@@ -3130,7 +3183,7 @@ static int snd_trident_gameport_open(struct gameport *gameport, int mode)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-int __devinit snd_trident_create_gameport(trident_t *chip)
|
|
|
|
|
|
+int __devinit snd_trident_create_gameport(struct snd_trident *chip)
|
|
{
|
|
{
|
|
struct gameport *gp;
|
|
struct gameport *gp;
|
|
|
|
|
|
@@ -3156,7 +3209,7 @@ int __devinit snd_trident_create_gameport(trident_t *chip)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static inline void snd_trident_free_gameport(trident_t *chip)
|
|
|
|
|
|
+static inline void snd_trident_free_gameport(struct snd_trident *chip)
|
|
{
|
|
{
|
|
if (chip->gameport) {
|
|
if (chip->gameport) {
|
|
gameport_unregister_port(chip->gameport);
|
|
gameport_unregister_port(chip->gameport);
|
|
@@ -3164,14 +3217,14 @@ static inline void snd_trident_free_gameport(trident_t *chip)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#else
|
|
#else
|
|
-int __devinit snd_trident_create_gameport(trident_t *chip) { return -ENOSYS; }
|
|
|
|
-static inline void snd_trident_free_gameport(trident_t *chip) { }
|
|
|
|
|
|
+int __devinit snd_trident_create_gameport(struct snd_trident *chip) { return -ENOSYS; }
|
|
|
|
+static inline void snd_trident_free_gameport(struct snd_trident *chip) { }
|
|
#endif /* CONFIG_GAMEPORT */
|
|
#endif /* CONFIG_GAMEPORT */
|
|
|
|
|
|
/*
|
|
/*
|
|
* delay for 1 tick
|
|
* delay for 1 tick
|
|
*/
|
|
*/
|
|
-static inline void do_delay(trident_t *chip)
|
|
|
|
|
|
+static inline void do_delay(struct snd_trident *chip)
|
|
{
|
|
{
|
|
schedule_timeout_uninterruptible(1);
|
|
schedule_timeout_uninterruptible(1);
|
|
}
|
|
}
|
|
@@ -3180,7 +3233,7 @@ static inline void do_delay(trident_t *chip)
|
|
* SiS reset routine
|
|
* SiS reset routine
|
|
*/
|
|
*/
|
|
|
|
|
|
-static int snd_trident_sis_reset(trident_t *trident)
|
|
|
|
|
|
+static int snd_trident_sis_reset(struct snd_trident *trident)
|
|
{
|
|
{
|
|
unsigned long end_time;
|
|
unsigned long end_time;
|
|
unsigned int i;
|
|
unsigned int i;
|
|
@@ -3233,10 +3286,10 @@ static int snd_trident_sis_reset(trident_t *trident)
|
|
* /proc interface
|
|
* /proc interface
|
|
*/
|
|
*/
|
|
|
|
|
|
-static void snd_trident_proc_read(snd_info_entry_t *entry,
|
|
|
|
- snd_info_buffer_t * buffer)
|
|
|
|
|
|
+static void snd_trident_proc_read(struct snd_info_entry *entry,
|
|
|
|
+ struct snd_info_buffer *buffer)
|
|
{
|
|
{
|
|
- trident_t *trident = entry->private_data;
|
|
|
|
|
|
+ struct snd_trident *trident = entry->private_data;
|
|
char *s;
|
|
char *s;
|
|
|
|
|
|
switch (trident->device) {
|
|
switch (trident->device) {
|
|
@@ -3274,9 +3327,9 @@ static void snd_trident_proc_read(snd_info_entry_t *entry,
|
|
#endif
|
|
#endif
|
|
}
|
|
}
|
|
|
|
|
|
-static void __devinit snd_trident_proc_init(trident_t * trident)
|
|
|
|
|
|
+static void __devinit snd_trident_proc_init(struct snd_trident * trident)
|
|
{
|
|
{
|
|
- snd_info_entry_t *entry;
|
|
|
|
|
|
+ struct snd_info_entry *entry;
|
|
const char *s = "trident";
|
|
const char *s = "trident";
|
|
|
|
|
|
if (trident->device == TRIDENT_DEVICE_ID_SI7018)
|
|
if (trident->device == TRIDENT_DEVICE_ID_SI7018)
|
|
@@ -3285,9 +3338,9 @@ static void __devinit snd_trident_proc_init(trident_t * trident)
|
|
snd_info_set_text_ops(entry, trident, 1024, snd_trident_proc_read);
|
|
snd_info_set_text_ops(entry, trident, 1024, snd_trident_proc_read);
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_trident_dev_free(snd_device_t *device)
|
|
|
|
|
|
+static int snd_trident_dev_free(struct snd_device *device)
|
|
{
|
|
{
|
|
- trident_t *trident = device->device_data;
|
|
|
|
|
|
+ struct snd_trident *trident = device->device_data;
|
|
return snd_trident_free(trident);
|
|
return snd_trident_free(trident);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -3303,7 +3356,7 @@ static int snd_trident_dev_free(snd_device_t *device)
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static int __devinit snd_trident_tlb_alloc(trident_t *trident)
|
|
|
|
|
|
+static int __devinit snd_trident_tlb_alloc(struct snd_trident *trident)
|
|
{
|
|
{
|
|
int i;
|
|
int i;
|
|
|
|
|
|
@@ -3318,7 +3371,7 @@ static int __devinit snd_trident_tlb_alloc(trident_t *trident)
|
|
trident->tlb.entries = (unsigned int*)(((unsigned long)trident->tlb.buffer.area + SNDRV_TRIDENT_MAX_PAGES * 4 - 1) & ~(SNDRV_TRIDENT_MAX_PAGES * 4 - 1));
|
|
trident->tlb.entries = (unsigned int*)(((unsigned long)trident->tlb.buffer.area + SNDRV_TRIDENT_MAX_PAGES * 4 - 1) & ~(SNDRV_TRIDENT_MAX_PAGES * 4 - 1));
|
|
trident->tlb.entries_dmaaddr = (trident->tlb.buffer.addr + SNDRV_TRIDENT_MAX_PAGES * 4 - 1) & ~(SNDRV_TRIDENT_MAX_PAGES * 4 - 1);
|
|
trident->tlb.entries_dmaaddr = (trident->tlb.buffer.addr + SNDRV_TRIDENT_MAX_PAGES * 4 - 1) & ~(SNDRV_TRIDENT_MAX_PAGES * 4 - 1);
|
|
/* allocate shadow TLB page table (virtual addresses) */
|
|
/* allocate shadow TLB page table (virtual addresses) */
|
|
- trident->tlb.shadow_entries = (unsigned long *)vmalloc(SNDRV_TRIDENT_MAX_PAGES*sizeof(unsigned long));
|
|
|
|
|
|
+ trident->tlb.shadow_entries = vmalloc(SNDRV_TRIDENT_MAX_PAGES*sizeof(unsigned long));
|
|
if (trident->tlb.shadow_entries == NULL) {
|
|
if (trident->tlb.shadow_entries == NULL) {
|
|
snd_printk(KERN_ERR "trident: unable to allocate shadow TLB entries\n");
|
|
snd_printk(KERN_ERR "trident: unable to allocate shadow TLB entries\n");
|
|
return -ENOMEM;
|
|
return -ENOMEM;
|
|
@@ -3340,7 +3393,7 @@ static int __devinit snd_trident_tlb_alloc(trident_t *trident)
|
|
if (trident->tlb.memhdr == NULL)
|
|
if (trident->tlb.memhdr == NULL)
|
|
return -ENOMEM;
|
|
return -ENOMEM;
|
|
|
|
|
|
- trident->tlb.memhdr->block_extra_size = sizeof(snd_trident_memblk_arg_t);
|
|
|
|
|
|
+ trident->tlb.memhdr->block_extra_size = sizeof(struct snd_trident_memblk_arg);
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -3348,7 +3401,7 @@ static int __devinit snd_trident_tlb_alloc(trident_t *trident)
|
|
* initialize 4D DX chip
|
|
* initialize 4D DX chip
|
|
*/
|
|
*/
|
|
|
|
|
|
-static void snd_trident_stop_all_voices(trident_t *trident)
|
|
|
|
|
|
+static void snd_trident_stop_all_voices(struct snd_trident *trident)
|
|
{
|
|
{
|
|
outl(0xffffffff, TRID_REG(trident, T4D_STOP_A));
|
|
outl(0xffffffff, TRID_REG(trident, T4D_STOP_A));
|
|
outl(0xffffffff, TRID_REG(trident, T4D_STOP_B));
|
|
outl(0xffffffff, TRID_REG(trident, T4D_STOP_B));
|
|
@@ -3356,7 +3409,7 @@ static void snd_trident_stop_all_voices(trident_t *trident)
|
|
outl(0, TRID_REG(trident, T4D_AINTEN_B));
|
|
outl(0, TRID_REG(trident, T4D_AINTEN_B));
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_trident_4d_dx_init(trident_t *trident)
|
|
|
|
|
|
+static int snd_trident_4d_dx_init(struct snd_trident *trident)
|
|
{
|
|
{
|
|
struct pci_dev *pci = trident->pci;
|
|
struct pci_dev *pci = trident->pci;
|
|
unsigned long end_time;
|
|
unsigned long end_time;
|
|
@@ -3396,7 +3449,7 @@ static int snd_trident_4d_dx_init(trident_t *trident)
|
|
/*
|
|
/*
|
|
* initialize 4D NX chip
|
|
* initialize 4D NX chip
|
|
*/
|
|
*/
|
|
-static int snd_trident_4d_nx_init(trident_t *trident)
|
|
|
|
|
|
+static int snd_trident_4d_nx_init(struct snd_trident *trident)
|
|
{
|
|
{
|
|
struct pci_dev *pci = trident->pci;
|
|
struct pci_dev *pci = trident->pci;
|
|
unsigned long end_time;
|
|
unsigned long end_time;
|
|
@@ -3453,7 +3506,7 @@ static int snd_trident_4d_nx_init(trident_t *trident)
|
|
/*
|
|
/*
|
|
* initialize sis7018 chip
|
|
* initialize sis7018 chip
|
|
*/
|
|
*/
|
|
-static int snd_trident_sis_init(trident_t *trident)
|
|
|
|
|
|
+static int snd_trident_sis_init(struct snd_trident *trident)
|
|
{
|
|
{
|
|
int err;
|
|
int err;
|
|
|
|
|
|
@@ -3484,18 +3537,18 @@ static int snd_trident_sis_init(trident_t *trident)
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-int __devinit snd_trident_create(snd_card_t * card,
|
|
|
|
|
|
+int __devinit snd_trident_create(struct snd_card *card,
|
|
struct pci_dev *pci,
|
|
struct pci_dev *pci,
|
|
int pcm_streams,
|
|
int pcm_streams,
|
|
int pcm_spdif_device,
|
|
int pcm_spdif_device,
|
|
int max_wavetable_size,
|
|
int max_wavetable_size,
|
|
- trident_t ** rtrident)
|
|
|
|
|
|
+ struct snd_trident ** rtrident)
|
|
{
|
|
{
|
|
- trident_t *trident;
|
|
|
|
|
|
+ struct snd_trident *trident;
|
|
int i, err;
|
|
int i, err;
|
|
- snd_trident_voice_t *voice;
|
|
|
|
- snd_trident_pcm_mixer_t *tmix;
|
|
|
|
- static snd_device_ops_t ops = {
|
|
|
|
|
|
+ struct snd_trident_voice *voice;
|
|
|
|
+ struct snd_trident_pcm_mixer *tmix;
|
|
|
|
+ static struct snd_device_ops ops = {
|
|
.dev_free = snd_trident_dev_free,
|
|
.dev_free = snd_trident_dev_free,
|
|
};
|
|
};
|
|
|
|
|
|
@@ -3543,7 +3596,8 @@ int __devinit snd_trident_create(snd_card_t * card,
|
|
}
|
|
}
|
|
trident->port = pci_resource_start(pci, 0);
|
|
trident->port = pci_resource_start(pci, 0);
|
|
|
|
|
|
- if (request_irq(pci->irq, snd_trident_interrupt, SA_INTERRUPT|SA_SHIRQ, "Trident Audio", (void *) trident)) {
|
|
|
|
|
|
+ if (request_irq(pci->irq, snd_trident_interrupt, SA_INTERRUPT|SA_SHIRQ,
|
|
|
|
+ "Trident Audio", trident)) {
|
|
snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq);
|
|
snd_printk(KERN_ERR "unable to grab IRQ %d\n", pci->irq);
|
|
snd_trident_free(trident);
|
|
snd_trident_free(trident);
|
|
return -EBUSY;
|
|
return -EBUSY;
|
|
@@ -3627,7 +3681,7 @@ int __devinit snd_trident_create(snd_card_t * card,
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
|
|
|
|
-static int snd_trident_free(trident_t *trident)
|
|
|
|
|
|
+static int snd_trident_free(struct snd_trident *trident)
|
|
{
|
|
{
|
|
snd_trident_free_gameport(trident);
|
|
snd_trident_free_gameport(trident);
|
|
snd_trident_disable_eso(trident);
|
|
snd_trident_disable_eso(trident);
|
|
@@ -3647,7 +3701,7 @@ static int snd_trident_free(trident_t *trident)
|
|
snd_dma_free_pages(&trident->tlb.buffer);
|
|
snd_dma_free_pages(&trident->tlb.buffer);
|
|
}
|
|
}
|
|
if (trident->irq >= 0)
|
|
if (trident->irq >= 0)
|
|
- free_irq(trident->irq, (void *)trident);
|
|
|
|
|
|
+ free_irq(trident->irq, trident);
|
|
pci_release_regions(trident->pci);
|
|
pci_release_regions(trident->pci);
|
|
pci_disable_device(trident->pci);
|
|
pci_disable_device(trident->pci);
|
|
kfree(trident);
|
|
kfree(trident);
|
|
@@ -3674,10 +3728,10 @@ static int snd_trident_free(trident_t *trident)
|
|
|
|
|
|
static irqreturn_t snd_trident_interrupt(int irq, void *dev_id, struct pt_regs *regs)
|
|
static irqreturn_t snd_trident_interrupt(int irq, void *dev_id, struct pt_regs *regs)
|
|
{
|
|
{
|
|
- trident_t *trident = dev_id;
|
|
|
|
|
|
+ struct snd_trident *trident = dev_id;
|
|
unsigned int audio_int, chn_int, stimer, channel, mask, tmp;
|
|
unsigned int audio_int, chn_int, stimer, channel, mask, tmp;
|
|
int delta;
|
|
int delta;
|
|
- snd_trident_voice_t *voice;
|
|
|
|
|
|
+ struct snd_trident_voice *voice;
|
|
|
|
|
|
audio_int = inl(TRID_REG(trident, T4D_MISCINT));
|
|
audio_int = inl(TRID_REG(trident, T4D_MISCINT));
|
|
if ((audio_int & (ADDRESS_IRQ|MPU401_IRQ)) == 0)
|
|
if ((audio_int & (ADDRESS_IRQ|MPU401_IRQ)) == 0)
|
|
@@ -3779,21 +3833,21 @@ static irqreturn_t snd_trident_interrupt(int irq, void *dev_id, struct pt_regs *
|
|
Returns: None.
|
|
Returns: None.
|
|
|
|
|
|
---------------------------------------------------------------------------*/
|
|
---------------------------------------------------------------------------*/
|
|
-int snd_trident_attach_synthesizer(trident_t *trident)
|
|
|
|
|
|
+int snd_trident_attach_synthesizer(struct snd_trident *trident)
|
|
{
|
|
{
|
|
#if defined(CONFIG_SND_SEQUENCER) || (defined(MODULE) && defined(CONFIG_SND_SEQUENCER_MODULE))
|
|
#if defined(CONFIG_SND_SEQUENCER) || (defined(MODULE) && defined(CONFIG_SND_SEQUENCER_MODULE))
|
|
if (snd_seq_device_new(trident->card, 1, SNDRV_SEQ_DEV_ID_TRIDENT,
|
|
if (snd_seq_device_new(trident->card, 1, SNDRV_SEQ_DEV_ID_TRIDENT,
|
|
- sizeof(trident_t*), &trident->seq_dev) >= 0) {
|
|
|
|
|
|
+ sizeof(struct snd_trident *), &trident->seq_dev) >= 0) {
|
|
strcpy(trident->seq_dev->name, "4DWave");
|
|
strcpy(trident->seq_dev->name, "4DWave");
|
|
- *(trident_t**)SNDRV_SEQ_DEVICE_ARGPTR(trident->seq_dev) = trident;
|
|
|
|
|
|
+ *(struct snd_trident **)SNDRV_SEQ_DEVICE_ARGPTR(trident->seq_dev) = trident;
|
|
}
|
|
}
|
|
#endif
|
|
#endif
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-snd_trident_voice_t *snd_trident_alloc_voice(trident_t * trident, int type, int client, int port)
|
|
|
|
|
|
+struct snd_trident_voice *snd_trident_alloc_voice(struct snd_trident * trident, int type, int client, int port)
|
|
{
|
|
{
|
|
- snd_trident_voice_t *pvoice;
|
|
|
|
|
|
+ struct snd_trident_voice *pvoice;
|
|
unsigned long flags;
|
|
unsigned long flags;
|
|
int idx;
|
|
int idx;
|
|
|
|
|
|
@@ -3835,10 +3889,10 @@ snd_trident_voice_t *snd_trident_alloc_voice(trident_t * trident, int type, int
|
|
return NULL;
|
|
return NULL;
|
|
}
|
|
}
|
|
|
|
|
|
-void snd_trident_free_voice(trident_t * trident, snd_trident_voice_t *voice)
|
|
|
|
|
|
+void snd_trident_free_voice(struct snd_trident * trident, struct snd_trident_voice *voice)
|
|
{
|
|
{
|
|
unsigned long flags;
|
|
unsigned long flags;
|
|
- void (*private_free)(snd_trident_voice_t *);
|
|
|
|
|
|
+ void (*private_free)(struct snd_trident_voice *);
|
|
void *private_data;
|
|
void *private_data;
|
|
|
|
|
|
if (voice == NULL || !voice->use)
|
|
if (voice == NULL || !voice->use)
|
|
@@ -3863,7 +3917,7 @@ void snd_trident_free_voice(trident_t * trident, snd_trident_voice_t *voice)
|
|
private_free(voice);
|
|
private_free(voice);
|
|
}
|
|
}
|
|
|
|
|
|
-static void snd_trident_clear_voices(trident_t * trident, unsigned short v_min, unsigned short v_max)
|
|
|
|
|
|
+static void snd_trident_clear_voices(struct snd_trident * trident, unsigned short v_min, unsigned short v_max)
|
|
{
|
|
{
|
|
unsigned int i, val, mask[2] = { 0, 0 };
|
|
unsigned int i, val, mask[2] = { 0, 0 };
|
|
|
|
|
|
@@ -3884,9 +3938,9 @@ static void snd_trident_clear_voices(trident_t * trident, unsigned short v_min,
|
|
}
|
|
}
|
|
|
|
|
|
#ifdef CONFIG_PM
|
|
#ifdef CONFIG_PM
|
|
-static int snd_trident_suspend(snd_card_t *card, pm_message_t state)
|
|
|
|
|
|
+static int snd_trident_suspend(struct snd_card *card, pm_message_t state)
|
|
{
|
|
{
|
|
- trident_t *trident = card->pm_private_data;
|
|
|
|
|
|
+ struct snd_trident *trident = card->pm_private_data;
|
|
|
|
|
|
trident->in_suspend = 1;
|
|
trident->in_suspend = 1;
|
|
snd_pcm_suspend_all(trident->pcm);
|
|
snd_pcm_suspend_all(trident->pcm);
|
|
@@ -3910,9 +3964,9 @@ static int snd_trident_suspend(snd_card_t *card, pm_message_t state)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_trident_resume(snd_card_t *card)
|
|
|
|
|
|
+static int snd_trident_resume(struct snd_card *card)
|
|
{
|
|
{
|
|
- trident_t *trident = card->pm_private_data;
|
|
|
|
|
|
+ struct snd_trident *trident = card->pm_private_data;
|
|
|
|
|
|
pci_enable_device(trident->pci);
|
|
pci_enable_device(trident->pci);
|
|
if (pci_set_dma_mask(trident->pci, 0x3fffffff) < 0 ||
|
|
if (pci_set_dma_mask(trident->pci, 0x3fffffff) < 0 ||
|