Merge remote-tracking branch 'asoc/topic/codecs' into asoc-next
authorMark Brown <broonie@linaro.org>
Sun, 23 Mar 2014 14:00:47 +0000 (14:00 +0000)
committerMark Brown <broonie@linaro.org>
Sun, 23 Mar 2014 14:00:47 +0000 (14:00 +0000)
1  2 
sound/soc/codecs/isabelle.c
sound/soc/codecs/mc13783.c
sound/soc/codecs/rt5640.c
sound/soc/codecs/sta529.c
sound/soc/codecs/uda1380.c
sound/soc/codecs/wm8580.c

index 3e264a78017a6af3e2e96edb7c3e89f9b4100f46,7c8ba02a6d1b372ddc570ddaf0c6085f11fa25a5..3a89ce66d51d7e1c56b7c655fc0ed984e520e75b
@@@ -140,17 -140,13 +140,17 @@@ static const char *isabelle_rx1_texts[
  static const char *isabelle_rx2_texts[] = {"VRX2", "ARX2"};
  
  static const struct soc_enum isabelle_rx1_enum[] = {
 -      SOC_ENUM_SINGLE(ISABELLE_VOICE_HPF_CFG_REG, 3, 1, isabelle_rx1_texts),
 -      SOC_ENUM_SINGLE(ISABELLE_AUDIO_HPF_CFG_REG, 5, 1, isabelle_rx1_texts),
 +      SOC_ENUM_SINGLE(ISABELLE_VOICE_HPF_CFG_REG, 3,
 +                      ARRAY_SIZE(isabelle_rx1_texts), isabelle_rx1_texts),
 +      SOC_ENUM_SINGLE(ISABELLE_AUDIO_HPF_CFG_REG, 5,
 +                      ARRAY_SIZE(isabelle_rx1_texts), isabelle_rx1_texts),
  };
  
  static const struct soc_enum isabelle_rx2_enum[] = {
 -      SOC_ENUM_SINGLE(ISABELLE_VOICE_HPF_CFG_REG, 2, 1, isabelle_rx2_texts),
 -      SOC_ENUM_SINGLE(ISABELLE_AUDIO_HPF_CFG_REG, 4, 1, isabelle_rx2_texts),
 +      SOC_ENUM_SINGLE(ISABELLE_VOICE_HPF_CFG_REG, 2,
 +                      ARRAY_SIZE(isabelle_rx2_texts), isabelle_rx2_texts),
 +      SOC_ENUM_SINGLE(ISABELLE_AUDIO_HPF_CFG_REG, 4,
 +                      ARRAY_SIZE(isabelle_rx2_texts), isabelle_rx2_texts),
  };
  
  /* Headset DAC playback switches */
@@@ -165,17 -161,13 +165,17 @@@ static const char *isabelle_atx_texts[
  static const char *isabelle_vtx_texts[] = {"AMIC2", "DMIC"};
  
  static const struct soc_enum isabelle_atx_enum[] = {
 -      SOC_ENUM_SINGLE(ISABELLE_AMIC_CFG_REG, 7, 1, isabelle_atx_texts),
 -      SOC_ENUM_SINGLE(ISABELLE_DMIC_CFG_REG, 0, 1, isabelle_atx_texts),
 +      SOC_ENUM_SINGLE(ISABELLE_AMIC_CFG_REG, 7,
 +                      ARRAY_SIZE(isabelle_atx_texts), isabelle_atx_texts),
 +      SOC_ENUM_SINGLE(ISABELLE_DMIC_CFG_REG, 0,
 +                      ARRAY_SIZE(isabelle_atx_texts), isabelle_atx_texts),
  };
  
  static const struct soc_enum isabelle_vtx_enum[] = {
 -      SOC_ENUM_SINGLE(ISABELLE_AMIC_CFG_REG, 6, 1, isabelle_vtx_texts),
 -      SOC_ENUM_SINGLE(ISABELLE_DMIC_CFG_REG, 0, 1, isabelle_vtx_texts),
 +      SOC_ENUM_SINGLE(ISABELLE_AMIC_CFG_REG, 6,
 +                      ARRAY_SIZE(isabelle_vtx_texts), isabelle_vtx_texts),
 +      SOC_ENUM_SINGLE(ISABELLE_DMIC_CFG_REG, 0,
 +                      ARRAY_SIZE(isabelle_vtx_texts), isabelle_vtx_texts),
  };
  
  static const struct snd_kcontrol_new atx_mux_controls =
@@@ -191,13 -183,17 +191,13 @@@ static const char *isabelle_amic1_texts
  /* Left analog microphone selection */
  static const char *isabelle_amic2_texts[] = {"Sub Mic", "Aux/FM Right"};
  
 -static const struct soc_enum isabelle_amic1_enum[] = {
 -      SOC_ENUM_SINGLE(ISABELLE_AMIC_CFG_REG, 5,
 -                      ARRAY_SIZE(isabelle_amic1_texts),
 -                      isabelle_amic1_texts),
 -};
 +static SOC_ENUM_SINGLE_DECL(isabelle_amic1_enum,
 +                          ISABELLE_AMIC_CFG_REG, 5,
 +                          isabelle_amic1_texts);
  
 -static const struct soc_enum isabelle_amic2_enum[] = {
 -      SOC_ENUM_SINGLE(ISABELLE_AMIC_CFG_REG, 4,
 -                      ARRAY_SIZE(isabelle_amic2_texts),
 -                      isabelle_amic2_texts),
 -};
 +static SOC_ENUM_SINGLE_DECL(isabelle_amic2_enum,
 +                          ISABELLE_AMIC_CFG_REG, 4,
 +                          isabelle_amic2_texts);
  
  static const struct snd_kcontrol_new amic1_control =
        SOC_DAPM_ENUM("Route", isabelle_amic1_enum);
@@@ -210,20 -206,16 +210,20 @@@ static const char *isabelle_st_audio_te
  static const char *isabelle_st_voice_texts[] = {"VTX1", "VTX2"};
  
  static const struct soc_enum isabelle_st_audio_enum[] = {
 -      SOC_ENUM_SINGLE(ISABELLE_ATX_STPGA1_CFG_REG, 7, 1,
 +      SOC_ENUM_SINGLE(ISABELLE_ATX_STPGA1_CFG_REG, 7,
 +                      ARRAY_SIZE(isabelle_st_audio_texts),
                        isabelle_st_audio_texts),
 -      SOC_ENUM_SINGLE(ISABELLE_ATX_STPGA2_CFG_REG, 7, 1,
 +      SOC_ENUM_SINGLE(ISABELLE_ATX_STPGA2_CFG_REG, 7,
 +                      ARRAY_SIZE(isabelle_st_audio_texts),
                        isabelle_st_audio_texts),
  };
  
  static const struct soc_enum isabelle_st_voice_enum[] = {
 -      SOC_ENUM_SINGLE(ISABELLE_VTX_STPGA1_CFG_REG, 7, 1,
 +      SOC_ENUM_SINGLE(ISABELLE_VTX_STPGA1_CFG_REG, 7,
 +                      ARRAY_SIZE(isabelle_st_voice_texts),
                        isabelle_st_voice_texts),
 -      SOC_ENUM_SINGLE(ISABELLE_VTX2_STPGA2_CFG_REG, 7, 1,
 +      SOC_ENUM_SINGLE(ISABELLE_VTX2_STPGA2_CFG_REG, 7,
 +                      ARRAY_SIZE(isabelle_st_voice_texts),
                        isabelle_st_voice_texts),
  };
  
@@@ -918,8 -910,7 +918,7 @@@ static int isabelle_hw_params(struct sn
                              struct snd_pcm_hw_params *params,
                              struct snd_soc_dai *dai)
  {
-       struct snd_soc_pcm_runtime *rtd = substream->private_data;
-       struct snd_soc_codec *codec = rtd->codec;
+       struct snd_soc_codec *codec = dai->codec;
        u16 aif = 0;
        unsigned int fs_val = 0;
  
@@@ -1090,7 -1081,23 +1089,7 @@@ static struct snd_soc_dai_driver isabel
        },
  };
  
 -static int isabelle_probe(struct snd_soc_codec *codec)
 -{
 -      int ret = 0;
 -
 -      codec->control_data = dev_get_regmap(codec->dev, NULL);
 -
 -      ret = snd_soc_codec_set_cache_io(codec, 8, 8, SND_SOC_REGMAP);
 -      if (ret < 0) {
 -              dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
 -              return ret;
 -      }
 -
 -      return 0;
 -}
 -
  static struct snd_soc_codec_driver soc_codec_dev_isabelle = {
 -      .probe = isabelle_probe,
        .set_bias_level = isabelle_set_bias_level,
        .controls = isabelle_snd_controls,
        .num_controls = ARRAY_SIZE(isabelle_snd_controls),
index 37d737e567a12874c73da71c3b7d83bb373004c5,bebba7fb8819f2547672a9a4d1d7555a613f5443..2c59b1fb69dc98368035e2c4d05a4db9f1cc167b
@@@ -106,8 -106,7 +106,7 @@@ static int mc13783_pcm_hw_params_dac(st
                                struct snd_pcm_hw_params *params,
                                struct snd_soc_dai *dai)
  {
-       struct snd_soc_pcm_runtime *rtd = substream->private_data;
-       struct snd_soc_codec *codec = rtd->codec;
+       struct snd_soc_codec *codec = dai->codec;
        unsigned int rate = params_rate(params);
        int i;
  
@@@ -126,8 -125,7 +125,7 @@@ static int mc13783_pcm_hw_params_codec(
                                struct snd_pcm_hw_params *params,
                                struct snd_soc_dai *dai)
  {
-       struct snd_soc_pcm_runtime *rtd = substream->private_data;
-       struct snd_soc_codec *codec = rtd->codec;
+       struct snd_soc_codec *codec = dai->codec;
        unsigned int rate = params_rate(params);
        unsigned int val;
  
@@@ -408,7 -406,8 +406,7 @@@ static const char * const adcl_enum_tex
        "MC1L", "RXINL",
  };
  
 -static const struct soc_enum adcl_enum =
 -      SOC_ENUM_SINGLE(0, 0, ARRAY_SIZE(adcl_enum_text), adcl_enum_text);
 +static SOC_ENUM_SINGLE_VIRT_DECL(adcl_enum, adcl_enum_text);
  
  static const struct snd_kcontrol_new left_input_mux =
        SOC_DAPM_ENUM_VIRT("Route", adcl_enum);
@@@ -417,7 -416,8 +415,7 @@@ static const char * const adcr_enum_tex
        "MC1R", "MC2", "RXINR", "TXIN",
  };
  
 -static const struct soc_enum adcr_enum =
 -      SOC_ENUM_SINGLE(0, 0, ARRAY_SIZE(adcr_enum_text), adcr_enum_text);
 +static SOC_ENUM_SINGLE_VIRT_DECL(adcr_enum, adcr_enum_text);
  
  static const struct snd_kcontrol_new right_input_mux =
        SOC_DAPM_ENUM_VIRT("Route", adcr_enum);
@@@ -428,8 -428,8 +426,8 @@@ static const struct snd_kcontrol_new sa
  static const char * const speaker_amp_source_text[] = {
        "CODEC", "Right"
  };
 -static const SOC_ENUM_SINGLE_DECL(speaker_amp_source, MC13783_AUDIO_RX0, 4,
 -                                speaker_amp_source_text);
 +static SOC_ENUM_SINGLE_DECL(speaker_amp_source, MC13783_AUDIO_RX0, 4,
 +                          speaker_amp_source_text);
  static const struct snd_kcontrol_new speaker_amp_source_mux =
        SOC_DAPM_ENUM("Speaker Amp Source MUX", speaker_amp_source);
  
@@@ -437,8 -437,8 +435,8 @@@ static const char * const headset_amp_s
        "CODEC", "Mixer"
  };
  
 -static const SOC_ENUM_SINGLE_DECL(headset_amp_source, MC13783_AUDIO_RX0, 11,
 -                                headset_amp_source_text);
 +static SOC_ENUM_SINGLE_DECL(headset_amp_source, MC13783_AUDIO_RX0, 11,
 +                          headset_amp_source_text);
  static const struct snd_kcontrol_new headset_amp_source_mux =
        SOC_DAPM_ENUM("Headset Amp Source MUX", headset_amp_source);
  
@@@ -578,9 -578,9 +576,9 @@@ static struct snd_soc_dapm_route mc1378
  static const char * const mc13783_3d_mixer[] = {"Stereo", "Phase Mix",
                                                "Mono", "Mono Mix"};
  
 -static const struct soc_enum mc13783_enum_3d_mixer =
 -      SOC_ENUM_SINGLE(MC13783_AUDIO_RX1, 16, ARRAY_SIZE(mc13783_3d_mixer),
 -                      mc13783_3d_mixer);
 +static SOC_ENUM_SINGLE_DECL(mc13783_enum_3d_mixer,
 +                          MC13783_AUDIO_RX1, 16,
 +                          mc13783_3d_mixer);
  
  static struct snd_kcontrol_new mc13783_control_list[] = {
        SOC_SINGLE("Loudspeaker enable", MC13783_AUDIO_RX0, 5, 1, 0),
@@@ -612,8 -612,8 +610,8 @@@ static int mc13783_probe(struct snd_soc
        struct mc13783_priv *priv = snd_soc_codec_get_drvdata(codec);
        int ret;
  
 -      codec->control_data = dev_get_regmap(codec->dev->parent, NULL);
 -      ret = snd_soc_codec_set_cache_io(codec, 8, 24, SND_SOC_REGMAP);
 +      ret = snd_soc_codec_set_cache_io(codec,
 +                      dev_get_regmap(codec->dev->parent, NULL));
        if (ret != 0) {
                dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
                return ret;
index 13ccee43cfc59ac57f94b077117ce6ccaad04b7d,7877a5e14c54b67d7e09cf044fa47179a3e7bcb4..0061ae6b671673e43615bcd9ebfeef001df487b2
@@@ -361,24 -361,25 +361,24 @@@ static unsigned int bst_tlv[] = 
  static const char * const rt5640_data_select[] = {
        "Normal", "left copy to right", "right copy to left", "Swap"};
  
 -static const SOC_ENUM_SINGLE_DECL(rt5640_if1_dac_enum, RT5640_DIG_INF_DATA,
 -                              RT5640_IF1_DAC_SEL_SFT, rt5640_data_select);
 +static SOC_ENUM_SINGLE_DECL(rt5640_if1_dac_enum, RT5640_DIG_INF_DATA,
 +                          RT5640_IF1_DAC_SEL_SFT, rt5640_data_select);
  
 -static const SOC_ENUM_SINGLE_DECL(rt5640_if1_adc_enum, RT5640_DIG_INF_DATA,
 -                              RT5640_IF1_ADC_SEL_SFT, rt5640_data_select);
 +static SOC_ENUM_SINGLE_DECL(rt5640_if1_adc_enum, RT5640_DIG_INF_DATA,
 +                          RT5640_IF1_ADC_SEL_SFT, rt5640_data_select);
  
 -static const SOC_ENUM_SINGLE_DECL(rt5640_if2_dac_enum, RT5640_DIG_INF_DATA,
 -                              RT5640_IF2_DAC_SEL_SFT, rt5640_data_select);
 +static SOC_ENUM_SINGLE_DECL(rt5640_if2_dac_enum, RT5640_DIG_INF_DATA,
 +                          RT5640_IF2_DAC_SEL_SFT, rt5640_data_select);
  
 -static const SOC_ENUM_SINGLE_DECL(rt5640_if2_adc_enum, RT5640_DIG_INF_DATA,
 -                              RT5640_IF2_ADC_SEL_SFT, rt5640_data_select);
 +static SOC_ENUM_SINGLE_DECL(rt5640_if2_adc_enum, RT5640_DIG_INF_DATA,
 +                          RT5640_IF2_ADC_SEL_SFT, rt5640_data_select);
  
  /* Class D speaker gain ratio */
  static const char * const rt5640_clsd_spk_ratio[] = {"1.66x", "1.83x", "1.94x",
        "2x", "2.11x", "2.22x", "2.33x", "2.44x", "2.55x", "2.66x", "2.77x"};
  
 -static const SOC_ENUM_SINGLE_DECL(
 -      rt5640_clsd_spk_ratio_enum, RT5640_CLS_D_OUT,
 -      RT5640_CLSD_RATIO_SFT, rt5640_clsd_spk_ratio);
 +static SOC_ENUM_SINGLE_DECL(rt5640_clsd_spk_ratio_enum, RT5640_CLS_D_OUT,
 +                          RT5640_CLSD_RATIO_SFT, rt5640_clsd_spk_ratio);
  
  static const struct snd_kcontrol_new rt5640_snd_controls[] = {
        /* Speaker Output Volume */
@@@ -752,8 -753,9 +752,8 @@@ static const char * const rt5640_stereo
        "DIG MIX", "ADC"
  };
  
 -static const SOC_ENUM_SINGLE_DECL(
 -      rt5640_stereo_adc1_enum, RT5640_STO_ADC_MIXER,
 -      RT5640_ADC_1_SRC_SFT, rt5640_stereo_adc1_src);
 +static SOC_ENUM_SINGLE_DECL(rt5640_stereo_adc1_enum, RT5640_STO_ADC_MIXER,
 +                          RT5640_ADC_1_SRC_SFT, rt5640_stereo_adc1_src);
  
  static const struct snd_kcontrol_new rt5640_sto_adc_1_mux =
        SOC_DAPM_ENUM("Stereo ADC1 Mux", rt5640_stereo_adc1_enum);
@@@ -762,8 -764,9 +762,8 @@@ static const char * const rt5640_stereo
        "DMIC1", "DMIC2", "DIG MIX"
  };
  
 -static const SOC_ENUM_SINGLE_DECL(
 -      rt5640_stereo_adc2_enum, RT5640_STO_ADC_MIXER,
 -      RT5640_ADC_2_SRC_SFT, rt5640_stereo_adc2_src);
 +static SOC_ENUM_SINGLE_DECL(rt5640_stereo_adc2_enum, RT5640_STO_ADC_MIXER,
 +                          RT5640_ADC_2_SRC_SFT, rt5640_stereo_adc2_src);
  
  static const struct snd_kcontrol_new rt5640_sto_adc_2_mux =
        SOC_DAPM_ENUM("Stereo ADC2 Mux", rt5640_stereo_adc2_enum);
@@@ -773,8 -776,9 +773,8 @@@ static const char * const rt5640_mono_a
        "Mono DAC MIXL", "ADCL"
  };
  
 -static const SOC_ENUM_SINGLE_DECL(
 -      rt5640_mono_adc_l1_enum, RT5640_MONO_ADC_MIXER,
 -      RT5640_MONO_ADC_L1_SRC_SFT, rt5640_mono_adc_l1_src);
 +static SOC_ENUM_SINGLE_DECL(rt5640_mono_adc_l1_enum, RT5640_MONO_ADC_MIXER,
 +                          RT5640_MONO_ADC_L1_SRC_SFT, rt5640_mono_adc_l1_src);
  
  static const struct snd_kcontrol_new rt5640_mono_adc_l1_mux =
        SOC_DAPM_ENUM("Mono ADC1 left source", rt5640_mono_adc_l1_enum);
@@@ -783,8 -787,9 +783,8 @@@ static const char * const rt5640_mono_a
        "DMIC L1", "DMIC L2", "Mono DAC MIXL"
  };
  
 -static const SOC_ENUM_SINGLE_DECL(
 -      rt5640_mono_adc_l2_enum, RT5640_MONO_ADC_MIXER,
 -      RT5640_MONO_ADC_L2_SRC_SFT, rt5640_mono_adc_l2_src);
 +static SOC_ENUM_SINGLE_DECL(rt5640_mono_adc_l2_enum, RT5640_MONO_ADC_MIXER,
 +                          RT5640_MONO_ADC_L2_SRC_SFT, rt5640_mono_adc_l2_src);
  
  static const struct snd_kcontrol_new rt5640_mono_adc_l2_mux =
        SOC_DAPM_ENUM("Mono ADC2 left source", rt5640_mono_adc_l2_enum);
@@@ -793,8 -798,9 +793,8 @@@ static const char * const rt5640_mono_a
        "Mono DAC MIXR", "ADCR"
  };
  
 -static const SOC_ENUM_SINGLE_DECL(
 -      rt5640_mono_adc_r1_enum, RT5640_MONO_ADC_MIXER,
 -      RT5640_MONO_ADC_R1_SRC_SFT, rt5640_mono_adc_r1_src);
 +static SOC_ENUM_SINGLE_DECL(rt5640_mono_adc_r1_enum, RT5640_MONO_ADC_MIXER,
 +                          RT5640_MONO_ADC_R1_SRC_SFT, rt5640_mono_adc_r1_src);
  
  static const struct snd_kcontrol_new rt5640_mono_adc_r1_mux =
        SOC_DAPM_ENUM("Mono ADC1 right source", rt5640_mono_adc_r1_enum);
@@@ -803,8 -809,9 +803,8 @@@ static const char * const rt5640_mono_a
        "DMIC R1", "DMIC R2", "Mono DAC MIXR"
  };
  
 -static const SOC_ENUM_SINGLE_DECL(
 -      rt5640_mono_adc_r2_enum, RT5640_MONO_ADC_MIXER,
 -      RT5640_MONO_ADC_R2_SRC_SFT, rt5640_mono_adc_r2_src);
 +static SOC_ENUM_SINGLE_DECL(rt5640_mono_adc_r2_enum, RT5640_MONO_ADC_MIXER,
 +                          RT5640_MONO_ADC_R2_SRC_SFT, rt5640_mono_adc_r2_src);
  
  static const struct snd_kcontrol_new rt5640_mono_adc_r2_mux =
        SOC_DAPM_ENUM("Mono ADC2 right source", rt5640_mono_adc_r2_enum);
@@@ -819,9 -826,9 +819,9 @@@ static int rt5640_dac_l2_values[] = 
        3,
  };
  
 -static const SOC_VALUE_ENUM_SINGLE_DECL(
 -      rt5640_dac_l2_enum, RT5640_DSP_PATH2, RT5640_DAC_L2_SEL_SFT,
 -      0x3, rt5640_dac_l2_src, rt5640_dac_l2_values);
 +static SOC_VALUE_ENUM_SINGLE_DECL(rt5640_dac_l2_enum,
 +                                RT5640_DSP_PATH2, RT5640_DAC_L2_SEL_SFT,
 +                                0x3, rt5640_dac_l2_src, rt5640_dac_l2_values);
  
  static const struct snd_kcontrol_new rt5640_dac_l2_mux =
        SOC_DAPM_VALUE_ENUM("DAC2 left channel source", rt5640_dac_l2_enum);
@@@ -834,9 -841,9 +834,9 @@@ static int rt5640_dac_r2_values[] = 
        0,
  };
  
 -static const SOC_VALUE_ENUM_SINGLE_DECL(
 -      rt5640_dac_r2_enum, RT5640_DSP_PATH2, RT5640_DAC_R2_SEL_SFT,
 -      0x3, rt5640_dac_r2_src, rt5640_dac_r2_values);
 +static SOC_VALUE_ENUM_SINGLE_DECL(rt5640_dac_r2_enum,
 +                                RT5640_DSP_PATH2, RT5640_DAC_R2_SEL_SFT,
 +                                0x3, rt5640_dac_r2_src, rt5640_dac_r2_values);
  
  static const struct snd_kcontrol_new rt5640_dac_r2_mux =
        SOC_DAPM_ENUM("DAC2 right channel source", rt5640_dac_r2_enum);
@@@ -853,10 -860,9 +853,10 @@@ static int rt5640_dai_iis_map_values[] 
        7,
  };
  
 -static const SOC_VALUE_ENUM_SINGLE_DECL(
 -      rt5640_dai_iis_map_enum, RT5640_I2S1_SDP, RT5640_I2S_IF_SFT,
 -      0x7, rt5640_dai_iis_map, rt5640_dai_iis_map_values);
 +static SOC_VALUE_ENUM_SINGLE_DECL(rt5640_dai_iis_map_enum,
 +                                RT5640_I2S1_SDP, RT5640_I2S_IF_SFT,
 +                                0x7, rt5640_dai_iis_map,
 +                                rt5640_dai_iis_map_values);
  
  static const struct snd_kcontrol_new rt5640_dai_mux =
        SOC_DAPM_VALUE_ENUM("DAI select", rt5640_dai_iis_map_enum);
