|
@@ -35,9 +35,10 @@
|
|
#include <sound/core.h>
|
|
#include <sound/core.h>
|
|
#include <sound/emu10k1.h>
|
|
#include <sound/emu10k1.h>
|
|
|
|
|
|
-static void snd_emu10k1_pcm_interrupt(emu10k1_t *emu, emu10k1_voice_t *voice)
|
|
|
|
|
|
+static void snd_emu10k1_pcm_interrupt(struct snd_emu10k1 *emu,
|
|
|
|
+ struct snd_emu10k1_voice *voice)
|
|
{
|
|
{
|
|
- emu10k1_pcm_t *epcm;
|
|
|
|
|
|
+ struct snd_emu10k1_pcm *epcm;
|
|
|
|
|
|
if ((epcm = voice->epcm) == NULL)
|
|
if ((epcm = voice->epcm) == NULL)
|
|
return;
|
|
return;
|
|
@@ -52,7 +53,8 @@ static void snd_emu10k1_pcm_interrupt(emu10k1_t *emu, emu10k1_voice_t *voice)
|
|
snd_pcm_period_elapsed(epcm->substream);
|
|
snd_pcm_period_elapsed(epcm->substream);
|
|
}
|
|
}
|
|
|
|
|
|
-static void snd_emu10k1_pcm_ac97adc_interrupt(emu10k1_t *emu, unsigned int status)
|
|
|
|
|
|
+static void snd_emu10k1_pcm_ac97adc_interrupt(struct snd_emu10k1 *emu,
|
|
|
|
+ unsigned int status)
|
|
{
|
|
{
|
|
#if 0
|
|
#if 0
|
|
if (status & IPR_ADCBUFHALFFULL) {
|
|
if (status & IPR_ADCBUFHALFFULL) {
|
|
@@ -63,7 +65,8 @@ static void snd_emu10k1_pcm_ac97adc_interrupt(emu10k1_t *emu, unsigned int statu
|
|
snd_pcm_period_elapsed(emu->pcm_capture_substream);
|
|
snd_pcm_period_elapsed(emu->pcm_capture_substream);
|
|
}
|
|
}
|
|
|
|
|
|
-static void snd_emu10k1_pcm_ac97mic_interrupt(emu10k1_t *emu, unsigned int status)
|
|
|
|
|
|
+static void snd_emu10k1_pcm_ac97mic_interrupt(struct snd_emu10k1 *emu,
|
|
|
|
+ unsigned int status)
|
|
{
|
|
{
|
|
#if 0
|
|
#if 0
|
|
if (status & IPR_MICBUFHALFFULL) {
|
|
if (status & IPR_MICBUFHALFFULL) {
|
|
@@ -74,7 +77,8 @@ static void snd_emu10k1_pcm_ac97mic_interrupt(emu10k1_t *emu, unsigned int statu
|
|
snd_pcm_period_elapsed(emu->pcm_capture_mic_substream);
|
|
snd_pcm_period_elapsed(emu->pcm_capture_mic_substream);
|
|
}
|
|
}
|
|
|
|
|
|
-static void snd_emu10k1_pcm_efx_interrupt(emu10k1_t *emu, unsigned int status)
|
|
|
|
|
|
+static void snd_emu10k1_pcm_efx_interrupt(struct snd_emu10k1 *emu,
|
|
|
|
+ unsigned int status)
|
|
{
|
|
{
|
|
#if 0
|
|
#if 0
|
|
if (status & IPR_EFXBUFHALFFULL) {
|
|
if (status & IPR_EFXBUFHALFFULL) {
|
|
@@ -85,11 +89,11 @@ static void snd_emu10k1_pcm_efx_interrupt(emu10k1_t *emu, unsigned int status)
|
|
snd_pcm_period_elapsed(emu->pcm_capture_efx_substream);
|
|
snd_pcm_period_elapsed(emu->pcm_capture_efx_substream);
|
|
}
|
|
}
|
|
|
|
|
|
-static snd_pcm_uframes_t snd_emu10k1_efx_playback_pointer(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static snd_pcm_uframes_t snd_emu10k1_efx_playback_pointer(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- emu10k1_t *emu = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
- emu10k1_pcm_t *epcm = runtime->private_data;
|
|
|
|
|
|
+ struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
|
|
+ struct snd_emu10k1_pcm *epcm = runtime->private_data;
|
|
unsigned int ptr;
|
|
unsigned int ptr;
|
|
|
|
|
|
if (!epcm->running)
|
|
if (!epcm->running)
|
|
@@ -102,7 +106,7 @@ static snd_pcm_uframes_t snd_emu10k1_efx_playback_pointer(snd_pcm_substream_t *
|
|
return ptr;
|
|
return ptr;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_emu10k1_pcm_channel_alloc(emu10k1_pcm_t * epcm, int voices)
|
|
|
|
|
|
+static int snd_emu10k1_pcm_channel_alloc(struct snd_emu10k1_pcm * epcm, int voices)
|
|
{
|
|
{
|
|
int err, i;
|
|
int err, i;
|
|
|
|
|
|
@@ -167,7 +171,7 @@ static unsigned int capture_period_sizes[31] = {
|
|
384*128,448*128,512*128
|
|
384*128,448*128,512*128
|
|
};
|
|
};
|
|
|
|
|
|
-static snd_pcm_hw_constraint_list_t hw_constraints_capture_period_sizes = {
|
|
|
|
|
|
+static struct snd_pcm_hw_constraint_list hw_constraints_capture_period_sizes = {
|
|
.count = 31,
|
|
.count = 31,
|
|
.list = capture_period_sizes,
|
|
.list = capture_period_sizes,
|
|
.mask = 0
|
|
.mask = 0
|
|
@@ -177,7 +181,7 @@ static unsigned int capture_rates[8] = {
|
|
8000, 11025, 16000, 22050, 24000, 32000, 44100, 48000
|
|
8000, 11025, 16000, 22050, 24000, 32000, 44100, 48000
|
|
};
|
|
};
|
|
|
|
|
|
-static snd_pcm_hw_constraint_list_t hw_constraints_capture_rates = {
|
|
|
|
|
|
+static struct snd_pcm_hw_constraint_list hw_constraints_capture_rates = {
|
|
.count = 8,
|
|
.count = 8,
|
|
.list = capture_rates,
|
|
.list = capture_rates,
|
|
.mask = 0
|
|
.mask = 0
|
|
@@ -271,15 +275,15 @@ static inline int emu10k1_ccis(int stereo, int w_16)
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-static void snd_emu10k1_pcm_init_voice(emu10k1_t *emu,
|
|
|
|
|
|
+static void snd_emu10k1_pcm_init_voice(struct snd_emu10k1 *emu,
|
|
int master, int extra,
|
|
int master, int extra,
|
|
- emu10k1_voice_t *evoice,
|
|
|
|
|
|
+ struct snd_emu10k1_voice *evoice,
|
|
unsigned int start_addr,
|
|
unsigned int start_addr,
|
|
unsigned int end_addr,
|
|
unsigned int end_addr,
|
|
- emu10k1_pcm_mixer_t *mix)
|
|
|
|
|
|
+ struct snd_emu10k1_pcm_mixer *mix)
|
|
{
|
|
{
|
|
- snd_pcm_substream_t *substream = evoice->epcm->substream;
|
|
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
|
|
+ struct snd_pcm_substream *substream = evoice->epcm->substream;
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
unsigned int silent_page, tmp;
|
|
unsigned int silent_page, tmp;
|
|
int voice, stereo, w_16;
|
|
int voice, stereo, w_16;
|
|
unsigned char attn, send_amount[8];
|
|
unsigned char attn, send_amount[8];
|
|
@@ -392,12 +396,12 @@ static void snd_emu10k1_pcm_init_voice(emu10k1_t *emu,
|
|
spin_unlock_irqrestore(&emu->reg_lock, flags);
|
|
spin_unlock_irqrestore(&emu->reg_lock, flags);
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_emu10k1_playback_hw_params(snd_pcm_substream_t * substream,
|
|
|
|
- snd_pcm_hw_params_t * hw_params)
|
|
|
|
|
|
+static int snd_emu10k1_playback_hw_params(struct snd_pcm_substream *substream,
|
|
|
|
+ struct snd_pcm_hw_params *hw_params)
|
|
{
|
|
{
|
|
- emu10k1_t *emu = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
- emu10k1_pcm_t *epcm = runtime->private_data;
|
|
|
|
|
|
+ struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
|
|
+ struct snd_emu10k1_pcm *epcm = runtime->private_data;
|
|
int err;
|
|
int err;
|
|
|
|
|
|
if ((err = snd_emu10k1_pcm_channel_alloc(epcm, params_channels(hw_params))) < 0)
|
|
if ((err = snd_emu10k1_pcm_channel_alloc(epcm, params_channels(hw_params))) < 0)
|
|
@@ -412,7 +416,7 @@ static int snd_emu10k1_playback_hw_params(snd_pcm_substream_t * substream,
|
|
epcm->start_addr = 0;
|
|
epcm->start_addr = 0;
|
|
if (! epcm->memblk)
|
|
if (! epcm->memblk)
|
|
return -ENOMEM;
|
|
return -ENOMEM;
|
|
- mapped = ((emu10k1_memblk_t *)epcm->memblk)->mapped_page;
|
|
|
|
|
|
+ mapped = ((struct snd_emu10k1_memblk *)epcm->memblk)->mapped_page;
|
|
if (mapped < 0)
|
|
if (mapped < 0)
|
|
return -ENOMEM;
|
|
return -ENOMEM;
|
|
epcm->start_addr = mapped << PAGE_SHIFT;
|
|
epcm->start_addr = mapped << PAGE_SHIFT;
|
|
@@ -420,11 +424,11 @@ static int snd_emu10k1_playback_hw_params(snd_pcm_substream_t * substream,
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_emu10k1_playback_hw_free(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static int snd_emu10k1_playback_hw_free(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- emu10k1_t *emu = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
- emu10k1_pcm_t *epcm;
|
|
|
|
|
|
+ struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
|
|
+ struct snd_emu10k1_pcm *epcm;
|
|
|
|
|
|
if (runtime->private_data == NULL)
|
|
if (runtime->private_data == NULL)
|
|
return 0;
|
|
return 0;
|
|
@@ -450,11 +454,11 @@ static int snd_emu10k1_playback_hw_free(snd_pcm_substream_t * substream)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_emu10k1_efx_playback_hw_free(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static int snd_emu10k1_efx_playback_hw_free(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- emu10k1_t *emu = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
- emu10k1_pcm_t *epcm;
|
|
|
|
|
|
+ struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
|
|
+ struct snd_emu10k1_pcm *epcm;
|
|
int i;
|
|
int i;
|
|
|
|
|
|
if (runtime->private_data == NULL)
|
|
if (runtime->private_data == NULL)
|
|
@@ -479,11 +483,11 @@ static int snd_emu10k1_efx_playback_hw_free(snd_pcm_substream_t * substream)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_emu10k1_playback_prepare(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static int snd_emu10k1_playback_prepare(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- emu10k1_t *emu = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
- emu10k1_pcm_t *epcm = runtime->private_data;
|
|
|
|
|
|
+ struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
|
|
+ struct snd_emu10k1_pcm *epcm = runtime->private_data;
|
|
unsigned int start_addr, end_addr;
|
|
unsigned int start_addr, end_addr;
|
|
|
|
|
|
start_addr = epcm->start_addr;
|
|
start_addr = epcm->start_addr;
|
|
@@ -507,11 +511,11 @@ static int snd_emu10k1_playback_prepare(snd_pcm_substream_t * substream)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_emu10k1_efx_playback_prepare(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static int snd_emu10k1_efx_playback_prepare(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- emu10k1_t *emu = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
- emu10k1_pcm_t *epcm = runtime->private_data;
|
|
|
|
|
|
+ struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
|
|
+ struct snd_emu10k1_pcm *epcm = runtime->private_data;
|
|
unsigned int start_addr, end_addr;
|
|
unsigned int start_addr, end_addr;
|
|
unsigned int channel_size;
|
|
unsigned int channel_size;
|
|
int i;
|
|
int i;
|
|
@@ -543,7 +547,7 @@ static int snd_emu10k1_efx_playback_prepare(snd_pcm_substream_t * substream)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static snd_pcm_hardware_t snd_emu10k1_efx_playback =
|
|
|
|
|
|
+static struct snd_pcm_hardware snd_emu10k1_efx_playback =
|
|
{
|
|
{
|
|
.info = (SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_NONINTERLEAVED |
|
|
.info = (SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_NONINTERLEAVED |
|
|
SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
|
SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
|
@@ -562,22 +566,22 @@ static snd_pcm_hardware_t snd_emu10k1_efx_playback =
|
|
.fifo_size = 0,
|
|
.fifo_size = 0,
|
|
};
|
|
};
|
|
|
|
|
|
-static int snd_emu10k1_capture_hw_params(snd_pcm_substream_t * substream,
|
|
|
|
- snd_pcm_hw_params_t * hw_params)
|
|
|
|
|
|
+static int snd_emu10k1_capture_hw_params(struct snd_pcm_substream *substream,
|
|
|
|
+ struct snd_pcm_hw_params *hw_params)
|
|
{
|
|
{
|
|
return snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(hw_params));
|
|
return snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(hw_params));
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_emu10k1_capture_hw_free(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static int snd_emu10k1_capture_hw_free(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
return snd_pcm_lib_free_pages(substream);
|
|
return snd_pcm_lib_free_pages(substream);
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_emu10k1_capture_prepare(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static int snd_emu10k1_capture_prepare(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- emu10k1_t *emu = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
- emu10k1_pcm_t *epcm = runtime->private_data;
|
|
|
|
|
|
+ struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
|
|
+ struct snd_emu10k1_pcm *epcm = runtime->private_data;
|
|
int idx;
|
|
int idx;
|
|
|
|
|
|
/* zeroing the buffer size will stop capture */
|
|
/* zeroing the buffer size will stop capture */
|
|
@@ -620,9 +624,9 @@ static int snd_emu10k1_capture_prepare(snd_pcm_substream_t * substream)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static void snd_emu10k1_playback_invalidate_cache(emu10k1_t *emu, int extra, emu10k1_voice_t *evoice)
|
|
|
|
|
|
+static void snd_emu10k1_playback_invalidate_cache(struct snd_emu10k1 *emu, int extra, struct snd_emu10k1_voice *evoice)
|
|
{
|
|
{
|
|
- snd_pcm_runtime_t *runtime;
|
|
|
|
|
|
+ struct snd_pcm_runtime *runtime;
|
|
unsigned int voice, stereo, i, ccis, cra = 64, cs, sample;
|
|
unsigned int voice, stereo, i, ccis, cra = 64, cs, sample;
|
|
|
|
|
|
if (evoice == NULL)
|
|
if (evoice == NULL)
|
|
@@ -655,12 +659,12 @@ static void snd_emu10k1_playback_invalidate_cache(emu10k1_t *emu, int extra, emu
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-static void snd_emu10k1_playback_prepare_voice(emu10k1_t *emu, emu10k1_voice_t *evoice,
|
|
|
|
|
|
+static void snd_emu10k1_playback_prepare_voice(struct snd_emu10k1 *emu, struct snd_emu10k1_voice *evoice,
|
|
int master, int extra,
|
|
int master, int extra,
|
|
- emu10k1_pcm_mixer_t *mix)
|
|
|
|
|
|
+ struct snd_emu10k1_pcm_mixer *mix)
|
|
{
|
|
{
|
|
- snd_pcm_substream_t *substream;
|
|
|
|
- snd_pcm_runtime_t *runtime;
|
|
|
|
|
|
+ struct snd_pcm_substream *substream;
|
|
|
|
+ struct snd_pcm_runtime *runtime;
|
|
unsigned int attn, vattn;
|
|
unsigned int attn, vattn;
|
|
unsigned int voice, tmp;
|
|
unsigned int voice, tmp;
|
|
|
|
|
|
@@ -680,10 +684,10 @@ static void snd_emu10k1_playback_prepare_voice(emu10k1_t *emu, emu10k1_voice_t *
|
|
snd_emu10k1_voice_clear_loop_stop(emu, voice);
|
|
snd_emu10k1_voice_clear_loop_stop(emu, voice);
|
|
}
|
|
}
|
|
|
|
|
|
-static void snd_emu10k1_playback_trigger_voice(emu10k1_t *emu, emu10k1_voice_t *evoice, int master, int extra)
|
|
|
|
|
|
+static void snd_emu10k1_playback_trigger_voice(struct snd_emu10k1 *emu, struct snd_emu10k1_voice *evoice, int master, int extra)
|
|
{
|
|
{
|
|
- snd_pcm_substream_t *substream;
|
|
|
|
- snd_pcm_runtime_t *runtime;
|
|
|
|
|
|
+ struct snd_pcm_substream *substream;
|
|
|
|
+ struct snd_pcm_runtime *runtime;
|
|
unsigned int voice, pitch, pitch_target;
|
|
unsigned int voice, pitch, pitch_target;
|
|
|
|
|
|
if (evoice == NULL) /* skip second voice for mono */
|
|
if (evoice == NULL) /* skip second voice for mono */
|
|
@@ -702,7 +706,7 @@ static void snd_emu10k1_playback_trigger_voice(emu10k1_t *emu, emu10k1_voice_t *
|
|
snd_emu10k1_voice_intr_enable(emu, voice);
|
|
snd_emu10k1_voice_intr_enable(emu, voice);
|
|
}
|
|
}
|
|
|
|
|
|
-static void snd_emu10k1_playback_stop_voice(emu10k1_t *emu, emu10k1_voice_t *evoice)
|
|
|
|
|
|
+static void snd_emu10k1_playback_stop_voice(struct snd_emu10k1 *emu, struct snd_emu10k1_voice *evoice)
|
|
{
|
|
{
|
|
unsigned int voice;
|
|
unsigned int voice;
|
|
|
|
|
|
@@ -718,13 +722,13 @@ static void snd_emu10k1_playback_stop_voice(emu10k1_t *emu, emu10k1_voice_t *evo
|
|
snd_emu10k1_ptr_write(emu, IP, voice, 0);
|
|
snd_emu10k1_ptr_write(emu, IP, voice, 0);
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_emu10k1_playback_trigger(snd_pcm_substream_t * substream,
|
|
|
|
|
|
+static int snd_emu10k1_playback_trigger(struct snd_pcm_substream *substream,
|
|
int cmd)
|
|
int cmd)
|
|
{
|
|
{
|
|
- emu10k1_t *emu = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
- emu10k1_pcm_t *epcm = runtime->private_data;
|
|
|
|
- emu10k1_pcm_mixer_t *mix;
|
|
|
|
|
|
+ struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
|
|
+ struct snd_emu10k1_pcm *epcm = runtime->private_data;
|
|
|
|
+ struct snd_emu10k1_pcm_mixer *mix;
|
|
int result = 0;
|
|
int result = 0;
|
|
|
|
|
|
// printk("trigger - emu10k1 = 0x%x, cmd = %i, pointer = %i\n", (int)emu, cmd, substream->ops->pointer(substream));
|
|
// printk("trigger - emu10k1 = 0x%x, cmd = %i, pointer = %i\n", (int)emu, cmd, substream->ops->pointer(substream));
|
|
@@ -759,12 +763,12 @@ static int snd_emu10k1_playback_trigger(snd_pcm_substream_t * substream,
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_emu10k1_capture_trigger(snd_pcm_substream_t * substream,
|
|
|
|
|
|
+static int snd_emu10k1_capture_trigger(struct snd_pcm_substream *substream,
|
|
int cmd)
|
|
int cmd)
|
|
{
|
|
{
|
|
- emu10k1_t *emu = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
- emu10k1_pcm_t *epcm = runtime->private_data;
|
|
|
|
|
|
+ struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
|
|
+ struct snd_emu10k1_pcm *epcm = runtime->private_data;
|
|
int result = 0;
|
|
int result = 0;
|
|
|
|
|
|
spin_lock(&emu->reg_lock);
|
|
spin_lock(&emu->reg_lock);
|
|
@@ -819,11 +823,11 @@ static int snd_emu10k1_capture_trigger(snd_pcm_substream_t * substream,
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
|
|
|
|
-static snd_pcm_uframes_t snd_emu10k1_playback_pointer(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static snd_pcm_uframes_t snd_emu10k1_playback_pointer(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- emu10k1_t *emu = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
- emu10k1_pcm_t *epcm = runtime->private_data;
|
|
|
|
|
|
+ struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
|
|
+ struct snd_emu10k1_pcm *epcm = runtime->private_data;
|
|
unsigned int ptr;
|
|
unsigned int ptr;
|
|
|
|
|
|
if (!epcm->running)
|
|
if (!epcm->running)
|
|
@@ -847,12 +851,12 @@ static snd_pcm_uframes_t snd_emu10k1_playback_pointer(snd_pcm_substream_t * subs
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
-static int snd_emu10k1_efx_playback_trigger(snd_pcm_substream_t * substream,
|
|
|
|
|
|
+static int snd_emu10k1_efx_playback_trigger(struct snd_pcm_substream *substream,
|
|
int cmd)
|
|
int cmd)
|
|
{
|
|
{
|
|
- emu10k1_t *emu = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
- emu10k1_pcm_t *epcm = runtime->private_data;
|
|
|
|
|
|
+ struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
|
|
+ struct snd_emu10k1_pcm *epcm = runtime->private_data;
|
|
int i;
|
|
int i;
|
|
int result = 0;
|
|
int result = 0;
|
|
|
|
|
|
@@ -896,11 +900,11 @@ static int snd_emu10k1_efx_playback_trigger(snd_pcm_substream_t * substream,
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
-static snd_pcm_uframes_t snd_emu10k1_capture_pointer(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static snd_pcm_uframes_t snd_emu10k1_capture_pointer(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- emu10k1_t *emu = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
- emu10k1_pcm_t *epcm = runtime->private_data;
|
|
|
|
|
|
+ struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
|
|
+ struct snd_emu10k1_pcm *epcm = runtime->private_data;
|
|
unsigned int ptr;
|
|
unsigned int ptr;
|
|
|
|
|
|
if (!epcm->running)
|
|
if (!epcm->running)
|
|
@@ -917,7 +921,7 @@ static snd_pcm_uframes_t snd_emu10k1_capture_pointer(snd_pcm_substream_t * subst
|
|
* Playback support device description
|
|
* Playback support device description
|
|
*/
|
|
*/
|
|
|
|
|
|
-static snd_pcm_hardware_t snd_emu10k1_playback =
|
|
|
|
|
|
+static struct snd_pcm_hardware snd_emu10k1_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 |
|
|
@@ -940,7 +944,7 @@ static snd_pcm_hardware_t snd_emu10k1_playback =
|
|
* Capture support device description
|
|
* Capture support device description
|
|
*/
|
|
*/
|
|
|
|
|
|
-static snd_pcm_hardware_t snd_emu10k1_capture =
|
|
|
|
|
|
+static struct snd_pcm_hardware snd_emu10k1_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 |
|
|
@@ -963,9 +967,9 @@ static snd_pcm_hardware_t snd_emu10k1_capture =
|
|
*
|
|
*
|
|
*/
|
|
*/
|
|
|
|
|
|
-static void snd_emu10k1_pcm_mixer_notify1(emu10k1_t *emu, snd_kcontrol_t *kctl, int idx, int activate)
|
|
|
|
|
|
+static void snd_emu10k1_pcm_mixer_notify1(struct snd_emu10k1 *emu, struct snd_kcontrol *kctl, int idx, int activate)
|
|
{
|
|
{
|
|
- snd_ctl_elem_id_t id;
|
|
|
|
|
|
+ struct snd_ctl_elem_id id;
|
|
|
|
|
|
if (! kctl)
|
|
if (! kctl)
|
|
return;
|
|
return;
|
|
@@ -978,29 +982,29 @@ static void snd_emu10k1_pcm_mixer_notify1(emu10k1_t *emu, snd_kcontrol_t *kctl,
|
|
snd_ctl_build_ioff(&id, kctl, idx));
|
|
snd_ctl_build_ioff(&id, kctl, idx));
|
|
}
|
|
}
|
|
|
|
|
|
-static void snd_emu10k1_pcm_mixer_notify(emu10k1_t *emu, int idx, int activate)
|
|
|
|
|
|
+static void snd_emu10k1_pcm_mixer_notify(struct snd_emu10k1 *emu, int idx, int activate)
|
|
{
|
|
{
|
|
snd_emu10k1_pcm_mixer_notify1(emu, emu->ctl_send_routing, idx, activate);
|
|
snd_emu10k1_pcm_mixer_notify1(emu, emu->ctl_send_routing, idx, activate);
|
|
snd_emu10k1_pcm_mixer_notify1(emu, emu->ctl_send_volume, idx, activate);
|
|
snd_emu10k1_pcm_mixer_notify1(emu, emu->ctl_send_volume, idx, activate);
|
|
snd_emu10k1_pcm_mixer_notify1(emu, emu->ctl_attn, idx, activate);
|
|
snd_emu10k1_pcm_mixer_notify1(emu, emu->ctl_attn, idx, activate);
|
|
}
|
|
}
|
|
|
|
|
|
-static void snd_emu10k1_pcm_efx_mixer_notify(emu10k1_t *emu, int idx, int activate)
|
|
|
|
|
|
+static void snd_emu10k1_pcm_efx_mixer_notify(struct snd_emu10k1 *emu, int idx, int activate)
|
|
{
|
|
{
|
|
snd_emu10k1_pcm_mixer_notify1(emu, emu->ctl_efx_send_routing, idx, activate);
|
|
snd_emu10k1_pcm_mixer_notify1(emu, emu->ctl_efx_send_routing, idx, activate);
|
|
snd_emu10k1_pcm_mixer_notify1(emu, emu->ctl_efx_send_volume, idx, activate);
|
|
snd_emu10k1_pcm_mixer_notify1(emu, emu->ctl_efx_send_volume, idx, activate);
|
|
snd_emu10k1_pcm_mixer_notify1(emu, emu->ctl_efx_attn, idx, activate);
|
|
snd_emu10k1_pcm_mixer_notify1(emu, emu->ctl_efx_attn, idx, activate);
|
|
}
|
|
}
|
|
|
|
|
|
-static void snd_emu10k1_pcm_free_substream(snd_pcm_runtime_t *runtime)
|
|
|
|
|
|
+static void snd_emu10k1_pcm_free_substream(struct snd_pcm_runtime *runtime)
|
|
{
|
|
{
|
|
kfree(runtime->private_data);
|
|
kfree(runtime->private_data);
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_emu10k1_efx_playback_close(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static int snd_emu10k1_efx_playback_close(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- emu10k1_t *emu = snd_pcm_substream_chip(substream);
|
|
|
|
- emu10k1_pcm_mixer_t *mix;
|
|
|
|
|
|
+ struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_emu10k1_pcm_mixer *mix;
|
|
int i;
|
|
int i;
|
|
|
|
|
|
for (i=0; i < NUM_EFX_PLAYBACK; i++) {
|
|
for (i=0; i < NUM_EFX_PLAYBACK; i++) {
|
|
@@ -1011,12 +1015,12 @@ static int snd_emu10k1_efx_playback_close(snd_pcm_substream_t * substream)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_emu10k1_efx_playback_open(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static int snd_emu10k1_efx_playback_open(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- emu10k1_t *emu = snd_pcm_substream_chip(substream);
|
|
|
|
- emu10k1_pcm_t *epcm;
|
|
|
|
- emu10k1_pcm_mixer_t *mix;
|
|
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
|
|
+ struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_emu10k1_pcm *epcm;
|
|
|
|
+ struct snd_emu10k1_pcm_mixer *mix;
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
int i;
|
|
int i;
|
|
|
|
|
|
epcm = kzalloc(sizeof(*epcm), GFP_KERNEL);
|
|
epcm = kzalloc(sizeof(*epcm), GFP_KERNEL);
|
|
@@ -1044,12 +1048,12 @@ static int snd_emu10k1_efx_playback_open(snd_pcm_substream_t * substream)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_emu10k1_playback_open(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static int snd_emu10k1_playback_open(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- emu10k1_t *emu = snd_pcm_substream_chip(substream);
|
|
|
|
- emu10k1_pcm_t *epcm;
|
|
|
|
- emu10k1_pcm_mixer_t *mix;
|
|
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
|
|
+ struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_emu10k1_pcm *epcm;
|
|
|
|
+ struct snd_emu10k1_pcm_mixer *mix;
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
int i, err;
|
|
int i, err;
|
|
|
|
|
|
epcm = kzalloc(sizeof(*epcm), GFP_KERNEL);
|
|
epcm = kzalloc(sizeof(*epcm), GFP_KERNEL);
|
|
@@ -1081,21 +1085,21 @@ static int snd_emu10k1_playback_open(snd_pcm_substream_t * substream)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_emu10k1_playback_close(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static int snd_emu10k1_playback_close(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- emu10k1_t *emu = snd_pcm_substream_chip(substream);
|
|
|
|
- emu10k1_pcm_mixer_t *mix = &emu->pcm_mixer[substream->number];
|
|
|
|
|
|
+ struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_emu10k1_pcm_mixer *mix = &emu->pcm_mixer[substream->number];
|
|
|
|
|
|
mix->epcm = NULL;
|
|
mix->epcm = NULL;
|
|
snd_emu10k1_pcm_mixer_notify(emu, substream->number, 0);
|
|
snd_emu10k1_pcm_mixer_notify(emu, substream->number, 0);
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_emu10k1_capture_open(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static int snd_emu10k1_capture_open(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- emu10k1_t *emu = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
- emu10k1_pcm_t *epcm;
|
|
|
|
|
|
+ struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
|
|
+ struct snd_emu10k1_pcm *epcm;
|
|
|
|
|
|
epcm = kzalloc(sizeof(*epcm), GFP_KERNEL);
|
|
epcm = kzalloc(sizeof(*epcm), GFP_KERNEL);
|
|
if (epcm == NULL)
|
|
if (epcm == NULL)
|
|
@@ -1118,20 +1122,20 @@ static int snd_emu10k1_capture_open(snd_pcm_substream_t * substream)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_emu10k1_capture_close(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static int snd_emu10k1_capture_close(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- emu10k1_t *emu = snd_pcm_substream_chip(substream);
|
|
|
|
|
|
+ struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream);
|
|
|
|
|
|
emu->capture_interrupt = NULL;
|
|
emu->capture_interrupt = NULL;
|
|
emu->pcm_capture_substream = NULL;
|
|
emu->pcm_capture_substream = NULL;
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_emu10k1_capture_mic_open(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static int snd_emu10k1_capture_mic_open(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- emu10k1_t *emu = snd_pcm_substream_chip(substream);
|
|
|
|
- emu10k1_pcm_t *epcm;
|
|
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
|
|
+ struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_emu10k1_pcm *epcm;
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
|
|
|
|
epcm = kzalloc(sizeof(*epcm), GFP_KERNEL);
|
|
epcm = kzalloc(sizeof(*epcm), GFP_KERNEL);
|
|
if (epcm == NULL)
|
|
if (epcm == NULL)
|
|
@@ -1156,20 +1160,20 @@ static int snd_emu10k1_capture_mic_open(snd_pcm_substream_t * substream)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_emu10k1_capture_mic_close(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static int snd_emu10k1_capture_mic_close(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- emu10k1_t *emu = snd_pcm_substream_chip(substream);
|
|
|
|
|
|
+ struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream);
|
|
|
|
|
|
emu->capture_interrupt = NULL;
|
|
emu->capture_interrupt = NULL;
|
|
emu->pcm_capture_mic_substream = NULL;
|
|
emu->pcm_capture_mic_substream = NULL;
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_emu10k1_capture_efx_open(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static int snd_emu10k1_capture_efx_open(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- emu10k1_t *emu = snd_pcm_substream_chip(substream);
|
|
|
|
- emu10k1_pcm_t *epcm;
|
|
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
|
|
+ struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_emu10k1_pcm *epcm;
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
int nefx = emu->audigy ? 64 : 32;
|
|
int nefx = emu->audigy ? 64 : 32;
|
|
int idx;
|
|
int idx;
|
|
|
|
|
|
@@ -1206,16 +1210,16 @@ static int snd_emu10k1_capture_efx_open(snd_pcm_substream_t * substream)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_emu10k1_capture_efx_close(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static int snd_emu10k1_capture_efx_close(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- emu10k1_t *emu = snd_pcm_substream_chip(substream);
|
|
|
|
|
|
+ struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream);
|
|
|
|
|
|
emu->capture_interrupt = NULL;
|
|
emu->capture_interrupt = NULL;
|
|
emu->pcm_capture_efx_substream = NULL;
|
|
emu->pcm_capture_efx_substream = NULL;
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static snd_pcm_ops_t snd_emu10k1_playback_ops = {
|
|
|
|
|
|
+static struct snd_pcm_ops snd_emu10k1_playback_ops = {
|
|
.open = snd_emu10k1_playback_open,
|
|
.open = snd_emu10k1_playback_open,
|
|
.close = snd_emu10k1_playback_close,
|
|
.close = snd_emu10k1_playback_close,
|
|
.ioctl = snd_pcm_lib_ioctl,
|
|
.ioctl = snd_pcm_lib_ioctl,
|
|
@@ -1227,7 +1231,7 @@ static snd_pcm_ops_t snd_emu10k1_playback_ops = {
|
|
.page = snd_pcm_sgbuf_ops_page,
|
|
.page = snd_pcm_sgbuf_ops_page,
|
|
};
|
|
};
|
|
|
|
|
|
-static snd_pcm_ops_t snd_emu10k1_capture_ops = {
|
|
|
|
|
|
+static struct snd_pcm_ops snd_emu10k1_capture_ops = {
|
|
.open = snd_emu10k1_capture_open,
|
|
.open = snd_emu10k1_capture_open,
|
|
.close = snd_emu10k1_capture_close,
|
|
.close = snd_emu10k1_capture_close,
|
|
.ioctl = snd_pcm_lib_ioctl,
|
|
.ioctl = snd_pcm_lib_ioctl,
|
|
@@ -1239,7 +1243,7 @@ static snd_pcm_ops_t snd_emu10k1_capture_ops = {
|
|
};
|
|
};
|
|
|
|
|
|
/* EFX playback */
|
|
/* EFX playback */
|
|
-static snd_pcm_ops_t snd_emu10k1_efx_playback_ops = {
|
|
|
|
|
|
+static struct snd_pcm_ops snd_emu10k1_efx_playback_ops = {
|
|
.open = snd_emu10k1_efx_playback_open,
|
|
.open = snd_emu10k1_efx_playback_open,
|
|
.close = snd_emu10k1_efx_playback_close,
|
|
.close = snd_emu10k1_efx_playback_close,
|
|
.ioctl = snd_pcm_lib_ioctl,
|
|
.ioctl = snd_pcm_lib_ioctl,
|
|
@@ -1251,10 +1255,10 @@ static snd_pcm_ops_t snd_emu10k1_efx_playback_ops = {
|
|
.page = snd_pcm_sgbuf_ops_page,
|
|
.page = snd_pcm_sgbuf_ops_page,
|
|
};
|
|
};
|
|
|
|
|
|
-int __devinit snd_emu10k1_pcm(emu10k1_t * emu, int device, snd_pcm_t ** rpcm)
|
|
|
|
|
|
+int __devinit snd_emu10k1_pcm(struct snd_emu10k1 * emu, int device, struct snd_pcm ** rpcm)
|
|
{
|
|
{
|
|
- snd_pcm_t *pcm;
|
|
|
|
- snd_pcm_substream_t *substream;
|
|
|
|
|
|
+ struct snd_pcm *pcm;
|
|
|
|
+ struct snd_pcm_substream *substream;
|
|
int err;
|
|
int err;
|
|
|
|
|
|
if (rpcm)
|
|
if (rpcm)
|
|
@@ -1286,10 +1290,10 @@ int __devinit snd_emu10k1_pcm(emu10k1_t * emu, int device, snd_pcm_t ** rpcm)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-int __devinit snd_emu10k1_pcm_multi(emu10k1_t * emu, int device, snd_pcm_t ** rpcm)
|
|
|
|
|
|
+int __devinit snd_emu10k1_pcm_multi(struct snd_emu10k1 * emu, int device, struct snd_pcm ** rpcm)
|
|
{
|
|
{
|
|
- snd_pcm_t *pcm;
|
|
|
|
- snd_pcm_substream_t *substream;
|
|
|
|
|
|
+ struct snd_pcm *pcm;
|
|
|
|
+ struct snd_pcm_substream *substream;
|
|
int err;
|
|
int err;
|
|
|
|
|
|
if (rpcm)
|
|
if (rpcm)
|
|
@@ -1318,7 +1322,7 @@ int __devinit snd_emu10k1_pcm_multi(emu10k1_t * emu, int device, snd_pcm_t ** rp
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
-static snd_pcm_ops_t snd_emu10k1_capture_mic_ops = {
|
|
|
|
|
|
+static struct snd_pcm_ops snd_emu10k1_capture_mic_ops = {
|
|
.open = snd_emu10k1_capture_mic_open,
|
|
.open = snd_emu10k1_capture_mic_open,
|
|
.close = snd_emu10k1_capture_mic_close,
|
|
.close = snd_emu10k1_capture_mic_close,
|
|
.ioctl = snd_pcm_lib_ioctl,
|
|
.ioctl = snd_pcm_lib_ioctl,
|
|
@@ -1329,9 +1333,9 @@ static snd_pcm_ops_t snd_emu10k1_capture_mic_ops = {
|
|
.pointer = snd_emu10k1_capture_pointer,
|
|
.pointer = snd_emu10k1_capture_pointer,
|
|
};
|
|
};
|
|
|
|
|
|
-int __devinit snd_emu10k1_pcm_mic(emu10k1_t * emu, int device, snd_pcm_t ** rpcm)
|
|
|
|
|
|
+int __devinit snd_emu10k1_pcm_mic(struct snd_emu10k1 * emu, int device, struct snd_pcm ** rpcm)
|
|
{
|
|
{
|
|
- snd_pcm_t *pcm;
|
|
|
|
|
|
+ struct snd_pcm *pcm;
|
|
int err;
|
|
int err;
|
|
|
|
|
|
if (rpcm)
|
|
if (rpcm)
|
|
@@ -1355,9 +1359,9 @@ int __devinit snd_emu10k1_pcm_mic(emu10k1_t * emu, int device, snd_pcm_t ** rpcm
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_emu10k1_pcm_efx_voices_mask_info(snd_kcontrol_t *kcontrol, snd_ctl_elem_info_t * uinfo)
|
|
|
|
|
|
+static int snd_emu10k1_pcm_efx_voices_mask_info(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_info *uinfo)
|
|
{
|
|
{
|
|
- emu10k1_t *emu = snd_kcontrol_chip(kcontrol);
|
|
|
|
|
|
+ struct snd_emu10k1 *emu = snd_kcontrol_chip(kcontrol);
|
|
int nefx = emu->audigy ? 64 : 32;
|
|
int nefx = emu->audigy ? 64 : 32;
|
|
uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN;
|
|
uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN;
|
|
uinfo->count = nefx;
|
|
uinfo->count = nefx;
|
|
@@ -1366,9 +1370,9 @@ static int snd_emu10k1_pcm_efx_voices_mask_info(snd_kcontrol_t *kcontrol, snd_ct
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_emu10k1_pcm_efx_voices_mask_get(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
|
|
|
|
|
|
+static int snd_emu10k1_pcm_efx_voices_mask_get(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol)
|
|
{
|
|
{
|
|
- emu10k1_t *emu = snd_kcontrol_chip(kcontrol);
|
|
|
|
|
|
+ struct snd_emu10k1 *emu = snd_kcontrol_chip(kcontrol);
|
|
int nefx = emu->audigy ? 64 : 32;
|
|
int nefx = emu->audigy ? 64 : 32;
|
|
int idx;
|
|
int idx;
|
|
|
|
|
|
@@ -1379,9 +1383,9 @@ static int snd_emu10k1_pcm_efx_voices_mask_get(snd_kcontrol_t * kcontrol, snd_ct
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_emu10k1_pcm_efx_voices_mask_put(snd_kcontrol_t * kcontrol, snd_ctl_elem_value_t * ucontrol)
|
|
|
|
|
|
+static int snd_emu10k1_pcm_efx_voices_mask_put(struct snd_kcontrol *kcontrol, struct snd_ctl_elem_value *ucontrol)
|
|
{
|
|
{
|
|
- emu10k1_t *emu = snd_kcontrol_chip(kcontrol);
|
|
|
|
|
|
+ struct snd_emu10k1 *emu = snd_kcontrol_chip(kcontrol);
|
|
unsigned int nval[2], bits;
|
|
unsigned int nval[2], bits;
|
|
int nefx = emu->audigy ? 64 : 32;
|
|
int nefx = emu->audigy ? 64 : 32;
|
|
int nefxb = emu->audigy ? 7 : 6;
|
|
int nefxb = emu->audigy ? 7 : 6;
|
|
@@ -1410,7 +1414,7 @@ static int snd_emu10k1_pcm_efx_voices_mask_put(snd_kcontrol_t * kcontrol, snd_ct
|
|
return change;
|
|
return change;
|
|
}
|
|
}
|
|
|
|
|
|
-static snd_kcontrol_new_t snd_emu10k1_pcm_efx_voices_mask = {
|
|
|
|
|
|
+static struct snd_kcontrol_new snd_emu10k1_pcm_efx_voices_mask = {
|
|
.iface = SNDRV_CTL_ELEM_IFACE_PCM,
|
|
.iface = SNDRV_CTL_ELEM_IFACE_PCM,
|
|
.name = "Captured FX8010 Outputs",
|
|
.name = "Captured FX8010 Outputs",
|
|
.info = snd_emu10k1_pcm_efx_voices_mask_info,
|
|
.info = snd_emu10k1_pcm_efx_voices_mask_info,
|
|
@@ -1418,7 +1422,7 @@ static snd_kcontrol_new_t snd_emu10k1_pcm_efx_voices_mask = {
|
|
.put = snd_emu10k1_pcm_efx_voices_mask_put
|
|
.put = snd_emu10k1_pcm_efx_voices_mask_put
|
|
};
|
|
};
|
|
|
|
|
|
-static snd_pcm_ops_t snd_emu10k1_capture_efx_ops = {
|
|
|
|
|
|
+static struct snd_pcm_ops snd_emu10k1_capture_efx_ops = {
|
|
.open = snd_emu10k1_capture_efx_open,
|
|
.open = snd_emu10k1_capture_efx_open,
|
|
.close = snd_emu10k1_capture_efx_close,
|
|
.close = snd_emu10k1_capture_efx_close,
|
|
.ioctl = snd_pcm_lib_ioctl,
|
|
.ioctl = snd_pcm_lib_ioctl,
|
|
@@ -1435,9 +1439,9 @@ static snd_pcm_ops_t snd_emu10k1_capture_efx_ops = {
|
|
#define INITIAL_TRAM_SHIFT 14
|
|
#define INITIAL_TRAM_SHIFT 14
|
|
#define INITIAL_TRAM_POS(size) ((((size) / 2) - INITIAL_TRAM_SHIFT) - 1)
|
|
#define INITIAL_TRAM_POS(size) ((((size) / 2) - INITIAL_TRAM_SHIFT) - 1)
|
|
|
|
|
|
-static void snd_emu10k1_fx8010_playback_irq(emu10k1_t *emu, void *private_data)
|
|
|
|
|
|
+static void snd_emu10k1_fx8010_playback_irq(struct snd_emu10k1 *emu, void *private_data)
|
|
{
|
|
{
|
|
- snd_pcm_substream_t *substream = private_data;
|
|
|
|
|
|
+ struct snd_pcm_substream *substream = private_data;
|
|
snd_pcm_period_elapsed(substream);
|
|
snd_pcm_period_elapsed(substream);
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1461,11 +1465,11 @@ static void snd_emu10k1_fx8010_playback_tram_poke1(unsigned short *dst_left,
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
-static void fx8010_pb_trans_copy(snd_pcm_substream_t *substream,
|
|
|
|
- snd_pcm_indirect_t *rec, size_t bytes)
|
|
|
|
|
|
+static void fx8010_pb_trans_copy(struct snd_pcm_substream *substream,
|
|
|
|
+ struct snd_pcm_indirect *rec, size_t bytes)
|
|
{
|
|
{
|
|
- emu10k1_t *emu = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_emu10k1_fx8010_pcm_t *pcm = &emu->fx8010.pcm[substream->number];
|
|
|
|
|
|
+ struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_emu10k1_fx8010_pcm *pcm = &emu->fx8010.pcm[substream->number];
|
|
unsigned int tram_size = pcm->buffer_size;
|
|
unsigned int tram_size = pcm->buffer_size;
|
|
unsigned short *src = (unsigned short *)(substream->runtime->dma_area + rec->sw_data);
|
|
unsigned short *src = (unsigned short *)(substream->runtime->dma_area + rec->sw_data);
|
|
unsigned int frames = bytes >> 2, count;
|
|
unsigned int frames = bytes >> 2, count;
|
|
@@ -1490,25 +1494,25 @@ static void fx8010_pb_trans_copy(snd_pcm_substream_t *substream,
|
|
pcm->tram_shift = tram_shift;
|
|
pcm->tram_shift = tram_shift;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_emu10k1_fx8010_playback_transfer(snd_pcm_substream_t *substream)
|
|
|
|
|
|
+static int snd_emu10k1_fx8010_playback_transfer(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- emu10k1_t *emu = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_emu10k1_fx8010_pcm_t *pcm = &emu->fx8010.pcm[substream->number];
|
|
|
|
|
|
+ struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_emu10k1_fx8010_pcm *pcm = &emu->fx8010.pcm[substream->number];
|
|
|
|
|
|
snd_pcm_indirect_playback_transfer(substream, &pcm->pcm_rec, fx8010_pb_trans_copy);
|
|
snd_pcm_indirect_playback_transfer(substream, &pcm->pcm_rec, fx8010_pb_trans_copy);
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_emu10k1_fx8010_playback_hw_params(snd_pcm_substream_t * substream,
|
|
|
|
- snd_pcm_hw_params_t * hw_params)
|
|
|
|
|
|
+static int snd_emu10k1_fx8010_playback_hw_params(struct snd_pcm_substream *substream,
|
|
|
|
+ struct snd_pcm_hw_params *hw_params)
|
|
{
|
|
{
|
|
return snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(hw_params));
|
|
return snd_pcm_lib_malloc_pages(substream, params_buffer_bytes(hw_params));
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_emu10k1_fx8010_playback_hw_free(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static int snd_emu10k1_fx8010_playback_hw_free(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- emu10k1_t *emu = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_emu10k1_fx8010_pcm_t *pcm = &emu->fx8010.pcm[substream->number];
|
|
|
|
|
|
+ struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_emu10k1_fx8010_pcm *pcm = &emu->fx8010.pcm[substream->number];
|
|
unsigned int i;
|
|
unsigned int i;
|
|
|
|
|
|
for (i = 0; i < pcm->channels; i++)
|
|
for (i = 0; i < pcm->channels; i++)
|
|
@@ -1517,11 +1521,11 @@ static int snd_emu10k1_fx8010_playback_hw_free(snd_pcm_substream_t * substream)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_emu10k1_fx8010_playback_prepare(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static int snd_emu10k1_fx8010_playback_prepare(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- emu10k1_t *emu = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
- snd_emu10k1_fx8010_pcm_t *pcm = &emu->fx8010.pcm[substream->number];
|
|
|
|
|
|
+ struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
|
|
+ struct snd_emu10k1_fx8010_pcm *pcm = &emu->fx8010.pcm[substream->number];
|
|
unsigned int i;
|
|
unsigned int i;
|
|
|
|
|
|
// printk("prepare: etram_pages = 0x%p, dma_area = 0x%x, buffer_size = 0x%x (0x%x)\n", emu->fx8010.etram_pages, runtime->dma_area, runtime->buffer_size, runtime->buffer_size << 2);
|
|
// printk("prepare: etram_pages = 0x%p, dma_area = 0x%x, buffer_size = 0x%x (0x%x)\n", emu->fx8010.etram_pages, runtime->dma_area, runtime->buffer_size, runtime->buffer_size << 2);
|
|
@@ -1541,10 +1545,10 @@ static int snd_emu10k1_fx8010_playback_prepare(snd_pcm_substream_t * substream)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_emu10k1_fx8010_playback_trigger(snd_pcm_substream_t * substream, int cmd)
|
|
|
|
|
|
+static int snd_emu10k1_fx8010_playback_trigger(struct snd_pcm_substream *substream, int cmd)
|
|
{
|
|
{
|
|
- emu10k1_t *emu = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_emu10k1_fx8010_pcm_t *pcm = &emu->fx8010.pcm[substream->number];
|
|
|
|
|
|
+ struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_emu10k1_fx8010_pcm *pcm = &emu->fx8010.pcm[substream->number];
|
|
int result = 0;
|
|
int result = 0;
|
|
|
|
|
|
spin_lock(&emu->reg_lock);
|
|
spin_lock(&emu->reg_lock);
|
|
@@ -1586,10 +1590,10 @@ static int snd_emu10k1_fx8010_playback_trigger(snd_pcm_substream_t * substream,
|
|
return result;
|
|
return result;
|
|
}
|
|
}
|
|
|
|
|
|
-static snd_pcm_uframes_t snd_emu10k1_fx8010_playback_pointer(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static snd_pcm_uframes_t snd_emu10k1_fx8010_playback_pointer(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- emu10k1_t *emu = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_emu10k1_fx8010_pcm_t *pcm = &emu->fx8010.pcm[substream->number];
|
|
|
|
|
|
+ struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_emu10k1_fx8010_pcm *pcm = &emu->fx8010.pcm[substream->number];
|
|
size_t ptr; /* byte pointer */
|
|
size_t ptr; /* byte pointer */
|
|
|
|
|
|
if (!snd_emu10k1_ptr_read(emu, emu->gpr_base + pcm->gpr_trigger, 0))
|
|
if (!snd_emu10k1_ptr_read(emu, emu->gpr_base + pcm->gpr_trigger, 0))
|
|
@@ -1598,7 +1602,7 @@ static snd_pcm_uframes_t snd_emu10k1_fx8010_playback_pointer(snd_pcm_substream_t
|
|
return snd_pcm_indirect_playback_pointer(substream, &pcm->pcm_rec, ptr);
|
|
return snd_pcm_indirect_playback_pointer(substream, &pcm->pcm_rec, ptr);
|
|
}
|
|
}
|
|
|
|
|
|
-static snd_pcm_hardware_t snd_emu10k1_fx8010_playback =
|
|
|
|
|
|
+static struct snd_pcm_hardware snd_emu10k1_fx8010_playback =
|
|
{
|
|
{
|
|
.info = (SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_INTERLEAVED |
|
|
.info = (SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_INTERLEAVED |
|
|
/* SNDRV_PCM_INFO_MMAP_VALID | */ SNDRV_PCM_INFO_PAUSE),
|
|
/* SNDRV_PCM_INFO_MMAP_VALID | */ SNDRV_PCM_INFO_PAUSE),
|
|
@@ -1616,11 +1620,11 @@ static snd_pcm_hardware_t snd_emu10k1_fx8010_playback =
|
|
.fifo_size = 0,
|
|
.fifo_size = 0,
|
|
};
|
|
};
|
|
|
|
|
|
-static int snd_emu10k1_fx8010_playback_open(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static int snd_emu10k1_fx8010_playback_open(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- emu10k1_t *emu = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_pcm_runtime_t *runtime = substream->runtime;
|
|
|
|
- snd_emu10k1_fx8010_pcm_t *pcm = &emu->fx8010.pcm[substream->number];
|
|
|
|
|
|
+ struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_pcm_runtime *runtime = substream->runtime;
|
|
|
|
+ struct snd_emu10k1_fx8010_pcm *pcm = &emu->fx8010.pcm[substream->number];
|
|
|
|
|
|
runtime->hw = snd_emu10k1_fx8010_playback;
|
|
runtime->hw = snd_emu10k1_fx8010_playback;
|
|
runtime->hw.channels_min = runtime->hw.channels_max = pcm->channels;
|
|
runtime->hw.channels_min = runtime->hw.channels_max = pcm->channels;
|
|
@@ -1635,10 +1639,10 @@ static int snd_emu10k1_fx8010_playback_open(snd_pcm_substream_t * substream)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static int snd_emu10k1_fx8010_playback_close(snd_pcm_substream_t * substream)
|
|
|
|
|
|
+static int snd_emu10k1_fx8010_playback_close(struct snd_pcm_substream *substream)
|
|
{
|
|
{
|
|
- emu10k1_t *emu = snd_pcm_substream_chip(substream);
|
|
|
|
- snd_emu10k1_fx8010_pcm_t *pcm = &emu->fx8010.pcm[substream->number];
|
|
|
|
|
|
+ struct snd_emu10k1 *emu = snd_pcm_substream_chip(substream);
|
|
|
|
+ struct snd_emu10k1_fx8010_pcm *pcm = &emu->fx8010.pcm[substream->number];
|
|
|
|
|
|
spin_lock_irq(&emu->reg_lock);
|
|
spin_lock_irq(&emu->reg_lock);
|
|
pcm->opened = 0;
|
|
pcm->opened = 0;
|
|
@@ -1646,7 +1650,7 @@ static int snd_emu10k1_fx8010_playback_close(snd_pcm_substream_t * substream)
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
-static snd_pcm_ops_t snd_emu10k1_fx8010_playback_ops = {
|
|
|
|
|
|
+static struct snd_pcm_ops snd_emu10k1_fx8010_playback_ops = {
|
|
.open = snd_emu10k1_fx8010_playback_open,
|
|
.open = snd_emu10k1_fx8010_playback_open,
|
|
.close = snd_emu10k1_fx8010_playback_close,
|
|
.close = snd_emu10k1_fx8010_playback_close,
|
|
.ioctl = snd_pcm_lib_ioctl,
|
|
.ioctl = snd_pcm_lib_ioctl,
|
|
@@ -1658,10 +1662,10 @@ static snd_pcm_ops_t snd_emu10k1_fx8010_playback_ops = {
|
|
.ack = snd_emu10k1_fx8010_playback_transfer,
|
|
.ack = snd_emu10k1_fx8010_playback_transfer,
|
|
};
|
|
};
|
|
|
|
|
|
-int __devinit snd_emu10k1_pcm_efx(emu10k1_t * emu, int device, snd_pcm_t ** rpcm)
|
|
|
|
|
|
+int __devinit snd_emu10k1_pcm_efx(struct snd_emu10k1 * emu, int device, struct snd_pcm ** rpcm)
|
|
{
|
|
{
|
|
- snd_pcm_t *pcm;
|
|
|
|
- snd_kcontrol_t *kctl;
|
|
|
|
|
|
+ struct snd_pcm *pcm;
|
|
|
|
+ struct snd_kcontrol *kctl;
|
|
int err;
|
|
int err;
|
|
|
|
|
|
if (rpcm)
|
|
if (rpcm)
|