diff options
| -rw-r--r-- | sound/aoa/fabrics/layout.c | 8 | ||||
| -rw-r--r-- | sound/aoa/soundbus/i2sbus/core.c | 3 | ||||
| -rw-r--r-- | sound/oss/Kconfig | 2 | ||||
| -rw-r--r-- | sound/pci/hda/hda_generic.c | 9 | ||||
| -rw-r--r-- | sound/pci/hda/patch_realtek.c | 1 | ||||
| -rw-r--r-- | sound/soc/codecs/ab8500-codec.h | 36 | ||||
| -rw-r--r-- | sound/soc/codecs/da7213.c | 8 | ||||
| -rw-r--r-- | sound/soc/codecs/wm0010.c | 1 | ||||
| -rw-r--r-- | sound/usb/proc.c | 22 |
9 files changed, 53 insertions, 37 deletions
diff --git a/sound/aoa/fabrics/layout.c b/sound/aoa/fabrics/layout.c index 552b97afbca5..61ab640e195f 100644 --- a/sound/aoa/fabrics/layout.c +++ b/sound/aoa/fabrics/layout.c | |||
| @@ -113,6 +113,7 @@ MODULE_ALIAS("sound-layout-100"); | |||
| 113 | MODULE_ALIAS("aoa-device-id-14"); | 113 | MODULE_ALIAS("aoa-device-id-14"); |
| 114 | MODULE_ALIAS("aoa-device-id-22"); | 114 | MODULE_ALIAS("aoa-device-id-22"); |
| 115 | MODULE_ALIAS("aoa-device-id-35"); | 115 | MODULE_ALIAS("aoa-device-id-35"); |
| 116 | MODULE_ALIAS("aoa-device-id-44"); | ||
| 116 | 117 | ||
| 117 | /* onyx with all but microphone connected */ | 118 | /* onyx with all but microphone connected */ |
| 118 | static struct codec_connection onyx_connections_nomic[] = { | 119 | static struct codec_connection onyx_connections_nomic[] = { |
| @@ -361,6 +362,13 @@ static struct layout layouts[] = { | |||
| 361 | .connections = tas_connections_nolineout, | 362 | .connections = tas_connections_nolineout, |
| 362 | }, | 363 | }, |
| 363 | }, | 364 | }, |
| 365 | /* PowerBook6,5 */ | ||
| 366 | { .device_id = 44, | ||
| 367 | .codecs[0] = { | ||
| 368 | .name = "tas", | ||
| 369 | .connections = tas_connections_all, | ||
| 370 | }, | ||
| 371 | }, | ||
| 364 | /* PowerBook6,7 */ | 372 | /* PowerBook6,7 */ |
| 365 | { .layout_id = 80, | 373 | { .layout_id = 80, |
| 366 | .codecs[0] = { | 374 | .codecs[0] = { |
diff --git a/sound/aoa/soundbus/i2sbus/core.c b/sound/aoa/soundbus/i2sbus/core.c index 010658335881..15e76131b501 100644 --- a/sound/aoa/soundbus/i2sbus/core.c +++ b/sound/aoa/soundbus/i2sbus/core.c | |||
| @@ -200,7 +200,8 @@ static int i2sbus_add_dev(struct macio_dev *macio, | |||
| 200 | * We probably cannot handle all device-id machines, | 200 | * We probably cannot handle all device-id machines, |
| 201 | * so restrict to those we do handle for now. | 201 | * so restrict to those we do handle for now. |
| 202 | */ | 202 | */ |
| 203 | if (id && (*id == 22 || *id == 14 || *id == 35)) { | 203 | if (id && (*id == 22 || *id == 14 || *id == 35 || |
| 204 | *id == 44)) { | ||
| 204 | snprintf(dev->sound.modalias, 32, | 205 | snprintf(dev->sound.modalias, 32, |
| 205 | "aoa-device-id-%d", *id); | 206 | "aoa-device-id-%d", *id); |
| 206 | ok = 1; | 207 | ok = 1; |
diff --git a/sound/oss/Kconfig b/sound/oss/Kconfig index 51c4ba95a32d..1a9640254433 100644 --- a/sound/oss/Kconfig +++ b/sound/oss/Kconfig | |||
| @@ -250,7 +250,7 @@ config MSND_FIFOSIZE | |||
| 250 | menuconfig SOUND_OSS | 250 | menuconfig SOUND_OSS |
| 251 | tristate "OSS sound modules" | 251 | tristate "OSS sound modules" |
| 252 | depends on ISA_DMA_API && VIRT_TO_BUS | 252 | depends on ISA_DMA_API && VIRT_TO_BUS |
| 253 | depends on !ISA_DMA_SUPPORT_BROKEN | 253 | depends on !GENERIC_ISA_DMA_SUPPORT_BROKEN |
| 254 | help | 254 | help |
| 255 | OSS is the Open Sound System suite of sound card drivers. They make | 255 | OSS is the Open Sound System suite of sound card drivers. They make |
| 256 | sound programming easier since they provide a common API. Say Y or | 256 | sound programming easier since they provide a common API. Say Y or |
diff --git a/sound/pci/hda/hda_generic.c b/sound/pci/hda/hda_generic.c index ac079f93c535..ae85bbd2e6f8 100644 --- a/sound/pci/hda/hda_generic.c +++ b/sound/pci/hda/hda_generic.c | |||
| @@ -606,6 +606,10 @@ static bool is_active_nid(struct hda_codec *codec, hda_nid_t nid, | |||
| 606 | return false; | 606 | return false; |
| 607 | } | 607 | } |
| 608 | 608 | ||
| 609 | /* check whether the NID is referred by any active paths */ | ||
| 610 | #define is_active_nid_for_any(codec, nid) \ | ||
| 611 | is_active_nid(codec, nid, HDA_OUTPUT, 0) | ||
| 612 | |||
| 609 | /* get the default amp value for the target state */ | 613 | /* get the default amp value for the target state */ |
| 610 | static int get_amp_val_to_activate(struct hda_codec *codec, hda_nid_t nid, | 614 | static int get_amp_val_to_activate(struct hda_codec *codec, hda_nid_t nid, |
| 611 | int dir, unsigned int caps, bool enable) | 615 | 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) | |||
| 759 | 763 | ||
| 760 | for (i = 0; i < path->depth; i++) { | 764 | for (i = 0; i < path->depth; i++) { |
| 761 | hda_nid_t nid = path->path[i]; | 765 | hda_nid_t nid = path->path[i]; |
| 762 | if (!snd_hda_check_power_state(codec, nid, AC_PWRST_D3)) { | 766 | if (!snd_hda_check_power_state(codec, nid, AC_PWRST_D3) && |
| 767 | !is_active_nid_for_any(codec, nid)) { | ||
| 763 | snd_hda_codec_write(codec, nid, 0, | 768 | snd_hda_codec_write(codec, nid, 0, |
| 764 | AC_VERB_SET_POWER_STATE, | 769 | AC_VERB_SET_POWER_STATE, |
| 765 | AC_PWRST_D3); | 770 | AC_PWRST_D3); |
| @@ -4157,7 +4162,7 @@ static unsigned int snd_hda_gen_path_power_filter(struct hda_codec *codec, | |||
| 4157 | return power_state; | 4162 | return power_state; |
| 4158 | if (get_wcaps_type(get_wcaps(codec, nid)) >= AC_WID_POWER) | 4163 | if (get_wcaps_type(get_wcaps(codec, nid)) >= AC_WID_POWER) |
| 4159 | return power_state; | 4164 | return power_state; |
| 4160 | if (is_active_nid(codec, nid, HDA_OUTPUT, 0)) | 4165 | if (is_active_nid_for_any(codec, nid)) |
| 4161 | return power_state; | 4166 | return power_state; |
| 4162 | return AC_PWRST_D3; | 4167 | return AC_PWRST_D3; |
| 4163 | } | 4168 | } |
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index 6bf47f7326ad..59d2e91a9ab6 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
| @@ -3482,6 +3482,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = { | |||
| 3482 | SND_PCI_QUIRK(0x1028, 0x05c9, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE), | 3482 | SND_PCI_QUIRK(0x1028, 0x05c9, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE), |
| 3483 | SND_PCI_QUIRK(0x1028, 0x05ca, "Dell", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE), | 3483 | SND_PCI_QUIRK(0x1028, 0x05ca, "Dell", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE), |
| 3484 | SND_PCI_QUIRK(0x1028, 0x05cb, "Dell", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE), | 3484 | SND_PCI_QUIRK(0x1028, 0x05cb, "Dell", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE), |
| 3485 | SND_PCI_QUIRK(0x1028, 0x05de, "Dell", ALC269_FIXUP_DELL2_MIC_NO_PRESENCE), | ||
| 3485 | SND_PCI_QUIRK(0x1028, 0x05e9, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE), | 3486 | SND_PCI_QUIRK(0x1028, 0x05e9, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE), |
| 3486 | SND_PCI_QUIRK(0x1028, 0x05ea, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE), | 3487 | SND_PCI_QUIRK(0x1028, 0x05ea, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE), |
| 3487 | SND_PCI_QUIRK(0x1028, 0x05eb, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE), | 3488 | SND_PCI_QUIRK(0x1028, 0x05eb, "Dell", ALC269_FIXUP_DELL1_MIC_NO_PRESENCE), |
diff --git a/sound/soc/codecs/ab8500-codec.h b/sound/soc/codecs/ab8500-codec.h index 114f69a0c629..306d0bc8455f 100644 --- a/sound/soc/codecs/ab8500-codec.h +++ b/sound/soc/codecs/ab8500-codec.h | |||
| @@ -348,25 +348,25 @@ | |||
| 348 | 348 | ||
| 349 | /* AB8500_ADSLOTSELX */ | 349 | /* AB8500_ADSLOTSELX */ |
| 350 | #define AB8500_ADSLOTSELX_AD_OUT1_TO_SLOT_ODD 0x00 | 350 | #define AB8500_ADSLOTSELX_AD_OUT1_TO_SLOT_ODD 0x00 |
| 351 | #define AB8500_ADSLOTSELX_AD_OUT2_TO_SLOT_ODD 0x01 | 351 | #define AB8500_ADSLOTSELX_AD_OUT2_TO_SLOT_ODD 0x10 |
| 352 | #define AB8500_ADSLOTSELX_AD_OUT3_TO_SLOT_ODD 0x02 | 352 | #define AB8500_ADSLOTSELX_AD_OUT3_TO_SLOT_ODD 0x20 |
| 353 | #define AB8500_ADSLOTSELX_AD_OUT4_TO_SLOT_ODD 0x03 | 353 | #define AB8500_ADSLOTSELX_AD_OUT4_TO_SLOT_ODD 0x30 |
| 354 | #define AB8500_ADSLOTSELX_AD_OUT5_TO_SLOT_ODD 0x04 | 354 | #define AB8500_ADSLOTSELX_AD_OUT5_TO_SLOT_ODD 0x40 |
| 355 | #define AB8500_ADSLOTSELX_AD_OUT6_TO_SLOT_ODD 0x05 | 355 | #define AB8500_ADSLOTSELX_AD_OUT6_TO_SLOT_ODD 0x50 |
| 356 | #define AB8500_ADSLOTSELX_AD_OUT7_TO_SLOT_ODD 0x06 | 356 | #define AB8500_ADSLOTSELX_AD_OUT7_TO_SLOT_ODD 0x60 |
| 357 | #define AB8500_ADSLOTSELX_AD_OUT8_TO_SLOT_ODD 0x07 | 357 | #define AB8500_ADSLOTSELX_AD_OUT8_TO_SLOT_ODD 0x70 |
| 358 | #define AB8500_ADSLOTSELX_ZEROES_TO_SLOT_ODD 0x08 | 358 | #define AB8500_ADSLOTSELX_ZEROES_TO_SLOT_ODD 0x80 |
| 359 | #define AB8500_ADSLOTSELX_TRISTATE_TO_SLOT_ODD 0x0F | 359 | #define AB8500_ADSLOTSELX_TRISTATE_TO_SLOT_ODD 0xF0 |
| 360 | #define AB8500_ADSLOTSELX_AD_OUT1_TO_SLOT_EVEN 0x00 | 360 | #define AB8500_ADSLOTSELX_AD_OUT1_TO_SLOT_EVEN 0x00 |
| 361 | #define AB8500_ADSLOTSELX_AD_OUT2_TO_SLOT_EVEN 0x10 | 361 | #define AB8500_ADSLOTSELX_AD_OUT2_TO_SLOT_EVEN 0x01 |
| 362 | #define AB8500_ADSLOTSELX_AD_OUT3_TO_SLOT_EVEN 0x20 | 362 | #define AB8500_ADSLOTSELX_AD_OUT3_TO_SLOT_EVEN 0x02 |
| 363 | #define AB8500_ADSLOTSELX_AD_OUT4_TO_SLOT_EVEN 0x30 | 363 | #define AB8500_ADSLOTSELX_AD_OUT4_TO_SLOT_EVEN 0x03 |
| 364 | #define AB8500_ADSLOTSELX_AD_OUT5_TO_SLOT_EVEN 0x40 | 364 | #define AB8500_ADSLOTSELX_AD_OUT5_TO_SLOT_EVEN 0x04 |
| 365 | #define AB8500_ADSLOTSELX_AD_OUT6_TO_SLOT_EVEN 0x50 | 365 | #define AB8500_ADSLOTSELX_AD_OUT6_TO_SLOT_EVEN 0x05 |
| 366 | #define AB8500_ADSLOTSELX_AD_OUT7_TO_SLOT_EVEN 0x60 | 366 | #define AB8500_ADSLOTSELX_AD_OUT7_TO_SLOT_EVEN 0x06 |
| 367 | #define AB8500_ADSLOTSELX_AD_OUT8_TO_SLOT_EVEN 0x70 | 367 | #define AB8500_ADSLOTSELX_AD_OUT8_TO_SLOT_EVEN 0x07 |
| 368 | #define AB8500_ADSLOTSELX_ZEROES_TO_SLOT_EVEN 0x80 | 368 | #define AB8500_ADSLOTSELX_ZEROES_TO_SLOT_EVEN 0x08 |
| 369 | #define AB8500_ADSLOTSELX_TRISTATE_TO_SLOT_EVEN 0xF0 | 369 | #define AB8500_ADSLOTSELX_TRISTATE_TO_SLOT_EVEN 0x0F |
| 370 | #define AB8500_ADSLOTSELX_EVEN_SHIFT 0 | 370 | #define AB8500_ADSLOTSELX_EVEN_SHIFT 0 |
| 371 | #define AB8500_ADSLOTSELX_ODD_SHIFT 4 | 371 | #define AB8500_ADSLOTSELX_ODD_SHIFT 4 |
| 372 | 372 | ||
diff --git a/sound/soc/codecs/da7213.c b/sound/soc/codecs/da7213.c index 41230ad1c3e0..4a6f1daf911f 100644 --- a/sound/soc/codecs/da7213.c +++ b/sound/soc/codecs/da7213.c | |||
| @@ -1488,17 +1488,17 @@ static int da7213_probe(struct snd_soc_codec *codec) | |||
| 1488 | DA7213_DMIC_DATA_SEL_SHIFT); | 1488 | DA7213_DMIC_DATA_SEL_SHIFT); |
| 1489 | break; | 1489 | break; |
| 1490 | } | 1490 | } |
| 1491 | switch (pdata->dmic_data_sel) { | 1491 | switch (pdata->dmic_samplephase) { |
| 1492 | case DA7213_DMIC_SAMPLE_ON_CLKEDGE: | 1492 | case DA7213_DMIC_SAMPLE_ON_CLKEDGE: |
| 1493 | case DA7213_DMIC_SAMPLE_BETWEEN_CLKEDGE: | 1493 | case DA7213_DMIC_SAMPLE_BETWEEN_CLKEDGE: |
| 1494 | dmic_cfg |= (pdata->dmic_data_sel << | 1494 | dmic_cfg |= (pdata->dmic_samplephase << |
| 1495 | DA7213_DMIC_SAMPLEPHASE_SHIFT); | 1495 | DA7213_DMIC_SAMPLEPHASE_SHIFT); |
| 1496 | break; | 1496 | break; |
| 1497 | } | 1497 | } |
| 1498 | switch (pdata->dmic_data_sel) { | 1498 | switch (pdata->dmic_clk_rate) { |
| 1499 | case DA7213_DMIC_CLK_3_0MHZ: | 1499 | case DA7213_DMIC_CLK_3_0MHZ: |
| 1500 | case DA7213_DMIC_CLK_1_5MHZ: | 1500 | case DA7213_DMIC_CLK_1_5MHZ: |
| 1501 | dmic_cfg |= (pdata->dmic_data_sel << | 1501 | dmic_cfg |= (pdata->dmic_clk_rate << |
| 1502 | DA7213_DMIC_CLK_RATE_SHIFT); | 1502 | DA7213_DMIC_CLK_RATE_SHIFT); |
| 1503 | break; | 1503 | break; |
| 1504 | } | 1504 | } |
diff --git a/sound/soc/codecs/wm0010.c b/sound/soc/codecs/wm0010.c index 8df2b6e1a1a6..370af0cbcc9a 100644 --- a/sound/soc/codecs/wm0010.c +++ b/sound/soc/codecs/wm0010.c | |||
| @@ -667,6 +667,7 @@ static int wm0010_boot(struct snd_soc_codec *codec) | |||
| 667 | /* On wm0010 only the CLKCTRL1 value is used */ | 667 | /* On wm0010 only the CLKCTRL1 value is used */ |
| 668 | pll_rec.clkctrl1 = wm0010->pll_clkctrl1; | 668 | pll_rec.clkctrl1 = wm0010->pll_clkctrl1; |
| 669 | 669 | ||
| 670 | ret = -ENOMEM; | ||
| 670 | len = pll_rec.length + 8; | 671 | len = pll_rec.length + 8; |
| 671 | out = kzalloc(len, GFP_KERNEL); | 672 | out = kzalloc(len, GFP_KERNEL); |
| 672 | if (!out) { | 673 | if (!out) { |
diff --git a/sound/usb/proc.c b/sound/usb/proc.c index 135c76871063..5f761ab34c01 100644 --- a/sound/usb/proc.c +++ b/sound/usb/proc.c | |||
| @@ -116,21 +116,22 @@ static void proc_dump_substream_formats(struct snd_usb_substream *subs, struct s | |||
| 116 | } | 116 | } |
| 117 | 117 | ||
| 118 | static void proc_dump_ep_status(struct snd_usb_substream *subs, | 118 | static void proc_dump_ep_status(struct snd_usb_substream *subs, |
| 119 | struct snd_usb_endpoint *ep, | 119 | struct snd_usb_endpoint *data_ep, |
| 120 | struct snd_usb_endpoint *sync_ep, | ||
| 120 | struct snd_info_buffer *buffer) | 121 | struct snd_info_buffer *buffer) |
| 121 | { | 122 | { |
| 122 | if (!ep) | 123 | if (!data_ep) |
| 123 | return; | 124 | return; |
| 124 | snd_iprintf(buffer, " Packet Size = %d\n", ep->curpacksize); | 125 | snd_iprintf(buffer, " Packet Size = %d\n", data_ep->curpacksize); |
| 125 | snd_iprintf(buffer, " Momentary freq = %u Hz (%#x.%04x)\n", | 126 | snd_iprintf(buffer, " Momentary freq = %u Hz (%#x.%04x)\n", |
| 126 | subs->speed == USB_SPEED_FULL | 127 | subs->speed == USB_SPEED_FULL |
| 127 | ? get_full_speed_hz(ep->freqm) | 128 | ? get_full_speed_hz(data_ep->freqm) |
| 128 | : get_high_speed_hz(ep->freqm), | 129 | : get_high_speed_hz(data_ep->freqm), |
| 129 | ep->freqm >> 16, ep->freqm & 0xffff); | 130 | data_ep->freqm >> 16, data_ep->freqm & 0xffff); |
| 130 | if (ep->freqshift != INT_MIN) { | 131 | if (sync_ep && data_ep->freqshift != INT_MIN) { |
| 131 | int res = 16 - ep->freqshift; | 132 | int res = 16 - data_ep->freqshift; |
| 132 | snd_iprintf(buffer, " Feedback Format = %d.%d\n", | 133 | snd_iprintf(buffer, " Feedback Format = %d.%d\n", |
| 133 | (ep->syncmaxsize > 3 ? 32 : 24) - res, res); | 134 | (sync_ep->syncmaxsize > 3 ? 32 : 24) - res, res); |
| 134 | } | 135 | } |
| 135 | } | 136 | } |
| 136 | 137 | ||
| @@ -140,8 +141,7 @@ static void proc_dump_substream_status(struct snd_usb_substream *subs, struct sn | |||
| 140 | snd_iprintf(buffer, " Status: Running\n"); | 141 | snd_iprintf(buffer, " Status: Running\n"); |
| 141 | snd_iprintf(buffer, " Interface = %d\n", subs->interface); | 142 | snd_iprintf(buffer, " Interface = %d\n", subs->interface); |
| 142 | snd_iprintf(buffer, " Altset = %d\n", subs->altset_idx); | 143 | snd_iprintf(buffer, " Altset = %d\n", subs->altset_idx); |
| 143 | proc_dump_ep_status(subs, subs->data_endpoint, buffer); | 144 | proc_dump_ep_status(subs, subs->data_endpoint, subs->sync_endpoint, buffer); |
| 144 | proc_dump_ep_status(subs, subs->sync_endpoint, buffer); | ||
| 145 | } else { | 145 | } else { |
| 146 | snd_iprintf(buffer, " Status: Stop\n"); | 146 | snd_iprintf(buffer, " Status: Stop\n"); |
| 147 | } | 147 | } |
