Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6

* 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound-2.6: (32 commits)
ALSA: hda: Conexant: Allow different output types to share DAC
ASoC: Correct element count for WM8996 sidetone HPF
ASoC: Tegra: wm8903 machine driver: Drop Ventana support
ASoC: Add samsung maintainer
ASoC: Add Springbank I/O card to Speyside Kconfig
ALSA: hda/conexant - Enable ADC-switching for auto-mic mode, too
ALSA: hda - Fix double-headphone/speaker paths for Cxt auto-parser
ALSA: hda - Update jack-sense info even when no automute is set
ALSA: hda - Fix output-path initialization for Realtek auto-parser
sound/soc/fsl/mpc8610_hpcd.c: add missing of_node_put
sound/soc/fsl/p1022_ds.c: add missing of_node_put
sound/soc/ep93xx/ep93xx-i2s.c: add missing kfree
sound/soc/kirkwood/kirkwood-i2s.c: add missing kfree
ASoC: soc-core: use GFP_KERNEL flag for kmalloc in snd_soc_cnew
sound/soc/fsl/fsl_dma.c: add missing of_node_put
ASoC: Clear completions from late WM8996 FLL lock IRQs
ASoC: Clear any outstanding WM8962 FLL lock completions before waiting
ASoC: Ensure we only run Speyside WM8962 bias level callbacks once
ASoC: Fix configuration of WM8996 input enables
ASoC: WM8996 record paths need AIFCLK
...

