diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-03-06 13:55:41 -0500 |
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-03-06 13:55:41 -0500 |
| commit | 5f237425f352487a2e3fdef2f0557eedcd97d898 (patch) | |
| tree | 763d96a3ec3f89896663b0f07b85adba14d329f2 | |
| parent | 39ed853a2447ce85cf29b3c0357998ff968beeb5 (diff) | |
| parent | 4fda87df09bee2b1bf236aba408c3236d4f1fbca (diff) | |
Merge tag 'sound-4.0-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound
Pull sound fixes from Takashi Iwai:
"Here are a few more ASoC changes that have been gathered since rc1,
but it's still fairly calm over all. The only largish LOC is found in
atmel driver, and it's just a removal of broken non-DT stuff. The
rest are all small driver-specific fixes, nothing to worry much"
* tag 'sound-4.0-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (26 commits)
ALSA: hda - One more Dell macine needs DELL1_MIC_NO_PRESENCE quirk
ALSA: opl3: small array underflow
ALSA: line6: Clamp values correctly
ALSA: msnd: add some missing curly braces
ASoC: omap-pcm: Correct dma mask
ASoC: simple-card: Add a NULL pointer check in asoc_simple_card_dai_link_of
ASoC: sam9g20_wm8731: drop machine_is_xxx
ALSA: dice: fix wrong offsets for Dice interface
ALSA: oxfw: fix a condition and return code in start_stream()
ASoC: OMAP: mcbsp: Fix CLKX and CLKR pinmux when used as inputs
ASoC: rt5677: Correct the routing paths of that after IF1/2 DACx Mux
ASoC: sta32x: fix register range in regmap.
ASoC: rt5670: Set RT5670_IRQ_CTRL1 non volatile
ASoC: Intel: reset the DSP while suspending
ASoC: Intel: save and restore the CSR register
ASoC: Intel: update MMX ID to 3
ASoC: max98357a: Add missing header files
ASoC: cirrus: tlv320aic23 needs I2C
ASoC: Samsung: add missing I2C/SPI dependencies
ASoC: rt5670: Fix the speaker mono output issue
...
| -rw-r--r-- | sound/drivers/opl3/opl3_midi.c | 2 | ||||
| -rw-r--r-- | sound/firewire/dice/dice-interface.h | 18 | ||||
| -rw-r--r-- | sound/firewire/dice/dice-proc.c | 4 | ||||
| -rw-r--r-- | sound/firewire/oxfw/oxfw-stream.c | 5 | ||||
| -rw-r--r-- | sound/isa/msnd/msnd_pinnacle_mixer.c | 3 | ||||
| -rw-r--r-- | sound/pci/hda/patch_realtek.c | 7 | ||||
| -rw-r--r-- | sound/soc/atmel/sam9g20_wm8731.c | 68 | ||||
| -rw-r--r-- | sound/soc/cirrus/Kconfig | 2 | ||||
| -rw-r--r-- | sound/soc/codecs/Kconfig | 2 | ||||
| -rw-r--r-- | sound/soc/codecs/max98357a.c | 12 | ||||
| -rw-r--r-- | sound/soc/codecs/rt5670.c | 7 | ||||
| -rw-r--r-- | sound/soc/codecs/rt5677.c | 32 | ||||
| -rw-r--r-- | sound/soc/codecs/sta32x.c | 6 | ||||
| -rw-r--r-- | sound/soc/fsl/fsl_ssi.c | 11 | ||||
| -rw-r--r-- | sound/soc/generic/simple-card.c | 5 | ||||
| -rw-r--r-- | sound/soc/intel/sst-atom-controls.h | 2 | ||||
| -rw-r--r-- | sound/soc/intel/sst/sst.c | 10 | ||||
| -rw-r--r-- | sound/soc/omap/omap-hdmi-audio.c | 3 | ||||
| -rw-r--r-- | sound/soc/omap/omap-mcbsp.c | 11 | ||||
| -rw-r--r-- | sound/soc/omap/omap-pcm.c | 2 | ||||
| -rw-r--r-- | sound/soc/samsung/Kconfig | 10 | ||||
| -rw-r--r-- | sound/soc/sh/rcar/core.c | 4 | ||||
| -rw-r--r-- | sound/usb/line6/playback.c | 6 |
23 files changed, 140 insertions, 92 deletions
diff --git a/sound/drivers/opl3/opl3_midi.c b/sound/drivers/opl3/opl3_midi.c index f62780ed64ad..7821b07415a7 100644 --- a/sound/drivers/opl3/opl3_midi.c +++ b/sound/drivers/opl3/opl3_midi.c | |||
| @@ -105,6 +105,8 @@ static void snd_opl3_calc_pitch(unsigned char *fnum, unsigned char *blocknum, | |||
| 105 | int pitchbend = chan->midi_pitchbend; | 105 | int pitchbend = chan->midi_pitchbend; |
| 106 | int segment; | 106 | int segment; |
| 107 | 107 | ||
| 108 | if (pitchbend < -0x2000) | ||
| 109 | pitchbend = -0x2000; | ||
| 108 | if (pitchbend > 0x1FFF) | 110 | if (pitchbend > 0x1FFF) |
| 109 | pitchbend = 0x1FFF; | 111 | pitchbend = 0x1FFF; |
| 110 | 112 | ||
diff --git a/sound/firewire/dice/dice-interface.h b/sound/firewire/dice/dice-interface.h index 27b044f84c81..de7602bd69b5 100644 --- a/sound/firewire/dice/dice-interface.h +++ b/sound/firewire/dice/dice-interface.h | |||
| @@ -299,23 +299,23 @@ | |||
| 299 | #define RX_ISOCHRONOUS 0x008 | 299 | #define RX_ISOCHRONOUS 0x008 |
| 300 | 300 | ||
| 301 | /* | 301 | /* |
| 302 | * Index of first quadlet to be interpreted; read/write. If > 0, that many | ||
| 303 | * quadlets at the beginning of each data block will be ignored, and all the | ||
| 304 | * audio and MIDI quadlets will follow. | ||
| 305 | */ | ||
| 306 | #define RX_SEQ_START 0x00c | ||
| 307 | |||
| 308 | /* | ||
| 309 | * The number of audio channels; read-only. There will be one quadlet per | 302 | * The number of audio channels; read-only. There will be one quadlet per |
| 310 | * channel. | 303 | * channel. |
| 311 | */ | 304 | */ |
| 312 | #define RX_NUMBER_AUDIO 0x010 | 305 | #define RX_NUMBER_AUDIO 0x00c |
| 313 | 306 | ||
| 314 | /* | 307 | /* |
| 315 | * The number of MIDI ports, 0-8; read-only. If > 0, there will be one | 308 | * The number of MIDI ports, 0-8; read-only. If > 0, there will be one |
| 316 | * additional quadlet in each data block, following the audio quadlets. | 309 | * additional quadlet in each data block, following the audio quadlets. |
| 317 | */ | 310 | */ |
| 318 | #define RX_NUMBER_MIDI 0x014 | 311 | #define RX_NUMBER_MIDI 0x010 |
| 312 | |||
| 313 | /* | ||
| 314 | * Index of first quadlet to be interpreted; read/write. If > 0, that many | ||
| 315 | * quadlets at the beginning of each data block will be ignored, and all the | ||
| 316 | * audio and MIDI quadlets will follow. | ||
| 317 | */ | ||
| 318 | #define RX_SEQ_START 0x014 | ||
| 319 | 319 | ||
| 320 | /* | 320 | /* |
| 321 | * Names of all audio channels; read-only. Quadlets are byte-swapped. Names | 321 | * Names of all audio channels; read-only. Quadlets are byte-swapped. Names |
diff --git a/sound/firewire/dice/dice-proc.c b/sound/firewire/dice/dice-proc.c index f5c1d1bced59..ecfe20fd4de5 100644 --- a/sound/firewire/dice/dice-proc.c +++ b/sound/firewire/dice/dice-proc.c | |||
| @@ -99,9 +99,9 @@ static void dice_proc_read(struct snd_info_entry *entry, | |||
| 99 | } tx; | 99 | } tx; |
| 100 | struct { | 100 | struct { |
| 101 | u32 iso; | 101 | u32 iso; |
| 102 | u32 seq_start; | ||
| 103 | u32 number_audio; | 102 | u32 number_audio; |
| 104 | u32 number_midi; | 103 | u32 number_midi; |
| 104 | u32 seq_start; | ||
| 105 | char names[RX_NAMES_SIZE]; | 105 | char names[RX_NAMES_SIZE]; |
| 106 | u32 ac3_caps; | 106 | u32 ac3_caps; |
| 107 | u32 ac3_enable; | 107 | u32 ac3_enable; |
| @@ -204,10 +204,10 @@ static void dice_proc_read(struct snd_info_entry *entry, | |||
| 204 | break; | 204 | break; |
| 205 | snd_iprintf(buffer, "rx %u:\n", stream); | 205 | snd_iprintf(buffer, "rx %u:\n", stream); |
| 206 | snd_iprintf(buffer, " iso channel: %d\n", (int)buf.rx.iso); | 206 | snd_iprintf(buffer, " iso channel: %d\n", (int)buf.rx.iso); |
| 207 | snd_iprintf(buffer, " sequence start: %u\n", buf.rx.seq_start); | ||
| 208 | snd_iprintf(buffer, " audio channels: %u\n", | 207 | snd_iprintf(buffer, " audio channels: %u\n", |
| 209 | buf.rx.number_audio); | 208 | buf.rx.number_audio); |
| 210 | snd_iprintf(buffer, " midi ports: %u\n", buf.rx.number_midi); | 209 | snd_iprintf(buffer, " midi ports: %u\n", buf.rx.number_midi); |
| 210 | snd_iprintf(buffer, " sequence start: %u\n", buf.rx.seq_start); | ||
| 211 | if (quadlets >= 68) { | 211 | if (quadlets >= 68) { |
| 212 | dice_proc_fixup_string(buf.rx.names, RX_NAMES_SIZE); | 212 | dice_proc_fixup_string(buf.rx.names, RX_NAMES_SIZE); |
| 213 | snd_iprintf(buffer, " names: %s\n", buf.rx.names); | 213 | snd_iprintf(buffer, " names: %s\n", buf.rx.names); |
diff --git a/sound/firewire/oxfw/oxfw-stream.c b/sound/firewire/oxfw/oxfw-stream.c index 29ccb3637164..e6757cd85724 100644 --- a/sound/firewire/oxfw/oxfw-stream.c +++ b/sound/firewire/oxfw/oxfw-stream.c | |||
| @@ -171,9 +171,10 @@ static int start_stream(struct snd_oxfw *oxfw, struct amdtp_stream *stream, | |||
| 171 | } | 171 | } |
| 172 | 172 | ||
| 173 | /* Wait first packet */ | 173 | /* Wait first packet */ |
| 174 | err = amdtp_stream_wait_callback(stream, CALLBACK_TIMEOUT); | 174 | if (!amdtp_stream_wait_callback(stream, CALLBACK_TIMEOUT)) { |
| 175 | if (err < 0) | ||
| 176 | stop_stream(oxfw, stream); | 175 | stop_stream(oxfw, stream); |
| 176 | err = -ETIMEDOUT; | ||
| 177 | } | ||
| 177 | end: | 178 | end: |
| 178 | return err; | 179 | return err; |
| 179 | } | 180 | } |
diff --git a/sound/isa/msnd/msnd_pinnacle_mixer.c b/sound/isa/msnd/msnd_pinnacle_mixer.c index 17e49a071af4..b408540798c1 100644 --- a/sound/isa/msnd/msnd_pinnacle_mixer.c +++ b/sound/isa/msnd/msnd_pinnacle_mixer.c | |||
| @@ -306,11 +306,12 @@ int snd_msndmix_new(struct snd_card *card) | |||
| 306 | spin_lock_init(&chip->mixer_lock); | 306 | spin_lock_init(&chip->mixer_lock); |
| 307 | strcpy(card->mixername, "MSND Pinnacle Mixer"); | 307 | strcpy(card->mixername, "MSND Pinnacle Mixer"); |
| 308 | 308 | ||
| 309 | for (idx = 0; idx < ARRAY_SIZE(snd_msnd_controls); idx++) | 309 | for (idx = 0; idx < ARRAY_SIZE(snd_msnd_controls); idx++) { |
| 310 | err = snd_ctl_add(card, | 310 | err = snd_ctl_add(card, |
| 311 | snd_ctl_new1(snd_msnd_controls + idx, chip)); | 311 | snd_ctl_new1(snd_msnd_controls + idx, chip)); |
| 312 | if (err < 0) | 312 | if (err < 0) |
| 313 | return err; | 313 | return err; |
| 314 | } | ||
| 314 | 315 | ||
| 315 | return 0; | 316 | return 0; |
| 316 | } | 317 | } |
diff --git a/sound/pci/hda/patch_realtek.c b/sound/pci/hda/patch_realtek.c index b2b24a8b3dac..526398a4a442 100644 --- a/sound/pci/hda/patch_realtek.c +++ b/sound/pci/hda/patch_realtek.c | |||
| @@ -5209,6 +5209,13 @@ static const struct snd_hda_pin_quirk alc269_pin_fixup_tbl[] = { | |||
| 5209 | {0x17, 0x40000000}, | 5209 | {0x17, 0x40000000}, |
| 5210 | {0x1d, 0x40700001}, | 5210 | {0x1d, 0x40700001}, |
| 5211 | {0x21, 0x02211040}), | 5211 | {0x21, 0x02211040}), |
| 5212 | SND_HDA_PIN_QUIRK(0x10ec0255, 0x1028, "Dell", ALC255_FIXUP_DELL1_MIC_NO_PRESENCE, | ||
| 5213 | ALC255_STANDARD_PINS, | ||
| 5214 | {0x12, 0x90a60170}, | ||
| 5215 | {0x14, 0x90170140}, | ||
| 5216 | {0x17, 0x40000000}, | ||
| 5217 | {0x1d, 0x40700001}, | ||
| 5218 | {0x21, 0x02211050}), | ||
| 5212 | SND_HDA_PIN_QUIRK(0x10ec0280, 0x103c, "HP", ALC280_FIXUP_HP_GPIO4, | 5219 | SND_HDA_PIN_QUIRK(0x10ec0280, 0x103c, "HP", ALC280_FIXUP_HP_GPIO4, |
| 5213 | {0x12, 0x90a60130}, | 5220 | {0x12, 0x90a60130}, |
| 5214 | {0x13, 0x40000000}, | 5221 | {0x13, 0x40000000}, |
diff --git a/sound/soc/atmel/sam9g20_wm8731.c b/sound/soc/atmel/sam9g20_wm8731.c index f5ad214663f9..8de836165cf2 100644 --- a/sound/soc/atmel/sam9g20_wm8731.c +++ b/sound/soc/atmel/sam9g20_wm8731.c | |||
| @@ -46,8 +46,6 @@ | |||
| 46 | #include <sound/pcm_params.h> | 46 | #include <sound/pcm_params.h> |
| 47 | #include <sound/soc.h> | 47 | #include <sound/soc.h> |
| 48 | 48 | ||
| 49 | #include <asm/mach-types.h> | ||
| 50 | |||
| 51 | #include "../codecs/wm8731.h" | 49 | #include "../codecs/wm8731.h" |
| 52 | #include "atmel-pcm.h" | 50 | #include "atmel-pcm.h" |
| 53 | #include "atmel_ssc_dai.h" | 51 | #include "atmel_ssc_dai.h" |
| @@ -171,9 +169,7 @@ static int at91sam9g20ek_audio_probe(struct platform_device *pdev) | |||
| 171 | int ret; | 169 | int ret; |
| 172 | 170 | ||
| 173 | if (!np) { | 171 | if (!np) { |
| 174 | if (!(machine_is_at91sam9g20ek() || | 172 | return -ENODEV; |
| 175 | machine_is_at91sam9g20ek_2mmc())) | ||
| 176 | return -ENODEV; | ||
| 177 | } | 173 | } |
| 178 | 174 | ||
| 179 | ret = atmel_ssc_set_audio(0); | 175 | ret = atmel_ssc_set_audio(0); |
| @@ -210,39 +206,37 @@ static int at91sam9g20ek_audio_probe(struct platform_device *pdev) | |||
| 210 | card->dev = &pdev->dev; | 206 | card->dev = &pdev->dev; |
| 211 | 207 | ||
| 212 | /* Parse device node info */ | 208 | /* Parse device node info */ |
| 213 | if (np) { | 209 | ret = snd_soc_of_parse_card_name(card, "atmel,model"); |
| 214 | ret = snd_soc_of_parse_card_name(card, "atmel,model"); | 210 | if (ret) |
| 215 | if (ret) | 211 | goto err; |
| 216 | goto err; | 212 | |
| 217 | 213 | ret = snd_soc_of_parse_audio_routing(card, | |
| 218 | ret = snd_soc_of_parse_audio_routing(card, | 214 | "atmel,audio-routing"); |
| 219 | "atmel,audio-routing"); | 215 | if (ret) |
| 220 | if (ret) | 216 | goto err; |
| 221 | goto err; | 217 | |
| 222 | 218 | /* Parse codec info */ | |
| 223 | /* Parse codec info */ | 219 | at91sam9g20ek_dai.codec_name = NULL; |
| 224 | at91sam9g20ek_dai.codec_name = NULL; | 220 | codec_np = of_parse_phandle(np, "atmel,audio-codec", 0); |
| 225 | codec_np = of_parse_phandle(np, "atmel,audio-codec", 0); | 221 | if (!codec_np) { |
| 226 | if (!codec_np) { | 222 | dev_err(&pdev->dev, "codec info missing\n"); |
| 227 | dev_err(&pdev->dev, "codec info missing\n"); | 223 | return -EINVAL; |
| 228 | return -EINVAL; | 224 | } |
| 229 | } | 225 | at91sam9g20ek_dai.codec_of_node = codec_np; |
| 230 | at91sam9g20ek_dai.codec_of_node = codec_np; | 226 | |
| 231 | 227 | /* Parse dai and platform info */ | |
| 232 | /* Parse dai and platform info */ | 228 | at91sam9g20ek_dai.cpu_dai_name = NULL; |
| 233 | at91sam9g20ek_dai.cpu_dai_name = NULL; | 229 | at91sam9g20ek_dai.platform_name = NULL; |
| 234 | at91sam9g20ek_dai.platform_name = NULL; | 230 | cpu_np = of_parse_phandle(np, "atmel,ssc-controller", 0); |
| 235 | cpu_np = of_parse_phandle(np, "atmel,ssc-controller", 0); | 231 | if (!cpu_np) { |
| 236 | if (!cpu_np) { | 232 | dev_err(&pdev->dev, "dai and pcm info missing\n"); |
| 237 | dev_err(&pdev->dev, "dai and pcm info missing\n"); | 233 | return -EINVAL; |
| 238 | return -EINVAL; | ||
| 239 | } | ||
| 240 | at91sam9g20ek_dai.cpu_of_node = cpu_np; | ||
| 241 | at91sam9g20ek_dai.platform_of_node = cpu_np; | ||
| 242 | |||
| 243 | of_node_put(codec_np); | ||
| 244 | of_node_put(cpu_np); | ||
| 245 | } | 234 | } |
| 235 | at91sam9g20ek_dai.cpu_of_node = cpu_np; | ||
| 236 | at91sam9g20ek_dai.platform_of_node = cpu_np; | ||
| 237 | |||
| 238 | of_node_put(codec_np); | ||
| 239 | of_node_put(cpu_np); | ||
| 246 | 240 | ||
| 247 | ret = snd_soc_register_card(card); | 241 | ret = snd_soc_register_card(card); |
| 248 | if (ret) { | 242 | if (ret) { |
diff --git a/sound/soc/cirrus/Kconfig b/sound/soc/cirrus/Kconfig index 7b7fbcd49e5e..c7cd60f009e9 100644 --- a/sound/soc/cirrus/Kconfig +++ b/sound/soc/cirrus/Kconfig | |||
| @@ -16,7 +16,7 @@ config SND_EP93XX_SOC_AC97 | |||
| 16 | 16 | ||
| 17 | config SND_EP93XX_SOC_SNAPPERCL15 | 17 | config SND_EP93XX_SOC_SNAPPERCL15 |
| 18 | tristate "SoC Audio support for Bluewater Systems Snapper CL15 module" | 18 | tristate "SoC Audio support for Bluewater Systems Snapper CL15 module" |
| 19 | depends on SND_EP93XX_SOC && MACH_SNAPPER_CL15 | 19 | depends on SND_EP93XX_SOC && MACH_SNAPPER_CL15 && I2C |
| 20 | select SND_EP93XX_SOC_I2S | 20 | select SND_EP93XX_SOC_I2S |
| 21 | select SND_SOC_TLV320AIC23_I2C | 21 | select SND_SOC_TLV320AIC23_I2C |
| 22 | help | 22 | help |
diff --git a/sound/soc/codecs/Kconfig b/sound/soc/codecs/Kconfig index 064e6c18e109..ea9f0e31f9d4 100644 --- a/sound/soc/codecs/Kconfig +++ b/sound/soc/codecs/Kconfig | |||
| @@ -69,7 +69,7 @@ config SND_SOC_ALL_CODECS | |||
| 69 | select SND_SOC_MAX98088 if I2C | 69 | select SND_SOC_MAX98088 if I2C |
| 70 | select SND_SOC_MAX98090 if I2C | 70 | select SND_SOC_MAX98090 if I2C |
| 71 | select SND_SOC_MAX98095 if I2C | 71 | select SND_SOC_MAX98095 if I2C |
| 72 | select SND_SOC_MAX98357A | 72 | select SND_SOC_MAX98357A if GPIOLIB |
| 73 | select SND_SOC_MAX9850 if I2C | 73 | select SND_SOC_MAX9850 if I2C |
| 74 | select SND_SOC_MAX9768 if I2C | 74 | select SND_SOC_MAX9768 if I2C |
| 75 | select SND_SOC_MAX9877 if I2C | 75 | select SND_SOC_MAX9877 if I2C |
diff --git a/sound/soc/codecs/max98357a.c b/sound/soc/codecs/max98357a.c index 1806333ea29e..e9e6efbc21dd 100644 --- a/sound/soc/codecs/max98357a.c +++ b/sound/soc/codecs/max98357a.c | |||
| @@ -12,9 +12,19 @@ | |||
| 12 | * max98357a.c -- MAX98357A ALSA SoC Codec driver | 12 | * max98357a.c -- MAX98357A ALSA SoC Codec driver |
| 13 | */ | 13 | */ |
| 14 | 14 | ||
| 15 | #include <linux/module.h> | 15 | #include <linux/device.h> |
| 16 | #include <linux/err.h> | ||
| 16 | #include <linux/gpio.h> | 17 | #include <linux/gpio.h> |
| 18 | #include <linux/gpio/consumer.h> | ||
| 19 | #include <linux/kernel.h> | ||
| 20 | #include <linux/mod_devicetable.h> | ||
| 21 | #include <linux/module.h> | ||
| 22 | #include <linux/of.h> | ||
| 23 | #include <linux/platform_device.h> | ||
| 24 | #include <sound/pcm.h> | ||
| 17 | #include <sound/soc.h> | 25 | #include <sound/soc.h> |
| 26 | #include <sound/soc-dai.h> | ||
| 27 | #include <sound/soc-dapm.h> | ||
| 18 | 28 | ||
| 19 | #define DRV_NAME "max98357a" | 29 | #define DRV_NAME "max98357a" |
| 20 | 30 | ||
diff --git a/sound/soc/codecs/rt5670.c b/sound/soc/codecs/rt5670.c index e1a4a45c57e2..fd102613d20d 100644 --- a/sound/soc/codecs/rt5670.c +++ b/sound/soc/codecs/rt5670.c | |||
| @@ -225,7 +225,6 @@ static bool rt5670_volatile_register(struct device *dev, unsigned int reg) | |||
| 225 | case RT5670_ADC_EQ_CTRL1: | 225 | case RT5670_ADC_EQ_CTRL1: |
| 226 | case RT5670_EQ_CTRL1: | 226 | case RT5670_EQ_CTRL1: |
| 227 | case RT5670_ALC_CTRL_1: | 227 | case RT5670_ALC_CTRL_1: |
| 228 | case RT5670_IRQ_CTRL1: | ||
| 229 | case RT5670_IRQ_CTRL2: | 228 | case RT5670_IRQ_CTRL2: |
| 230 | case RT5670_INT_IRQ_ST: | 229 | case RT5670_INT_IRQ_ST: |
| 231 | case RT5670_IL_CMD: | 230 | case RT5670_IL_CMD: |
| @@ -2703,6 +2702,12 @@ static int rt5670_i2c_probe(struct i2c_client *i2c, | |||
| 2703 | 2702 | ||
| 2704 | regmap_write(rt5670->regmap, RT5670_RESET, 0); | 2703 | regmap_write(rt5670->regmap, RT5670_RESET, 0); |
| 2705 | 2704 | ||
| 2705 | regmap_read(rt5670->regmap, RT5670_VENDOR_ID, &val); | ||
| 2706 | if (val >= 4) | ||
| 2707 | regmap_write(rt5670->regmap, RT5670_GPIO_CTRL3, 0x0980); | ||
| 2708 | else | ||
| 2709 | regmap_write(rt5670->regmap, RT5670_GPIO_CTRL3, 0x0d00); | ||
| 2710 | |||
| 2706 | ret = regmap_register_patch(rt5670->regmap, init_list, | 2711 | ret = regmap_register_patch(rt5670->regmap, init_list, |
| 2707 | ARRAY_SIZE(init_list)); | 2712 | ARRAY_SIZE(init_list)); |
| 2708 | if (ret != 0) | 2713 | if (ret != 0) |
diff --git a/sound/soc/codecs/rt5677.c b/sound/soc/codecs/rt5677.c index 5d0bb8748dd1..fb9c20eace3f 100644 --- a/sound/soc/codecs/rt5677.c +++ b/sound/soc/codecs/rt5677.c | |||
| @@ -3284,8 +3284,8 @@ static const struct snd_soc_dapm_route rt5677_dapm_routes[] = { | |||
| 3284 | { "IB45 Bypass Mux", "Bypass", "IB45 Mux" }, | 3284 | { "IB45 Bypass Mux", "Bypass", "IB45 Mux" }, |
| 3285 | { "IB45 Bypass Mux", "Pass SRC", "IB45 Mux" }, | 3285 | { "IB45 Bypass Mux", "Pass SRC", "IB45 Mux" }, |
| 3286 | 3286 | ||
| 3287 | { "IB6 Mux", "IF1 DAC 6", "IF1 DAC6" }, | 3287 | { "IB6 Mux", "IF1 DAC 6", "IF1 DAC6 Mux" }, |
| 3288 | { "IB6 Mux", "IF2 DAC 6", "IF2 DAC6" }, | 3288 | { "IB6 Mux", "IF2 DAC 6", "IF2 DAC6 Mux" }, |
| 3289 | { "IB6 Mux", "SLB DAC 6", "SLB DAC6" }, | 3289 | { "IB6 Mux", "SLB DAC 6", "SLB DAC6" }, |
| 3290 | { "IB6 Mux", "STO4 ADC MIX L", "Stereo4 ADC MIXL" }, | 3290 | { "IB6 Mux", "STO4 ADC MIX L", "Stereo4 ADC MIXL" }, |
| 3291 | { "IB6 Mux", "IF4 DAC L", "IF4 DAC L" }, | 3291 | { "IB6 Mux", "IF4 DAC L", "IF4 DAC L" }, |
| @@ -3293,8 +3293,8 @@ static const struct snd_soc_dapm_route rt5677_dapm_routes[] = { | |||
| 3293 | { "IB6 Mux", "STO2 ADC MIX L", "Stereo2 ADC MIXL" }, | 3293 | { "IB6 Mux", "STO2 ADC MIX L", "Stereo2 ADC MIXL" }, |
| 3294 | { "IB6 Mux", "STO3 ADC MIX L", "Stereo3 ADC MIXL" }, | 3294 | { "IB6 Mux", "STO3 ADC MIX L", "Stereo3 ADC MIXL" }, |
| 3295 | 3295 | ||
| 3296 | { "IB7 Mux", "IF1 DAC 7", "IF1 DAC7" }, | 3296 | { "IB7 Mux", "IF1 DAC 7", "IF1 DAC7 Mux" }, |
| 3297 | { "IB7 Mux", "IF2 DAC 7", "IF2 DAC7" }, | 3297 | { "IB7 Mux", "IF2 DAC 7", "IF2 DAC7 Mux" }, |
| 3298 | { "IB7 Mux", "SLB DAC 7", "SLB DAC7" }, | 3298 | { "IB7 Mux", "SLB DAC 7", "SLB DAC7" }, |
| 3299 | { "IB7 Mux", "STO4 ADC MIX R", "Stereo4 ADC MIXR" }, | 3299 | { "IB7 Mux", "STO4 ADC MIX R", "Stereo4 ADC MIXR" }, |
| 3300 | { "IB7 Mux", "IF4 DAC R", "IF4 DAC R" }, | 3300 | { "IB7 Mux", "IF4 DAC R", "IF4 DAC R" }, |
| @@ -3635,15 +3635,15 @@ static const struct snd_soc_dapm_route rt5677_dapm_routes[] = { | |||
| 3635 | { "DAC1 FS", NULL, "DAC1 MIXL" }, | 3635 | { "DAC1 FS", NULL, "DAC1 MIXL" }, |
| 3636 | { "DAC1 FS", NULL, "DAC1 MIXR" }, | 3636 | { "DAC1 FS", NULL, "DAC1 MIXR" }, |
| 3637 | 3637 | ||
| 3638 | { "DAC2 L Mux", "IF1 DAC 2", "IF1 DAC2" }, | 3638 | { "DAC2 L Mux", "IF1 DAC 2", "IF1 DAC2 Mux" }, |
| 3639 | { "DAC2 L Mux", "IF2 DAC 2", "IF2 DAC2" }, | 3639 | { "DAC2 L Mux", "IF2 DAC 2", "IF2 DAC2 Mux" }, |
| 3640 | { "DAC2 L Mux", "IF3 DAC L", "IF3 DAC L" }, | 3640 | { "DAC2 L Mux", "IF3 DAC L", "IF3 DAC L" }, |
| 3641 | { "DAC2 L Mux", "IF4 DAC L", "IF4 DAC L" }, | 3641 | { "DAC2 L Mux", "IF4 DAC L", "IF4 DAC L" }, |
| 3642 | { "DAC2 L Mux", "SLB DAC 2", "SLB DAC2" }, | 3642 | { "DAC2 L Mux", "SLB DAC 2", "SLB DAC2" }, |
| 3643 | { "DAC2 L Mux", "OB 2", "OutBound2" }, | 3643 | { "DAC2 L Mux", "OB 2", "OutBound2" }, |
| 3644 | 3644 | ||
| 3645 | { "DAC2 R Mux", "IF1 DAC 3", "IF1 DAC3" }, | 3645 | { "DAC2 R Mux", "IF1 DAC 3", "IF1 DAC3 Mux" }, |
| 3646 | { "DAC2 R Mux", "IF2 DAC 3", "IF2 DAC3" }, | 3646 | { "DAC2 R Mux", "IF2 DAC 3", "IF2 DAC3 Mux" }, |
| 3647 | { "DAC2 R Mux", "IF3 DAC R", "IF3 DAC R" }, | 3647 | { "DAC2 R Mux", "IF3 DAC R", "IF3 DAC R" }, |
| 3648 | { "DAC2 R Mux", "IF4 DAC R", "IF4 DAC R" }, | 3648 | { "DAC2 R Mux", "IF4 DAC R", "IF4 DAC R" }, |
| 3649 | { "DAC2 R Mux", "SLB DAC 3", "SLB DAC3" }, | 3649 | { "DAC2 R Mux", "SLB DAC 3", "SLB DAC3" }, |
| @@ -3651,29 +3651,29 @@ static const struct snd_soc_dapm_route rt5677_dapm_routes[] = { | |||
| 3651 | { "DAC2 R Mux", "Haptic Generator", "Haptic Generator" }, | 3651 | { "DAC2 R Mux", "Haptic Generator", "Haptic Generator" }, |
| 3652 | { "DAC2 R Mux", "VAD ADC", "VAD ADC Mux" }, | 3652 | { "DAC2 R Mux", "VAD ADC", "VAD ADC Mux" }, |
| 3653 | 3653 | ||
| 3654 | { "DAC3 L Mux", "IF1 DAC 4", "IF1 DAC4" }, | 3654 | { "DAC3 L Mux", "IF1 DAC 4", "IF1 DAC4 Mux" }, |
| 3655 | { "DAC3 L Mux", "IF2 DAC 4", "IF2 DAC4" }, | 3655 | { "DAC3 L Mux", "IF2 DAC 4", "IF2 DAC4 Mux" }, |
| 3656 | { "DAC3 L Mux", "IF3 DAC L", "IF3 DAC L" }, | 3656 | { "DAC3 L Mux", "IF3 DAC L", "IF3 DAC L" }, |
| 3657 | { "DAC3 L Mux", "IF4 DAC L", "IF4 DAC L" }, | 3657 | { "DAC3 L Mux", "IF4 DAC L", "IF4 DAC L" }, |
| 3658 | { "DAC3 L Mux", "SLB DAC 4", "SLB DAC4" }, | 3658 | { "DAC3 L Mux", "SLB DAC 4", "SLB DAC4" }, |
| 3659 | { "DAC3 L Mux", "OB 4", "OutBound4" }, | 3659 | { "DAC3 L Mux", "OB 4", "OutBound4" }, |
| 3660 | 3660 | ||
| 3661 | { "DAC3 R Mux", "IF1 DAC 5", "IF1 DAC4" }, | 3661 | { "DAC3 R Mux", "IF1 DAC 5", "IF1 DAC5 Mux" }, |
| 3662 | { "DAC3 R Mux", "IF2 DAC 5", "IF2 DAC4" }, | 3662 | { "DAC3 R Mux", "IF2 DAC 5", "IF2 DAC5 Mux" }, |
| 3663 | { "DAC3 R Mux", "IF3 DAC R", "IF3 DAC R" }, | 3663 | { "DAC3 R Mux", "IF3 DAC R", "IF3 DAC R" }, |
| 3664 | { "DAC3 R Mux", "IF4 DAC R", "IF4 DAC R" }, | 3664 | { "DAC3 R Mux", "IF4 DAC R", "IF4 DAC R" }, |
| 3665 | { "DAC3 R Mux", "SLB DAC 5", "SLB DAC5" }, | 3665 | { "DAC3 R Mux", "SLB DAC 5", "SLB DAC5" }, |
| 3666 | { "DAC3 R Mux", "OB 5", "OutBound5" }, | 3666 | { "DAC3 R Mux", "OB 5", "OutBound5" }, |
| 3667 | 3667 | ||
| 3668 | { "DAC4 L Mux", "IF1 DAC 6", "IF1 DAC6" }, | 3668 | { "DAC4 L Mux", "IF1 DAC 6", "IF1 DAC6 Mux" }, |
| 3669 | { "DAC4 L Mux", "IF2 DAC 6", "IF2 DAC6" }, | 3669 | { "DAC4 L Mux", "IF2 DAC 6", "IF2 DAC6 Mux" }, |
| 3670 | { "DAC4 L Mux", "IF3 DAC L", "IF3 DAC L" }, | 3670 | { "DAC4 L Mux", "IF3 DAC L", "IF3 DAC L" }, |
| 3671 | { "DAC4 L Mux", "IF4 DAC L", "IF4 DAC L" }, | 3671 | { "DAC4 L Mux", "IF4 DAC L", "IF4 DAC L" }, |
| 3672 | { "DAC4 L Mux", "SLB DAC 6", "SLB DAC6" }, | 3672 | { "DAC4 L Mux", "SLB DAC 6", "SLB DAC6" }, |
| 3673 | { "DAC4 L Mux", "OB 6", "OutBound6" }, | 3673 | { "DAC4 L Mux", "OB 6", "OutBound6" }, |
| 3674 | 3674 | ||
| 3675 | { "DAC4 R Mux", "IF1 DAC 7", "IF1 DAC7" }, | 3675 | { "DAC4 R Mux", "IF1 DAC 7", "IF1 DAC7 Mux" }, |
| 3676 | { "DAC4 R Mux", "IF2 DAC 7", "IF2 DAC7" }, | 3676 | { "DAC4 R Mux", "IF2 DAC 7", "IF2 DAC7 Mux" }, |
| 3677 | { "DAC4 R Mux", "IF3 DAC R", "IF3 DAC R" }, | 3677 | { "DAC4 R Mux", "IF3 DAC R", "IF3 DAC R" }, |
| 3678 | { "DAC4 R Mux", "IF4 DAC R", "IF4 DAC R" }, | 3678 | { "DAC4 R Mux", "IF4 DAC R", "IF4 DAC R" }, |
| 3679 | { "DAC4 R Mux", "SLB DAC 7", "SLB DAC7" }, | 3679 | { "DAC4 R Mux", "SLB DAC 7", "SLB DAC7" }, |
diff --git a/sound/soc/codecs/sta32x.c b/sound/soc/codecs/sta32x.c index 3a1343fa109b..007a0e3bc273 100644 --- a/sound/soc/codecs/sta32x.c +++ b/sound/soc/codecs/sta32x.c | |||
| @@ -106,13 +106,11 @@ static const struct reg_default sta32x_regs[] = { | |||
| 106 | }; | 106 | }; |
| 107 | 107 | ||
| 108 | static const struct regmap_range sta32x_write_regs_range[] = { | 108 | static const struct regmap_range sta32x_write_regs_range[] = { |
| 109 | regmap_reg_range(STA32X_CONFA, STA32X_AUTO2), | 109 | regmap_reg_range(STA32X_CONFA, STA32X_FDRC2), |
| 110 | regmap_reg_range(STA32X_C1CFG, STA32X_FDRC2), | ||
| 111 | }; | 110 | }; |
| 112 | 111 | ||
| 113 | static const struct regmap_range sta32x_read_regs_range[] = { | 112 | static const struct regmap_range sta32x_read_regs_range[] = { |
| 114 | regmap_reg_range(STA32X_CONFA, STA32X_AUTO2), | 113 | regmap_reg_range(STA32X_CONFA, STA32X_FDRC2), |
| 115 | regmap_reg_range(STA32X_C1CFG, STA32X_FDRC2), | ||
| 116 | }; | 114 | }; |
| 117 | 115 | ||
| 118 | static const struct regmap_range sta32x_volatile_regs_range[] = { | 116 | static const struct regmap_range sta32x_volatile_regs_range[] = { |
diff --git a/sound/soc/fsl/fsl_ssi.c b/sound/soc/fsl/fsl_ssi.c index 2595611e8a6d..b9fabbf69db6 100644 --- a/sound/soc/fsl/fsl_ssi.c +++ b/sound/soc/fsl/fsl_ssi.c | |||
| @@ -603,10 +603,6 @@ static int fsl_ssi_set_bclk(struct snd_pcm_substream *substream, | |||
| 603 | factor = (div2 + 1) * (7 * psr + 1) * 2; | 603 | factor = (div2 + 1) * (7 * psr + 1) * 2; |
| 604 | 604 | ||
| 605 | for (i = 0; i < 255; i++) { | 605 | for (i = 0; i < 255; i++) { |
| 606 | /* The bclk rate must be smaller than 1/5 sysclk rate */ | ||
| 607 | if (factor * (i + 1) < 5) | ||
| 608 | continue; | ||
| 609 | |||
| 610 | tmprate = freq * factor * (i + 2); | 606 | tmprate = freq * factor * (i + 2); |
| 611 | 607 | ||
| 612 | if (baudclk_is_used) | 608 | if (baudclk_is_used) |
| @@ -614,6 +610,13 @@ static int fsl_ssi_set_bclk(struct snd_pcm_substream *substream, | |||
| 614 | else | 610 | else |
| 615 | clkrate = clk_round_rate(ssi_private->baudclk, tmprate); | 611 | clkrate = clk_round_rate(ssi_private->baudclk, tmprate); |
| 616 | 612 | ||
| 613 | /* | ||
| 614 | * Hardware limitation: The bclk rate must be | ||
| 615 | * never greater than 1/5 IPG clock rate | ||
| 616 | */ | ||
| 617 | if (clkrate * 5 > clk_get_rate(ssi_private->clk)) | ||
| 618 | continue; | ||
| 619 | |||
| 617 | clkrate /= factor; | 620 | clkrate /= factor; |
| 618 | afreq = clkrate / (i + 1); | 621 | afreq = clkrate / (i + 1); |
| 619 | 622 | ||
diff --git a/sound/soc/generic/simple-card.c b/sound/soc/generic/simple-card.c index f7c6734bd5da..fb550b5869d2 100644 --- a/sound/soc/generic/simple-card.c +++ b/sound/soc/generic/simple-card.c | |||
| @@ -372,6 +372,11 @@ static int asoc_simple_card_dai_link_of(struct device_node *node, | |||
| 372 | strlen(dai_link->cpu_dai_name) + | 372 | strlen(dai_link->cpu_dai_name) + |
| 373 | strlen(dai_link->codec_dai_name) + 2, | 373 | strlen(dai_link->codec_dai_name) + 2, |
| 374 | GFP_KERNEL); | 374 | GFP_KERNEL); |
| 375 | if (!name) { | ||
| 376 | ret = -ENOMEM; | ||
| 377 | goto dai_link_of_err; | ||
| 378 | } | ||
| 379 | |||
| 375 | sprintf(name, "%s-%s", dai_link->cpu_dai_name, | 380 | sprintf(name, "%s-%s", dai_link->cpu_dai_name, |
| 376 | dai_link->codec_dai_name); | 381 | dai_link->codec_dai_name); |
| 377 | dai_link->name = dai_link->stream_name = name; | 382 | dai_link->name = dai_link->stream_name = name; |
diff --git a/sound/soc/intel/sst-atom-controls.h b/sound/soc/intel/sst-atom-controls.h index dfebfdd5eb2a..daecc58f28af 100644 --- a/sound/soc/intel/sst-atom-controls.h +++ b/sound/soc/intel/sst-atom-controls.h | |||
| @@ -150,7 +150,7 @@ enum sst_cmd_type { | |||
| 150 | 150 | ||
| 151 | enum sst_task { | 151 | enum sst_task { |
| 152 | SST_TASK_SBA = 1, | 152 | SST_TASK_SBA = 1, |
| 153 | SST_TASK_MMX, | 153 | SST_TASK_MMX = 3, |
| 154 | }; | 154 | }; |
| 155 | 155 | ||
| 156 | enum sst_type { | 156 | enum sst_type { |
diff --git a/sound/soc/intel/sst/sst.c b/sound/soc/intel/sst/sst.c index 8a8d56a146e7..11c578651c1c 100644 --- a/sound/soc/intel/sst/sst.c +++ b/sound/soc/intel/sst/sst.c | |||
| @@ -350,7 +350,9 @@ static inline void sst_save_shim64(struct intel_sst_drv *ctx, | |||
| 350 | 350 | ||
| 351 | spin_lock_irqsave(&ctx->ipc_spin_lock, irq_flags); | 351 | spin_lock_irqsave(&ctx->ipc_spin_lock, irq_flags); |
| 352 | 352 | ||
| 353 | shim_regs->imrx = sst_shim_read64(shim, SST_IMRX), | 353 | shim_regs->imrx = sst_shim_read64(shim, SST_IMRX); |
| 354 | shim_regs->csr = sst_shim_read64(shim, SST_CSR); | ||
| 355 | |||
| 354 | 356 | ||
| 355 | spin_unlock_irqrestore(&ctx->ipc_spin_lock, irq_flags); | 357 | spin_unlock_irqrestore(&ctx->ipc_spin_lock, irq_flags); |
| 356 | } | 358 | } |
| @@ -367,6 +369,7 @@ static inline void sst_restore_shim64(struct intel_sst_drv *ctx, | |||
| 367 | */ | 369 | */ |
| 368 | spin_lock_irqsave(&ctx->ipc_spin_lock, irq_flags); | 370 | spin_lock_irqsave(&ctx->ipc_spin_lock, irq_flags); |
| 369 | sst_shim_write64(shim, SST_IMRX, shim_regs->imrx), | 371 | sst_shim_write64(shim, SST_IMRX, shim_regs->imrx), |
| 372 | sst_shim_write64(shim, SST_CSR, shim_regs->csr), | ||
| 370 | spin_unlock_irqrestore(&ctx->ipc_spin_lock, irq_flags); | 373 | spin_unlock_irqrestore(&ctx->ipc_spin_lock, irq_flags); |
| 371 | } | 374 | } |
| 372 | 375 | ||
| @@ -379,6 +382,10 @@ void sst_configure_runtime_pm(struct intel_sst_drv *ctx) | |||
| 379 | * initially active. So change the state to active before | 382 | * initially active. So change the state to active before |
| 380 | * enabling the pm | 383 | * enabling the pm |
| 381 | */ | 384 | */ |
| 385 | |||
| 386 | if (!acpi_disabled) | ||
| 387 | pm_runtime_set_active(ctx->dev); | ||
| 388 | |||
| 382 | pm_runtime_enable(ctx->dev); | 389 | pm_runtime_enable(ctx->dev); |
| 383 | 390 | ||
| 384 | if (acpi_disabled) | 391 | if (acpi_disabled) |
| @@ -409,6 +416,7 @@ static int intel_sst_runtime_suspend(struct device *dev) | |||
| 409 | synchronize_irq(ctx->irq_num); | 416 | synchronize_irq(ctx->irq_num); |
| 410 | flush_workqueue(ctx->post_msg_wq); | 417 | flush_workqueue(ctx->post_msg_wq); |
| 411 | 418 | ||
| 419 | ctx->ops->reset(ctx); | ||
| 412 | /* save the shim registers because PMC doesn't save state */ | 420 | /* save the shim registers because PMC doesn't save state */ |
| 413 | sst_save_shim64(ctx, ctx->shim, ctx->shim_regs64); | 421 | sst_save_shim64(ctx, ctx->shim, ctx->shim_regs64); |
| 414 | 422 | ||
diff --git a/sound/soc/omap/omap-hdmi-audio.c b/sound/soc/omap/omap-hdmi-audio.c index ccfb41c22e53..f7eb42aa3f38 100644 --- a/sound/soc/omap/omap-hdmi-audio.c +++ b/sound/soc/omap/omap-hdmi-audio.c | |||
| @@ -352,6 +352,9 @@ static int omap_hdmi_audio_probe(struct platform_device *pdev) | |||
| 352 | return ret; | 352 | return ret; |
| 353 | 353 | ||
| 354 | card = devm_kzalloc(dev, sizeof(*card), GFP_KERNEL); | 354 | card = devm_kzalloc(dev, sizeof(*card), GFP_KERNEL); |
| 355 | if (!card) | ||
| 356 | return -ENOMEM; | ||
| 357 | |||
| 355 | card->name = devm_kasprintf(dev, GFP_KERNEL, | 358 | card->name = devm_kasprintf(dev, GFP_KERNEL, |
| 356 | "HDMI %s", dev_name(ad->dssdev)); | 359 | "HDMI %s", dev_name(ad->dssdev)); |
| 357 | card->owner = THIS_MODULE; | 360 | card->owner = THIS_MODULE; |
diff --git a/sound/soc/omap/omap-mcbsp.c b/sound/soc/omap/omap-mcbsp.c index c7eb9dd67f60..fd99d89de6a8 100644 --- a/sound/soc/omap/omap-mcbsp.c +++ b/sound/soc/omap/omap-mcbsp.c | |||
| @@ -530,8 +530,19 @@ static int omap_mcbsp_dai_set_dai_sysclk(struct snd_soc_dai *cpu_dai, | |||
| 530 | 530 | ||
| 531 | case OMAP_MCBSP_SYSCLK_CLKX_EXT: | 531 | case OMAP_MCBSP_SYSCLK_CLKX_EXT: |
| 532 | regs->srgr2 |= CLKSM; | 532 | regs->srgr2 |= CLKSM; |
| 533 | regs->pcr0 |= SCLKME; | ||
| 534 | /* | ||
| 535 | * If McBSP is master but yet the CLKX/CLKR pin drives the SRG, | ||
| 536 | * disable output on those pins. This enables to inject the | ||
| 537 | * reference clock through CLKX/CLKR. For this to work | ||
| 538 | * set_dai_sysclk() _needs_ to be called after set_dai_fmt(). | ||
| 539 | */ | ||
| 540 | regs->pcr0 &= ~CLKXM; | ||
| 541 | break; | ||
| 533 | case OMAP_MCBSP_SYSCLK_CLKR_EXT: | 542 | case OMAP_MCBSP_SYSCLK_CLKR_EXT: |
| 534 | regs->pcr0 |= SCLKME; | 543 | regs->pcr0 |= SCLKME; |
| 544 | /* Disable ouput on CLKR pin in master mode */ | ||
| 545 | regs->pcr0 &= ~CLKRM; | ||
| 535 | break; | 546 | break; |
| 536 | default: | 547 | default: |
| 537 | err = -ENODEV; | 548 | err = -ENODEV; |
diff --git a/sound/soc/omap/omap-pcm.c b/sound/soc/omap/omap-pcm.c index f4b05bc23e4b..1343ecbf0bd5 100644 --- a/sound/soc/omap/omap-pcm.c +++ b/sound/soc/omap/omap-pcm.c | |||
| @@ -201,7 +201,7 @@ static int omap_pcm_new(struct snd_soc_pcm_runtime *rtd) | |||
| 201 | struct snd_pcm *pcm = rtd->pcm; | 201 | struct snd_pcm *pcm = rtd->pcm; |
| 202 | int ret; | 202 | int ret; |
| 203 | 203 | ||
| 204 | ret = dma_coerce_mask_and_coherent(card->dev, DMA_BIT_MASK(64)); | 204 | ret = dma_coerce_mask_and_coherent(card->dev, DMA_BIT_MASK(32)); |
| 205 | if (ret) | 205 | if (ret) |
| 206 | return ret; | 206 | return ret; |
| 207 | 207 | ||
diff --git a/sound/soc/samsung/Kconfig b/sound/soc/samsung/Kconfig index 3cebf6ca03df..0632a36852c8 100644 --- a/sound/soc/samsung/Kconfig +++ b/sound/soc/samsung/Kconfig | |||
| @@ -174,7 +174,7 @@ config SND_SOC_SMDK_WM8994_PCM | |||
| 174 | 174 | ||
| 175 | config SND_SOC_SPEYSIDE | 175 | config SND_SOC_SPEYSIDE |
| 176 | tristate "Audio support for Wolfson Speyside" | 176 | tristate "Audio support for Wolfson Speyside" |
| 177 | depends on SND_SOC_SAMSUNG && MACH_WLF_CRAGG_6410 | 177 | depends on SND_SOC_SAMSUNG && MACH_WLF_CRAGG_6410 && I2C && SPI_MASTER |
| 178 | select SND_SAMSUNG_I2S | 178 | select SND_SAMSUNG_I2S |
| 179 | select SND_SOC_WM8996 | 179 | select SND_SOC_WM8996 |
| 180 | select SND_SOC_WM9081 | 180 | select SND_SOC_WM9081 |
| @@ -189,7 +189,7 @@ config SND_SOC_TOBERMORY | |||
| 189 | 189 | ||
| 190 | config SND_SOC_BELLS | 190 | config SND_SOC_BELLS |
| 191 | tristate "Audio support for Wolfson Bells" | 191 | tristate "Audio support for Wolfson Bells" |
| 192 | depends on SND_SOC_SAMSUNG && MACH_WLF_CRAGG_6410 && MFD_ARIZONA | 192 | depends on SND_SOC_SAMSUNG && MACH_WLF_CRAGG_6410 && MFD_ARIZONA && I2C && SPI_MASTER |
| 193 | select SND_SAMSUNG_I2S | 193 | select SND_SAMSUNG_I2S |
| 194 | select SND_SOC_WM5102 | 194 | select SND_SOC_WM5102 |
| 195 | select SND_SOC_WM5110 | 195 | select SND_SOC_WM5110 |
| @@ -206,7 +206,7 @@ config SND_SOC_LOWLAND | |||
| 206 | 206 | ||
| 207 | config SND_SOC_LITTLEMILL | 207 | config SND_SOC_LITTLEMILL |
| 208 | tristate "Audio support for Wolfson Littlemill" | 208 | tristate "Audio support for Wolfson Littlemill" |
| 209 | depends on SND_SOC_SAMSUNG && MACH_WLF_CRAGG_6410 | 209 | depends on SND_SOC_SAMSUNG && MACH_WLF_CRAGG_6410 && I2C |
| 210 | select SND_SAMSUNG_I2S | 210 | select SND_SAMSUNG_I2S |
| 211 | select MFD_WM8994 | 211 | select MFD_WM8994 |
| 212 | select SND_SOC_WM8994 | 212 | select SND_SOC_WM8994 |
| @@ -223,7 +223,7 @@ config SND_SOC_SNOW | |||
| 223 | 223 | ||
| 224 | config SND_SOC_ODROIDX2 | 224 | config SND_SOC_ODROIDX2 |
| 225 | tristate "Audio support for Odroid-X2 and Odroid-U3" | 225 | tristate "Audio support for Odroid-X2 and Odroid-U3" |
| 226 | depends on SND_SOC_SAMSUNG | 226 | depends on SND_SOC_SAMSUNG && I2C |
| 227 | select SND_SOC_MAX98090 | 227 | select SND_SOC_MAX98090 |
| 228 | select SND_SAMSUNG_I2S | 228 | select SND_SAMSUNG_I2S |
| 229 | help | 229 | help |
| @@ -231,6 +231,6 @@ config SND_SOC_ODROIDX2 | |||
| 231 | 231 | ||
| 232 | config SND_SOC_ARNDALE_RT5631_ALC5631 | 232 | config SND_SOC_ARNDALE_RT5631_ALC5631 |
| 233 | tristate "Audio support for RT5631(ALC5631) on Arndale Board" | 233 | tristate "Audio support for RT5631(ALC5631) on Arndale Board" |
| 234 | depends on SND_SOC_SAMSUNG | 234 | depends on SND_SOC_SAMSUNG && I2C |
| 235 | select SND_SAMSUNG_I2S | 235 | select SND_SAMSUNG_I2S |
| 236 | select SND_SOC_RT5631 | 236 | select SND_SOC_RT5631 |
diff --git a/sound/soc/sh/rcar/core.c b/sound/soc/sh/rcar/core.c index 1b53605f7154..110577c52317 100644 --- a/sound/soc/sh/rcar/core.c +++ b/sound/soc/sh/rcar/core.c | |||
| @@ -1252,6 +1252,8 @@ static int rsnd_probe(struct platform_device *pdev) | |||
| 1252 | goto exit_snd_probe; | 1252 | goto exit_snd_probe; |
| 1253 | } | 1253 | } |
| 1254 | 1254 | ||
| 1255 | dev_set_drvdata(dev, priv); | ||
| 1256 | |||
| 1255 | /* | 1257 | /* |
| 1256 | * asoc register | 1258 | * asoc register |
| 1257 | */ | 1259 | */ |
| @@ -1268,8 +1270,6 @@ static int rsnd_probe(struct platform_device *pdev) | |||
| 1268 | goto exit_snd_soc; | 1270 | goto exit_snd_soc; |
| 1269 | } | 1271 | } |
| 1270 | 1272 | ||
| 1271 | dev_set_drvdata(dev, priv); | ||
| 1272 | |||
| 1273 | pm_runtime_enable(dev); | 1273 | pm_runtime_enable(dev); |
| 1274 | 1274 | ||
| 1275 | dev_info(dev, "probed\n"); | 1275 | dev_info(dev, "probed\n"); |
diff --git a/sound/usb/line6/playback.c b/sound/usb/line6/playback.c index 05dee690f487..97ed593f6010 100644 --- a/sound/usb/line6/playback.c +++ b/sound/usb/line6/playback.c | |||
| @@ -39,7 +39,7 @@ static void change_volume(struct urb *urb_out, int volume[], | |||
| 39 | for (; p < buf_end; ++p) { | 39 | for (; p < buf_end; ++p) { |
| 40 | short pv = le16_to_cpu(*p); | 40 | short pv = le16_to_cpu(*p); |
| 41 | int val = (pv * volume[chn & 1]) >> 8; | 41 | int val = (pv * volume[chn & 1]) >> 8; |
| 42 | pv = clamp(val, 0x7fff, -0x8000); | 42 | pv = clamp(val, -0x8000, 0x7fff); |
| 43 | *p = cpu_to_le16(pv); | 43 | *p = cpu_to_le16(pv); |
| 44 | ++chn; | 44 | ++chn; |
| 45 | } | 45 | } |
| @@ -54,7 +54,7 @@ static void change_volume(struct urb *urb_out, int volume[], | |||
| 54 | 54 | ||
| 55 | val = p[0] + (p[1] << 8) + ((signed char)p[2] << 16); | 55 | val = p[0] + (p[1] << 8) + ((signed char)p[2] << 16); |
| 56 | val = (val * volume[chn & 1]) >> 8; | 56 | val = (val * volume[chn & 1]) >> 8; |
| 57 | val = clamp(val, 0x7fffff, -0x800000); | 57 | val = clamp(val, -0x800000, 0x7fffff); |
| 58 | p[0] = val; | 58 | p[0] = val; |
| 59 | p[1] = val >> 8; | 59 | p[1] = val >> 8; |
| 60 | p[2] = val >> 16; | 60 | p[2] = val >> 16; |
| @@ -126,7 +126,7 @@ static void add_monitor_signal(struct urb *urb_out, unsigned char *signal, | |||
| 126 | short pov = le16_to_cpu(*po); | 126 | short pov = le16_to_cpu(*po); |
| 127 | short piv = le16_to_cpu(*pi); | 127 | short piv = le16_to_cpu(*pi); |
| 128 | int val = pov + ((piv * volume) >> 8); | 128 | int val = pov + ((piv * volume) >> 8); |
| 129 | pov = clamp(val, 0x7fff, -0x8000); | 129 | pov = clamp(val, -0x8000, 0x7fff); |
| 130 | *po = cpu_to_le16(pov); | 130 | *po = cpu_to_le16(pov); |
| 131 | } | 131 | } |
| 132 | } | 132 | } |
