Commit 50f7ad25 authored by Linus Torvalds's avatar Linus Torvalds

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:
  [ALSA] soc - fix S3C2410 i2s programming error
  [ALSA] soc - fix s3c2410 PCM breakage
  [ALSA] ac97 - Add a workaround for broken quirk for VT1617A codec
  [ALSA] Revert migration to alc_set_pin_output() in alc861_auto_set_output_and_unmute()
  [ALSA] fm801 - Fix kconfig dependency mess of fm801-tea575x
  [ALSA] hda - Support IDT 92HD206 codec
  [ALSA] pcsp: Fix build with CONFIG_PM=n
parents 82af7aca 2c36eecf
...@@ -194,6 +194,7 @@ static void pcsp_stop_beep(struct snd_pcsp *chip) ...@@ -194,6 +194,7 @@ static void pcsp_stop_beep(struct snd_pcsp *chip)
spin_unlock_irq(&chip->substream_lock); spin_unlock_irq(&chip->substream_lock);
} }
#ifdef CONFIG_PM
static int pcsp_suspend(struct platform_device *dev, pm_message_t state) static int pcsp_suspend(struct platform_device *dev, pm_message_t state)
{ {
struct snd_pcsp *chip = platform_get_drvdata(dev); struct snd_pcsp *chip = platform_get_drvdata(dev);
...@@ -201,6 +202,9 @@ static int pcsp_suspend(struct platform_device *dev, pm_message_t state) ...@@ -201,6 +202,9 @@ static int pcsp_suspend(struct platform_device *dev, pm_message_t state)
snd_pcm_suspend_all(chip->pcm); snd_pcm_suspend_all(chip->pcm);
return 0; return 0;
} }
#else
#define pcsp_suspend NULL
#endif /* CONFIG_PM */
static void pcsp_shutdown(struct platform_device *dev) static void pcsp_shutdown(struct platform_device *dev)
{ {
......
...@@ -515,19 +515,16 @@ config SND_FM801 ...@@ -515,19 +515,16 @@ config SND_FM801
config SND_FM801_TEA575X_BOOL config SND_FM801_TEA575X_BOOL
bool "ForteMedia FM801 + TEA5757 tuner" bool "ForteMedia FM801 + TEA5757 tuner"
depends on SND_FM801 depends on SND_FM801
depends on VIDEO_V4L1=y || VIDEO_V4L1=SND_FM801
help help
Say Y here to include support for soundcards based on the ForteMedia Say Y here to include support for soundcards based on the ForteMedia
FM801 chip with a TEA5757 tuner connected to GPIO1-3 pins (Media FM801 chip with a TEA5757 tuner connected to GPIO1-3 pins (Media
Forte SF256-PCS-02) into the snd-fm801 driver. Forte SF256-PCS-02) into the snd-fm801 driver.
This will enable support for the old V4L1 API.
config SND_FM801_TEA575X config SND_FM801_TEA575X
tristate tristate
depends on SND_FM801_TEA575X_BOOL depends on SND_FM801_TEA575X_BOOL
default SND_FM801 default SND_FM801
select VIDEO_V4L1
select VIDEO_DEV
config SND_HDA_INTEL config SND_HDA_INTEL
tristate "Intel HD Audio" tristate "Intel HD Audio"
......
...@@ -3446,6 +3446,7 @@ static const struct snd_kcontrol_new snd_ac97_controls_vt1617a[] = { ...@@ -3446,6 +3446,7 @@ static const struct snd_kcontrol_new snd_ac97_controls_vt1617a[] = {
int patch_vt1617a(struct snd_ac97 * ac97) int patch_vt1617a(struct snd_ac97 * ac97)
{ {
int err = 0; int err = 0;
int val;
/* we choose to not fail out at this point, but we tell the /* we choose to not fail out at this point, but we tell the
caller when we return */ caller when we return */
...@@ -3456,7 +3457,13 @@ int patch_vt1617a(struct snd_ac97 * ac97) ...@@ -3456,7 +3457,13 @@ int patch_vt1617a(struct snd_ac97 * ac97)
/* bring analog power consumption to normal by turning off the /* bring analog power consumption to normal by turning off the
* headphone amplifier, like WinXP driver for EPIA SP * headphone amplifier, like WinXP driver for EPIA SP
*/ */
snd_ac97_write_cache(ac97, 0x5c, 0x20); /* We need to check the bit before writing it.
* On some (many?) hardwares, setting bit actually clears it!
*/
val = snd_ac97_read(ac97, 0x5c);
if (!(val & 0x20))
snd_ac97_write_cache(ac97, 0x5c, 0x20);
ac97->ext_id |= AC97_EI_SPDIF; /* force the detection of spdif */ ac97->ext_id |= AC97_EI_SPDIF; /* force the detection of spdif */
ac97->rates[AC97_RATES_SPDIF] = SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000; ac97->rates[AC97_RATES_SPDIF] = SNDRV_PCM_RATE_44100 | SNDRV_PCM_RATE_48000;
ac97->build_ops = &patch_vt1616_ops; ac97->build_ops = &patch_vt1616_ops;
......
...@@ -11902,7 +11902,10 @@ static void alc861_auto_set_output_and_unmute(struct hda_codec *codec, ...@@ -11902,7 +11902,10 @@ static void alc861_auto_set_output_and_unmute(struct hda_codec *codec,
hda_nid_t nid, hda_nid_t nid,
int pin_type, int dac_idx) int pin_type, int dac_idx)
{ {
alc_set_pin_output(codec, nid, pin_type); snd_hda_codec_write(codec, nid, 0, AC_VERB_SET_PIN_WIDGET_CONTROL,
pin_type);
snd_hda_codec_write(codec, dac_idx, 0, AC_VERB_SET_AMP_GAIN_MUTE,
AMP_OUT_UNMUTE);
} }
static void alc861_auto_init_multi_out(struct hda_codec *codec) static void alc861_auto_init_multi_out(struct hda_codec *codec)
......
...@@ -4289,6 +4289,8 @@ struct hda_codec_preset snd_hda_preset_sigmatel[] = { ...@@ -4289,6 +4289,8 @@ struct hda_codec_preset snd_hda_preset_sigmatel[] = {
{ .id = 0x83847635, .name = "STAC9250D", .patch = patch_stac925x }, { .id = 0x83847635, .name = "STAC9250D", .patch = patch_stac925x },
{ .id = 0x83847636, .name = "STAC9251", .patch = patch_stac925x }, { .id = 0x83847636, .name = "STAC9251", .patch = patch_stac925x },
{ .id = 0x83847637, .name = "STAC9250D", .patch = patch_stac925x }, { .id = 0x83847637, .name = "STAC9250D", .patch = patch_stac925x },
{ .id = 0x83847645, .name = "92HD206X", .patch = patch_stac927x },
{ .id = 0x83847646, .name = "92HD206D", .patch = patch_stac927x },
/* The following does not take into account .id=0x83847661 when subsys = /* The following does not take into account .id=0x83847661 when subsys =
* 104D0C00 which is STAC9225s. Because of this, some SZ Notebooks are * 104D0C00 which is STAC9225s. Because of this, some SZ Notebooks are
* currently not fully supported. * currently not fully supported.
......
...@@ -224,6 +224,7 @@ static int s3c24xx_i2s_set_fmt(struct snd_soc_cpu_dai *cpu_dai, ...@@ -224,6 +224,7 @@ static int s3c24xx_i2s_set_fmt(struct snd_soc_cpu_dai *cpu_dai,
iismod |= S3C2410_IISMOD_SLAVE; iismod |= S3C2410_IISMOD_SLAVE;
break; break;
case SND_SOC_DAIFMT_CBS_CFS: case SND_SOC_DAIFMT_CBS_CFS:
iismod &= ~S3C2410_IISMOD_SLAVE;
break; break;
default: default:
return -EINVAL; return -EINVAL;
...@@ -234,6 +235,7 @@ static int s3c24xx_i2s_set_fmt(struct snd_soc_cpu_dai *cpu_dai, ...@@ -234,6 +235,7 @@ static int s3c24xx_i2s_set_fmt(struct snd_soc_cpu_dai *cpu_dai,
iismod |= S3C2410_IISMOD_MSB; iismod |= S3C2410_IISMOD_MSB;
break; break;
case SND_SOC_DAIFMT_I2S: case SND_SOC_DAIFMT_I2S:
iismod &= ~S3C2410_IISMOD_MSB;
break; break;
default: default:
return -EINVAL; return -EINVAL;
......
...@@ -171,7 +171,7 @@ static int s3c24xx_pcm_hw_params(struct snd_pcm_substream *substream, ...@@ -171,7 +171,7 @@ static int s3c24xx_pcm_hw_params(struct snd_pcm_substream *substream,
ret = s3c2410_dma_request(prtd->params->channel, ret = s3c2410_dma_request(prtd->params->channel,
prtd->params->client, NULL); prtd->params->client, NULL);
if (ret) { if (ret < 0) {
DBG(KERN_ERR "failed to get dma channel\n"); DBG(KERN_ERR "failed to get dma channel\n");
return ret; return ret;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment