diff options
author | Stas Sergeev <stsp@aknet.ru> | 2008-03-22 10:12:37 +0100 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2008-04-24 12:00:30 +0200 |
commit | c81d80cbf6dfe4c061719cb146659677c3c36c8e (patch) | |
tree | 67c5cc2b0407c6217f61787879e9366d05d35894 /sound/drivers | |
parent | [ALSA] ymfpci - Fix race at removal (diff) | |
download | linux-c81d80cbf6dfe4c061719cb146659677c3c36c8e.tar.xz linux-c81d80cbf6dfe4c061719cb146659677c3c36c8e.zip |
[ALSA] pcsp: remove downsampling
pcsp: remove S16->U8 downsampling as dmix now supports U8 natively.
Signed-off-by: Stas Sergeev <stsp@aknet.ru>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/drivers')
-rw-r--r-- | sound/drivers/pcsp/pcsp_lib.c | 19 |
1 files changed, 5 insertions, 14 deletions
diff --git a/sound/drivers/pcsp/pcsp_lib.c b/sound/drivers/pcsp/pcsp_lib.c index 54253e9b4b02..ac6238e93513 100644 --- a/sound/drivers/pcsp/pcsp_lib.c +++ b/sound/drivers/pcsp/pcsp_lib.c @@ -18,8 +18,6 @@ module_param(nforce_wa, bool, 0444); MODULE_PARM_DESC(nforce_wa, "Apply NForce chipset workaround " "(expect bad sound)"); -#define DMIX_WANTS_S16 1 - static void pcsp_start_timer(unsigned long dummy) { hrtimer_start(&pcsp_chip.timer, ktime_set(0, 0), HRTIMER_MODE_REL); @@ -49,7 +47,7 @@ enum hrtimer_restart pcsp_do_timer(struct hrtimer *handle) { unsigned long flags; unsigned char timer_cnt, val; - int fmt_size, periods_elapsed; + int periods_elapsed; u64 ns; size_t period_bytes, buffer_bytes; struct snd_pcm_substream *substream; @@ -94,11 +92,8 @@ enum hrtimer_restart pcsp_do_timer(struct hrtimer *handle) goto exit_nr_unlock2; runtime = substream->runtime; - fmt_size = snd_pcm_format_physical_width(runtime->format) >> 3; - /* assume it is mono! */ - val = runtime->dma_area[chip->playback_ptr + fmt_size - 1]; - if (snd_pcm_format_signed(runtime->format)) - val ^= 0x80; + /* assume it is u8 mono */ + val = runtime->dma_area[chip->playback_ptr]; timer_cnt = val * CUR_DIV() / 256; if (timer_cnt && chip->enable) { @@ -116,7 +111,7 @@ enum hrtimer_restart pcsp_do_timer(struct hrtimer *handle) period_bytes = snd_pcm_lib_period_bytes(substream); buffer_bytes = snd_pcm_lib_buffer_bytes(substream); - chip->playback_ptr += PCSP_INDEX_INC() * fmt_size; + chip->playback_ptr += PCSP_INDEX_INC(); periods_elapsed = chip->playback_ptr - chip->period_ptr; if (periods_elapsed < 0) { printk(KERN_WARNING "PCSP: playback_ptr inconsistent " @@ -275,11 +270,7 @@ static struct snd_pcm_hardware snd_pcsp_playback = { .info = (SNDRV_PCM_INFO_INTERLEAVED | SNDRV_PCM_INFO_HALF_DUPLEX | SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_MMAP_VALID), - .formats = (SNDRV_PCM_FMTBIT_U8 -#if DMIX_WANTS_S16 - | SNDRV_PCM_FMTBIT_S16_LE -#endif - ), + .formats = SNDRV_PCM_FMTBIT_U8, .rates = SNDRV_PCM_RATE_KNOT, .rate_min = PCSP_DEFAULT_SRATE, .rate_max = PCSP_DEFAULT_SRATE, |