@@@ -866,8 -872,9 +866,8 @@@ static const char * const rt5640_sdi_se
        "IF1", "IF2"
  };
  
 -static const SOC_ENUM_SINGLE_DECL(
 -      rt5640_sdi_sel_enum, RT5640_I2S2_SDP,
 -      RT5640_I2S2_SDI_SFT, rt5640_sdi_sel);
 +static SOC_ENUM_SINGLE_DECL(rt5640_sdi_sel_enum, RT5640_I2S2_SDP,
 +                          RT5640_I2S2_SDI_SFT, rt5640_sdi_sel);
  
  static const struct snd_kcontrol_new rt5640_sdi_mux =
        SOC_DAPM_ENUM("SDI select", rt5640_sdi_sel_enum);
@@@ -1594,8 -1601,7 +1594,7 @@@ static int get_clk_info(int sclk, int r
  static int rt5640_hw_params(struct snd_pcm_substream *substream,
        struct snd_pcm_hw_params *params, struct snd_soc_dai *dai)
  {
-       struct snd_soc_pcm_runtime *rtd = substream->private_data;
-       struct snd_soc_codec *codec = rtd->codec;
+       struct snd_soc_codec *codec = dai->codec;
        struct rt5640_priv *rt5640 = snd_soc_codec_get_drvdata(codec);
        unsigned int val_len = 0, val_clk, mask_clk;
        int dai_sel, pre_div, bclk_ms, frame_size;
@@@ -1936,8 -1942,16 +1935,8 @@@ static int rt5640_set_bias_level(struc
  static int rt5640_probe(struct snd_soc_codec *codec)
  {
        struct rt5640_priv *rt5640 = snd_soc_codec_get_drvdata(codec);
 -      int ret;
  
        rt5640->codec = codec;
 -      codec->control_data = rt5640->regmap;
 -
 -      ret = snd_soc_codec_set_cache_io(codec, 8, 16, SND_SOC_REGMAP);
 -      if (ret != 0) {
 -              dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
 -              return ret;
 -      }
  
        codec->dapm.idle_bias_off = 1;
        rt5640_set_bias_level(codec, SND_SOC_BIAS_OFF);
@@@ -2078,7 -2092,6 +2077,7 @@@ MODULE_DEVICE_TABLE(i2c, rt5640_i2c_id)
  #ifdef CONFIG_ACPI
  static struct acpi_device_id rt5640_acpi_match[] = {
        { "INT33CA", 0 },
 +      { "10EC5640", 0 },
        { },
  };
  MODULE_DEVICE_TABLE(acpi, rt5640_acpi_match);
index a3c61d308bb0ff218ff85d252b2077cc6de4056f,fa4b050fe6e6108f73bc09594f283c32d4ddb0e2..a40c4b0196a3cfc42a0ebd464d067e0d379f9daa
@@@ -141,7 -141,7 +141,7 @@@ static const char *pwm_mode_text[] = { 
  
  static const DECLARE_TLV_DB_SCALE(out_gain_tlv, -9150, 50, 0);
  static const DECLARE_TLV_DB_SCALE(master_vol_tlv, -12750, 50, 0);
 -static const SOC_ENUM_SINGLE_DECL(pwm_src, STA529_FFXCFG1, 4, pwm_mode_text);
 +static SOC_ENUM_SINGLE_DECL(pwm_src, STA529_FFXCFG1, 4, pwm_mode_text);
  
  static const struct snd_kcontrol_new sta529_snd_controls[] = {
        SOC_DOUBLE_R_TLV("Digital Playback Volume", STA529_LVOL, STA529_RVOL, 0,
@@@ -193,8 -193,7 +193,7 @@@ static int sta529_hw_params(struct snd_
                struct snd_pcm_hw_params *params,
                struct snd_soc_dai *dai)
  {
-       struct snd_soc_pcm_runtime *rtd = substream->private_data;
-       struct snd_soc_codec *codec = rtd->codec;
+       struct snd_soc_codec *codec = dai->codec;
        int pdata, play_freq_val, record_freq_val;
        int bclk_to_fs_ratio;
  
@@@ -322,6 -321,16 +321,6 @@@ static struct snd_soc_dai_driver sta529
  
  static int sta529_probe(struct snd_soc_codec *codec)
  {
 -      struct sta529 *sta529 = snd_soc_codec_get_drvdata(codec);
 -      int ret;
 -
 -      codec->control_data = sta529->regmap;
 -      ret = snd_soc_codec_set_cache_io(codec, 8, 8, SND_SOC_REGMAP);
 -
 -      if (ret < 0) {
 -              dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
 -              return ret;
 -      }
        sta529_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
  
        return 0;
index 4dadaa8ad46c1f3edd8440c6479b0ce578841246,dc47f6f5cd838ec5350eaaee5e289345bccaaab5..e62e70781ec21fe72bac4137c518f1bf01794e88
@@@ -108,7 -108,7 +108,7 @@@ static int uda1380_write(struct snd_soc
        /* the interpolator & decimator regs must only be written when the
         * codec DAI is active.
         */
 -      if (!codec->active && (reg >= UDA1380_MVOL))
 +      if (!snd_soc_codec_is_active(codec) && (reg >= UDA1380_MVOL))
                return 0;
        pr_debug("uda1380: hw write %x val %x\n", reg, value);
        if (codec->hw_write(codec->control_data, data, 3) == 3) {
@@@ -237,27 -237,25 +237,27 @@@ static const char *uda1380_os_setting[
  };
  
  static const struct soc_enum uda1380_deemp_enum[] = {
 -      SOC_ENUM_SINGLE(UDA1380_DEEMP, 8, 5, uda1380_deemp),
 -      SOC_ENUM_SINGLE(UDA1380_DEEMP, 0, 5, uda1380_deemp),
 +      SOC_ENUM_SINGLE(UDA1380_DEEMP, 8, ARRAY_SIZE(uda1380_deemp),
 +                      uda1380_deemp),
 +      SOC_ENUM_SINGLE(UDA1380_DEEMP, 0, ARRAY_SIZE(uda1380_deemp),
 +                      uda1380_deemp),
  };
 -static const struct soc_enum uda1380_input_sel_enum =
 -      SOC_ENUM_SINGLE(UDA1380_ADC, 2, 4, uda1380_input_sel);          /* SEL_MIC, SEL_LNA */
 -static const struct soc_enum uda1380_output_sel_enum =
 -      SOC_ENUM_SINGLE(UDA1380_PM, 7, 2, uda1380_output_sel);          /* R02_EN_AVC */
 -static const struct soc_enum uda1380_spf_enum =
 -      SOC_ENUM_SINGLE(UDA1380_MODE, 14, 4, uda1380_spf_mode);         /* M */
 -static const struct soc_enum uda1380_capture_sel_enum =
 -      SOC_ENUM_SINGLE(UDA1380_IFACE, 6, 2, uda1380_capture_sel);      /* SEL_SOURCE */
 -static const struct soc_enum uda1380_sel_ns_enum =
 -      SOC_ENUM_SINGLE(UDA1380_MIXER, 14, 2, uda1380_sel_ns);          /* SEL_NS */
 -static const struct soc_enum uda1380_mix_enum =
 -      SOC_ENUM_SINGLE(UDA1380_MIXER, 12, 4, uda1380_mix_control);     /* MIX, MIX_POS */
 -static const struct soc_enum uda1380_sdet_enum =
 -      SOC_ENUM_SINGLE(UDA1380_MIXER, 4, 4, uda1380_sdet_setting);     /* SD_VALUE */
 -static const struct soc_enum uda1380_os_enum =
 -      SOC_ENUM_SINGLE(UDA1380_MIXER, 0, 3, uda1380_os_setting);       /* OS */
 +static SOC_ENUM_SINGLE_DECL(uda1380_input_sel_enum,
 +                          UDA1380_ADC, 2, uda1380_input_sel);         /* SEL_MIC, SEL_LNA */
 +static SOC_ENUM_SINGLE_DECL(uda1380_output_sel_enum,
 +                          UDA1380_PM, 7, uda1380_output_sel);         /* R02_EN_AVC */
 +static SOC_ENUM_SINGLE_DECL(uda1380_spf_enum,
 +                          UDA1380_MODE, 14, uda1380_spf_mode);                /* M */
 +static SOC_ENUM_SINGLE_DECL(uda1380_capture_sel_enum,
 +                          UDA1380_IFACE, 6, uda1380_capture_sel);     /* SEL_SOURCE */
 +static SOC_ENUM_SINGLE_DECL(uda1380_sel_ns_enum,
 +                          UDA1380_MIXER, 14, uda1380_sel_ns);         /* SEL_NS */
 +static SOC_ENUM_SINGLE_DECL(uda1380_mix_enum,
 +                          UDA1380_MIXER, 12, uda1380_mix_control);    /* MIX, MIX_POS */
 +static SOC_ENUM_SINGLE_DECL(uda1380_sdet_enum,
 +                          UDA1380_MIXER, 4, uda1380_sdet_setting);    /* SD_VALUE */
 +static SOC_ENUM_SINGLE_DECL(uda1380_os_enum,
 +                          UDA1380_MIXER, 0, uda1380_os_setting);      /* OS */
  
  /*
   * from -48 dB in 1.5 dB steps (mute instead of -49.5 dB)
@@@ -566,8 -564,7 +566,7 @@@ static int uda1380_pcm_hw_params(struc
  static void uda1380_pcm_shutdown(struct snd_pcm_substream *substream,
                                 struct snd_soc_dai *dai)
  {
-       struct snd_soc_pcm_runtime *rtd = substream->private_data;
-       struct snd_soc_codec *codec = rtd->codec;
+       struct snd_soc_codec *codec = dai->codec;
        u16 clk = uda1380_read_reg_cache(codec, UDA1380_CLK);
  
        /* shut down WSPLL power if running from this clock */
index 7558c838193d7db2bedc46b12c8a1c4c29d2e655,49c2869b681cc1dd633ceed7909418250f24010a..af7ed8b5d4e187e5b85dc6f3d47b9f7711ca86b2
@@@ -504,8 -504,7 +504,7 @@@ static int wm8580_paif_hw_params(struc
                                 struct snd_pcm_hw_params *params,
                                 struct snd_soc_dai *dai)
  {
-       struct snd_soc_pcm_runtime *rtd = substream->private_data;
-       struct snd_soc_codec *codec = rtd->codec;
+       struct snd_soc_codec *codec = dai->codec;
        struct wm8580_priv *wm8580 = snd_soc_codec_get_drvdata(codec);
        u16 paifa = 0;
        u16 paifb = 0;
@@@ -869,6 -868,12 +868,6 @@@ static int wm8580_probe(struct snd_soc_
        struct wm8580_priv *wm8580 = snd_soc_codec_get_drvdata(codec);
        int ret = 0;
  
 -      ret = snd_soc_codec_set_cache_io(codec, 7, 9, SND_SOC_REGMAP);
 -      if (ret < 0) {
 -              dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret);
 -              return ret;
 -      }
 -
        ret = regulator_bulk_enable(ARRAY_SIZE(wm8580->supplies),
                                    wm8580->supplies);
        if (ret != 0) {