Merge branches 'topic/asoc', 'topic/misc-fixes' and 'topic/hda' into for-linus
This commit is contained in:
commit
bfd4e66b8d
6 changed files with 31 additions and 24 deletions
|
@ -159,7 +159,7 @@ static int i2sbus_add_dev(struct macio_dev *macio,
|
||||||
struct i2sbus_dev *dev;
|
struct i2sbus_dev *dev;
|
||||||
struct device_node *child = NULL, *sound = NULL;
|
struct device_node *child = NULL, *sound = NULL;
|
||||||
struct resource *r;
|
struct resource *r;
|
||||||
int i, layout = 0, rlen;
|
int i, layout = 0, rlen, ok = force;
|
||||||
static const char *rnames[] = { "i2sbus: %s (control)",
|
static const char *rnames[] = { "i2sbus: %s (control)",
|
||||||
"i2sbus: %s (tx)",
|
"i2sbus: %s (tx)",
|
||||||
"i2sbus: %s (rx)" };
|
"i2sbus: %s (rx)" };
|
||||||
|
@ -192,7 +192,7 @@ static int i2sbus_add_dev(struct macio_dev *macio,
|
||||||
layout = *layout_id;
|
layout = *layout_id;
|
||||||
snprintf(dev->sound.modalias, 32,
|
snprintf(dev->sound.modalias, 32,
|
||||||
"sound-layout-%d", layout);
|
"sound-layout-%d", layout);
|
||||||
force = 1;
|
ok = 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* for the time being, until we can handle non-layout-id
|
/* for the time being, until we can handle non-layout-id
|
||||||
|
@ -201,7 +201,7 @@ static int i2sbus_add_dev(struct macio_dev *macio,
|
||||||
* When there are two i2s busses and only one has a layout-id,
|
* When there are two i2s busses and only one has a layout-id,
|
||||||
* then this depends on the order, but that isn't important
|
* then this depends on the order, but that isn't important
|
||||||
* either as the second one in that case is just a modem. */
|
* either as the second one in that case is just a modem. */
|
||||||
if (!force) {
|
if (!ok) {
|
||||||
kfree(dev);
|
kfree(dev);
|
||||||
return -ENODEV;
|
return -ENODEV;
|
||||||
}
|
}
|
||||||
|
|
|
@ -194,7 +194,7 @@ int __pxa2xx_pcm_open(struct snd_pcm_substream *substream)
|
||||||
goto out;
|
goto out;
|
||||||
|
|
||||||
ret = -ENOMEM;
|
ret = -ENOMEM;
|
||||||
rtd = kmalloc(sizeof(*rtd), GFP_KERNEL);
|
rtd = kzalloc(sizeof(*rtd), GFP_KERNEL);
|
||||||
if (!rtd)
|
if (!rtd)
|
||||||
goto out;
|
goto out;
|
||||||
rtd->dma_desc_array =
|
rtd->dma_desc_array =
|
||||||
|
|
|
@ -4996,7 +4996,7 @@ static struct hda_verb alc260_test_init_verbs[] = {
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int alc260_add_playback_controls(struct alc_spec *spec, hda_nid_t nid,
|
static int alc260_add_playback_controls(struct alc_spec *spec, hda_nid_t nid,
|
||||||
const char *pfx)
|
const char *pfx, int *vol_bits)
|
||||||
{
|
{
|
||||||
hda_nid_t nid_vol;
|
hda_nid_t nid_vol;
|
||||||
unsigned long vol_val, sw_val;
|
unsigned long vol_val, sw_val;
|
||||||
|
@ -5018,10 +5018,14 @@ static int alc260_add_playback_controls(struct alc_spec *spec, hda_nid_t nid,
|
||||||
} else
|
} else
|
||||||
return 0; /* N/A */
|
return 0; /* N/A */
|
||||||
|
|
||||||
|
if (!(*vol_bits & (1 << nid_vol))) {
|
||||||
|
/* first control for the volume widget */
|
||||||
snprintf(name, sizeof(name), "%s Playback Volume", pfx);
|
snprintf(name, sizeof(name), "%s Playback Volume", pfx);
|
||||||
err = add_control(spec, ALC_CTL_WIDGET_VOL, name, vol_val);
|
err = add_control(spec, ALC_CTL_WIDGET_VOL, name, vol_val);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
return err;
|
return err;
|
||||||
|
*vol_bits |= (1 << nid_vol);
|
||||||
|
}
|
||||||
snprintf(name, sizeof(name), "%s Playback Switch", pfx);
|
snprintf(name, sizeof(name), "%s Playback Switch", pfx);
|
||||||
err = add_control(spec, ALC_CTL_WIDGET_MUTE, name, sw_val);
|
err = add_control(spec, ALC_CTL_WIDGET_MUTE, name, sw_val);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
|
@ -5035,6 +5039,7 @@ static int alc260_auto_create_multi_out_ctls(struct alc_spec *spec,
|
||||||
{
|
{
|
||||||
hda_nid_t nid;
|
hda_nid_t nid;
|
||||||
int err;
|
int err;
|
||||||
|
int vols = 0;
|
||||||
|
|
||||||
spec->multiout.num_dacs = 1;
|
spec->multiout.num_dacs = 1;
|
||||||
spec->multiout.dac_nids = spec->private_dac_nids;
|
spec->multiout.dac_nids = spec->private_dac_nids;
|
||||||
|
@ -5042,21 +5047,22 @@ static int alc260_auto_create_multi_out_ctls(struct alc_spec *spec,
|
||||||
|
|
||||||
nid = cfg->line_out_pins[0];
|
nid = cfg->line_out_pins[0];
|
||||||
if (nid) {
|
if (nid) {
|
||||||
err = alc260_add_playback_controls(spec, nid, "Front");
|
err = alc260_add_playback_controls(spec, nid, "Front", &vols);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
nid = cfg->speaker_pins[0];
|
nid = cfg->speaker_pins[0];
|
||||||
if (nid) {
|
if (nid) {
|
||||||
err = alc260_add_playback_controls(spec, nid, "Speaker");
|
err = alc260_add_playback_controls(spec, nid, "Speaker", &vols);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
nid = cfg->hp_pins[0];
|
nid = cfg->hp_pins[0];
|
||||||
if (nid) {
|
if (nid) {
|
||||||
err = alc260_add_playback_controls(spec, nid, "Headphone");
|
err = alc260_add_playback_controls(spec, nid, "Headphone",
|
||||||
|
&vols);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1282,7 +1282,7 @@ static int stac92xx_build_controls(struct hda_codec *codec)
|
||||||
return err;
|
return err;
|
||||||
spec->multiout.share_spdif = 1;
|
spec->multiout.share_spdif = 1;
|
||||||
}
|
}
|
||||||
if (spec->dig_in_nid && (!spec->gpio_dir & 0x01)) {
|
if (spec->dig_in_nid && !(spec->gpio_dir & 0x01)) {
|
||||||
err = snd_hda_create_spdif_in_ctls(codec, spec->dig_in_nid);
|
err = snd_hda_create_spdif_in_ctls(codec, spec->dig_in_nid);
|
||||||
if (err < 0)
|
if (err < 0)
|
||||||
return err;
|
return err;
|
||||||
|
|
|
@ -863,17 +863,21 @@ static int aic3x_set_dai_fmt(struct snd_soc_dai *codec_dai,
|
||||||
return -EINVAL;
|
return -EINVAL;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* interface format */
|
/*
|
||||||
switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
|
* match both interface format and signal polarities since they
|
||||||
case SND_SOC_DAIFMT_I2S:
|
* are fixed
|
||||||
|
*/
|
||||||
|
switch (fmt & (SND_SOC_DAIFMT_FORMAT_MASK |
|
||||||
|
SND_SOC_DAIFMT_INV_MASK)) {
|
||||||
|
case (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF):
|
||||||
break;
|
break;
|
||||||
case SND_SOC_DAIFMT_DSP_A:
|
case (SND_SOC_DAIFMT_DSP_B | SND_SOC_DAIFMT_IB_NF):
|
||||||
iface_breg |= (0x01 << 6);
|
iface_breg |= (0x01 << 6);
|
||||||
break;
|
break;
|
||||||
case SND_SOC_DAIFMT_RIGHT_J:
|
case (SND_SOC_DAIFMT_RIGHT_J | SND_SOC_DAIFMT_NB_NF):
|
||||||
iface_breg |= (0x02 << 6);
|
iface_breg |= (0x02 << 6);
|
||||||
break;
|
break;
|
||||||
case SND_SOC_DAIFMT_LEFT_J:
|
case (SND_SOC_DAIFMT_LEFT_J | SND_SOC_DAIFMT_NB_NF):
|
||||||
iface_breg |= (0x03 << 6);
|
iface_breg |= (0x03 << 6);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -265,7 +265,7 @@ static int omap_mcbsp_dai_hw_params(struct snd_pcm_substream *substream,
|
||||||
break;
|
break;
|
||||||
case SND_SOC_DAIFMT_DSP_A:
|
case SND_SOC_DAIFMT_DSP_A:
|
||||||
regs->srgr2 |= FPER(wlen * 2 - 1);
|
regs->srgr2 |= FPER(wlen * 2 - 1);
|
||||||
regs->srgr1 |= FWID(0);
|
regs->srgr1 |= FWID(wlen * 2 - 2);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -284,7 +284,6 @@ static int omap_mcbsp_dai_set_dai_fmt(struct snd_soc_dai *cpu_dai,
|
||||||
{
|
{
|
||||||
struct omap_mcbsp_data *mcbsp_data = to_mcbsp(cpu_dai->private_data);
|
struct omap_mcbsp_data *mcbsp_data = to_mcbsp(cpu_dai->private_data);
|
||||||
struct omap_mcbsp_reg_cfg *regs = &mcbsp_data->regs;
|
struct omap_mcbsp_reg_cfg *regs = &mcbsp_data->regs;
|
||||||
unsigned int temp_fmt = fmt;
|
|
||||||
|
|
||||||
if (mcbsp_data->configured)
|
if (mcbsp_data->configured)
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -307,8 +306,6 @@ static int omap_mcbsp_dai_set_dai_fmt(struct snd_soc_dai *cpu_dai,
|
||||||
/* 0-bit data delay */
|
/* 0-bit data delay */
|
||||||
regs->rcr2 |= RDATDLY(0);
|
regs->rcr2 |= RDATDLY(0);
|
||||||
regs->xcr2 |= XDATDLY(0);
|
regs->xcr2 |= XDATDLY(0);
|
||||||
/* Invert bit clock and FS polarity configuration for DSP_A */
|
|
||||||
temp_fmt ^= SND_SOC_DAIFMT_IB_IF;
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
/* Unsupported data format */
|
/* Unsupported data format */
|
||||||
|
@ -332,7 +329,7 @@ static int omap_mcbsp_dai_set_dai_fmt(struct snd_soc_dai *cpu_dai,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Set bit clock (CLKX/CLKR) and FS polarities */
|
/* Set bit clock (CLKX/CLKR) and FS polarities */
|
||||||
switch (temp_fmt & SND_SOC_DAIFMT_INV_MASK) {
|
switch (fmt & SND_SOC_DAIFMT_INV_MASK) {
|
||||||
case SND_SOC_DAIFMT_NB_NF:
|
case SND_SOC_DAIFMT_NB_NF:
|
||||||
/*
|
/*
|
||||||
* Normal BCLK + FS.
|
* Normal BCLK + FS.
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue