diff options
Diffstat (limited to 'sound')
-rw-r--r-- | sound/pci/hda/patch_cirrus.c | 1 | ||||
-rw-r--r-- | sound/pci/hda/patch_realtek.c | 1 | ||||
-rw-r--r-- | sound/pci/hda/patch_sigmatel.c | 6 | ||||
-rw-r--r-- | sound/soc/au1x/db1200.c | 4 | ||||
-rw-r--r-- | sound/soc/codecs/rt5645.c | 6 | ||||
-rw-r--r-- | sound/soc/codecs/rt5645.h | 16 | ||||
-rw-r--r-- | sound/soc/codecs/sgtl5000.c | 6 | ||||
-rw-r--r-- | sound/soc/codecs/tas2552.c | 2 | ||||
-rw-r--r-- | sound/soc/codecs/tlv320aic3x.c | 19 | ||||
-rw-r--r-- | sound/soc/codecs/wm8962.c | 5 | ||||
-rw-r--r-- | sound/soc/dwc/designware_i2s.c | 19 | ||||
-rw-r--r-- | sound/soc/fsl/imx-ssi.c | 19 | ||||
-rw-r--r-- | sound/synth/emux/emux_oss.c | 3 |
13 files changed, 67 insertions, 40 deletions
diff --git a/sound/pci/hda/patch_cirrus.c b/sound/pci/hda/patch_cirrus.c index 584a0343ab0c..85813de26da8 100644 --- a/sound/pci/hda/patch_cirrus.c +++ b/sound/pci/hda/patch_cirrus.c | |||
@@ -633,6 +633,7 @@ static const struct snd_pci_quirk cs4208_mac_fixup_tbl[] = { | |||
633 | SND_PCI_QUIRK(0x106b, 0x5e00, "MacBookPro 11,2", CS4208_MBP11), | 633 | SND_PCI_QUIRK(0x106b, 0x5e00, "MacBookPro 11,2", CS4208_MBP11), |
634 | SND_PCI_QUIRK(0x106b, 0x7100, "MacBookAir 6,1", CS4208_MBA6), | 634 | SND_PCI_QUIRK(0x106b, 0x7100, "MacBookAir 6,1", CS4208_MBA6), |
635 | SND_PCI_QUIRK(0x106b, 0x7200, "MacBookAir 6,2", CS4208_MBA6), | 635 | SND_PCI_QUIRK(0x106b, 0x7200, "MacBookAir 6,2", CS4208_MBA6), |
636 | SND_PCI_QUIRK(0x106b, 0x7b00, "MacBookPro 12,1", CS4208_MBP11), | ||
636 | {} /* terminator */ | 637 | {} /* terminator */ |
637 | }; | 638 | }; |
638 | 639 | ||
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index afec6dc9f91f..16b8dcba5c12 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
@@ -5306,6 +5306,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { | |||
5306 | SND_PCI_QUIRK(0x17aa, 0x2212, "Thinkpad T440", ALC292_FIXUP_TPT440_DOCK), | 5306 | SND_PCI_QUIRK(0x17aa, 0x2212, "Thinkpad T440", ALC292_FIXUP_TPT440_DOCK), |
5307 | SND_PCI_QUIRK(0x17aa, 0x2214, "Thinkpad X240", ALC292_FIXUP_TPT440_DOCK), | 5307 | SND_PCI_QUIRK(0x17aa, 0x2214, "Thinkpad X240", ALC292_FIXUP_TPT440_DOCK), |
5308 | SND_PCI_QUIRK(0x17aa, 0x2215, "Thinkpad", ALC269_FIXUP_LIMIT_INT_MIC_BOOST), | 5308 | SND_PCI_QUIRK(0x17aa, 0x2215, "Thinkpad", ALC269_FIXUP_LIMIT_INT_MIC_BOOST), |
5309 | SND_PCI_QUIRK(0x17aa, 0x2223, "ThinkPad T550", ALC292_FIXUP_TPT440_DOCK), | ||
5309 | SND_PCI_QUIRK(0x17aa, 0x2226, "ThinkPad X250", ALC292_FIXUP_TPT440_DOCK), | 5310 | SND_PCI_QUIRK(0x17aa, 0x2226, "ThinkPad X250", ALC292_FIXUP_TPT440_DOCK), |
5310 | SND_PCI_QUIRK(0x17aa, 0x3977, "IdeaPad S210", ALC283_FIXUP_INT_MIC), | 5311 | SND_PCI_QUIRK(0x17aa, 0x3977, "IdeaPad S210", ALC283_FIXUP_INT_MIC), |
5311 | SND_PCI_QUIRK(0x17aa, 0x3978, "IdeaPad Y410P", ALC269_FIXUP_NO_SHUTUP), | 5312 | SND_PCI_QUIRK(0x17aa, 0x3978, "IdeaPad Y410P", ALC269_FIXUP_NO_SHUTUP), |
diff --git a/sound/pci/hda/patch_sigmatel.c b/sound/pci/hda/patch_sigmatel.c index 9d947aef2c8b..def5cc8dff02 100644 --- a/sound/pci/hda/patch_sigmatel.c +++ b/sound/pci/hda/patch_sigmatel.c | |||
@@ -4520,7 +4520,11 @@ static int patch_stac92hd73xx(struct hda_codec *codec) | |||
4520 | return err; | 4520 | return err; |
4521 | 4521 | ||
4522 | spec = codec->spec; | 4522 | spec = codec->spec; |
4523 | codec->power_save_node = 1; | 4523 | /* enable power_save_node only for new 92HD89xx chips, as it causes |
4524 | * click noises on old 92HD73xx chips. | ||
4525 | */ | ||
4526 | if ((codec->core.vendor_id & 0xfffffff0) != 0x111d7670) | ||
4527 | codec->power_save_node = 1; | ||
4524 | spec->linear_tone_beep = 0; | 4528 | spec->linear_tone_beep = 0; |
4525 | spec->gen.mixer_nid = 0x1d; | 4529 | spec->gen.mixer_nid = 0x1d; |
4526 | spec->have_spdif_mux = 1; | 4530 | spec->have_spdif_mux = 1; |
diff --git a/sound/soc/au1x/db1200.c b/sound/soc/au1x/db1200.c index 58c3164802b8..8c907ebea189 100644 --- a/sound/soc/au1x/db1200.c +++ b/sound/soc/au1x/db1200.c | |||
@@ -129,6 +129,8 @@ static struct snd_soc_dai_link db1300_i2s_dai = { | |||
129 | .cpu_dai_name = "au1xpsc_i2s.2", | 129 | .cpu_dai_name = "au1xpsc_i2s.2", |
130 | .platform_name = "au1xpsc-pcm.2", | 130 | .platform_name = "au1xpsc-pcm.2", |
131 | .codec_name = "wm8731.0-001b", | 131 | .codec_name = "wm8731.0-001b", |
132 | .dai_fmt = SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_NB_NF | | ||
133 | SND_SOC_DAIFMT_CBM_CFM, | ||
132 | .ops = &db1200_i2s_wm8731_ops, | 134 | .ops = &db1200_i2s_wm8731_ops, |
133 | }; | 135 | }; |
134 | 136 | ||
@@ -146,6 +148,8 @@ static struct snd_soc_dai_link db1550_i2s_dai = { | |||
146 | .cpu_dai_name = "au1xpsc_i2s.3", | 148 | .cpu_dai_name = "au1xpsc_i2s.3", |
147 | .platform_name = "au1xpsc-pcm.3", | 149 | .platform_name = "au1xpsc-pcm.3", |
148 | .codec_name = "wm8731.0-001b", | 150 | .codec_name = "wm8731.0-001b", |
151 | .dai_fmt = SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_NB_NF | | ||
152 | SND_SOC_DAIFMT_CBM_CFM, | ||
149 | .ops = &db1200_i2s_wm8731_ops, | 153 | .ops = &db1200_i2s_wm8731_ops, |
150 | }; | 154 | }; |
151 | 155 | ||
diff --git a/sound/soc/codecs/rt5645.c b/sound/soc/codecs/rt5645.c index 268a28bd1df4..5c101af0ac63 100644 --- a/sound/soc/codecs/rt5645.c +++ b/sound/soc/codecs/rt5645.c | |||
@@ -519,11 +519,11 @@ static const struct snd_kcontrol_new rt5645_snd_controls[] = { | |||
519 | RT5645_L_VOL_SFT + 1, RT5645_R_VOL_SFT + 1, 63, 0, adc_vol_tlv), | 519 | RT5645_L_VOL_SFT + 1, RT5645_R_VOL_SFT + 1, 63, 0, adc_vol_tlv), |
520 | 520 | ||
521 | /* ADC Boost Volume Control */ | 521 | /* ADC Boost Volume Control */ |
522 | SOC_DOUBLE_TLV("STO1 ADC Boost Gain", RT5645_ADC_BST_VOL1, | 522 | SOC_DOUBLE_TLV("ADC Boost Capture Volume", RT5645_ADC_BST_VOL1, |
523 | RT5645_STO1_ADC_L_BST_SFT, RT5645_STO1_ADC_R_BST_SFT, 3, 0, | 523 | RT5645_STO1_ADC_L_BST_SFT, RT5645_STO1_ADC_R_BST_SFT, 3, 0, |
524 | adc_bst_tlv), | 524 | adc_bst_tlv), |
525 | SOC_DOUBLE_TLV("STO2 ADC Boost Gain", RT5645_ADC_BST_VOL1, | 525 | SOC_DOUBLE_TLV("Mono ADC Boost Capture Volume", RT5645_ADC_BST_VOL2, |
526 | RT5645_STO2_ADC_L_BST_SFT, RT5645_STO2_ADC_R_BST_SFT, 3, 0, | 526 | RT5645_MONO_ADC_L_BST_SFT, RT5645_MONO_ADC_R_BST_SFT, 3, 0, |
527 | adc_bst_tlv), | 527 | adc_bst_tlv), |
528 | 528 | ||
529 | /* I2S2 function select */ | 529 | /* I2S2 function select */ |
diff --git a/sound/soc/codecs/rt5645.h b/sound/soc/codecs/rt5645.h index 0e4cfc6ac649..8c964cfb120d 100644 --- a/sound/soc/codecs/rt5645.h +++ b/sound/soc/codecs/rt5645.h | |||
@@ -39,8 +39,8 @@ | |||
39 | #define RT5645_STO1_ADC_DIG_VOL 0x1c | 39 | #define RT5645_STO1_ADC_DIG_VOL 0x1c |
40 | #define RT5645_MONO_ADC_DIG_VOL 0x1d | 40 | #define RT5645_MONO_ADC_DIG_VOL 0x1d |
41 | #define RT5645_ADC_BST_VOL1 0x1e | 41 | #define RT5645_ADC_BST_VOL1 0x1e |
42 | /* Mixer - D-D */ | ||
43 | #define RT5645_ADC_BST_VOL2 0x20 | 42 | #define RT5645_ADC_BST_VOL2 0x20 |
43 | /* Mixer - D-D */ | ||
44 | #define RT5645_STO1_ADC_MIXER 0x27 | 44 | #define RT5645_STO1_ADC_MIXER 0x27 |
45 | #define RT5645_MONO_ADC_MIXER 0x28 | 45 | #define RT5645_MONO_ADC_MIXER 0x28 |
46 | #define RT5645_AD_DA_MIXER 0x29 | 46 | #define RT5645_AD_DA_MIXER 0x29 |
@@ -315,12 +315,14 @@ | |||
315 | #define RT5645_STO1_ADC_R_BST_SFT 12 | 315 | #define RT5645_STO1_ADC_R_BST_SFT 12 |
316 | #define RT5645_STO1_ADC_COMP_MASK (0x3 << 10) | 316 | #define RT5645_STO1_ADC_COMP_MASK (0x3 << 10) |
317 | #define RT5645_STO1_ADC_COMP_SFT 10 | 317 | #define RT5645_STO1_ADC_COMP_SFT 10 |
318 | #define RT5645_STO2_ADC_L_BST_MASK (0x3 << 8) | 318 | |
319 | #define RT5645_STO2_ADC_L_BST_SFT 8 | 319 | /* ADC Boost Volume Control (0x20) */ |
320 | #define RT5645_STO2_ADC_R_BST_MASK (0x3 << 6) | 320 | #define RT5645_MONO_ADC_L_BST_MASK (0x3 << 14) |
321 | #define RT5645_STO2_ADC_R_BST_SFT 6 | 321 | #define RT5645_MONO_ADC_L_BST_SFT 14 |
322 | #define RT5645_STO2_ADC_COMP_MASK (0x3 << 4) | 322 | #define RT5645_MONO_ADC_R_BST_MASK (0x3 << 12) |
323 | #define RT5645_STO2_ADC_COMP_SFT 4 | 323 | #define RT5645_MONO_ADC_R_BST_SFT 12 |
324 | #define RT5645_MONO_ADC_COMP_MASK (0x3 << 10) | ||
325 | #define RT5645_MONO_ADC_COMP_SFT 10 | ||
324 | 326 | ||
325 | /* Stereo2 ADC Mixer Control (0x26) */ | 327 | /* Stereo2 ADC Mixer Control (0x26) */ |
326 | #define RT5645_STO2_ADC_SRC_MASK (0x1 << 15) | 328 | #define RT5645_STO2_ADC_SRC_MASK (0x1 << 15) |
diff --git a/sound/soc/codecs/sgtl5000.c b/sound/soc/codecs/sgtl5000.c index bfda25ef0dd4..f540f82b1f27 100644 --- a/sound/soc/codecs/sgtl5000.c +++ b/sound/soc/codecs/sgtl5000.c | |||
@@ -1376,8 +1376,8 @@ static int sgtl5000_probe(struct snd_soc_codec *codec) | |||
1376 | sgtl5000->micbias_resistor << SGTL5000_BIAS_R_SHIFT); | 1376 | sgtl5000->micbias_resistor << SGTL5000_BIAS_R_SHIFT); |
1377 | 1377 | ||
1378 | snd_soc_update_bits(codec, SGTL5000_CHIP_MIC_CTRL, | 1378 | snd_soc_update_bits(codec, SGTL5000_CHIP_MIC_CTRL, |
1379 | SGTL5000_BIAS_R_MASK, | 1379 | SGTL5000_BIAS_VOLT_MASK, |
1380 | sgtl5000->micbias_voltage << SGTL5000_BIAS_R_SHIFT); | 1380 | sgtl5000->micbias_voltage << SGTL5000_BIAS_VOLT_SHIFT); |
1381 | /* | 1381 | /* |
1382 | * disable DAP | 1382 | * disable DAP |
1383 | * TODO: | 1383 | * TODO: |
@@ -1549,7 +1549,7 @@ static int sgtl5000_i2c_probe(struct i2c_client *client, | |||
1549 | else { | 1549 | else { |
1550 | sgtl5000->micbias_voltage = 0; | 1550 | sgtl5000->micbias_voltage = 0; |
1551 | dev_err(&client->dev, | 1551 | dev_err(&client->dev, |
1552 | "Unsuitable MicBias resistor\n"); | 1552 | "Unsuitable MicBias voltage\n"); |
1553 | } | 1553 | } |
1554 | } else { | 1554 | } else { |
1555 | sgtl5000->micbias_voltage = 0; | 1555 | sgtl5000->micbias_voltage = 0; |
diff --git a/sound/soc/codecs/tas2552.c b/sound/soc/codecs/tas2552.c index e3a0bca28bcf..cc1d3981fa4b 100644 --- a/sound/soc/codecs/tas2552.c +++ b/sound/soc/codecs/tas2552.c | |||
@@ -549,7 +549,7 @@ static struct snd_soc_dai_driver tas2552_dai[] = { | |||
549 | /* | 549 | /* |
550 | * DAC digital volumes. From -7 to 24 dB in 1 dB steps | 550 | * DAC digital volumes. From -7 to 24 dB in 1 dB steps |
551 | */ | 551 | */ |
552 | static DECLARE_TLV_DB_SCALE(dac_tlv, -7, 100, 0); | 552 | static DECLARE_TLV_DB_SCALE(dac_tlv, -700, 100, 0); |
553 | 553 | ||
554 | static const char * const tas2552_din_source_select[] = { | 554 | static const char * const tas2552_din_source_select[] = { |
555 | "Muted", | 555 | "Muted", |
diff --git a/sound/soc/codecs/tlv320aic3x.c b/sound/soc/codecs/tlv320aic3x.c index 1a82b19b2644..8739126a1f6f 100644 --- a/sound/soc/codecs/tlv320aic3x.c +++ b/sound/soc/codecs/tlv320aic3x.c | |||
@@ -1509,14 +1509,17 @@ static int aic3x_init(struct snd_soc_codec *codec) | |||
1509 | snd_soc_write(codec, PGAL_2_LLOPM_VOL, DEFAULT_VOL); | 1509 | snd_soc_write(codec, PGAL_2_LLOPM_VOL, DEFAULT_VOL); |
1510 | snd_soc_write(codec, PGAR_2_RLOPM_VOL, DEFAULT_VOL); | 1510 | snd_soc_write(codec, PGAR_2_RLOPM_VOL, DEFAULT_VOL); |
1511 | 1511 | ||
1512 | /* Line2 to HP Bypass default volume, disconnect from Output Mixer */ | 1512 | /* On tlv320aic3104, these registers are reserved and must not be written */ |
1513 | snd_soc_write(codec, LINE2L_2_HPLOUT_VOL, DEFAULT_VOL); | 1513 | if (aic3x->model != AIC3X_MODEL_3104) { |
1514 | snd_soc_write(codec, LINE2R_2_HPROUT_VOL, DEFAULT_VOL); | 1514 | /* Line2 to HP Bypass default volume, disconnect from Output Mixer */ |
1515 | snd_soc_write(codec, LINE2L_2_HPLCOM_VOL, DEFAULT_VOL); | 1515 | snd_soc_write(codec, LINE2L_2_HPLOUT_VOL, DEFAULT_VOL); |
1516 | snd_soc_write(codec, LINE2R_2_HPRCOM_VOL, DEFAULT_VOL); | 1516 | snd_soc_write(codec, LINE2R_2_HPROUT_VOL, DEFAULT_VOL); |
1517 | /* Line2 Line Out default volume, disconnect from Output Mixer */ | 1517 | snd_soc_write(codec, LINE2L_2_HPLCOM_VOL, DEFAULT_VOL); |
1518 | snd_soc_write(codec, LINE2L_2_LLOPM_VOL, DEFAULT_VOL); | 1518 | snd_soc_write(codec, LINE2R_2_HPRCOM_VOL, DEFAULT_VOL); |
1519 | snd_soc_write(codec, LINE2R_2_RLOPM_VOL, DEFAULT_VOL); | 1519 | /* Line2 Line Out default volume, disconnect from Output Mixer */ |
1520 | snd_soc_write(codec, LINE2L_2_LLOPM_VOL, DEFAULT_VOL); | ||
1521 | snd_soc_write(codec, LINE2R_2_RLOPM_VOL, DEFAULT_VOL); | ||
1522 | } | ||
1520 | 1523 | ||
1521 | switch (aic3x->model) { | 1524 | switch (aic3x->model) { |
1522 | case AIC3X_MODEL_3X: | 1525 | case AIC3X_MODEL_3X: |
diff --git a/sound/soc/codecs/wm8962.c b/sound/soc/codecs/wm8962.c index 293e47a6ff59..2fbc6ef8cbdb 100644 --- a/sound/soc/codecs/wm8962.c +++ b/sound/soc/codecs/wm8962.c | |||
@@ -3760,7 +3760,7 @@ static int wm8962_i2c_probe(struct i2c_client *i2c, | |||
3760 | ret = snd_soc_register_codec(&i2c->dev, | 3760 | ret = snd_soc_register_codec(&i2c->dev, |
3761 | &soc_codec_dev_wm8962, &wm8962_dai, 1); | 3761 | &soc_codec_dev_wm8962, &wm8962_dai, 1); |
3762 | if (ret < 0) | 3762 | if (ret < 0) |
3763 | goto err_enable; | 3763 | goto err_pm_runtime; |
3764 | 3764 | ||
3765 | regcache_cache_only(wm8962->regmap, true); | 3765 | regcache_cache_only(wm8962->regmap, true); |
3766 | 3766 | ||
@@ -3769,6 +3769,8 @@ static int wm8962_i2c_probe(struct i2c_client *i2c, | |||
3769 | 3769 | ||
3770 | return 0; | 3770 | return 0; |
3771 | 3771 | ||
3772 | err_pm_runtime: | ||
3773 | pm_runtime_disable(&i2c->dev); | ||
3772 | err_enable: | 3774 | err_enable: |
3773 | regulator_bulk_disable(ARRAY_SIZE(wm8962->supplies), wm8962->supplies); | 3775 | regulator_bulk_disable(ARRAY_SIZE(wm8962->supplies), wm8962->supplies); |
3774 | err: | 3776 | err: |
@@ -3778,6 +3780,7 @@ err: | |||
3778 | static int wm8962_i2c_remove(struct i2c_client *client) | 3780 | static int wm8962_i2c_remove(struct i2c_client *client) |
3779 | { | 3781 | { |
3780 | snd_soc_unregister_codec(&client->dev); | 3782 | snd_soc_unregister_codec(&client->dev); |
3783 | pm_runtime_disable(&client->dev); | ||
3781 | return 0; | 3784 | return 0; |
3782 | } | 3785 | } |
3783 | 3786 | ||
diff --git a/sound/soc/dwc/designware_i2s.c b/sound/soc/dwc/designware_i2s.c index a3e97b46b64e..ba34252b7bba 100644 --- a/sound/soc/dwc/designware_i2s.c +++ b/sound/soc/dwc/designware_i2s.c | |||
@@ -131,23 +131,32 @@ static inline void i2s_clear_irqs(struct dw_i2s_dev *dev, u32 stream) | |||
131 | 131 | ||
132 | if (stream == SNDRV_PCM_STREAM_PLAYBACK) { | 132 | if (stream == SNDRV_PCM_STREAM_PLAYBACK) { |
133 | for (i = 0; i < 4; i++) | 133 | for (i = 0; i < 4; i++) |
134 | i2s_write_reg(dev->i2s_base, TOR(i), 0); | 134 | i2s_read_reg(dev->i2s_base, TOR(i)); |
135 | } else { | 135 | } else { |
136 | for (i = 0; i < 4; i++) | 136 | for (i = 0; i < 4; i++) |
137 | i2s_write_reg(dev->i2s_base, ROR(i), 0); | 137 | i2s_read_reg(dev->i2s_base, ROR(i)); |
138 | } | 138 | } |
139 | } | 139 | } |
140 | 140 | ||
141 | static void i2s_start(struct dw_i2s_dev *dev, | 141 | static void i2s_start(struct dw_i2s_dev *dev, |
142 | struct snd_pcm_substream *substream) | 142 | struct snd_pcm_substream *substream) |
143 | { | 143 | { |
144 | 144 | u32 i, irq; | |
145 | i2s_write_reg(dev->i2s_base, IER, 1); | 145 | i2s_write_reg(dev->i2s_base, IER, 1); |
146 | 146 | ||
147 | if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) | 147 | if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) { |
148 | for (i = 0; i < 4; i++) { | ||
149 | irq = i2s_read_reg(dev->i2s_base, IMR(i)); | ||
150 | i2s_write_reg(dev->i2s_base, IMR(i), irq & ~0x30); | ||
151 | } | ||
148 | i2s_write_reg(dev->i2s_base, ITER, 1); | 152 | i2s_write_reg(dev->i2s_base, ITER, 1); |
149 | else | 153 | } else { |
154 | for (i = 0; i < 4; i++) { | ||
155 | irq = i2s_read_reg(dev->i2s_base, IMR(i)); | ||
156 | i2s_write_reg(dev->i2s_base, IMR(i), irq & ~0x03); | ||
157 | } | ||
150 | i2s_write_reg(dev->i2s_base, IRER, 1); | 158 | i2s_write_reg(dev->i2s_base, IRER, 1); |
159 | } | ||
151 | 160 | ||
152 | i2s_write_reg(dev->i2s_base, CER, 1); | 161 | i2s_write_reg(dev->i2s_base, CER, 1); |
153 | } | 162 | } |
diff --git a/sound/soc/fsl/imx-ssi.c b/sound/soc/fsl/imx-ssi.c index 48b2d24dd1f0..b95132e2f9dc 100644 --- a/sound/soc/fsl/imx-ssi.c +++ b/sound/soc/fsl/imx-ssi.c | |||
@@ -95,7 +95,8 @@ static int imx_ssi_set_dai_fmt(struct snd_soc_dai *cpu_dai, unsigned int fmt) | |||
95 | switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) { | 95 | switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) { |
96 | case SND_SOC_DAIFMT_I2S: | 96 | case SND_SOC_DAIFMT_I2S: |
97 | /* data on rising edge of bclk, frame low 1clk before data */ | 97 | /* data on rising edge of bclk, frame low 1clk before data */ |
98 | strcr |= SSI_STCR_TFSI | SSI_STCR_TEFS | SSI_STCR_TXBIT0; | 98 | strcr |= SSI_STCR_TXBIT0 | SSI_STCR_TSCKP | SSI_STCR_TFSI | |
99 | SSI_STCR_TEFS; | ||
99 | scr |= SSI_SCR_NET; | 100 | scr |= SSI_SCR_NET; |
100 | if (ssi->flags & IMX_SSI_USE_I2S_SLAVE) { | 101 | if (ssi->flags & IMX_SSI_USE_I2S_SLAVE) { |
101 | scr &= ~SSI_I2S_MODE_MASK; | 102 | scr &= ~SSI_I2S_MODE_MASK; |
@@ -104,33 +105,31 @@ static int imx_ssi_set_dai_fmt(struct snd_soc_dai *cpu_dai, unsigned int fmt) | |||
104 | break; | 105 | break; |
105 | case SND_SOC_DAIFMT_LEFT_J: | 106 | case SND_SOC_DAIFMT_LEFT_J: |
106 | /* data on rising edge of bclk, frame high with data */ | 107 | /* data on rising edge of bclk, frame high with data */ |
107 | strcr |= SSI_STCR_TXBIT0; | 108 | strcr |= SSI_STCR_TXBIT0 | SSI_STCR_TSCKP; |
108 | break; | 109 | break; |
109 | case SND_SOC_DAIFMT_DSP_B: | 110 | case SND_SOC_DAIFMT_DSP_B: |
110 | /* data on rising edge of bclk, frame high with data */ | 111 | /* data on rising edge of bclk, frame high with data */ |
111 | strcr |= SSI_STCR_TFSL | SSI_STCR_TXBIT0; | 112 | strcr |= SSI_STCR_TXBIT0 | SSI_STCR_TSCKP | SSI_STCR_TFSL; |
112 | break; | 113 | break; |
113 | case SND_SOC_DAIFMT_DSP_A: | 114 | case SND_SOC_DAIFMT_DSP_A: |
114 | /* data on rising edge of bclk, frame high 1clk before data */ | 115 | /* data on rising edge of bclk, frame high 1clk before data */ |
115 | strcr |= SSI_STCR_TFSL | SSI_STCR_TXBIT0 | SSI_STCR_TEFS; | 116 | strcr |= SSI_STCR_TXBIT0 | SSI_STCR_TSCKP | SSI_STCR_TFSL | |
117 | SSI_STCR_TEFS; | ||
116 | break; | 118 | break; |
117 | } | 119 | } |
118 | 120 | ||
119 | /* DAI clock inversion */ | 121 | /* DAI clock inversion */ |
120 | switch (fmt & SND_SOC_DAIFMT_INV_MASK) { | 122 | switch (fmt & SND_SOC_DAIFMT_INV_MASK) { |
121 | case SND_SOC_DAIFMT_IB_IF: | 123 | case SND_SOC_DAIFMT_IB_IF: |
122 | strcr |= SSI_STCR_TFSI; | 124 | strcr ^= SSI_STCR_TSCKP | SSI_STCR_TFSI; |
123 | strcr &= ~SSI_STCR_TSCKP; | ||
124 | break; | 125 | break; |
125 | case SND_SOC_DAIFMT_IB_NF: | 126 | case SND_SOC_DAIFMT_IB_NF: |
126 | strcr &= ~(SSI_STCR_TSCKP | SSI_STCR_TFSI); | 127 | strcr ^= SSI_STCR_TSCKP; |
127 | break; | 128 | break; |
128 | case SND_SOC_DAIFMT_NB_IF: | 129 | case SND_SOC_DAIFMT_NB_IF: |
129 | strcr |= SSI_STCR_TFSI | SSI_STCR_TSCKP; | 130 | strcr ^= SSI_STCR_TFSI; |
130 | break; | 131 | break; |
131 | case SND_SOC_DAIFMT_NB_NF: | 132 | case SND_SOC_DAIFMT_NB_NF: |
132 | strcr &= ~SSI_STCR_TFSI; | ||
133 | strcr |= SSI_STCR_TSCKP; | ||
134 | break; | 133 | break; |
135 | } | 134 | } |
136 | 135 | ||
diff --git a/sound/synth/emux/emux_oss.c b/sound/synth/emux/emux_oss.c index 82e350e9501c..ac75816ada7c 100644 --- a/sound/synth/emux/emux_oss.c +++ b/sound/synth/emux/emux_oss.c | |||
@@ -69,7 +69,8 @@ snd_emux_init_seq_oss(struct snd_emux *emu) | |||
69 | struct snd_seq_oss_reg *arg; | 69 | struct snd_seq_oss_reg *arg; |
70 | struct snd_seq_device *dev; | 70 | struct snd_seq_device *dev; |
71 | 71 | ||
72 | if (snd_seq_device_new(emu->card, 0, SNDRV_SEQ_DEV_ID_OSS, | 72 | /* using device#1 here for avoiding conflicts with OPL3 */ |
73 | if (snd_seq_device_new(emu->card, 1, SNDRV_SEQ_DEV_ID_OSS, | ||
73 | sizeof(struct snd_seq_oss_reg), &dev) < 0) | 74 | sizeof(struct snd_seq_oss_reg), &dev) < 0) |
74 | return; | 75 | return; |
75 | 76 | ||