forked from Minki/linux
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-22");
|
||||
MODULE_ALIAS("aoa-device-id-35");
|
||||
MODULE_ALIAS("aoa-device-id-44");
|
||||
|
||||
/* onyx with all but microphone connected */
|
||||
static struct codec_connection onyx_connections_nomic[] = {
|
||||
@ -361,6 +362,13 @@ static struct layout layouts[] = {
|
||||
.connections = tas_connections_nolineout,
|
||||
},
|
||||
},
|
||||
/* PowerBook6,5 */
|
||||
{ .device_id = 44,
|
||||
.codecs[0] = {
|
||||
.name = "tas",
|
||||
.connections = tas_connections_all,
|
||||
},
|
||||
},
|
||||
/* PowerBook6,7 */
|
||||
{ .layout_id = 80,
|
||||
.codecs[0] = {
|
||||
|
@ -200,7 +200,8 @@ static int i2sbus_add_dev(struct macio_dev *macio,
|
||||
* We probably cannot handle all device-id machines,
|
||||
* 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,
|
||||
"aoa-device-id-%d", *id);
|
||||
ok = 1;
|
||||
|
@ -250,7 +250,7 @@ config MSND_FIFOSIZE
|
||||
menuconfig SOUND_OSS
|
||||
tristate "OSS sound modules"
|
||||
depends on ISA_DMA_API && VIRT_TO_BUS
|
||||
depends on !ISA_DMA_SUPPORT_BROKEN
|
||||
depends on !GENERIC_ISA_DMA_SUPPORT_BROKEN
|
||||
help
|
||||
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
|
||||
|
@ -606,6 +606,10 @@ static bool is_active_nid(struct hda_codec *codec, hda_nid_t nid,
|
||||
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 */
|
||||
static int get_amp_val_to_activate(struct hda_codec *codec, hda_nid_t nid,
|
||||
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++) {
|
||||
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,
|
||||
AC_VERB_SET_POWER_STATE,
|
||||
AC_PWRST_D3);
|
||||
@ -4157,7 +4162,7 @@ static unsigned int snd_hda_gen_path_power_filter(struct hda_codec *codec,
|
||||
return power_state;
|
||||
if (get_wcaps_type(get_wcaps(codec, nid)) >= AC_WID_POWER)
|
||||
return power_state;
|
||||
if (is_active_nid(codec, nid, HDA_OUTPUT, 0))
|
||||
if (is_active_nid_for_any(codec, nid))
|
||||
return power_state;
|
||||
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, 0x05ca, "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, 0x05ea, "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 */
|
||||
#define AB8500_ADSLOTSELX_AD_OUT1_TO_SLOT_ODD 0x00
|
||||
#define AB8500_ADSLOTSELX_AD_OUT2_TO_SLOT_ODD 0x01
|
||||
#define AB8500_ADSLOTSELX_AD_OUT3_TO_SLOT_ODD 0x02
|
||||
#define AB8500_ADSLOTSELX_AD_OUT4_TO_SLOT_ODD 0x03
|
||||
#define AB8500_ADSLOTSELX_AD_OUT5_TO_SLOT_ODD 0x04
|
||||
#define AB8500_ADSLOTSELX_AD_OUT6_TO_SLOT_ODD 0x05
|
||||
#define AB8500_ADSLOTSELX_AD_OUT7_TO_SLOT_ODD 0x06
|
||||
#define AB8500_ADSLOTSELX_AD_OUT8_TO_SLOT_ODD 0x07
|
||||
#define AB8500_ADSLOTSELX_ZEROES_TO_SLOT_ODD 0x08
|
||||
#define AB8500_ADSLOTSELX_TRISTATE_TO_SLOT_ODD 0x0F
|
||||
#define AB8500_ADSLOTSELX_AD_OUT2_TO_SLOT_ODD 0x10
|
||||
#define AB8500_ADSLOTSELX_AD_OUT3_TO_SLOT_ODD 0x20
|
||||
#define AB8500_ADSLOTSELX_AD_OUT4_TO_SLOT_ODD 0x30
|
||||
#define AB8500_ADSLOTSELX_AD_OUT5_TO_SLOT_ODD 0x40
|
||||
#define AB8500_ADSLOTSELX_AD_OUT6_TO_SLOT_ODD 0x50
|
||||
#define AB8500_ADSLOTSELX_AD_OUT7_TO_SLOT_ODD 0x60
|
||||
#define AB8500_ADSLOTSELX_AD_OUT8_TO_SLOT_ODD 0x70
|
||||
#define AB8500_ADSLOTSELX_ZEROES_TO_SLOT_ODD 0x80
|
||||
#define AB8500_ADSLOTSELX_TRISTATE_TO_SLOT_ODD 0xF0
|
||||
#define AB8500_ADSLOTSELX_AD_OUT1_TO_SLOT_EVEN 0x00
|
||||
#define AB8500_ADSLOTSELX_AD_OUT2_TO_SLOT_EVEN 0x10
|
||||
#define AB8500_ADSLOTSELX_AD_OUT3_TO_SLOT_EVEN 0x20
|
||||
#define AB8500_ADSLOTSELX_AD_OUT4_TO_SLOT_EVEN 0x30
|
||||
#define AB8500_ADSLOTSELX_AD_OUT5_TO_SLOT_EVEN 0x40
|
||||
#define AB8500_ADSLOTSELX_AD_OUT6_TO_SLOT_EVEN 0x50
|
||||
#define AB8500_ADSLOTSELX_AD_OUT7_TO_SLOT_EVEN 0x60
|
||||
#define AB8500_ADSLOTSELX_AD_OUT8_TO_SLOT_EVEN 0x70
|
||||
#define AB8500_ADSLOTSELX_ZEROES_TO_SLOT_EVEN 0x80
|
||||
#define AB8500_ADSLOTSELX_TRISTATE_TO_SLOT_EVEN 0xF0
|
||||
#define AB8500_ADSLOTSELX_AD_OUT2_TO_SLOT_EVEN 0x01
|
||||
#define AB8500_ADSLOTSELX_AD_OUT3_TO_SLOT_EVEN 0x02
|
||||
#define AB8500_ADSLOTSELX_AD_OUT4_TO_SLOT_EVEN 0x03
|
||||
#define AB8500_ADSLOTSELX_AD_OUT5_TO_SLOT_EVEN 0x04
|
||||
#define AB8500_ADSLOTSELX_AD_OUT6_TO_SLOT_EVEN 0x05
|
||||
#define AB8500_ADSLOTSELX_AD_OUT7_TO_SLOT_EVEN 0x06
|
||||
#define AB8500_ADSLOTSELX_AD_OUT8_TO_SLOT_EVEN 0x07
|
||||
#define AB8500_ADSLOTSELX_ZEROES_TO_SLOT_EVEN 0x08
|
||||
#define AB8500_ADSLOTSELX_TRISTATE_TO_SLOT_EVEN 0x0F
|
||||
#define AB8500_ADSLOTSELX_EVEN_SHIFT 0
|
||||
#define AB8500_ADSLOTSELX_ODD_SHIFT 4
|
||||
|
||||
|
@ -1488,17 +1488,17 @@ static int da7213_probe(struct snd_soc_codec *codec)
|
||||
DA7213_DMIC_DATA_SEL_SHIFT);
|
||||
break;
|
||||
}
|
||||
switch (pdata->dmic_data_sel) {
|
||||
switch (pdata->dmic_samplephase) {
|
||||
case DA7213_DMIC_SAMPLE_ON_CLKEDGE:
|
||||
case DA7213_DMIC_SAMPLE_BETWEEN_CLKEDGE:
|
||||
dmic_cfg |= (pdata->dmic_data_sel <<
|
||||
dmic_cfg |= (pdata->dmic_samplephase <<
|
||||
DA7213_DMIC_SAMPLEPHASE_SHIFT);
|
||||
break;
|
||||
}
|
||||
switch (pdata->dmic_data_sel) {
|
||||
switch (pdata->dmic_clk_rate) {
|
||||
case DA7213_DMIC_CLK_3_0MHZ:
|
||||
case DA7213_DMIC_CLK_1_5MHZ:
|
||||
dmic_cfg |= (pdata->dmic_data_sel <<
|
||||
dmic_cfg |= (pdata->dmic_clk_rate <<
|
||||
DA7213_DMIC_CLK_RATE_SHIFT);
|
||||
break;
|
||||
}
|
||||
|
@ -667,6 +667,7 @@ static int wm0010_boot(struct snd_soc_codec *codec)
|
||||
/* On wm0010 only the CLKCTRL1 value is used */
|
||||
pll_rec.clkctrl1 = wm0010->pll_clkctrl1;
|
||||
|
||||
ret = -ENOMEM;
|
||||
len = pll_rec.length + 8;
|
||||
out = kzalloc(len, GFP_KERNEL);
|
||||
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,
|
||||
struct snd_usb_endpoint *ep,
|
||||
struct snd_usb_endpoint *data_ep,
|
||||
struct snd_usb_endpoint *sync_ep,
|
||||
struct snd_info_buffer *buffer)
|
||||
{
|
||||
if (!ep)
|
||||
if (!data_ep)
|
||||
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",
|
||||
subs->speed == USB_SPEED_FULL
|
||||
? get_full_speed_hz(ep->freqm)
|
||||
: get_high_speed_hz(ep->freqm),
|
||||
ep->freqm >> 16, ep->freqm & 0xffff);
|
||||
if (ep->freqshift != INT_MIN) {
|
||||
int res = 16 - ep->freqshift;
|
||||
? get_full_speed_hz(data_ep->freqm)
|
||||
: get_high_speed_hz(data_ep->freqm),
|
||||
data_ep->freqm >> 16, data_ep->freqm & 0xffff);
|
||||
if (sync_ep && data_ep->freqshift != INT_MIN) {
|
||||
int res = 16 - data_ep->freqshift;
|
||||
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, " Interface = %d\n", subs->interface);
|
||||
snd_iprintf(buffer, " Altset = %d\n", subs->altset_idx);
|
||||
proc_dump_ep_status(subs, subs->data_endpoint, buffer);
|
||||
proc_dump_ep_status(subs, subs->sync_endpoint, buffer);
|
||||
proc_dump_ep_status(subs, subs->data_endpoint, subs->sync_endpoint, buffer);
|
||||
} else {
|
||||
snd_iprintf(buffer, " Status: Stop\n");
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user