diff options
Diffstat (limited to 'sound')
-rw-r--r-- | sound/pci/Kconfig | 4 | ||||
-rw-r--r-- | sound/pci/oxygen/virtuoso.c | 20 | ||||
-rw-r--r-- | sound/ppc/snd_ps3.c | 4 | ||||
-rw-r--r-- | sound/soc/atmel/atmel-pcm.c | 2 | ||||
-rw-r--r-- | sound/soc/codecs/wm8753.c | 9 | ||||
-rw-r--r-- | sound/soc/fsl/mpc8610_hpcd.c | 18 | ||||
-rw-r--r-- | sound/soc/omap/omap-mcbsp.c | 4 | ||||
-rw-r--r-- | sound/soc/soc-dapm.c | 3 | ||||
-rw-r--r-- | sound/usb/usbquirks.h | 8 |
9 files changed, 47 insertions, 25 deletions
diff --git a/sound/pci/Kconfig b/sound/pci/Kconfig index 6e3a1848447c..82b9bddcdcd6 100644 --- a/sound/pci/Kconfig +++ b/sound/pci/Kconfig | |||
@@ -744,8 +744,8 @@ config SND_VIRTUOSO | |||
744 | select SND_OXYGEN_LIB | 744 | select SND_OXYGEN_LIB |
745 | help | 745 | help |
746 | Say Y here to include support for sound cards based on the | 746 | Say Y here to include support for sound cards based on the |
747 | Asus AV100/AV200 chips, i.e., Xonar D1, DX, D2, D2X and | 747 | Asus AV100/AV200 chips, i.e., Xonar D1, DX, D2 and D2X. |
748 | HDAV1.3 (Deluxe). | 748 | Support for the HDAV1.3 (Deluxe) is very experimental. |
749 | 749 | ||
750 | To compile this driver as a module, choose M here: the module | 750 | To compile this driver as a module, choose M here: the module |
751 | will be called snd-virtuoso. | 751 | will be called snd-virtuoso. |
diff --git a/sound/pci/oxygen/virtuoso.c b/sound/pci/oxygen/virtuoso.c index 98c6a8c65d81..18c7c91786bc 100644 --- a/sound/pci/oxygen/virtuoso.c +++ b/sound/pci/oxygen/virtuoso.c | |||
@@ -26,7 +26,7 @@ | |||
26 | * SPI 0 -> 1st PCM1796 (front) | 26 | * SPI 0 -> 1st PCM1796 (front) |
27 | * SPI 1 -> 2nd PCM1796 (surround) | 27 | * SPI 1 -> 2nd PCM1796 (surround) |
28 | * SPI 2 -> 3rd PCM1796 (center/LFE) | 28 | * SPI 2 -> 3rd PCM1796 (center/LFE) |
29 | * SPI 4 -> 4th PCM1796 (back) | 29 | * SPI 4 -> 4th PCM1796 (back) and EEPROM self-destruct (do not use!) |
30 | * | 30 | * |
31 | * GPIO 2 -> M0 of CS5381 | 31 | * GPIO 2 -> M0 of CS5381 |
32 | * GPIO 3 -> M1 of CS5381 | 32 | * GPIO 3 -> M1 of CS5381 |
@@ -207,6 +207,12 @@ static void xonar_gpio_changed(struct oxygen *chip); | |||
207 | static inline void pcm1796_write_spi(struct oxygen *chip, unsigned int codec, | 207 | static inline void pcm1796_write_spi(struct oxygen *chip, unsigned int codec, |
208 | u8 reg, u8 value) | 208 | u8 reg, u8 value) |
209 | { | 209 | { |
210 | /* | ||
211 | * We don't want to do writes on SPI 4 because the EEPROM, which shares | ||
212 | * the same pin, might get confused and broken. We'd better take care | ||
213 | * that the driver works with the default register values ... | ||
214 | */ | ||
215 | #if 0 | ||
210 | /* maps ALSA channel pair number to SPI output */ | 216 | /* maps ALSA channel pair number to SPI output */ |
211 | static const u8 codec_map[4] = { | 217 | static const u8 codec_map[4] = { |
212 | 0, 1, 2, 4 | 218 | 0, 1, 2, 4 |
@@ -217,6 +223,7 @@ static inline void pcm1796_write_spi(struct oxygen *chip, unsigned int codec, | |||
217 | (codec_map[codec] << OXYGEN_SPI_CODEC_SHIFT) | | 223 | (codec_map[codec] << OXYGEN_SPI_CODEC_SHIFT) | |
218 | OXYGEN_SPI_CEN_LATCH_CLOCK_HI, | 224 | OXYGEN_SPI_CEN_LATCH_CLOCK_HI, |
219 | (reg << 8) | value); | 225 | (reg << 8) | value); |
226 | #endif | ||
220 | } | 227 | } |
221 | 228 | ||
222 | static inline void pcm1796_write_i2c(struct oxygen *chip, unsigned int codec, | 229 | static inline void pcm1796_write_i2c(struct oxygen *chip, unsigned int codec, |
@@ -676,7 +683,7 @@ static void xonar_hdav_uart_input(struct oxygen *chip) | |||
676 | if (chip->uart_input_count >= 2 && | 683 | if (chip->uart_input_count >= 2 && |
677 | chip->uart_input[chip->uart_input_count - 2] == 'O' && | 684 | chip->uart_input[chip->uart_input_count - 2] == 'O' && |
678 | chip->uart_input[chip->uart_input_count - 1] == 'K') { | 685 | chip->uart_input[chip->uart_input_count - 1] == 'K') { |
679 | printk(KERN_DEBUG "message from Xonar HDAV HDMI chip received:"); | 686 | printk(KERN_DEBUG "message from Xonar HDAV HDMI chip received:\n"); |
680 | print_hex_dump_bytes("", DUMP_PREFIX_OFFSET, | 687 | print_hex_dump_bytes("", DUMP_PREFIX_OFFSET, |
681 | chip->uart_input, chip->uart_input_count); | 688 | chip->uart_input, chip->uart_input_count); |
682 | chip->uart_input_count = 0; | 689 | chip->uart_input_count = 0; |
@@ -750,6 +757,9 @@ static const DECLARE_TLV_DB_SCALE(cs4362a_db_scale, -12700, 100, 0); | |||
750 | 757 | ||
751 | static int xonar_d2_control_filter(struct snd_kcontrol_new *template) | 758 | static int xonar_d2_control_filter(struct snd_kcontrol_new *template) |
752 | { | 759 | { |
760 | if (!strncmp(template->name, "Master Playback ", 16)) | ||
761 | /* disable volume/mute because they would require SPI writes */ | ||
762 | return 1; | ||
753 | if (!strncmp(template->name, "CD Capture ", 11)) | 763 | if (!strncmp(template->name, "CD Capture ", 11)) |
754 | /* CD in is actually connected to the video in pin */ | 764 | /* CD in is actually connected to the video in pin */ |
755 | template->private_value ^= AC97_CD ^ AC97_VIDEO; | 765 | template->private_value ^= AC97_CD ^ AC97_VIDEO; |
@@ -840,9 +850,8 @@ static const struct oxygen_model model_xonar_d2 = { | |||
840 | .dac_volume_min = 0x0f, | 850 | .dac_volume_min = 0x0f, |
841 | .dac_volume_max = 0xff, | 851 | .dac_volume_max = 0xff, |
842 | .misc_flags = OXYGEN_MISC_MIDI, | 852 | .misc_flags = OXYGEN_MISC_MIDI, |
843 | .function_flags = OXYGEN_FUNCTION_SPI | | 853 | .function_flags = OXYGEN_FUNCTION_SPI, |
844 | OXYGEN_FUNCTION_ENABLE_SPI_4_5, | 854 | .dac_i2s_format = OXYGEN_I2S_FORMAT_I2S, |
845 | .dac_i2s_format = OXYGEN_I2S_FORMAT_LJUST, | ||
846 | .adc_i2s_format = OXYGEN_I2S_FORMAT_LJUST, | 855 | .adc_i2s_format = OXYGEN_I2S_FORMAT_LJUST, |
847 | }; | 856 | }; |
848 | 857 | ||
@@ -899,6 +908,7 @@ static const struct oxygen_model model_xonar_hdav = { | |||
899 | .dac_channels = 8, | 908 | .dac_channels = 8, |
900 | .dac_volume_min = 0x0f, | 909 | .dac_volume_min = 0x0f, |
901 | .dac_volume_max = 0xff, | 910 | .dac_volume_max = 0xff, |
911 | .misc_flags = OXYGEN_MISC_MIDI, | ||
902 | .function_flags = OXYGEN_FUNCTION_2WIRE, | 912 | .function_flags = OXYGEN_FUNCTION_2WIRE, |
903 | .dac_i2s_format = OXYGEN_I2S_FORMAT_LJUST, | 913 | .dac_i2s_format = OXYGEN_I2S_FORMAT_LJUST, |
904 | .adc_i2s_format = OXYGEN_I2S_FORMAT_LJUST, | 914 | .adc_i2s_format = OXYGEN_I2S_FORMAT_LJUST, |
diff --git a/sound/ppc/snd_ps3.c b/sound/ppc/snd_ps3.c index 8f9e3859c37c..ff321110ec02 100644 --- a/sound/ppc/snd_ps3.c +++ b/sound/ppc/snd_ps3.c | |||
@@ -477,7 +477,7 @@ static int snd_ps3_pcm_prepare(struct snd_pcm_substream *substream) | |||
477 | card->dma_start_bus_addr[SND_PS3_CH_R] = | 477 | card->dma_start_bus_addr[SND_PS3_CH_R] = |
478 | runtime->dma_addr + (runtime->dma_bytes / 2); | 478 | runtime->dma_addr + (runtime->dma_bytes / 2); |
479 | 479 | ||
480 | pr_debug("%s: vaddr=%p bus=%#lx\n", __func__, | 480 | pr_debug("%s: vaddr=%p bus=%#llx\n", __func__, |
481 | card->dma_start_vaddr[SND_PS3_CH_L], | 481 | card->dma_start_vaddr[SND_PS3_CH_L], |
482 | card->dma_start_bus_addr[SND_PS3_CH_L]); | 482 | card->dma_start_bus_addr[SND_PS3_CH_L]); |
483 | 483 | ||
@@ -1030,7 +1030,7 @@ static int __init snd_ps3_driver_probe(struct ps3_system_bus_device *dev) | |||
1030 | pr_info("%s: nullbuffer alloc failed\n", __func__); | 1030 | pr_info("%s: nullbuffer alloc failed\n", __func__); |
1031 | goto clean_preallocate; | 1031 | goto clean_preallocate; |
1032 | } | 1032 | } |
1033 | pr_debug("%s: null vaddr=%p dma=%#lx\n", __func__, | 1033 | pr_debug("%s: null vaddr=%p dma=%#llx\n", __func__, |
1034 | the_card.null_buffer_start_vaddr, | 1034 | the_card.null_buffer_start_vaddr, |
1035 | the_card.null_buffer_start_dma_addr); | 1035 | the_card.null_buffer_start_dma_addr); |
1036 | /* set default sample rate/word width */ | 1036 | /* set default sample rate/word width */ |
diff --git a/sound/soc/atmel/atmel-pcm.c b/sound/soc/atmel/atmel-pcm.c index 1fac5efd285b..3dcdc4e3cfa0 100644 --- a/sound/soc/atmel/atmel-pcm.c +++ b/sound/soc/atmel/atmel-pcm.c | |||
@@ -44,8 +44,6 @@ | |||
44 | #include <sound/pcm_params.h> | 44 | #include <sound/pcm_params.h> |
45 | #include <sound/soc.h> | 45 | #include <sound/soc.h> |
46 | 46 | ||
47 | #include <mach/hardware.h> | ||
48 | |||
49 | #include "atmel-pcm.h" | 47 | #include "atmel-pcm.h" |
50 | 48 | ||
51 | 49 | ||
diff --git a/sound/soc/codecs/wm8753.c b/sound/soc/codecs/wm8753.c index 6c21b50c9375..77620ab98756 100644 --- a/sound/soc/codecs/wm8753.c +++ b/sound/soc/codecs/wm8753.c | |||
@@ -1451,7 +1451,14 @@ static const struct snd_soc_dai wm8753_all_dai[] = { | |||
1451 | }, | 1451 | }, |
1452 | }; | 1452 | }; |
1453 | 1453 | ||
1454 | struct snd_soc_dai wm8753_dai[2]; | 1454 | struct snd_soc_dai wm8753_dai[] = { |
1455 | { | ||
1456 | .name = "WM8753 DAI 0", | ||
1457 | }, | ||
1458 | { | ||
1459 | .name = "WM8753 DAI 1", | ||
1460 | }, | ||
1461 | }; | ||
1455 | EXPORT_SYMBOL_GPL(wm8753_dai); | 1462 | EXPORT_SYMBOL_GPL(wm8753_dai); |
1456 | 1463 | ||
1457 | static void wm8753_set_dai_mode(struct snd_soc_codec *codec, unsigned int mode) | 1464 | static void wm8753_set_dai_mode(struct snd_soc_codec *codec, unsigned int mode) |
diff --git a/sound/soc/fsl/mpc8610_hpcd.c b/sound/soc/fsl/mpc8610_hpcd.c index bcec3f60bad9..acf39a646b2f 100644 --- a/sound/soc/fsl/mpc8610_hpcd.c +++ b/sound/soc/fsl/mpc8610_hpcd.c | |||
@@ -183,16 +183,6 @@ static struct snd_soc_ops mpc8610_hpcd_ops = { | |||
183 | }; | 183 | }; |
184 | 184 | ||
185 | /** | 185 | /** |
186 | * mpc8610_hpcd_machine: ASoC machine data | ||
187 | */ | ||
188 | static struct snd_soc_card mpc8610_hpcd_machine = { | ||
189 | .probe = mpc8610_hpcd_machine_probe, | ||
190 | .remove = mpc8610_hpcd_machine_remove, | ||
191 | .name = "MPC8610 HPCD", | ||
192 | .num_links = 1, | ||
193 | }; | ||
194 | |||
195 | /** | ||
196 | * mpc8610_hpcd_probe: OF probe function for the fabric driver | 186 | * mpc8610_hpcd_probe: OF probe function for the fabric driver |
197 | * | 187 | * |
198 | * This function gets called when an SSI node is found in the device tree. | 188 | * This function gets called when an SSI node is found in the device tree. |
@@ -455,7 +445,11 @@ static int mpc8610_hpcd_probe(struct of_device *ofdev, | |||
455 | machine_data->dai.codec_dai = &cs4270_dai; /* The codec_dai we want */ | 445 | machine_data->dai.codec_dai = &cs4270_dai; /* The codec_dai we want */ |
456 | machine_data->dai.ops = &mpc8610_hpcd_ops; | 446 | machine_data->dai.ops = &mpc8610_hpcd_ops; |
457 | 447 | ||
458 | mpc8610_hpcd_machine.dai_link = &machine_data->dai; | 448 | machine_data->machine.probe = mpc8610_hpcd_machine_probe; |
449 | machine_data->machine.remove = mpc8610_hpcd_machine_remove; | ||
450 | machine_data->machine.name = "MPC8610 HPCD"; | ||
451 | machine_data->machine.num_links = 1; | ||
452 | machine_data->machine.dai_link = &machine_data->dai; | ||
459 | 453 | ||
460 | /* Allocate a new audio platform device structure */ | 454 | /* Allocate a new audio platform device structure */ |
461 | sound_device = platform_device_alloc("soc-audio", -1); | 455 | sound_device = platform_device_alloc("soc-audio", -1); |
@@ -465,7 +459,7 @@ static int mpc8610_hpcd_probe(struct of_device *ofdev, | |||
465 | goto error; | 459 | goto error; |
466 | } | 460 | } |
467 | 461 | ||
468 | machine_data->sound_devdata.card = &mpc8610_hpcd_machine; | 462 | machine_data->sound_devdata.card = &machine_data->machine; |
469 | machine_data->sound_devdata.codec_dev = &soc_codec_device_cs4270; | 463 | machine_data->sound_devdata.codec_dev = &soc_codec_device_cs4270; |
470 | machine_data->machine.platform = &fsl_soc_platform; | 464 | machine_data->machine.platform = &fsl_soc_platform; |
471 | 465 | ||
diff --git a/sound/soc/omap/omap-mcbsp.c b/sound/soc/omap/omap-mcbsp.c index ec5e18a78758..05dd5abcddf4 100644 --- a/sound/soc/omap/omap-mcbsp.c +++ b/sound/soc/omap/omap-mcbsp.c | |||
@@ -302,6 +302,10 @@ static int omap_mcbsp_dai_set_dai_fmt(struct snd_soc_dai *cpu_dai, | |||
302 | regs->spcr1 |= RINTM(3); | 302 | regs->spcr1 |= RINTM(3); |
303 | regs->rcr2 |= RFIG; | 303 | regs->rcr2 |= RFIG; |
304 | regs->xcr2 |= XFIG; | 304 | regs->xcr2 |= XFIG; |
305 | if (cpu_is_omap2430() || cpu_is_omap34xx()) { | ||
306 | regs->xccr = DXENDLY(1) | XDMAEN; | ||
307 | regs->rccr = RFULL_CYCLE | RDMAEN; | ||
308 | } | ||
305 | 309 | ||
306 | switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) { | 310 | switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) { |
307 | case SND_SOC_DAIFMT_I2S: | 311 | case SND_SOC_DAIFMT_I2S: |
diff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c index 493a4e8aa273..a2f1da8b4646 100644 --- a/sound/soc/soc-dapm.c +++ b/sound/soc/soc-dapm.c | |||
@@ -720,7 +720,8 @@ static int dapm_mux_update_power(struct snd_soc_dapm_widget *widget, | |||
720 | struct snd_soc_dapm_path *path; | 720 | struct snd_soc_dapm_path *path; |
721 | int found = 0; | 721 | int found = 0; |
722 | 722 | ||
723 | if (widget->id != snd_soc_dapm_mux) | 723 | if (widget->id != snd_soc_dapm_mux && |
724 | widget->id != snd_soc_dapm_value_mux) | ||
724 | return -ENODEV; | 725 | return -ENODEV; |
725 | 726 | ||
726 | if (!snd_soc_test_bits(widget->codec, e->reg, mask, val)) | 727 | if (!snd_soc_test_bits(widget->codec, e->reg, mask, val)) |
diff --git a/sound/usb/usbquirks.h b/sound/usb/usbquirks.h index 92115755d98e..5d8ef09b9dcc 100644 --- a/sound/usb/usbquirks.h +++ b/sound/usb/usbquirks.h | |||
@@ -128,6 +128,14 @@ | |||
128 | .bInterfaceClass = USB_CLASS_AUDIO, | 128 | .bInterfaceClass = USB_CLASS_AUDIO, |
129 | .bInterfaceSubClass = USB_SUBCLASS_AUDIO_CONTROL | 129 | .bInterfaceSubClass = USB_SUBCLASS_AUDIO_CONTROL |
130 | }, | 130 | }, |
131 | { | ||
132 | USB_DEVICE(0x046d, 0x0990), | ||
133 | .driver_info = (unsigned long) & (const struct snd_usb_audio_quirk) { | ||
134 | .vendor_name = "Logitech, Inc.", | ||
135 | .product_name = "QuickCam Pro 9000", | ||
136 | .ifnum = QUIRK_NO_INTERFACE | ||
137 | } | ||
138 | }, | ||
131 | 139 | ||
132 | /* | 140 | /* |
133 | * Yamaha devices | 141 | * Yamaha devices |