Commit bfd4e66b8d0dfcdbe3f5ccff45757f098bdbb26e

Authored by Takashi Iwai

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
... ... @@ -194,7 +194,7 @@
194 194 goto out;
195 195  
196 196 ret = -ENOMEM;
197   - rtd = kmalloc(sizeof(*rtd), GFP_KERNEL);
  197 + rtd = kzalloc(sizeof(*rtd), GFP_KERNEL);
198 198 if (!rtd)
199 199 goto out;
200 200 rtd->dma_desc_array =
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.