forked from Minki/linux
Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6
* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6: ASoC: Remove BROKEN from mpc5200 kconfig ASoC: TWL4030: Fix gain control for earpiece amplifier ALSA: pcm core - Avoid jiffies check for devices with BATCH flag ALSA: Add missing SNDRV_PCM_INFO_BATCH flag to some drivers ALSA: indigo-express: add missing 64KHz flags ASoC: Set the MPC5200 i2s driver to BROKEN status. ASoC: Fix logic in WM8350 master clocking check
This commit is contained in:
commit
71019c350a
@ -249,6 +249,12 @@ static int snd_pcm_update_hw_ptr_interrupt(struct snd_pcm_substream *substream)
|
||||
new_hw_ptr = hw_base + pos;
|
||||
}
|
||||
}
|
||||
/* Skip the jiffies check for hardwares with BATCH flag.
|
||||
* Such hardware usually just increases the position at each IRQ,
|
||||
* thus it can't give any strange position.
|
||||
*/
|
||||
if (runtime->hw.info & SNDRV_PCM_INFO_BATCH)
|
||||
goto no_jiffies_check;
|
||||
hdelta = new_hw_ptr - old_hw_ptr;
|
||||
jdelta = jiffies - runtime->hw_ptr_jiffies;
|
||||
if (((hdelta * HZ) / runtime->rate) > jdelta + HZ/100) {
|
||||
@ -272,6 +278,7 @@ static int snd_pcm_update_hw_ptr_interrupt(struct snd_pcm_substream *substream)
|
||||
hw_base -= hw_base % runtime->buffer_size;
|
||||
delta = 0;
|
||||
}
|
||||
no_jiffies_check:
|
||||
if (delta > runtime->period_size + runtime->period_size / 2) {
|
||||
hw_ptr_error(substream,
|
||||
"Lost interrupts? "
|
||||
|
@ -438,7 +438,8 @@ static void snd_msnd_capture_reset_queue(struct snd_msnd *chip,
|
||||
static struct snd_pcm_hardware snd_msnd_playback = {
|
||||
.info = SNDRV_PCM_INFO_MMAP |
|
||||
SNDRV_PCM_INFO_INTERLEAVED |
|
||||
SNDRV_PCM_INFO_MMAP_VALID,
|
||||
SNDRV_PCM_INFO_MMAP_VALID |
|
||||
SNDRV_PCM_INFO_BATCH,
|
||||
.formats = SNDRV_PCM_FMTBIT_U8 | SNDRV_PCM_FMTBIT_S16_LE,
|
||||
.rates = SNDRV_PCM_RATE_8000_48000,
|
||||
.rate_min = 8000,
|
||||
@ -456,7 +457,8 @@ static struct snd_pcm_hardware snd_msnd_playback = {
|
||||
static struct snd_pcm_hardware snd_msnd_capture = {
|
||||
.info = SNDRV_PCM_INFO_MMAP |
|
||||
SNDRV_PCM_INFO_INTERLEAVED |
|
||||
SNDRV_PCM_INFO_MMAP_VALID,
|
||||
SNDRV_PCM_INFO_MMAP_VALID |
|
||||
SNDRV_PCM_INFO_BATCH,
|
||||
.formats = SNDRV_PCM_FMTBIT_U8 | SNDRV_PCM_FMTBIT_S16_LE,
|
||||
.rates = SNDRV_PCM_RATE_8000_48000,
|
||||
.rate_min = 8000,
|
||||
|
@ -349,7 +349,8 @@ static struct snd_pcm_hardware snd_bt87x_digital_hw = {
|
||||
.info = SNDRV_PCM_INFO_MMAP |
|
||||
SNDRV_PCM_INFO_INTERLEAVED |
|
||||
SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
||||
SNDRV_PCM_INFO_MMAP_VALID,
|
||||
SNDRV_PCM_INFO_MMAP_VALID |
|
||||
SNDRV_PCM_INFO_BATCH,
|
||||
.formats = SNDRV_PCM_FMTBIT_S16_LE,
|
||||
.rates = 0, /* set at runtime */
|
||||
.channels_min = 2,
|
||||
@ -365,7 +366,8 @@ static struct snd_pcm_hardware snd_bt87x_analog_hw = {
|
||||
.info = SNDRV_PCM_INFO_MMAP |
|
||||
SNDRV_PCM_INFO_INTERLEAVED |
|
||||
SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
||||
SNDRV_PCM_INFO_MMAP_VALID,
|
||||
SNDRV_PCM_INFO_MMAP_VALID |
|
||||
SNDRV_PCM_INFO_BATCH,
|
||||
.formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S8,
|
||||
.rates = SNDRV_PCM_RATE_KNOT,
|
||||
.rate_min = ANALOG_CLOCK / CLOCK_DIV_MAX,
|
||||
|
@ -88,6 +88,7 @@ static struct snd_pcm_hardware pcm_hardware_skel = {
|
||||
.rates = SNDRV_PCM_RATE_32000 |
|
||||
SNDRV_PCM_RATE_44100 |
|
||||
SNDRV_PCM_RATE_48000 |
|
||||
SNDRV_PCM_RATE_64000 |
|
||||
SNDRV_PCM_RATE_88200 |
|
||||
SNDRV_PCM_RATE_96000,
|
||||
.rate_min = 32000,
|
||||
|
@ -89,6 +89,7 @@ static struct snd_pcm_hardware pcm_hardware_skel = {
|
||||
.rates = SNDRV_PCM_RATE_32000 |
|
||||
SNDRV_PCM_RATE_44100 |
|
||||
SNDRV_PCM_RATE_48000 |
|
||||
SNDRV_PCM_RATE_64000 |
|
||||
SNDRV_PCM_RATE_88200 |
|
||||
SNDRV_PCM_RATE_96000,
|
||||
.rate_min = 32000,
|
||||
|
@ -1238,7 +1238,8 @@ static struct snd_pcm_hardware snd_korg1212_playback_info =
|
||||
{
|
||||
.info = (SNDRV_PCM_INFO_MMAP |
|
||||
SNDRV_PCM_INFO_MMAP_VALID |
|
||||
SNDRV_PCM_INFO_INTERLEAVED),
|
||||
SNDRV_PCM_INFO_INTERLEAVED |
|
||||
SNDRV_PCM_INFO_BATCH),
|
||||
.formats = SNDRV_PCM_FMTBIT_S16_LE,
|
||||
.rates = (SNDRV_PCM_RATE_44100 |
|
||||
SNDRV_PCM_RATE_48000),
|
||||
@ -1258,7 +1259,8 @@ static struct snd_pcm_hardware snd_korg1212_capture_info =
|
||||
{
|
||||
.info = (SNDRV_PCM_INFO_MMAP |
|
||||
SNDRV_PCM_INFO_MMAP_VALID |
|
||||
SNDRV_PCM_INFO_INTERLEAVED),
|
||||
SNDRV_PCM_INFO_INTERLEAVED |
|
||||
SNDRV_PCM_INFO_BATCH),
|
||||
.formats = SNDRV_PCM_FMTBIT_S16_LE,
|
||||
.rates = (SNDRV_PCM_RATE_44100 |
|
||||
SNDRV_PCM_RATE_48000),
|
||||
|
@ -240,7 +240,8 @@ static int pdacf_pcm_prepare(struct snd_pcm_substream *subs)
|
||||
static struct snd_pcm_hardware pdacf_pcm_capture_hw = {
|
||||
.info = (SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_INTERLEAVED |
|
||||
SNDRV_PCM_INFO_PAUSE | SNDRV_PCM_INFO_RESUME |
|
||||
SNDRV_PCM_INFO_MMAP_VALID),
|
||||
SNDRV_PCM_INFO_MMAP_VALID |
|
||||
SNDRV_PCM_INFO_BATCH),
|
||||
.formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S16_BE |
|
||||
SNDRV_PCM_FMTBIT_S24_3LE | SNDRV_PCM_FMTBIT_S24_3BE |
|
||||
SNDRV_PCM_FMTBIT_S32_LE | SNDRV_PCM_FMTBIT_S32_BE,
|
||||
|
@ -82,7 +82,7 @@ static struct au1xpsc_audio_dmadata *au1xpsc_audio_pcmdma[2];
|
||||
/* PCM hardware DMA capabilities - platform specific */
|
||||
static const struct snd_pcm_hardware au1xpsc_pcm_hardware = {
|
||||
.info = SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_MMAP_VALID |
|
||||
SNDRV_PCM_INFO_INTERLEAVED,
|
||||
SNDRV_PCM_INFO_INTERLEAVED | SNDRV_PCM_INFO_BATCH,
|
||||
.formats = AU1XPSC_PCM_FMTS,
|
||||
.period_bytes_min = AU1XPSC_PERIOD_MIN_BYTES,
|
||||
.period_bytes_max = 4096 * 1024 - 1,
|
||||
|
@ -835,6 +835,12 @@ static DECLARE_TLV_DB_SCALE(analog_tlv, -2400, 200, 0);
|
||||
*/
|
||||
static DECLARE_TLV_DB_SCALE(output_tvl, -1200, 600, 1);
|
||||
|
||||
/*
|
||||
* Gain control for earpiece amplifier
|
||||
* 0 dB to 12 dB in 6 dB steps (mute instead of -6)
|
||||
*/
|
||||
static DECLARE_TLV_DB_SCALE(output_ear_tvl, -600, 600, 1);
|
||||
|
||||
/*
|
||||
* Capture gain after the ADCs
|
||||
* from 0 dB to 31 dB in 1 dB steps
|
||||
@ -900,7 +906,7 @@ static const struct snd_kcontrol_new twl4030_snd_controls[] = {
|
||||
4, 3, 0, output_tvl),
|
||||
|
||||
SOC_SINGLE_TLV_TWL4030("Earpiece Playback Volume",
|
||||
TWL4030_REG_EAR_CTL, 4, 3, 0, output_tvl),
|
||||
TWL4030_REG_EAR_CTL, 4, 3, 0, output_ear_tvl),
|
||||
|
||||
/* Common capture gain controls */
|
||||
SOC_DOUBLE_R_TLV("TX1 Digital Capture Volume",
|
||||
|
@ -968,7 +968,7 @@ static int wm8350_pcm_trigger(struct snd_pcm_substream *substream,
|
||||
* required for LRC in master mode. The DACs or ADCs need a
|
||||
* valid audio path i.e. pin -> ADC or DAC -> pin before
|
||||
* the LRC will be enabled in master mode. */
|
||||
if (!master && cmd != SNDRV_PCM_TRIGGER_START)
|
||||
if (!master || cmd != SNDRV_PCM_TRIGGER_START)
|
||||
return 0;
|
||||
|
||||
if (substream->stream == SNDRV_PCM_STREAM_CAPTURE) {
|
||||
|
@ -504,7 +504,8 @@ static struct snd_soc_dai psc_i2s_dai_template = {
|
||||
|
||||
static const struct snd_pcm_hardware psc_i2s_pcm_hardware = {
|
||||
.info = SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_MMAP_VALID |
|
||||
SNDRV_PCM_INFO_INTERLEAVED | SNDRV_PCM_INFO_BLOCK_TRANSFER,
|
||||
SNDRV_PCM_INFO_INTERLEAVED | SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
||||
SNDRV_PCM_INFO_BATCH,
|
||||
.formats = SNDRV_PCM_FMTBIT_S8 | SNDRV_PCM_FMTBIT_S16_BE |
|
||||
SNDRV_PCM_FMTBIT_S24_BE | SNDRV_PCM_FMTBIT_S32_BE,
|
||||
.rate_min = 8000,
|
||||
|
@ -103,7 +103,8 @@ static struct snd_pcm_hardware camelot_pcm_hardware = {
|
||||
.info = (SNDRV_PCM_INFO_MMAP |
|
||||
SNDRV_PCM_INFO_INTERLEAVED |
|
||||
SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
||||
SNDRV_PCM_INFO_MMAP_VALID),
|
||||
SNDRV_PCM_INFO_MMAP_VALID |
|
||||
SNDRV_PCM_INFO_BATCH),
|
||||
.formats = DMABRG_FMTS,
|
||||
.rates = DMABRG_RATES,
|
||||
.rate_min = 8000,
|
||||
|
@ -1975,7 +1975,8 @@ static struct snd_pcm_hardware snd_dbri_pcm_hw = {
|
||||
.info = SNDRV_PCM_INFO_MMAP |
|
||||
SNDRV_PCM_INFO_INTERLEAVED |
|
||||
SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
||||
SNDRV_PCM_INFO_MMAP_VALID,
|
||||
SNDRV_PCM_INFO_MMAP_VALID |
|
||||
SNDRV_PCM_INFO_BATCH,
|
||||
.formats = SNDRV_PCM_FMTBIT_MU_LAW |
|
||||
SNDRV_PCM_FMTBIT_A_LAW |
|
||||
SNDRV_PCM_FMTBIT_U8 |
|
||||
|
@ -870,7 +870,8 @@ static struct snd_pcm_hardware snd_usX2Y_2c =
|
||||
{
|
||||
.info = (SNDRV_PCM_INFO_MMAP | SNDRV_PCM_INFO_INTERLEAVED |
|
||||
SNDRV_PCM_INFO_BLOCK_TRANSFER |
|
||||
SNDRV_PCM_INFO_MMAP_VALID),
|
||||
SNDRV_PCM_INFO_MMAP_VALID |
|
||||
SNDRV_PCM_INFO_BATCH),
|
||||
.formats = SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S24_3LE,
|
||||
.rates = SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000,
|
||||
.rate_min = 44100,
|
||||
|
Loading…
Reference in New Issue
Block a user