sound fixes for v3.10-rc2
A fairly calm update at this time, as seen in the short log, only one fix per person: including, - a few ASoC fixes (da7213 dmic, ux500 AD slot, wm0010 error path) - a copule of HD-audio fixes - a few other misc fixes (MIPS allmodconfig, proc output in usb, old PowerBook support) -----BEGIN PGP SIGNATURE----- Version: GnuPG v2.0.19 (GNU/Linux) iQIcBAABAgAGBQJRlf1dAAoJEGwxgFQ9KSmkkN4P/R+JSjE7igXAARpCzBZUNHRX XpTEs/6wSHVujo5KNhe3KN+F/1WHxVJu8x9kPIkZCGmWvLRS/y1XKgDgJjqRPYqO Sx47G6ZIXDyn7KUFnEOZnE7j9kmwxezL4TE9k4vMfxGPINVNX8hvSpsXMwwCtZZL 1IUFbV305yvjrcerffQBUVhLcPb8Z3/rYmEZsOD0ITzoww6Z2K7bNPqDEKYlav0r cuVLRX1Tc38j4BdHBsuaOmTlYdB7UWjfmYfVhAhyDu72F46RUBQhoncGyfyayvg4 uqkSKBRCM7APjuc5zYyO70C5ZB3dt8EXuF45/Np6rllqL9luNYsqFXO/TtrfFoz/ PFCxWW89+203GEcAn5IMn2k/eDX+dv9V0mc+TuhvGXC+Dls/DPz8o/BZ1ELnqKOu y+YENGIIA72OteP2JEi8Q0VmmRh9PN0Eg2b72AnOyrSzs4+8s8I09Nt86I7jN/ya ROLlR7B2cG+Zop58mqMceN3GAs9UvWLzKAeVhxVf1+UOFSiJsmcmiH25Rj72uKOG yRW36ShCxu0xMr+RgiiGI1jdpqzYLQ0aEVxTpnexIi+ibGbmns5GT+z+VMJfT9Uz 5QfXmJd6kxeyomjdiCzqT42wEJsFgRNoNjL+NPLFPPWKZ3PrAEQl3/hAX4Qe4g2h WAwJn9WrjLuWuRxVErCe =p+Ok -----END PGP SIGNATURE----- Merge tag 'sound-3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound Pull sound fixes from Takashi Iwai: "A fairly calm update at this time, as seen in the short log, only one fix per person: including, - a few ASoC fixes (da7213 dmic, ux500 AD slot, wm0010 error path) - a copule of HD-audio fixes - a few other misc fixes (MIPS allmodconfig, proc output in usb, old PowerBook support)" * tag 'sound-3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: ALSA: usb-audio: proc: use found syncmaxsize to determine feedback format ALSA: hda - Add headset mic support for another Dell machine ALSA: snd-aoa: Add a layout entry for PowerBook6,5 ALSA: hda - Check the activity of the NID to be powered down sound: Fix make allmodconfig on MIPS correctly ASoC: da7213: Fix setting dmic_samplephase and dmic_clk_rate ASoC: ux500: Swap even/odd AD slot definitions ASoC: wm0010: fix error return code in wm0010_boot()
This commit is contained in:
commit
8f710dd34a
|
@ -113,6 +113,7 @@ MODULE_ALIAS("sound-layout-100");
|
||||||
MODULE_ALIAS("aoa-device-id-14");
|
MODULE_ALIAS("aoa-device-id-14");
|
||||||
MODULE_ALIAS("aoa-device-id-22");
|
MODULE_ALIAS("aoa-device-id-22");
|
||||||
MODULE_ALIAS("aoa-device-id-35");
|
MODULE_ALIAS("aoa-device-id-35");
|
||||||
|
MODULE_ALIAS("aoa-device-id-44");
|
||||||
|
|
||||||
/* onyx with all but microphone connected */
|
/* onyx with all but microphone connected */
|
||||||
static struct codec_connection onyx_connections_nomic[] = {
|
static struct codec_connection onyx_connections_nomic[] = {
|
||||||
|
@ -361,6 +362,13 @@ static struct layout layouts[] = {
|
||||||
.connections = tas_connections_nolineout,
|
.connections = tas_connections_nolineout,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
/* PowerBook6,5 */
|
||||||
|
{ .device_id = 44,
|
||||||
|
.codecs[0] = {
|
||||||
|
.name = "tas",
|
||||||
|
.connections = tas_connections_all,
|
||||||
|
},
|
||||||
|
},
|
||||||
/* PowerBook6,7 */
|
/* PowerBook6,7 */
|
||||||
{ .layout_id = 80,
|
{ .layout_id = 80,
|
||||||
.codecs[0] = {
|
.codecs[0] = {
|
||||||
|
|
|
@ -200,7 +200,8 @@ static int i2sbus_add_dev(struct macio_dev *macio,
|
||||||
* We probably cannot handle all device-id machines,
|
* We probably cannot handle all device-id machines,
|
||||||
* so restrict to those we do handle for now.
|
* so restrict to those we do handle for now.
|
||||||
*/
|
*/
|
||||||
if (id && (*id == 22 || *id == 14 || *id == 35)) {
|
if (id && (*id == 22 || *id == 14 || *id == 35 ||
|
||||||
|
*id == 44)) {
|
||||||
snprintf(dev->sound.modalias, 32,
|
snprintf(dev->sound.modalias, 32,
|
||||||
"aoa-device-id-%d", *id);
|
"aoa-device-id-%d", *id);
|
||||||
ok = 1;
|
ok = 1;
|
||||||
|
|
|
@ -250,7 +250,7 @@ config MSND_FIFOSIZE
|
||||||
menuconfig SOUND_OSS
|
menuconfig SOUND_OSS
|
||||||
tristate "OSS sound modules"
|
tristate "OSS sound modules"
|
||||||
depends on ISA_DMA_API && VIRT_TO_BUS
|
depends on ISA_DMA_API && VIRT_TO_BUS
|
||||||
depends on !ISA_DMA_SUPPORT_BROKEN
|
depends on !GENERIC_ISA_DMA_SUPPORT_BROKEN
|
||||||
help
|
help
|
||||||
OSS is the Open Sound System suite of sound card drivers. They make
|
OSS is the Open Sound System suite of sound card drivers. They make
|
||||||
sound programming easier since they provide a common API. Say Y or
|
sound programming easier since they provide a common API. Say Y or
|
||||||
|
|
|
@ -606,6 +606,10 @@ static bool is_active_nid(struct hda_codec *codec, hda_nid_t nid,
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* check whether the NID is referred by any active paths */
|
||||||
|
#define is_active_nid_for_any(codec, nid) \
|
||||||
|
is_active_nid(codec, nid, HDA_OUTPUT, 0)
|
||||||
|
|
||||||
/* get the default amp value for the target state */
|
/* get the default amp value for the target state */
|
||||||
static int get_amp_val_to_activate(struct hda_codec *codec, hda_nid_t nid,
|
static int get_amp_val_to_activate(struct hda_codec *codec, hda_nid_t nid,
|
||||||
int dir, unsigned int caps, bool enable)
|
int dir, unsigned int caps, bool enable)
|
||||||
|
@ -759,7 +763,8 @@ static void path_power_down_sync(struct hda_codec *codec, struct nid_path *path)
|
||||||
|
|
||||||
for (i = 0; i < path->depth; i++) {
|
for (i = 0; i < path->depth; i++) {
|
||||||
hda_nid_t nid = path->path[i];
|
hda_nid_t nid = path->path[i];
|
||||||
if (!snd_hda_check_power_state(codec, nid, AC_PWRST_D3)) {
|
if (!snd_hda_check_power_state(codec, nid, AC_PWRST_D3) &&
|
||||||
|
!is_active_nid_for_any(codec, nid)) {
|
||||||
snd_hda_codec_write(codec, nid, 0,
|
snd_hda_codec_write(codec, nid, 0,
|
||||||
AC_VERB_SET_POWER_STATE,
|
AC_VERB_SET_POWER_STATE,
|
||||||
AC_PWRST_D3);
|
AC_PWRST_D3);
|
||||||
|
@ -4157,7 +4162,7 @@ static unsigned int snd_hda_gen_path_power_filter(struct hda_codec *codec,
|
||||||
return power_state;
|
return power_state;
|
||||||
if (get_wcaps_type(get_wcaps(codec, nid)) >= AC_WID_POWER)
|
if (get_wcaps_type(get_wcaps(codec, nid)) >= AC_WID_POWER)
|
||||||
return power_state;
|
return power_state;
|
||||||
if (is_active_nid(codec, nid, HDA_OUTPUT, 0))
|
if (is_active_nid_for_any(codec, nid))
|
||||||
return power_state;
|
return power_state;
|
||||||
return AC_PWRST_D3;
|
return AC_PWRST_D3;
|
||||||
}
|
}
|
||||||
|
|
|
@ -3482,6 +3482,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
|
||||||
SND_PCI_QUIRK(0x1028, 0x05c9, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
|
SND_PCI_QUIRK(0x1028, 0x05c9, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
|
||||||
SND_PCI_QUIRK(0x1028, 0x05ca, "Dell", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE),
|
SND_PCI_QUIRK(0x1028, 0x05ca, "Dell", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE),
|
||||||
SND_PCI_QUIRK(0x1028, 0x05cb, "Dell", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE),
|
SND_PCI_QUIRK(0x1028, 0x05cb, "Dell", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE),
|
||||||
|
SND_PCI_QUIRK(0x1028, 0x05de, "Dell", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE),
|
||||||
SND_PCI_QUIRK(0x1028, 0x05e9, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
|
SND_PCI_QUIRK(0x1028, 0x05e9, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
|
||||||
SND_PCI_QUIRK(0x1028, 0x05ea, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
|
SND_PCI_QUIRK(0x1028, 0x05ea, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
|
||||||
SND_PCI_QUIRK(0x1028, 0x05eb, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
|
SND_PCI_QUIRK(0x1028, 0x05eb, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE),
|
||||||
|
|
|
@ -348,25 +348,25 @@
|
||||||
|
|
||||||
/* AB8500_ADSLOTSELX */
|
/* AB8500_ADSLOTSELX */
|
||||||
#define AB8500_ADSLOTSELX_AD_OUT1_TO_SLOT_ODD 0x00
|
#define AB8500_ADSLOTSELX_AD_OUT1_TO_SLOT_ODD 0x00
|
||||||
#define AB8500_ADSLOTSELX_AD_OUT2_TO_SLOT_ODD 0x01
|
#define AB8500_ADSLOTSELX_AD_OUT2_TO_SLOT_ODD 0x10
|
||||||
#define AB8500_ADSLOTSELX_AD_OUT3_TO_SLOT_ODD 0x02
|
#define AB8500_ADSLOTSELX_AD_OUT3_TO_SLOT_ODD 0x20
|
||||||
#define AB8500_ADSLOTSELX_AD_OUT4_TO_SLOT_ODD 0x03
|
#define AB8500_ADSLOTSELX_AD_OUT4_TO_SLOT_ODD 0x30
|
||||||
#define AB8500_ADSLOTSELX_AD_OUT5_TO_SLOT_ODD 0x04
|
#define AB8500_ADSLOTSELX_AD_OUT5_TO_SLOT_ODD 0x40
|
||||||
#define AB8500_ADSLOTSELX_AD_OUT6_TO_SLOT_ODD 0x05
|
#define AB8500_ADSLOTSELX_AD_OUT6_TO_SLOT_ODD 0x50
|
||||||
#define AB8500_ADSLOTSELX_AD_OUT7_TO_SLOT_ODD 0x06
|
#define AB8500_ADSLOTSELX_AD_OUT7_TO_SLOT_ODD 0x60
|
||||||
#define AB8500_ADSLOTSELX_AD_OUT8_TO_SLOT_ODD 0x07
|
#define AB8500_ADSLOTSELX_AD_OUT8_TO_SLOT_ODD 0x70
|
||||||
#define AB8500_ADSLOTSELX_ZEROES_TO_SLOT_ODD 0x08
|
#define AB8500_ADSLOTSELX_ZEROES_TO_SLOT_ODD 0x80
|
||||||
#define AB8500_ADSLOTSELX_TRISTATE_TO_SLOT_ODD 0x0F
|
#define AB8500_ADSLOTSELX_TRISTATE_TO_SLOT_ODD 0xF0
|
||||||
#define AB8500_ADSLOTSELX_AD_OUT1_TO_SLOT_EVEN 0x00
|
#define AB8500_ADSLOTSELX_AD_OUT1_TO_SLOT_EVEN 0x00
|
||||||
#define AB8500_ADSLOTSELX_AD_OUT2_TO_SLOT_EVEN 0x10
|
#define AB8500_ADSLOTSELX_AD_OUT2_TO_SLOT_EVEN 0x01
|
||||||
#define AB8500_ADSLOTSELX_AD_OUT3_TO_SLOT_EVEN 0x20
|
#define AB8500_ADSLOTSELX_AD_OUT3_TO_SLOT_EVEN 0x02
|
||||||
#define AB8500_ADSLOTSELX_AD_OUT4_TO_SLOT_EVEN 0x30
|
#define AB8500_ADSLOTSELX_AD_OUT4_TO_SLOT_EVEN 0x03
|
||||||
#define AB8500_ADSLOTSELX_AD_OUT5_TO_SLOT_EVEN 0x40
|
#define AB8500_ADSLOTSELX_AD_OUT5_TO_SLOT_EVEN 0x04
|
||||||
#define AB8500_ADSLOTSELX_AD_OUT6_TO_SLOT_EVEN 0x50
|
#define AB8500_ADSLOTSELX_AD_OUT6_TO_SLOT_EVEN 0x05
|
||||||
#define AB8500_ADSLOTSELX_AD_OUT7_TO_SLOT_EVEN 0x60
|
#define AB8500_ADSLOTSELX_AD_OUT7_TO_SLOT_EVEN 0x06
|
||||||
#define AB8500_ADSLOTSELX_AD_OUT8_TO_SLOT_EVEN 0x70
|
#define AB8500_ADSLOTSELX_AD_OUT8_TO_SLOT_EVEN 0x07
|
||||||
#define AB8500_ADSLOTSELX_ZEROES_TO_SLOT_EVEN 0x80
|
#define AB8500_ADSLOTSELX_ZEROES_TO_SLOT_EVEN 0x08
|
||||||
#define AB8500_ADSLOTSELX_TRISTATE_TO_SLOT_EVEN 0xF0
|
#define AB8500_ADSLOTSELX_TRISTATE_TO_SLOT_EVEN 0x0F
|
||||||
#define AB8500_ADSLOTSELX_EVEN_SHIFT 0
|
#define AB8500_ADSLOTSELX_EVEN_SHIFT 0
|
||||||
#define AB8500_ADSLOTSELX_ODD_SHIFT 4
|
#define AB8500_ADSLOTSELX_ODD_SHIFT 4
|
||||||
|
|
||||||
|
|
|
@ -1488,17 +1488,17 @@ static int da7213_probe(struct snd_soc_codec *codec)
|
||||||
DA7213_DMIC_DATA_SEL_SHIFT);
|
DA7213_DMIC_DATA_SEL_SHIFT);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
switch (pdata->dmic_data_sel) {
|
switch (pdata->dmic_samplephase) {
|
||||||
case DA7213_DMIC_SAMPLE_ON_CLKEDGE:
|
case DA7213_DMIC_SAMPLE_ON_CLKEDGE:
|
||||||
case DA7213_DMIC_SAMPLE_BETWEEN_CLKEDGE:
|
case DA7213_DMIC_SAMPLE_BETWEEN_CLKEDGE:
|
||||||
dmic_cfg |= (pdata->dmic_data_sel <<
|
dmic_cfg |= (pdata->dmic_samplephase <<
|
||||||
DA7213_DMIC_SAMPLEPHASE_SHIFT);
|
DA7213_DMIC_SAMPLEPHASE_SHIFT);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
switch (pdata->dmic_data_sel) {
|
switch (pdata->dmic_clk_rate) {
|
||||||
case DA7213_DMIC_CLK_3_0MHZ:
|
case DA7213_DMIC_CLK_3_0MHZ:
|
||||||
case DA7213_DMIC_CLK_1_5MHZ:
|
case DA7213_DMIC_CLK_1_5MHZ:
|
||||||
dmic_cfg |= (pdata->dmic_data_sel <<
|
dmic_cfg |= (pdata->dmic_clk_rate <<
|
||||||
DA7213_DMIC_CLK_RATE_SHIFT);
|
DA7213_DMIC_CLK_RATE_SHIFT);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -667,6 +667,7 @@ static int wm0010_boot(struct snd_soc_codec *codec)
|
||||||
/* On wm0010 only the CLKCTRL1 value is used */
|
/* On wm0010 only the CLKCTRL1 value is used */
|
||||||
pll_rec.clkctrl1 = wm0010->pll_clkctrl1;
|
pll_rec.clkctrl1 = wm0010->pll_clkctrl1;
|
||||||
|
|
||||||
|
ret = -ENOMEM;
|
||||||
len = pll_rec.length + 8;
|
len = pll_rec.length + 8;
|
||||||
out = kzalloc(len, GFP_KERNEL);
|
out = kzalloc(len, GFP_KERNEL);
|
||||||
if (!out) {
|
if (!out) {
|
||||||
|
|
|
@ -116,21 +116,22 @@ static void proc_dump_substream_formats(struct snd_usb_substream *subs, struct s
|
||||||
}
|
}
|
||||||
|
|
||||||
static void proc_dump_ep_status(struct snd_usb_substream *subs,
|
static void proc_dump_ep_status(struct snd_usb_substream *subs,
|
||||||
struct snd_usb_endpoint *ep,
|
struct snd_usb_endpoint *data_ep,
|
||||||
|
struct snd_usb_endpoint *sync_ep,
|
||||||
struct snd_info_buffer *buffer)
|
struct snd_info_buffer *buffer)
|
||||||
{
|
{
|
||||||
if (!ep)
|
if (!data_ep)
|
||||||
return;
|
return;
|
||||||
snd_iprintf(buffer, " Packet Size = %d\n", ep->curpacksize);
|
snd_iprintf(buffer, " Packet Size = %d\n", data_ep->curpacksize);
|
||||||
snd_iprintf(buffer, " Momentary freq = %u Hz (%#x.%04x)\n",
|
snd_iprintf(buffer, " Momentary freq = %u Hz (%#x.%04x)\n",
|
||||||
subs->speed == USB_SPEED_FULL
|
subs->speed == USB_SPEED_FULL
|
||||||
? get_full_speed_hz(ep->freqm)
|
? get_full_speed_hz(data_ep->freqm)
|
||||||
: get_high_speed_hz(ep->freqm),
|
: get_high_speed_hz(data_ep->freqm),
|
||||||
ep->freqm >> 16, ep->freqm & 0xffff);
|
data_ep->freqm >> 16, data_ep->freqm & 0xffff);
|
||||||
if (ep->freqshift != INT_MIN) {
|
if (sync_ep && data_ep->freqshift != INT_MIN) {
|
||||||
int res = 16 - ep->freqshift;
|
int res = 16 - data_ep->freqshift;
|
||||||
snd_iprintf(buffer, " Feedback Format = %d.%d\n",
|
snd_iprintf(buffer, " Feedback Format = %d.%d\n",
|
||||||
(ep->syncmaxsize > 3 ? 32 : 24) - res, res);
|
(sync_ep->syncmaxsize > 3 ? 32 : 24) - res, res);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -140,8 +141,7 @@ static void proc_dump_substream_status(struct snd_usb_substream *subs, struct sn
|
||||||
snd_iprintf(buffer, " Status: Running\n");
|
snd_iprintf(buffer, " Status: Running\n");
|
||||||
snd_iprintf(buffer, " Interface = %d\n", subs->interface);
|
snd_iprintf(buffer, " Interface = %d\n", subs->interface);
|
||||||
snd_iprintf(buffer, " Altset = %d\n", subs->altset_idx);
|
snd_iprintf(buffer, " Altset = %d\n", subs->altset_idx);
|
||||||
proc_dump_ep_status(subs, subs->data_endpoint, buffer);
|
proc_dump_ep_status(subs, subs->data_endpoint, subs->sync_endpoint, buffer);
|
||||||
proc_dump_ep_status(subs, subs->sync_endpoint, buffer);
|
|
||||||
} else {
|
} else {
|
||||||
snd_iprintf(buffer, " Status: Stop\n");
|
snd_iprintf(buffer, " Status: Stop\n");
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue