summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKuninori Morimoto <kuninori.morimoto.gx@renesas.com>2018-01-28 23:21:38 -0500
committerMark Brown <broonie@kernel.org>2018-02-12 04:55:20 -0500
commit2eec0a15e8d7e2a08acff56701cbd98e24a41097 (patch)
treea7c8e92afa4df461057b46424e4634ac7b8c7d6d
parent7928b2cbe55b2a410a0f5c1f154610059c57b1b2 (diff)
ASoC: msm8916-wcd-digital: replace codec to component
Now we can replace Codec to Component. Let's do it. Note: xxx_codec_xxx() -> xxx_component_xxx() .idle_bias_off = 0 -> .idle_bias_on = 1 .ignore_pmdown_time = 0 -> .use_pmdown_time = 1 - -> .endianness = 1 - -> .non_legacy_dai_naming = 1 Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Signed-off-by: Mark Brown <broonie@kernel.org>
-rw-r--r--sound/soc/codecs/msm8916-wcd-digital.c115
1 files changed, 58 insertions, 57 deletions
diff --git a/sound/soc/codecs/msm8916-wcd-digital.c b/sound/soc/codecs/msm8916-wcd-digital.c
index 13354d6304a8..3063dedd21cf 100644
--- a/sound/soc/codecs/msm8916-wcd-digital.c
+++ b/sound/soc/codecs/msm8916-wcd-digital.c
@@ -348,14 +348,14 @@ static int msm8916_wcd_digital_enable_interpolator(
348 struct snd_kcontrol *kcontrol, 348 struct snd_kcontrol *kcontrol,
349 int event) 349 int event)
350{ 350{
351 struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm); 351 struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm);
352 352
353 switch (event) { 353 switch (event) {
354 case SND_SOC_DAPM_POST_PMU: 354 case SND_SOC_DAPM_POST_PMU:
355 /* apply the digital gain after the interpolator is enabled */ 355 /* apply the digital gain after the interpolator is enabled */
356 usleep_range(10000, 10100); 356 usleep_range(10000, 10100);
357 snd_soc_write(codec, rx_gain_reg[w->shift], 357 snd_soc_component_write(component, rx_gain_reg[w->shift],
358 snd_soc_read(codec, rx_gain_reg[w->shift])); 358 snd_soc_component_read32(component, rx_gain_reg[w->shift]));
359 break; 359 break;
360 } 360 }
361 return 0; 361 return 0;
@@ -365,7 +365,7 @@ static int msm8916_wcd_digital_enable_dec(struct snd_soc_dapm_widget *w,
365 struct snd_kcontrol *kcontrol, 365 struct snd_kcontrol *kcontrol,
366 int event) 366 int event)
367{ 367{
368 struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm); 368 struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm);
369 unsigned int decimator = w->shift + 1; 369 unsigned int decimator = w->shift + 1;
370 u16 dec_reset_reg, tx_vol_ctl_reg, tx_mux_ctl_reg; 370 u16 dec_reset_reg, tx_vol_ctl_reg, tx_mux_ctl_reg;
371 u8 dec_hpf_cut_of_freq; 371 u8 dec_hpf_cut_of_freq;
@@ -377,46 +377,46 @@ static int msm8916_wcd_digital_enable_dec(struct snd_soc_dapm_widget *w,
377 switch (event) { 377 switch (event) {
378 case SND_SOC_DAPM_PRE_PMU: 378 case SND_SOC_DAPM_PRE_PMU:
379 /* Enable TX digital mute */ 379 /* Enable TX digital mute */
380 snd_soc_update_bits(codec, tx_vol_ctl_reg, 380 snd_soc_component_update_bits(component, tx_vol_ctl_reg,
381 TX_VOL_CTL_CFG_MUTE_EN_MASK, 381 TX_VOL_CTL_CFG_MUTE_EN_MASK,
382 TX_VOL_CTL_CFG_MUTE_EN_ENABLE); 382 TX_VOL_CTL_CFG_MUTE_EN_ENABLE);
383 dec_hpf_cut_of_freq = snd_soc_read(codec, tx_mux_ctl_reg) & 383 dec_hpf_cut_of_freq = snd_soc_component_read32(component, tx_mux_ctl_reg) &
384 TX_MUX_CTL_CUT_OFF_FREQ_MASK; 384 TX_MUX_CTL_CUT_OFF_FREQ_MASK;
385 dec_hpf_cut_of_freq >>= TX_MUX_CTL_CUT_OFF_FREQ_SHIFT; 385 dec_hpf_cut_of_freq >>= TX_MUX_CTL_CUT_OFF_FREQ_SHIFT;
386 if (dec_hpf_cut_of_freq != TX_MUX_CTL_CF_NEG_3DB_150HZ) { 386 if (dec_hpf_cut_of_freq != TX_MUX_CTL_CF_NEG_3DB_150HZ) {
387 /* set cut of freq to CF_MIN_3DB_150HZ (0x1) */ 387 /* set cut of freq to CF_MIN_3DB_150HZ (0x1) */
388 snd_soc_update_bits(codec, tx_mux_ctl_reg, 388 snd_soc_component_update_bits(component, tx_mux_ctl_reg,
389 TX_MUX_CTL_CUT_OFF_FREQ_MASK, 389 TX_MUX_CTL_CUT_OFF_FREQ_MASK,
390 TX_MUX_CTL_CF_NEG_3DB_150HZ); 390 TX_MUX_CTL_CF_NEG_3DB_150HZ);
391 } 391 }
392 break; 392 break;
393 case SND_SOC_DAPM_POST_PMU: 393 case SND_SOC_DAPM_POST_PMU:
394 /* enable HPF */ 394 /* enable HPF */
395 snd_soc_update_bits(codec, tx_mux_ctl_reg, 395 snd_soc_component_update_bits(component, tx_mux_ctl_reg,
396 TX_MUX_CTL_HPF_BP_SEL_MASK, 396 TX_MUX_CTL_HPF_BP_SEL_MASK,
397 TX_MUX_CTL_HPF_BP_SEL_NO_BYPASS); 397 TX_MUX_CTL_HPF_BP_SEL_NO_BYPASS);
398 /* apply the digital gain after the decimator is enabled */ 398 /* apply the digital gain after the decimator is enabled */
399 snd_soc_write(codec, tx_gain_reg[w->shift], 399 snd_soc_component_write(component, tx_gain_reg[w->shift],
400 snd_soc_read(codec, tx_gain_reg[w->shift])); 400 snd_soc_component_read32(component, tx_gain_reg[w->shift]));
401 snd_soc_update_bits(codec, tx_vol_ctl_reg, 401 snd_soc_component_update_bits(component, tx_vol_ctl_reg,
402 TX_VOL_CTL_CFG_MUTE_EN_MASK, 0); 402 TX_VOL_CTL_CFG_MUTE_EN_MASK, 0);
403 break; 403 break;
404 case SND_SOC_DAPM_PRE_PMD: 404 case SND_SOC_DAPM_PRE_PMD:
405 snd_soc_update_bits(codec, tx_vol_ctl_reg, 405 snd_soc_component_update_bits(component, tx_vol_ctl_reg,
406 TX_VOL_CTL_CFG_MUTE_EN_MASK, 406 TX_VOL_CTL_CFG_MUTE_EN_MASK,
407 TX_VOL_CTL_CFG_MUTE_EN_ENABLE); 407 TX_VOL_CTL_CFG_MUTE_EN_ENABLE);
408 snd_soc_update_bits(codec, tx_mux_ctl_reg, 408 snd_soc_component_update_bits(component, tx_mux_ctl_reg,
409 TX_MUX_CTL_HPF_BP_SEL_MASK, 409 TX_MUX_CTL_HPF_BP_SEL_MASK,
410 TX_MUX_CTL_HPF_BP_SEL_BYPASS); 410 TX_MUX_CTL_HPF_BP_SEL_BYPASS);
411 break; 411 break;
412 case SND_SOC_DAPM_POST_PMD: 412 case SND_SOC_DAPM_POST_PMD:
413 snd_soc_update_bits(codec, dec_reset_reg, 1 << w->shift, 413 snd_soc_component_update_bits(component, dec_reset_reg, 1 << w->shift,
414 1 << w->shift); 414 1 << w->shift);
415 snd_soc_update_bits(codec, dec_reset_reg, 1 << w->shift, 0x0); 415 snd_soc_component_update_bits(component, dec_reset_reg, 1 << w->shift, 0x0);
416 snd_soc_update_bits(codec, tx_mux_ctl_reg, 416 snd_soc_component_update_bits(component, tx_mux_ctl_reg,
417 TX_MUX_CTL_HPF_BP_SEL_MASK, 417 TX_MUX_CTL_HPF_BP_SEL_MASK,
418 TX_MUX_CTL_HPF_BP_SEL_BYPASS); 418 TX_MUX_CTL_HPF_BP_SEL_BYPASS);
419 snd_soc_update_bits(codec, tx_vol_ctl_reg, 419 snd_soc_component_update_bits(component, tx_vol_ctl_reg,
420 TX_VOL_CTL_CFG_MUTE_EN_MASK, 0); 420 TX_VOL_CTL_CFG_MUTE_EN_MASK, 0);
421 break; 421 break;
422 } 422 }
@@ -428,35 +428,35 @@ static int msm8916_wcd_digital_enable_dmic(struct snd_soc_dapm_widget *w,
428 struct snd_kcontrol *kcontrol, 428 struct snd_kcontrol *kcontrol,
429 int event) 429 int event)
430{ 430{
431 struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm); 431 struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm);
432 unsigned int dmic; 432 unsigned int dmic;
433 int ret; 433 int ret;
434 /* get dmic number out of widget name */ 434 /* get dmic number out of widget name */
435 char *dmic_num = strpbrk(w->name, "12"); 435 char *dmic_num = strpbrk(w->name, "12");
436 436
437 if (dmic_num == NULL) { 437 if (dmic_num == NULL) {
438 dev_err(codec->dev, "Invalid DMIC\n"); 438 dev_err(component->dev, "Invalid DMIC\n");
439 return -EINVAL; 439 return -EINVAL;
440 } 440 }
441 ret = kstrtouint(dmic_num, 10, &dmic); 441 ret = kstrtouint(dmic_num, 10, &dmic);
442 if (ret < 0 || dmic > 2) { 442 if (ret < 0 || dmic > 2) {
443 dev_err(codec->dev, "Invalid DMIC line on the codec\n"); 443 dev_err(component->dev, "Invalid DMIC line on the component\n");
444 return -EINVAL; 444 return -EINVAL;
445 } 445 }
446 446
447 switch (event) { 447 switch (event) {
448 case SND_SOC_DAPM_PRE_PMU: 448 case SND_SOC_DAPM_PRE_PMU:
449 snd_soc_update_bits(codec, LPASS_CDC_CLK_DMIC_B1_CTL, 449 snd_soc_component_update_bits(component, LPASS_CDC_CLK_DMIC_B1_CTL,
450 DMIC_B1_CTL_DMIC0_CLK_SEL_MASK, 450 DMIC_B1_CTL_DMIC0_CLK_SEL_MASK,
451 DMIC_B1_CTL_DMIC0_CLK_SEL_DIV3); 451 DMIC_B1_CTL_DMIC0_CLK_SEL_DIV3);
452 switch (dmic) { 452 switch (dmic) {
453 case 1: 453 case 1:
454 snd_soc_update_bits(codec, LPASS_CDC_TX1_DMIC_CTL, 454 snd_soc_component_update_bits(component, LPASS_CDC_TX1_DMIC_CTL,
455 TXN_DMIC_CTL_CLK_SEL_MASK, 455 TXN_DMIC_CTL_CLK_SEL_MASK,
456 TXN_DMIC_CTL_CLK_SEL_DIV3); 456 TXN_DMIC_CTL_CLK_SEL_DIV3);
457 break; 457 break;
458 case 2: 458 case 2:
459 snd_soc_update_bits(codec, LPASS_CDC_TX2_DMIC_CTL, 459 snd_soc_component_update_bits(component, LPASS_CDC_TX2_DMIC_CTL,
460 TXN_DMIC_CTL_CLK_SEL_MASK, 460 TXN_DMIC_CTL_CLK_SEL_MASK,
461 TXN_DMIC_CTL_CLK_SEL_DIV3); 461 TXN_DMIC_CTL_CLK_SEL_DIV3);
462 break; 462 break;
@@ -575,20 +575,20 @@ static int msm8916_wcd_digital_get_clks(struct platform_device *pdev,
575 return 0; 575 return 0;
576} 576}
577 577
578static int msm8916_wcd_digital_codec_probe(struct snd_soc_codec *codec) 578static int msm8916_wcd_digital_component_probe(struct snd_soc_component *component)
579{ 579{
580 struct msm8916_wcd_digital_priv *priv = dev_get_drvdata(codec->dev); 580 struct msm8916_wcd_digital_priv *priv = dev_get_drvdata(component->dev);
581 581
582 snd_soc_codec_set_drvdata(codec, priv); 582 snd_soc_component_set_drvdata(component, priv);
583 583
584 return 0; 584 return 0;
585} 585}
586 586
587static int msm8916_wcd_digital_codec_set_sysclk(struct snd_soc_codec *codec, 587static int msm8916_wcd_digital_component_set_sysclk(struct snd_soc_component *component,
588 int clk_id, int source, 588 int clk_id, int source,
589 unsigned int freq, int dir) 589 unsigned int freq, int dir)
590{ 590{
591 struct msm8916_wcd_digital_priv *p = dev_get_drvdata(codec->dev); 591 struct msm8916_wcd_digital_priv *p = dev_get_drvdata(component->dev);
592 592
593 return clk_set_rate(p->mclk, freq); 593 return clk_set_rate(p->mclk, freq);
594} 594}
@@ -618,18 +618,18 @@ static int msm8916_wcd_digital_hw_params(struct snd_pcm_substream *substream,
618 rx_fs_rate = RX_I2S_CTL_RX_I2S_FS_RATE_F_48_KHZ; 618 rx_fs_rate = RX_I2S_CTL_RX_I2S_FS_RATE_F_48_KHZ;
619 break; 619 break;
620 default: 620 default:
621 dev_err(dai->codec->dev, "Invalid sampling rate %d\n", 621 dev_err(dai->component->dev, "Invalid sampling rate %d\n",
622 params_rate(params)); 622 params_rate(params));
623 return -EINVAL; 623 return -EINVAL;
624 } 624 }
625 625
626 switch (substream->stream) { 626 switch (substream->stream) {
627 case SNDRV_PCM_STREAM_CAPTURE: 627 case SNDRV_PCM_STREAM_CAPTURE:
628 snd_soc_update_bits(dai->codec, LPASS_CDC_CLK_TX_I2S_CTL, 628 snd_soc_component_update_bits(dai->component, LPASS_CDC_CLK_TX_I2S_CTL,
629 TX_I2S_CTL_TX_I2S_FS_RATE_MASK, tx_fs_rate); 629 TX_I2S_CTL_TX_I2S_FS_RATE_MASK, tx_fs_rate);
630 break; 630 break;
631 case SNDRV_PCM_STREAM_PLAYBACK: 631 case SNDRV_PCM_STREAM_PLAYBACK:
632 snd_soc_update_bits(dai->codec, LPASS_CDC_CLK_RX_I2S_CTL, 632 snd_soc_component_update_bits(dai->component, LPASS_CDC_CLK_RX_I2S_CTL,
633 RX_I2S_CTL_RX_I2S_FS_RATE_MASK, rx_fs_rate); 633 RX_I2S_CTL_RX_I2S_FS_RATE_MASK, rx_fs_rate);
634 break; 634 break;
635 default: 635 default:
@@ -638,18 +638,19 @@ static int msm8916_wcd_digital_hw_params(struct snd_pcm_substream *substream,
638 638
639 switch (params_format(params)) { 639 switch (params_format(params)) {
640 case SNDRV_PCM_FORMAT_S16_LE: 640 case SNDRV_PCM_FORMAT_S16_LE:
641 snd_soc_update_bits(dai->codec, LPASS_CDC_CLK_TX_I2S_CTL, 641 snd_soc_component_update_bits(dai->component, LPASS_CDC_CLK_TX_I2S_CTL,
642 TX_I2S_CTL_TX_I2S_MODE_MASK, 642 TX_I2S_CTL_TX_I2S_MODE_MASK,
643 TX_I2S_CTL_TX_I2S_MODE_16); 643 TX_I2S_CTL_TX_I2S_MODE_16);
644 snd_soc_update_bits(dai->codec, LPASS_CDC_CLK_RX_I2S_CTL, 644 snd_soc_component_update_bits(dai->component, LPASS_CDC_CLK_RX_I2S_CTL,
645 RX_I2S_CTL_RX_I2S_MODE_MASK, 645 RX_I2S_CTL_RX_I2S_MODE_MASK,
646 RX_I2S_CTL_RX_I2S_MODE_16); 646 RX_I2S_CTL_RX_I2S_MODE_16);
647 break; 647 break;
648
648 case SNDRV_PCM_FORMAT_S32_LE: 649 case SNDRV_PCM_FORMAT_S32_LE:
649 snd_soc_update_bits(dai->codec, LPASS_CDC_CLK_TX_I2S_CTL, 650 snd_soc_component_update_bits(dai->component, LPASS_CDC_CLK_TX_I2S_CTL,
650 TX_I2S_CTL_TX_I2S_MODE_MASK, 651 TX_I2S_CTL_TX_I2S_MODE_MASK,
651 TX_I2S_CTL_TX_I2S_MODE_32); 652 TX_I2S_CTL_TX_I2S_MODE_32);
652 snd_soc_update_bits(dai->codec, LPASS_CDC_CLK_RX_I2S_CTL, 653 snd_soc_component_update_bits(dai->component, LPASS_CDC_CLK_RX_I2S_CTL,
653 RX_I2S_CTL_RX_I2S_MODE_MASK, 654 RX_I2S_CTL_RX_I2S_MODE_MASK,
654 RX_I2S_CTL_RX_I2S_MODE_32); 655 RX_I2S_CTL_RX_I2S_MODE_32);
655 break; 656 break;
@@ -780,32 +781,32 @@ static const struct snd_soc_dapm_route msm8916_wcd_digital_audio_map[] = {
780static int msm8916_wcd_digital_startup(struct snd_pcm_substream *substream, 781static int msm8916_wcd_digital_startup(struct snd_pcm_substream *substream,
781 struct snd_soc_dai *dai) 782 struct snd_soc_dai *dai)
782{ 783{
783 struct snd_soc_codec *codec = dai->codec; 784 struct snd_soc_component *component = dai->component;
784 struct msm8916_wcd_digital_priv *msm8916_wcd; 785 struct msm8916_wcd_digital_priv *msm8916_wcd;
785 unsigned long mclk_rate; 786 unsigned long mclk_rate;
786 787
787 msm8916_wcd = snd_soc_codec_get_drvdata(codec); 788 msm8916_wcd = snd_soc_component_get_drvdata(component);
788 snd_soc_update_bits(codec, LPASS_CDC_CLK_MCLK_CTL, 789 snd_soc_component_update_bits(component, LPASS_CDC_CLK_MCLK_CTL,
789 MCLK_CTL_MCLK_EN_MASK, 790 MCLK_CTL_MCLK_EN_MASK,
790 MCLK_CTL_MCLK_EN_ENABLE); 791 MCLK_CTL_MCLK_EN_ENABLE);
791 snd_soc_update_bits(codec, LPASS_CDC_CLK_PDM_CTL, 792 snd_soc_component_update_bits(component, LPASS_CDC_CLK_PDM_CTL,
792 LPASS_CDC_CLK_PDM_CTL_PDM_CLK_SEL_MASK, 793 LPASS_CDC_CLK_PDM_CTL_PDM_CLK_SEL_MASK,
793 LPASS_CDC_CLK_PDM_CTL_PDM_CLK_SEL_FB); 794 LPASS_CDC_CLK_PDM_CTL_PDM_CLK_SEL_FB);
794 795
795 mclk_rate = clk_get_rate(msm8916_wcd->mclk); 796 mclk_rate = clk_get_rate(msm8916_wcd->mclk);
796 switch (mclk_rate) { 797 switch (mclk_rate) {
797 case 12288000: 798 case 12288000:
798 snd_soc_update_bits(codec, LPASS_CDC_TOP_CTL, 799 snd_soc_component_update_bits(component, LPASS_CDC_TOP_CTL,
799 TOP_CTL_DIG_MCLK_FREQ_MASK, 800 TOP_CTL_DIG_MCLK_FREQ_MASK,
800 TOP_CTL_DIG_MCLK_FREQ_F_12_288MHZ); 801 TOP_CTL_DIG_MCLK_FREQ_F_12_288MHZ);
801 break; 802 break;
802 case 9600000: 803 case 9600000:
803 snd_soc_update_bits(codec, LPASS_CDC_TOP_CTL, 804 snd_soc_component_update_bits(component, LPASS_CDC_TOP_CTL,
804 TOP_CTL_DIG_MCLK_FREQ_MASK, 805 TOP_CTL_DIG_MCLK_FREQ_MASK,
805 TOP_CTL_DIG_MCLK_FREQ_F_9_6MHZ); 806 TOP_CTL_DIG_MCLK_FREQ_F_9_6MHZ);
806 break; 807 break;
807 default: 808 default:
808 dev_err(codec->dev, "Invalid mclk rate %ld\n", mclk_rate); 809 dev_err(component->dev, "Invalid mclk rate %ld\n", mclk_rate);
809 break; 810 break;
810 } 811 }
811 return 0; 812 return 0;
@@ -814,7 +815,7 @@ static int msm8916_wcd_digital_startup(struct snd_pcm_substream *substream,
814static void msm8916_wcd_digital_shutdown(struct snd_pcm_substream *substream, 815static void msm8916_wcd_digital_shutdown(struct snd_pcm_substream *substream,
815 struct snd_soc_dai *dai) 816 struct snd_soc_dai *dai)
816{ 817{
817 snd_soc_update_bits(dai->codec, LPASS_CDC_CLK_PDM_CTL, 818 snd_soc_component_update_bits(dai->component, LPASS_CDC_CLK_PDM_CTL,
818 LPASS_CDC_CLK_PDM_CTL_PDM_CLK_SEL_MASK, 0); 819 LPASS_CDC_CLK_PDM_CTL_PDM_CLK_SEL_MASK, 0);
819} 820}
820 821
@@ -851,18 +852,19 @@ static struct snd_soc_dai_driver msm8916_wcd_digital_dai[] = {
851 }, 852 },
852}; 853};
853 854
854static const struct snd_soc_codec_driver msm8916_wcd_digital = { 855static const struct snd_soc_component_driver msm8916_wcd_digital = {
855 .probe = msm8916_wcd_digital_codec_probe, 856 .probe = msm8916_wcd_digital_component_probe,
856 .set_sysclk = msm8916_wcd_digital_codec_set_sysclk, 857 .set_sysclk = msm8916_wcd_digital_component_set_sysclk,
857 .component_driver = { 858 .controls = msm8916_wcd_digital_snd_controls,
858 .controls = msm8916_wcd_digital_snd_controls, 859 .num_controls = ARRAY_SIZE(msm8916_wcd_digital_snd_controls),
859 .num_controls = ARRAY_SIZE(msm8916_wcd_digital_snd_controls), 860 .dapm_widgets = msm8916_wcd_digital_dapm_widgets,
860 .dapm_widgets = msm8916_wcd_digital_dapm_widgets, 861 .num_dapm_widgets = ARRAY_SIZE(msm8916_wcd_digital_dapm_widgets),
861 .num_dapm_widgets = 862 .dapm_routes = msm8916_wcd_digital_audio_map,
862 ARRAY_SIZE(msm8916_wcd_digital_dapm_widgets), 863 .num_dapm_routes = ARRAY_SIZE(msm8916_wcd_digital_audio_map),
863 .dapm_routes = msm8916_wcd_digital_audio_map, 864 .idle_bias_on = 1,
864 .num_dapm_routes = ARRAY_SIZE(msm8916_wcd_digital_audio_map), 865 .use_pmdown_time = 1,
865 }, 866 .endianness = 1,
867 .non_legacy_dai_naming = 1,
866}; 868};
867 869
868static const struct regmap_config msm8916_codec_regmap_config = { 870static const struct regmap_config msm8916_codec_regmap_config = {
@@ -915,7 +917,7 @@ static int msm8916_wcd_digital_probe(struct platform_device *pdev)
915 917
916 dev_set_drvdata(dev, priv); 918 dev_set_drvdata(dev, priv);
917 919
918 return snd_soc_register_codec(dev, &msm8916_wcd_digital, 920 return devm_snd_soc_register_component(dev, &msm8916_wcd_digital,
919 msm8916_wcd_digital_dai, 921 msm8916_wcd_digital_dai,
920 ARRAY_SIZE(msm8916_wcd_digital_dai)); 922 ARRAY_SIZE(msm8916_wcd_digital_dai));
921} 923}
@@ -924,7 +926,6 @@ static int msm8916_wcd_digital_remove(struct platform_device *pdev)
924{ 926{
925 struct msm8916_wcd_digital_priv *priv = dev_get_drvdata(&pdev->dev); 927 struct msm8916_wcd_digital_priv *priv = dev_get_drvdata(&pdev->dev);
926 928
927 snd_soc_unregister_codec(&pdev->dev);
928 clk_disable_unprepare(priv->mclk); 929 clk_disable_unprepare(priv->mclk);
929 clk_disable_unprepare(priv->ahbclk); 930 clk_disable_unprepare(priv->ahbclk);
930 931