+148 -77
+1
MAINTAINERS
··· 5532 5532 5533 5533 SAMSUNG AUDIO (ASoC) DRIVERS 5534 5534 M: Jassi Brar <jassisinghbrar@gmail.com> 5535 + M: Sangbeom Kim <sbkim73@samsung.com> 5535 5536 L: alsa-devel@alsa-project.org (moderated for non-subscribers) 5536 5537 S: Supported 5537 5538 F: sound/soc/samsung
+36 -21
sound/pci/hda/patch_conexant.c
··· 3348 3348 3349 3349 #define MAX_AUTO_DACS 5 3350 3350 3351 + #define DAC_SLAVE_FLAG 0x8000 /* filled dac is a slave */ 3352 + 3351 3353 /* fill analog DAC list from the widget tree */ 3352 3354 static int fill_cx_auto_dacs(struct hda_codec *codec, hda_nid_t *dacs) 3353 3355 { ··· 3372 3370 /* fill pin_dac_pair list from the pin and dac list */ 3373 3371 static int fill_dacs_for_pins(struct hda_codec *codec, hda_nid_t *pins, 3374 3372 int num_pins, hda_nid_t *dacs, int *rest, 3375 - struct pin_dac_pair *filled, int type) 3373 + struct pin_dac_pair *filled, int nums, 3374 + int type) 3376 3375 { 3377 - int i, nums; 3376 + int i, start = nums; 3378 3377 3379 - nums = 0; 3380 - for (i = 0; i < num_pins; i++) { 3378 + for (i = 0; i < num_pins; i++, nums++) { 3381 3379 filled[nums].pin = pins[i]; 3382 3380 filled[nums].type = type; 3383 3381 filled[nums].dac = get_unassigned_dac(codec, pins[i], dacs, rest); 3384 - nums++; 3382 + if (filled[nums].dac) 3383 + continue; 3384 + if (filled[start].dac && get_connection_index(codec, pins[i], filled[start].dac) >= 0) { 3385 + filled[nums].dac = filled[start].dac | DAC_SLAVE_FLAG; 3386 + continue; 3387 + } 3388 + if (filled[0].dac && get_connection_index(codec, pins[i], filled[0].dac) >= 0) { 3389 + filled[nums].dac = filled[0].dac | DAC_SLAVE_FLAG; 3390 + continue; 3391 + } 3392 + snd_printdd("Failed to find a DAC for pin 0x%x", pins[i]); 3385 3393 } 3386 3394 return nums; 3387 3395 } ··· 3407 3395 rest = fill_cx_auto_dacs(codec, dacs); 3408 3396 /* parse all analog output pins */ 3409 3397 nums = fill_dacs_for_pins(codec, cfg->line_out_pins, cfg->line_outs, 3410 - dacs, &rest, spec->dac_info, 3411 - AUTO_PIN_LINE_OUT); 3412 - nums += fill_dacs_for_pins(codec, cfg->hp_pins, cfg->hp_outs, 3413 - dacs, &rest, spec->dac_info + nums, 3414 - AUTO_PIN_HP_OUT); 3415 - nums += fill_dacs_for_pins(codec, cfg->speaker_pins, cfg->speaker_outs, 3416 - dacs, &rest, spec->dac_info + nums, 3417 - AUTO_PIN_SPEAKER_OUT); 3398 + dacs, &rest, spec->dac_info, 0, 3399 + AUTO_PIN_LINE_OUT); 3400 + nums = fill_dacs_for_pins(codec, cfg->hp_pins, cfg->hp_outs, 3401 + dacs, &rest, spec->dac_info, nums, 3402 + AUTO_PIN_HP_OUT); 3403 + nums = fill_dacs_for_pins(codec, cfg->speaker_pins, cfg->speaker_outs, 3404 + dacs, &rest, spec->dac_info, nums, 3405 + AUTO_PIN_SPEAKER_OUT); 3418 3406 spec->dac_info_filled = nums; 3419 3407 /* fill multiout struct */ 3420 3408 for (i = 0; i < nums; i++) { 3421 3409 hda_nid_t dac = spec->dac_info[i].dac; 3422 - if (!dac) 3410 + if (!dac || (dac & DAC_SLAVE_FLAG)) 3423 3411 continue; 3424 3412 switch (spec->dac_info[i].type) { 3425 3413 case AUTO_PIN_LINE_OUT: ··· 3874 3862 } 3875 3863 if (imux->num_items >= 2 && cfg->num_inputs == imux->num_items) 3876 3864 cx_auto_check_auto_mic(codec); 3877 - if (imux->num_items > 1 && !spec->auto_mic) { 3865 + if (imux->num_items > 1) { 3878 3866 for (i = 1; i < imux->num_items; i++) { 3879 3867 if (spec->imux_info[i].adc != spec->imux_info[0].adc) { 3880 3868 spec->adc_switching = 1; ··· 4047 4035 nid = spec->dac_info[i].dac; 4048 4036 if (!nid) 4049 4037 nid = spec->multiout.dac_nids[0]; 4038 + else if (nid & DAC_SLAVE_FLAG) 4039 + nid &= ~DAC_SLAVE_FLAG; 4050 4040 select_connection(codec, spec->dac_info[i].pin, nid); 4051 4041 } 4052 4042 if (spec->auto_mute) { ··· 4181 4167 hda_nid_t pin, const char *name, int idx) 4182 4168 { 4183 4169 unsigned int caps; 4184 - caps = query_amp_caps(codec, dac, HDA_OUTPUT); 4185 - if (caps & AC_AMPCAP_NUM_STEPS) 4186 - return cx_auto_add_pb_volume(codec, dac, name, idx); 4170 + if (dac && !(dac & DAC_SLAVE_FLAG)) { 4171 + caps = query_amp_caps(codec, dac, HDA_OUTPUT); 4172 + if (caps & AC_AMPCAP_NUM_STEPS) 4173 + return cx_auto_add_pb_volume(codec, dac, name, idx); 4174 + } 4187 4175 caps = query_amp_caps(codec, pin, HDA_OUTPUT); 4188 4176 if (caps & AC_AMPCAP_NUM_STEPS) 4189 4177 return cx_auto_add_pb_volume(codec, pin, name, idx); ··· 4207 4191 for (i = 0; i < spec->dac_info_filled; i++) { 4208 4192 const char *label; 4209 4193 int idx, type; 4210 - if (!spec->dac_info[i].dac) 4211 - continue; 4194 + hda_nid_t dac = spec->dac_info[i].dac; 4212 4195 type = spec->dac_info[i].type; 4213 4196 if (type == AUTO_PIN_LINE_OUT) 4214 4197 type = spec->autocfg.line_out_type; ··· 4226 4211 idx = num_spk++; 4227 4212 break; 4228 4213 } 4229 - err = try_add_pb_volume(codec, spec->dac_info[i].dac, 4214 + err = try_add_pb_volume(codec, dac, 4230 4215 spec->dac_info[i].pin, 4231 4216 label, idx); 4232 4217 if (err < 0)
+17 -11
sound/pci/hda/patch_realtek.c
··· 565 565 { 566 566 struct alc_spec *spec = codec->spec; 567 567 568 - if (!spec->automute) 569 - return; 570 568 spec->jack_present = 571 569 detect_jacks(codec, ARRAY_SIZE(spec->autocfg.hp_pins), 572 570 spec->autocfg.hp_pins); 571 + if (!spec->automute) 572 + return; 573 573 update_speakers(codec); 574 574 } 575 575 ··· 578 578 { 579 579 struct alc_spec *spec = codec->spec; 580 580 581 - if (!spec->automute || !spec->detect_line) 582 - return; 583 581 spec->line_jack_present = 584 582 detect_jacks(codec, ARRAY_SIZE(spec->autocfg.line_out_pins), 585 583 spec->autocfg.line_out_pins); 584 + if (!spec->automute || !spec->detect_line) 585 + return; 586 586 update_speakers(codec); 587 587 } 588 588 ··· 3083 3083 static void alc_auto_init_extra_out(struct hda_codec *codec) 3084 3084 { 3085 3085 struct alc_spec *spec = codec->spec; 3086 - hda_nid_t pin; 3086 + hda_nid_t pin, dac; 3087 3087 3088 3088 pin = spec->autocfg.hp_pins[0]; 3089 - if (pin) 3090 - alc_auto_set_output_and_unmute(codec, pin, PIN_HP, 3091 - spec->multiout.hp_nid); 3089 + if (pin) { 3090 + dac = spec->multiout.hp_nid; 3091 + if (!dac) 3092 + dac = spec->multiout.dac_nids[0]; 3093 + alc_auto_set_output_and_unmute(codec, pin, PIN_HP, dac); 3094 + } 3092 3095 pin = spec->autocfg.speaker_pins[0]; 3093 - if (pin) 3094 - alc_auto_set_output_and_unmute(codec, pin, PIN_OUT, 3095 - spec->multiout.extra_out_nid[0]); 3096 + if (pin) { 3097 + dac = spec->multiout.extra_out_nid[0]; 3098 + if (!dac) 3099 + dac = spec->multiout.dac_nids[0]; 3100 + alc_auto_set_output_and_unmute(codec, pin, PIN_OUT, dac); 3101 + } 3096 3102 } 3097 3103 3098 3104 /*
+1 -1
sound/soc/blackfin/bf5xx-ad193x.c
··· 56 56 57 57 switch (params_rate(params)) { 58 58 case 48000: 59 - clk = 12288000; 59 + clk = 24576000; 60 60 break; 61 61 } 62 62
+2 -9
sound/soc/codecs/ad193x.c
··· 27 27 int sysclk; 28 28 }; 29 29 30 - /* ad193x register cache & default register settings */ 31 - static const u8 ad193x_reg[AD193X_NUM_REGS] = { 32 - 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0, 0, 0, 33 - }; 34 - 35 30 /* 36 31 * AD193X volume/mute/de-emphasis etc. controls 37 32 */ ··· 302 307 snd_soc_write(codec, AD193X_PLL_CLK_CTRL0, reg); 303 308 304 309 reg = snd_soc_read(codec, AD193X_DAC_CTRL2); 305 - reg = (reg & (~AD193X_DAC_WORD_LEN_MASK)) | word_len; 310 + reg = (reg & (~AD193X_DAC_WORD_LEN_MASK)) 311 + | (word_len << AD193X_DAC_WORD_LEN_SHFT); 306 312 snd_soc_write(codec, AD193X_DAC_CTRL2, reg); 307 313 308 314 reg = snd_soc_read(codec, AD193X_ADC_CTRL1); ··· 385 389 386 390 static struct snd_soc_codec_driver soc_codec_dev_ad193x = { 387 391 .probe = ad193x_probe, 388 - .reg_cache_default = ad193x_reg, 389 - .reg_cache_size = AD193X_NUM_REGS, 390 - .reg_word_size = sizeof(u16), 391 392 }; 392 393 393 394 #if defined(CONFIG_SPI_MASTER)
+3 -2
sound/soc/codecs/ad193x.h
··· 34 34 #define AD193X_DAC_LEFT_HIGH (1 << 3) 35 35 #define AD193X_DAC_BCLK_INV (1 << 7) 36 36 #define AD193X_DAC_CTRL2 0x804 37 - #define AD193X_DAC_WORD_LEN_MASK 0xC 37 + #define AD193X_DAC_WORD_LEN_SHFT 3 38 + #define AD193X_DAC_WORD_LEN_MASK 0x18 38 39 #define AD193X_DAC_MASTER_MUTE 1 39 40 #define AD193X_DAC_CHNL_MUTE 0x805 40 41 #define AD193X_DACL1_MUTE 0 ··· 64 63 #define AD193X_ADC_CTRL1 0x80f 65 64 #define AD193X_ADC_SERFMT_MASK 0x60 66 65 #define AD193X_ADC_SERFMT_STEREO (0 << 5) 67 - #define AD193X_ADC_SERFMT_TDM (1 << 2) 66 + #define AD193X_ADC_SERFMT_TDM (1 << 5) 68 67 #define AD193X_ADC_SERFMT_AUX (2 << 5) 69 68 #define AD193X_ADC_WORD_LEN_MASK 0x3 70 69 #define AD193X_ADC_CTRL2 0x810
+1
sound/soc/codecs/sta32x.c
··· 857 857 ret = snd_soc_register_codec(&i2c->dev, &sta32x_codec, &sta32x_dai, 1); 858 858 if (ret != 0) { 859 859 dev_err(&i2c->dev, "Failed to register codec (%d)\n", ret); 860 + kfree(sta32x); 860 861 return ret; 861 862 } 862 863
+8 -4
sound/soc/codecs/wm8962.c
··· 2221 2221 switch (event) { 2222 2222 case SND_SOC_DAPM_PRE_PMU: 2223 2223 if (fll) { 2224 + try_wait_for_completion(&wm8962->fll_lock); 2225 + 2224 2226 snd_soc_update_bits(codec, WM8962_FLL_CONTROL_1, 2225 2227 WM8962_FLL_ENA, WM8962_FLL_ENA); 2226 2228 if (wm8962->irq) { ··· 2929 2927 WM8962_BIAS_ENA | 0x180); 2930 2928 2931 2929 msleep(5); 2932 - 2933 - snd_soc_update_bits(codec, WM8962_CLOCKING2, 2934 - WM8962_CLKREG_OVD, 2935 - WM8962_CLKREG_OVD); 2936 2930 } 2937 2931 2938 2932 /* VMID 2*250k */ ··· 3285 3287 snd_soc_write(codec, WM8962_FLL_CONTROL_6, fll_div.theta); 3286 3288 snd_soc_write(codec, WM8962_FLL_CONTROL_7, fll_div.lambda); 3287 3289 snd_soc_write(codec, WM8962_FLL_CONTROL_8, fll_div.n); 3290 + 3291 + try_wait_for_completion(&wm8962->fll_lock); 3288 3292 3289 3293 snd_soc_update_bits(codec, WM8962_FLL_CONTROL_1, 3290 3294 WM8962_FLL_FRAC | WM8962_FLL_REFCLK_SRC_MASK | ··· 3867 3867 * write to registers if the device is declocked. 3868 3868 */ 3869 3869 snd_soc_update_bits(codec, WM8962_CLOCKING2, WM8962_SYSCLK_ENA, 0); 3870 + 3871 + /* Ensure we have soft control over all registers */ 3872 + snd_soc_update_bits(codec, WM8962_CLOCKING2, 3873 + WM8962_CLKREG_OVD, WM8962_CLKREG_OVD); 3870 3874 3871 3875 regulator_bulk_disable(ARRAY_SIZE(wm8962->supplies), wm8962->supplies); 3872 3876
+18 -10
sound/soc/codecs/wm8996.c
··· 420 420 }; 421 421 422 422 static const struct soc_enum sidetone_hpf = 423 - SOC_ENUM_SINGLE(WM8996_SIDETONE, 7, 6, sidetone_hpf_text); 423 + SOC_ENUM_SINGLE(WM8996_SIDETONE, 7, 7, sidetone_hpf_text); 424 424 425 425 static const char *hpf_mode_text[] = { 426 426 "HiFi", "Custom", "Voice" ··· 988 988 SND_SOC_DAPM_PGA("IN1L PGA", WM8996_POWER_MANAGEMENT_2, 5, 0, NULL, 0), 989 989 SND_SOC_DAPM_PGA("IN1R PGA", WM8996_POWER_MANAGEMENT_2, 4, 0, NULL, 0), 990 990 991 - SND_SOC_DAPM_MUX("IN1L Mux", SND_SOC_NOPM, 0, 0, &in1_mux), 992 - SND_SOC_DAPM_MUX("IN1R Mux", SND_SOC_NOPM, 0, 0, &in1_mux), 993 - SND_SOC_DAPM_MUX("IN2L Mux", SND_SOC_NOPM, 0, 0, &in2_mux), 994 - SND_SOC_DAPM_MUX("IN2R Mux", SND_SOC_NOPM, 0, 0, &in2_mux), 995 - 996 - SND_SOC_DAPM_PGA("IN1L", WM8996_POWER_MANAGEMENT_7, 2, 0, NULL, 0), 997 - SND_SOC_DAPM_PGA("IN1R", WM8996_POWER_MANAGEMENT_7, 3, 0, NULL, 0), 998 - SND_SOC_DAPM_PGA("IN2L", WM8996_POWER_MANAGEMENT_7, 6, 0, NULL, 0), 999 - SND_SOC_DAPM_PGA("IN2R", WM8996_POWER_MANAGEMENT_7, 7, 0, NULL, 0), 991 + SND_SOC_DAPM_MUX("IN1L Mux", WM8996_POWER_MANAGEMENT_7, 2, 0, &in1_mux), 992 + SND_SOC_DAPM_MUX("IN1R Mux", WM8996_POWER_MANAGEMENT_7, 3, 0, &in1_mux), 993 + SND_SOC_DAPM_MUX("IN2L Mux", WM8996_POWER_MANAGEMENT_7, 6, 0, &in2_mux), 994 + SND_SOC_DAPM_MUX("IN2R Mux", WM8996_POWER_MANAGEMENT_7, 7, 0, &in2_mux), 1000 995 1001 996 SND_SOC_DAPM_SUPPLY("DMIC2", WM8996_POWER_MANAGEMENT_7, 9, 0, NULL, 0), 1002 997 SND_SOC_DAPM_SUPPLY("DMIC1", WM8996_POWER_MANAGEMENT_7, 8, 0, NULL, 0), ··· 1207 1212 1208 1213 { "AIF2RX0", NULL, "AIFCLK" }, 1209 1214 { "AIF2RX1", NULL, "AIFCLK" }, 1215 + 1216 + { "AIF1TX0", NULL, "AIFCLK" }, 1217 + { "AIF1TX1", NULL, "AIFCLK" }, 1218 + { "AIF1TX2", NULL, "AIFCLK" }, 1219 + { "AIF1TX3", NULL, "AIFCLK" }, 1220 + { "AIF1TX4", NULL, "AIFCLK" }, 1221 + { "AIF1TX5", NULL, "AIFCLK" }, 1222 + 1223 + { "AIF2TX0", NULL, "AIFCLK" }, 1224 + { "AIF2TX1", NULL, "AIFCLK" }, 1210 1225 1211 1226 { "DSP1RXL", NULL, "SYSDSPCLK" }, 1212 1227 { "DSP1RXR", NULL, "SYSDSPCLK" }, ··· 2110 2105 fll_div.fll_loop_gain); 2111 2106 2112 2107 snd_soc_write(codec, WM8996_FLL_EFS_1, fll_div.lambda); 2108 + 2109 + /* Clear any pending completions (eg, from failed startups) */ 2110 + try_wait_for_completion(&wm8996->fll_lock); 2113 2111 2114 2112 snd_soc_update_bits(codec, WM8996_FLL_CONTROL_1, 2115 2113 WM8996_FLL_ENA, WM8996_FLL_ENA);
+3 -2
sound/soc/ep93xx/ep93xx-i2s.c
··· 385 385 res = platform_get_resource(pdev, IORESOURCE_MEM, 0); 386 386 if (!res) { 387 387 err = -ENODEV; 388 - goto fail; 388 + goto fail_free_info; 389 389 } 390 390 391 391 info->mem = request_mem_region(res->start, resource_size(res), 392 392 pdev->name); 393 393 if (!info->mem) { 394 394 err = -EBUSY; 395 - goto fail; 395 + goto fail_free_info; 396 396 } 397 397 398 398 info->regs = ioremap(info->mem->start, resource_size(info->mem)); ··· 435 435 iounmap(info->regs); 436 436 fail_release_mem: 437 437 release_mem_region(info->mem->start, resource_size(info->mem)); 438 + fail_free_info: 438 439 kfree(info); 439 440 fail: 440 441 return err;
+2
sound/soc/fsl/fsl_dma.c
··· 879 879 * assume that device_node pointers are a valid comparison. 880 880 */ 881 881 np = of_parse_phandle(ssi_np, "fsl,playback-dma", 0); 882 + of_node_put(np); 882 883 if (np == dma_channel_np) 883 884 return ssi_np; 884 885 885 886 np = of_parse_phandle(ssi_np, "fsl,capture-dma", 0); 887 + of_node_put(np); 886 888 if (np == dma_channel_np) 887 889 return ssi_np; 888 890 }
+9 -9
sound/soc/fsl/mpc8610_hpcd.c
··· 345 345 } 346 346 347 347 machine_data = kzalloc(sizeof(struct mpc8610_hpcd_data), GFP_KERNEL); 348 - if (!machine_data) 349 - return -ENOMEM; 348 + if (!machine_data) { 349 + ret = -ENOMEM; 350 + goto error_alloc; 351 + } 350 352 351 353 machine_data->dai[0].cpu_dai_name = dev_name(&ssi_pdev->dev); 352 354 machine_data->dai[0].ops = &mpc8610_hpcd_ops; ··· 496 494 ret = platform_device_add(sound_device); 497 495 if (ret) { 498 496 dev_err(&pdev->dev, "platform device add failed\n"); 499 - goto error; 497 + goto error_sound; 500 498 } 501 499 dev_set_drvdata(&pdev->dev, sound_device); 502 500 ··· 504 502 505 503 return 0; 506 504 505 + error_sound: 506 + platform_device_unregister(sound_device); 507 507 error: 508 - of_node_put(codec_np); 509 - 510 - if (sound_device) 511 - platform_device_unregister(sound_device); 512 - 513 508 kfree(machine_data); 514 - 509 + error_alloc: 510 + of_node_put(codec_np); 515 511 return ret; 516 512 } 517 513
+3 -1
sound/soc/fsl/p1022_ds.c
··· 297 297 * dai->platform name should already point to an allocated buffer. 298 298 */ 299 299 ret = of_address_to_resource(dma_channel_np, 0, &res); 300 - if (ret) 300 + if (ret) { 301 + of_node_put(dma_channel_np); 301 302 return ret; 303 + } 302 304 snprintf((char *)dai->platform_name, DAI_NAME_SIZE, "%llx.%s", 303 305 (unsigned long long) res.start, dma_channel_np->name); 304 306
+1 -1
sound/soc/kirkwood/kirkwood-i2s.c
··· 424 424 if (!priv->mem) { 425 425 dev_err(&pdev->dev, "request_mem_region failed\n"); 426 426 err = -EBUSY; 427 - goto error; 427 + goto error_alloc; 428 428 } 429 429 430 430 priv->io = ioremap(priv->mem->start, SZ_16K);
+4 -2
sound/soc/omap/ams-delta.c
··· 514 514 } 515 515 516 516 /* Set codec bias level */ 517 - ams_delta_set_bias_level(card, SND_SOC_BIAS_STANDBY); 517 + ams_delta_set_bias_level(card, dapm, SND_SOC_BIAS_STANDBY); 518 518 519 519 /* Add hook switch - can be used to control the codec from userspace 520 520 * even if line discipline fails */ ··· 649 649 ams_delta_hook_switch_gpios); 650 650 651 651 /* Keep modem power on */ 652 - ams_delta_set_bias_level(&ams_delta_audio_card, SND_SOC_BIAS_STANDBY); 652 + ams_delta_set_bias_level(&ams_delta_audio_card, 653 + &ams_delta_audio_card.rtd[0].codec->dapm, 654 + SND_SOC_BIAS_STANDBY); 653 655 654 656 platform_device_unregister(cx20442_platform_device); 655 657 platform_device_unregister(ams_delta_audio_platform_device);
+1
sound/soc/samsung/Kconfig
··· 185 185 select SND_SAMSUNG_I2S 186 186 select SND_SOC_WM8996 187 187 select SND_SOC_WM9081 188 + select SND_SOC_WM1250_EV1 188 189 189 190 config SND_SOC_SPEYSIDE_WM8962 190 191 tristate "Audio support for Wolfson Speyside with WM8962"
+1
sound/soc/samsung/h1940_uda1380.c
··· 13 13 * 14 14 */ 15 15 16 + #include <linux/types.h> 16 17 #include <linux/gpio.h> 17 18 18 19 #include <sound/soc.h>
+1
sound/soc/samsung/rx1950_uda1380.c
··· 17 17 * 18 18 */ 19 19 20 + #include <linux/types.h> 20 21 #include <linux/gpio.h> 21 22 22 23 #include <sound/soc.h>
+6
sound/soc/samsung/speyside_wm8962.c
··· 23 23 struct snd_soc_dai *codec_dai = card->rtd[0].codec_dai; 24 24 int ret; 25 25 26 + if (dapm->dev != codec_dai->dev) 27 + return 0; 28 + 26 29 switch (level) { 27 30 case SND_SOC_BIAS_PREPARE: 28 31 if (dapm->bias_level == SND_SOC_BIAS_STANDBY) { ··· 59 56 { 60 57 struct snd_soc_dai *codec_dai = card->rtd[0].codec_dai; 61 58 int ret; 59 + 60 + if (dapm->dev != codec_dai->dev) 61 + return 0; 62 62 63 63 switch (level) { 64 64 case SND_SOC_BIAS_STANDBY:
+1 -1
sound/soc/soc-core.c
··· 1913 1913 1914 1914 if (prefix) { 1915 1915 name_len = strlen(long_name) + strlen(prefix) + 2; 1916 - name = kmalloc(name_len, GFP_ATOMIC); 1916 + name = kmalloc(name_len, GFP_KERNEL); 1917 1917 if (!name) 1918 1918 return NULL; 1919 1919
+23
sound/soc/soc-io.c
··· 205 205 #define snd_soc_16_8_read_i2c NULL 206 206 #endif 207 207 208 + #if defined(CONFIG_SPI_MASTER) 209 + static unsigned int snd_soc_16_8_read_spi(struct snd_soc_codec *codec, 210 + unsigned int r) 211 + { 212 + struct spi_device *spi = codec->control_data; 213 + 214 + const u16 reg = cpu_to_be16(r | 0x100); 215 + u8 data; 216 + int ret; 217 + 218 + ret = spi_write_then_read(spi, &reg, 2, &data, 1); 219 + if (ret < 0) 220 + return 0; 221 + return data; 222 + } 223 + #else 224 + #define snd_soc_16_8_read_spi NULL 225 + #endif 226 + 208 227 static int snd_soc_16_8_write(struct snd_soc_codec *codec, unsigned int reg, 209 228 unsigned int value) 210 229 { ··· 314 295 int (*write)(struct snd_soc_codec *codec, unsigned int, unsigned int); 315 296 unsigned int (*read)(struct snd_soc_codec *, unsigned int); 316 297 unsigned int (*i2c_read)(struct snd_soc_codec *, unsigned int); 298 + unsigned int (*spi_read)(struct snd_soc_codec *, unsigned int); 317 299 } io_types[] = { 318 300 { 319 301 .addr_bits = 4, .data_bits = 12, ··· 338 318 .addr_bits = 16, .data_bits = 8, 339 319 .write = snd_soc_16_8_write, 340 320 .i2c_read = snd_soc_16_8_read_i2c, 321 + .spi_read = snd_soc_16_8_read_spi, 341 322 }, 342 323 { 343 324 .addr_bits = 16, .data_bits = 16, ··· 404 383 #ifdef CONFIG_SPI_MASTER 405 384 codec->hw_write = do_spi_write; 406 385 #endif 386 + if (io_types[i].spi_read) 387 + codec->hw_read = io_types[i].spi_read; 407 388 408 389 codec->control_data = container_of(codec->dev, 409 390 struct spi_device,
+1 -1
sound/soc/soc-jack.c
··· 327 327 IRQF_TRIGGER_FALLING, 328 328 gpios[i].name, 329 329 &gpios[i]); 330 - if (ret) 330 + if (ret < 0) 331 331 goto err; 332 332 333 333 if (gpios[i].wake) {
+3
sound/soc/soc-pcm.c
··· 290 290 codec_dai->active--; 291 291 codec->active--; 292 292 293 + if (!cpu_dai->active && !codec_dai->active) 294 + rtd->rate = 0; 295 + 293 296 /* Muting the DAC suppresses artifacts caused during digital 294 297 * shutdown, for example from stopping clocks. 295 298 */
+2 -2
sound/soc/tegra/tegra_wm8903.c
··· 319 319 snd_soc_dapm_force_enable_pin(dapm, "Mic Bias"); 320 320 321 321 /* FIXME: Calculate automatically based on DAPM routes? */ 322 - if (!machine_is_harmony() && !machine_is_ventana()) 322 + if (!machine_is_harmony()) 323 323 snd_soc_dapm_nc_pin(dapm, "IN1L"); 324 324 if (!machine_is_seaboard() && !machine_is_aebl()) 325 325 snd_soc_dapm_nc_pin(dapm, "IN1R"); ··· 395 395 platform_set_drvdata(pdev, card); 396 396 snd_soc_card_set_drvdata(card, machine); 397 397 398 - if (machine_is_harmony() || machine_is_ventana()) { 398 + if (machine_is_harmony()) { 399 399 card->dapm_routes = harmony_audio_map; 400 400 card->num_dapm_routes = ARRAY_SIZE(harmony_audio_map); 401 401 } else if (machine_is_seaboard()) {