diff options
Diffstat (limited to 'sound/soc/codecs/isabelle.c')
| -rw-r--r-- | sound/soc/codecs/isabelle.c | 77 | 
1 files changed, 34 insertions, 43 deletions
diff --git a/sound/soc/codecs/isabelle.c b/sound/soc/codecs/isabelle.c index 53b455b8c07..3a89ce66d51 100644 --- a/sound/soc/codecs/isabelle.c +++ b/sound/soc/codecs/isabelle.c @@ -140,13 +140,17 @@ static const char *isabelle_rx1_texts[] = {"VRX1", "ARX1"};  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 */ @@ -161,13 +165,17 @@ static const char *isabelle_atx_texts[] = {"AMIC1", "DMIC"};  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 = @@ -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); @@ -206,16 +210,20 @@ static const char *isabelle_st_audio_texts[] = {"ATX1", "ATX2"};  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),  }; @@ -910,8 +918,7 @@ static int isabelle_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;  	u16 aif = 0;  	unsigned int fs_val = 0; @@ -951,11 +958,11 @@ static int isabelle_hw_params(struct snd_pcm_substream *substream,  			ISABELLE_FS_RATE_MASK, fs_val);  	/* bit size */ -	switch (params_format(params)) { -	case SNDRV_PCM_FORMAT_S20_3LE: +	switch (params_width(params)) { +	case 20:  		aif |= ISABELLE_AIF_LENGTH_20;  		break; -	case SNDRV_PCM_FORMAT_S32_LE: +	case 32:  		aif |= ISABELLE_AIF_LENGTH_32;  		break;  	default: @@ -1082,23 +1089,7 @@ static struct snd_soc_dai_driver isabelle_dai[] = {  	},  }; -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),  | 
