Commit bfd4e66b8d0dfcdbe3f5ccff45757f098bdbb26e
Exists in
master
and in
39 other branches
Merge branches 'topic/asoc', 'topic/misc-fixes' and 'topic/hda' into for-linus
Showing 6 changed files Side-by-side Diff
sound/aoa/soundbus/i2sbus/i2sbus-core.c
... | ... | @@ -159,7 +159,7 @@ |
159 | 159 | struct i2sbus_dev *dev; |
160 | 160 | struct device_node *child = NULL, *sound = NULL; |
161 | 161 | struct resource *r; |
162 | - int i, layout = 0, rlen; | |
162 | + int i, layout = 0, rlen, ok = force; | |
163 | 163 | static const char *rnames[] = { "i2sbus: %s (control)", |
164 | 164 | "i2sbus: %s (tx)", |
165 | 165 | "i2sbus: %s (rx)" }; |
... | ... | @@ -192,7 +192,7 @@ |
192 | 192 | layout = *layout_id; |
193 | 193 | snprintf(dev->sound.modalias, 32, |
194 | 194 | "sound-layout-%d", layout); |
195 | - force = 1; | |
195 | + ok = 1; | |
196 | 196 | } |
197 | 197 | } |
198 | 198 | /* for the time being, until we can handle non-layout-id |
... | ... | @@ -201,7 +201,7 @@ |
201 | 201 | * When there are two i2s busses and only one has a layout-id, |
202 | 202 | * then this depends on the order, but that isn't important |
203 | 203 | * either as the second one in that case is just a modem. */ |
204 | - if (!force) { | |
204 | + if (!ok) { | |
205 | 205 | kfree(dev); |
206 | 206 | return -ENODEV; |
207 | 207 | } |
sound/arm/pxa2xx-pcm-lib.c
sound/pci/hda/patch_realtek.c
... | ... | @@ -4996,7 +4996,7 @@ |
4996 | 4996 | */ |
4997 | 4997 | |
4998 | 4998 | static int alc260_add_playback_controls(struct alc_spec *spec, hda_nid_t nid, |
4999 | - const char *pfx) | |
4999 | + const char *pfx, int *vol_bits) | |
5000 | 5000 | { |
5001 | 5001 | hda_nid_t nid_vol; |
5002 | 5002 | unsigned long vol_val, sw_val; |
... | ... | @@ -5018,10 +5018,14 @@ |
5018 | 5018 | } else |
5019 | 5019 | return 0; /* N/A */ |
5020 | 5020 | |
5021 | - snprintf(name, sizeof(name), "%s Playback Volume", pfx); | |
5022 | - err = add_control(spec, ALC_CTL_WIDGET_VOL, name, vol_val); | |
5023 | - if (err < 0) | |
5024 | - return err; | |
5021 | + if (!(*vol_bits & (1 << nid_vol))) { | |
5022 | + /* first control for the volume widget */ | |
5023 | + snprintf(name, sizeof(name), "%s Playback Volume", pfx); | |
5024 | + err = add_control(spec, ALC_CTL_WIDGET_VOL, name, vol_val); | |
5025 | + if (err < 0) | |
5026 | + return err; | |
5027 | + *vol_bits |= (1 << nid_vol); | |
5028 | + } | |
5025 | 5029 | snprintf(name, sizeof(name), "%s Playback Switch", pfx); |
5026 | 5030 | err = add_control(spec, ALC_CTL_WIDGET_MUTE, name, sw_val); |
5027 | 5031 | if (err < 0) |
... | ... | @@ -5035,6 +5039,7 @@ |
5035 | 5039 | { |
5036 | 5040 | hda_nid_t nid; |
5037 | 5041 | int err; |
5042 | + int vols = 0; | |
5038 | 5043 | |
5039 | 5044 | spec->multiout.num_dacs = 1; |
5040 | 5045 | spec->multiout.dac_nids = spec->private_dac_nids; |
5041 | 5046 | |
5042 | 5047 | |
... | ... | @@ -5042,21 +5047,22 @@ |
5042 | 5047 | |
5043 | 5048 | nid = cfg->line_out_pins[0]; |
5044 | 5049 | if (nid) { |
5045 | - err = alc260_add_playback_controls(spec, nid, "Front"); | |
5050 | + err = alc260_add_playback_controls(spec, nid, "Front", &vols); | |
5046 | 5051 | if (err < 0) |
5047 | 5052 | return err; |
5048 | 5053 | } |
5049 | 5054 | |
5050 | 5055 | nid = cfg->speaker_pins[0]; |
5051 | 5056 | if (nid) { |
5052 | - err = alc260_add_playback_controls(spec, nid, "Speaker"); | |
5057 | + err = alc260_add_playback_controls(spec, nid, "Speaker", &vols); | |
5053 | 5058 | if (err < 0) |
5054 | 5059 | return err; |
5055 | 5060 | } |
5056 | 5061 | |
5057 | 5062 | nid = cfg->hp_pins[0]; |
5058 | 5063 | if (nid) { |
5059 | - err = alc260_add_playback_controls(spec, nid, "Headphone"); | |
5064 | + err = alc260_add_playback_controls(spec, nid, "Headphone", | |
5065 | + &vols); | |
5060 | 5066 | if (err < 0) |
5061 | 5067 | return err; |
5062 | 5068 | } |
sound/pci/hda/patch_sigmatel.c
... | ... | @@ -1282,7 +1282,7 @@ |
1282 | 1282 | return err; |
1283 | 1283 | spec->multiout.share_spdif = 1; |
1284 | 1284 | } |
1285 | - if (spec->dig_in_nid && (!spec->gpio_dir & 0x01)) { | |
1285 | + if (spec->dig_in_nid && !(spec->gpio_dir & 0x01)) { | |
1286 | 1286 | err = snd_hda_create_spdif_in_ctls(codec, spec->dig_in_nid); |
1287 | 1287 | if (err < 0) |
1288 | 1288 | return err; |
sound/soc/codecs/tlv320aic3x.c
... | ... | @@ -863,17 +863,21 @@ |
863 | 863 | return -EINVAL; |
864 | 864 | } |
865 | 865 | |
866 | - /* interface format */ | |
867 | - switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) { | |
868 | - case SND_SOC_DAIFMT_I2S: | |
866 | + /* | |
867 | + * match both interface format and signal polarities since they | |
868 | + * are fixed | |
869 | + */ | |
870 | + switch (fmt & (SND_SOC_DAIFMT_FORMAT_MASK | | |
871 | + SND_SOC_DAIFMT_INV_MASK)) { | |
872 | + case (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF): | |
869 | 873 | break; |
870 | - case SND_SOC_DAIFMT_DSP_A: | |
874 | + case (SND_SOC_DAIFMT_DSP_B | SND_SOC_DAIFMT_IB_NF): | |
871 | 875 | iface_breg |= (0x01 << 6); |
872 | 876 | break; |
873 | - case SND_SOC_DAIFMT_RIGHT_J: | |
877 | + case (SND_SOC_DAIFMT_RIGHT_J | SND_SOC_DAIFMT_NB_NF): | |
874 | 878 | iface_breg |= (0x02 << 6); |
875 | 879 | break; |
876 | - case SND_SOC_DAIFMT_LEFT_J: | |
880 | + case (SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_NB_NF): | |
877 | 881 | iface_breg |= (0x03 << 6); |
878 | 882 | break; |
879 | 883 | default: |
sound/soc/omap/omap-mcbsp.c
... | ... | @@ -265,7 +265,7 @@ |
265 | 265 | break; |
266 | 266 | case SND_SOC_DAIFMT_DSP_A: |
267 | 267 | regs->srgr2 |= FPER(wlen * 2 - 1); |
268 | - regs->srgr1 |= FWID(0); | |
268 | + regs->srgr1 |= FWID(wlen * 2 - 2); | |
269 | 269 | break; |
270 | 270 | } |
271 | 271 | |
... | ... | @@ -284,7 +284,6 @@ |
284 | 284 | { |
285 | 285 | struct omap_mcbsp_data *mcbsp_data = to_mcbsp(cpu_dai->private_data); |
286 | 286 | struct omap_mcbsp_reg_cfg *regs = &mcbsp_data->regs; |
287 | - unsigned int temp_fmt = fmt; | |
288 | 287 | |
289 | 288 | if (mcbsp_data->configured) |
290 | 289 | return 0; |
... | ... | @@ -307,8 +306,6 @@ |
307 | 306 | /* 0-bit data delay */ |
308 | 307 | regs->rcr2 |= RDATDLY(0); |
309 | 308 | regs->xcr2 |= XDATDLY(0); |
310 | - /* Invert bit clock and FS polarity configuration for DSP_A */ | |
311 | - temp_fmt ^= SND_SOC_DAIFMT_IB_IF; | |
312 | 309 | break; |
313 | 310 | default: |
314 | 311 | /* Unsupported data format */ |
... | ... | @@ -332,7 +329,7 @@ |
332 | 329 | } |
333 | 330 | |
334 | 331 | /* Set bit clock (CLKX/CLKR) and FS polarities */ |
335 | - switch (temp_fmt & SND_SOC_DAIFMT_INV_MASK) { | |
332 | + switch (fmt & SND_SOC_DAIFMT_INV_MASK) { | |
336 | 333 | case SND_SOC_DAIFMT_NB_NF: |
337 | 334 | /* |
338 | 335 | * Normal BCLK + FS. |