ALSA: oxygen: set fifo_size
Allow the driver to report the hardware FIFO size. Signed-off-by: Clemens Ladisch <clemens@ladisch.de> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
5ae0095d00
commit
4e9c58cb12
|
@ -29,6 +29,9 @@
|
||||||
/* the multichannel DMA channel has a 24-bit counter */
|
/* the multichannel DMA channel has a 24-bit counter */
|
||||||
#define BUFFER_BYTES_MAX_MULTICH ((1 << 24) * 4)
|
#define BUFFER_BYTES_MAX_MULTICH ((1 << 24) * 4)
|
||||||
|
|
||||||
|
#define FIFO_BYTES 256
|
||||||
|
#define FIFO_BYTES_MULTICH 1024
|
||||||
|
|
||||||
#define PERIOD_BYTES_MIN 64
|
#define PERIOD_BYTES_MIN 64
|
||||||
|
|
||||||
#define DEFAULT_BUFFER_BYTES (BUFFER_BYTES_MAX / 2)
|
#define DEFAULT_BUFFER_BYTES (BUFFER_BYTES_MAX / 2)
|
||||||
|
@ -60,6 +63,7 @@ static const struct snd_pcm_hardware oxygen_stereo_hardware = {
|
||||||
.period_bytes_max = BUFFER_BYTES_MAX,
|
.period_bytes_max = BUFFER_BYTES_MAX,
|
||||||
.periods_min = 1,
|
.periods_min = 1,
|
||||||
.periods_max = BUFFER_BYTES_MAX / PERIOD_BYTES_MIN,
|
.periods_max = BUFFER_BYTES_MAX / PERIOD_BYTES_MIN,
|
||||||
|
.fifo_size = FIFO_BYTES,
|
||||||
};
|
};
|
||||||
static const struct snd_pcm_hardware oxygen_multichannel_hardware = {
|
static const struct snd_pcm_hardware oxygen_multichannel_hardware = {
|
||||||
.info = SNDRV_PCM_INFO_MMAP |
|
.info = SNDRV_PCM_INFO_MMAP |
|
||||||
|
@ -87,6 +91,7 @@ static const struct snd_pcm_hardware oxygen_multichannel_hardware = {
|
||||||
.period_bytes_max = BUFFER_BYTES_MAX_MULTICH,
|
.period_bytes_max = BUFFER_BYTES_MAX_MULTICH,
|
||||||
.periods_min = 1,
|
.periods_min = 1,
|
||||||
.periods_max = BUFFER_BYTES_MAX_MULTICH / PERIOD_BYTES_MIN,
|
.periods_max = BUFFER_BYTES_MAX_MULTICH / PERIOD_BYTES_MIN,
|
||||||
|
.fifo_size = FIFO_BYTES_MULTICH,
|
||||||
};
|
};
|
||||||
static const struct snd_pcm_hardware oxygen_ac97_hardware = {
|
static const struct snd_pcm_hardware oxygen_ac97_hardware = {
|
||||||
.info = SNDRV_PCM_INFO_MMAP |
|
.info = SNDRV_PCM_INFO_MMAP |
|
||||||
|
@ -106,6 +111,7 @@ static const struct snd_pcm_hardware oxygen_ac97_hardware = {
|
||||||
.period_bytes_max = BUFFER_BYTES_MAX,
|
.period_bytes_max = BUFFER_BYTES_MAX,
|
||||||
.periods_min = 1,
|
.periods_min = 1,
|
||||||
.periods_max = BUFFER_BYTES_MAX / PERIOD_BYTES_MIN,
|
.periods_max = BUFFER_BYTES_MAX / PERIOD_BYTES_MIN,
|
||||||
|
.fifo_size = FIFO_BYTES,
|
||||||
};
|
};
|
||||||
|
|
||||||
static const struct snd_pcm_hardware *const oxygen_hardware[PCM_COUNT] = {
|
static const struct snd_pcm_hardware *const oxygen_hardware[PCM_COUNT] = {
|
||||||
|
@ -141,6 +147,10 @@ static int oxygen_open(struct snd_pcm_substream *substream,
|
||||||
runtime->hw.rates &= ~(SNDRV_PCM_RATE_32000 |
|
runtime->hw.rates &= ~(SNDRV_PCM_RATE_32000 |
|
||||||
SNDRV_PCM_RATE_64000);
|
SNDRV_PCM_RATE_64000);
|
||||||
runtime->hw.rate_min = 44100;
|
runtime->hw.rate_min = 44100;
|
||||||
|
/* fall through */
|
||||||
|
case PCM_A:
|
||||||
|
case PCM_B:
|
||||||
|
runtime->hw.fifo_size = 0;
|
||||||
break;
|
break;
|
||||||
case PCM_MULTICH:
|
case PCM_MULTICH:
|
||||||
runtime->hw.channels_max = chip->model.dac_channels_pcm;
|
runtime->hw.channels_max = chip->model.dac_channels_pcm;
|
||||||
|
|
Loading…
Reference in New Issue