ASoC: codec: Simplify ASoC probe code.
For some CODEC drivers like who act as the MFDs children are ignored by this patch. Signed-off-by: Xiubo Li <Li.Xiubo@freescale.com> Signed-off-by: Mark Brown <broonie@linaro.org>
This commit is contained in:
		
					parent
					
						
							
								db5a5ee7c7
							
						
					
				
			
			
				commit
				
					
						5d6be5aa6b
					
				
			
		
					 73 changed files with 13 additions and 562 deletions
				
			
		|  | @ -322,14 +322,6 @@ static struct snd_soc_dai_driver ad193x_dai = { | ||||||
| static int ad193x_codec_probe(struct snd_soc_codec *codec) | static int ad193x_codec_probe(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
| 	struct ad193x_priv *ad193x = snd_soc_codec_get_drvdata(codec); | 	struct ad193x_priv *ad193x = snd_soc_codec_get_drvdata(codec); | ||||||
| 	int ret; |  | ||||||
| 
 |  | ||||||
| 	codec->control_data = ad193x->regmap; |  | ||||||
| 	ret = snd_soc_codec_set_cache_io(codec, 0, 0, SND_SOC_REGMAP); |  | ||||||
| 	if (ret < 0) { |  | ||||||
| 		dev_err(codec->dev, "failed to set cache I/O: %d\n", ret); |  | ||||||
| 		return ret; |  | ||||||
| 	} |  | ||||||
| 
 | 
 | ||||||
| 	/* default setting for ad193x */ | 	/* default setting for ad193x */ | ||||||
| 
 | 
 | ||||||
|  | @ -347,7 +339,7 @@ static int ad193x_codec_probe(struct snd_soc_codec *codec) | ||||||
| 	regmap_write(ad193x->regmap, AD193X_PLL_CLK_CTRL0, 0x99); /* mclk=24.576Mhz: 0x9D; mclk=12.288Mhz: 0x99 */ | 	regmap_write(ad193x->regmap, AD193X_PLL_CLK_CTRL0, 0x99); /* mclk=24.576Mhz: 0x9D; mclk=12.288Mhz: 0x99 */ | ||||||
| 	regmap_write(ad193x->regmap, AD193X_PLL_CLK_CTRL1, 0x04); | 	regmap_write(ad193x->regmap, AD193X_PLL_CLK_CTRL1, 0x04); | ||||||
| 
 | 
 | ||||||
| 	return ret; | 	return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static struct snd_soc_codec_driver soc_codec_dev_ad193x = { | static struct snd_soc_codec_driver soc_codec_dev_ad193x = { | ||||||
|  |  | ||||||
|  | @ -1376,15 +1376,8 @@ static int adau1373_probe(struct snd_soc_codec *codec) | ||||||
| 	struct adau1373_platform_data *pdata = codec->dev->platform_data; | 	struct adau1373_platform_data *pdata = codec->dev->platform_data; | ||||||
| 	bool lineout_differential = false; | 	bool lineout_differential = false; | ||||||
| 	unsigned int val; | 	unsigned int val; | ||||||
| 	int ret; |  | ||||||
| 	int i; | 	int i; | ||||||
| 
 | 
 | ||||||
| 	ret = snd_soc_codec_set_cache_io(codec, 0, 0, SND_SOC_REGMAP); |  | ||||||
| 	if (ret) { |  | ||||||
| 		dev_err(codec->dev, "failed to set cache I/O: %d\n", ret); |  | ||||||
| 		return ret; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	if (pdata) { | 	if (pdata) { | ||||||
| 		if (pdata->num_drc > ARRAY_SIZE(pdata->drc_setting)) | 		if (pdata->num_drc > ARRAY_SIZE(pdata->drc_setting)) | ||||||
| 			return -EINVAL; | 			return -EINVAL; | ||||||
|  |  | ||||||
|  | @ -798,15 +798,8 @@ static struct snd_soc_dai_driver adav80x_dais[] = { | ||||||
| 
 | 
 | ||||||
| static int adav80x_probe(struct snd_soc_codec *codec) | static int adav80x_probe(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
| 	int ret; |  | ||||||
| 	struct adav80x *adav80x = snd_soc_codec_get_drvdata(codec); | 	struct adav80x *adav80x = snd_soc_codec_get_drvdata(codec); | ||||||
| 
 | 
 | ||||||
| 	ret = snd_soc_codec_set_cache_io(codec, 0, 0, SND_SOC_REGMAP); |  | ||||||
| 	if (ret) { |  | ||||||
| 		dev_err(codec->dev, "failed to set cache I/O: %d\n", ret); |  | ||||||
| 		return ret; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	/* Force PLLs on for SYSCLK output */ | 	/* Force PLLs on for SYSCLK output */ | ||||||
| 	snd_soc_dapm_force_enable_pin(&codec->dapm, "PLL1"); | 	snd_soc_dapm_force_enable_pin(&codec->dapm, "PLL1"); | ||||||
| 	snd_soc_dapm_force_enable_pin(&codec->dapm, "PLL2"); | 	snd_soc_dapm_force_enable_pin(&codec->dapm, "PLL2"); | ||||||
|  |  | ||||||
|  | @ -388,15 +388,6 @@ static int ak4535_resume(struct snd_soc_codec *codec) | ||||||
| 
 | 
 | ||||||
| static int ak4535_probe(struct snd_soc_codec *codec) | static int ak4535_probe(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
| 	struct ak4535_priv *ak4535 = snd_soc_codec_get_drvdata(codec); |  | ||||||
| 	int ret; |  | ||||||
| 
 |  | ||||||
| 	codec->control_data = ak4535->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; |  | ||||||
| 	} |  | ||||||
| 	/* power on device */ | 	/* power on device */ | ||||||
| 	ak4535_set_bias_level(codec, SND_SOC_BIAS_STANDBY); | 	ak4535_set_bias_level(codec, SND_SOC_BIAS_STANDBY); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -519,14 +519,6 @@ static int ak4641_resume(struct snd_soc_codec *codec) | ||||||
| 
 | 
 | ||||||
| static int ak4641_probe(struct snd_soc_codec *codec) | static int ak4641_probe(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
| 	int ret; |  | ||||||
| 
 |  | ||||||
| 	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; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	/* power on device */ | 	/* power on device */ | ||||||
| 	ak4641_set_bias_level(codec, SND_SOC_BIAS_STANDBY); | 	ak4641_set_bias_level(codec, SND_SOC_BIAS_STANDBY); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -465,14 +465,6 @@ static int ak4642_resume(struct snd_soc_codec *codec) | ||||||
| 
 | 
 | ||||||
| static int ak4642_probe(struct snd_soc_codec *codec) | static int ak4642_probe(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
| 	int ret; |  | ||||||
| 
 |  | ||||||
| 	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; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	ak4642_set_bias_level(codec, SND_SOC_BIAS_STANDBY); | 	ak4642_set_bias_level(codec, SND_SOC_BIAS_STANDBY); | ||||||
| 
 | 
 | ||||||
| 	return 0; | 	return 0; | ||||||
|  |  | ||||||
|  | @ -613,17 +613,7 @@ static struct snd_soc_dai_driver ak4671_dai = { | ||||||
| 
 | 
 | ||||||
| static int ak4671_probe(struct snd_soc_codec *codec) | static int ak4671_probe(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
| 	int ret; | 	return ak4671_set_bias_level(codec, SND_SOC_BIAS_STANDBY); | ||||||
| 
 |  | ||||||
| 	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; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	ak4671_set_bias_level(codec, SND_SOC_BIAS_STANDBY); |  | ||||||
| 
 |  | ||||||
| 	return ret; |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static int ak4671_remove(struct snd_soc_codec *codec) | static int ak4671_remove(struct snd_soc_codec *codec) | ||||||
|  |  | ||||||
|  | @ -904,13 +904,6 @@ static int alc5623_probe(struct snd_soc_codec *codec) | ||||||
| 	struct snd_soc_dapm_context *dapm = &codec->dapm; | 	struct snd_soc_dapm_context *dapm = &codec->dapm; | ||||||
| 	int ret; | 	int ret; | ||||||
| 
 | 
 | ||||||
| 	codec->control_data = alc5623->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; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	alc5623_reset(codec); | 	alc5623_reset(codec); | ||||||
| 
 | 
 | ||||||
| 	/* power on device */ | 	/* power on device */ | ||||||
|  |  | ||||||
|  | @ -1063,14 +1063,6 @@ static int alc5632_probe(struct snd_soc_codec *codec) | ||||||
| 	struct alc5632_priv *alc5632 = snd_soc_codec_get_drvdata(codec); | 	struct alc5632_priv *alc5632 = snd_soc_codec_get_drvdata(codec); | ||||||
| 	int ret; | 	int ret; | ||||||
| 
 | 
 | ||||||
| 	codec->control_data = alc5632->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; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	/* power on device  */ | 	/* power on device  */ | ||||||
| 	alc5632_set_bias_level(codec, SND_SOC_BIAS_STANDBY); | 	alc5632_set_bias_level(codec, SND_SOC_BIAS_STANDBY); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -506,15 +506,6 @@ static int cs4270_probe(struct snd_soc_codec *codec) | ||||||
| 	struct cs4270_private *cs4270 = snd_soc_codec_get_drvdata(codec); | 	struct cs4270_private *cs4270 = snd_soc_codec_get_drvdata(codec); | ||||||
| 	int ret; | 	int ret; | ||||||
| 
 | 
 | ||||||
| 	/* Tell ASoC what kind of I/O to use to read the registers.  ASoC will
 |  | ||||||
| 	 * then do the I2C transactions itself. |  | ||||||
| 	 */ |  | ||||||
| 	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 (ret=%i)\n", ret); |  | ||||||
| 		return ret; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	/* Disable auto-mute.  This feature appears to be buggy.  In some
 | 	/* Disable auto-mute.  This feature appears to be buggy.  In some
 | ||||||
| 	 * situations, auto-mute will not deactivate when it should, so we want | 	 * situations, auto-mute will not deactivate when it should, so we want | ||||||
| 	 * this feature disabled by default.  An application (e.g. alsactl) can | 	 * this feature disabled by default.  An application (e.g. alsactl) can | ||||||
|  |  | ||||||
|  | @ -489,12 +489,6 @@ static int cs42l51_probe(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
| 	int ret, reg; | 	int ret, reg; | ||||||
| 
 | 
 | ||||||
| 	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; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	/*
 | 	/*
 | ||||||
| 	 * DAC configuration | 	 * DAC configuration | ||||||
| 	 * - Use signal processor | 	 * - Use signal processor | ||||||
|  |  | ||||||
|  | @ -1115,14 +1115,7 @@ static void cs42l52_free_beep(struct snd_soc_codec *codec) | ||||||
| static int cs42l52_probe(struct snd_soc_codec *codec) | static int cs42l52_probe(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
| 	struct cs42l52_private *cs42l52 = snd_soc_codec_get_drvdata(codec); | 	struct cs42l52_private *cs42l52 = snd_soc_codec_get_drvdata(codec); | ||||||
| 	int ret; |  | ||||||
| 
 | 
 | ||||||
| 	codec->control_data = cs42l52->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; |  | ||||||
| 	} |  | ||||||
| 	regcache_cache_only(cs42l52->regmap, true); | 	regcache_cache_only(cs42l52->regmap, true); | ||||||
| 
 | 
 | ||||||
| 	cs42l52_add_mic_controls(codec); | 	cs42l52_add_mic_controls(codec); | ||||||
|  | @ -1134,7 +1127,7 @@ static int cs42l52_probe(struct snd_soc_codec *codec) | ||||||
| 	cs42l52->sysclk = CS42L52_DEFAULT_CLK; | 	cs42l52->sysclk = CS42L52_DEFAULT_CLK; | ||||||
| 	cs42l52->config.format = CS42L52_DEFAULT_FORMAT; | 	cs42l52->config.format = CS42L52_DEFAULT_FORMAT; | ||||||
| 
 | 
 | ||||||
| 	return ret; | 	return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static int cs42l52_remove(struct snd_soc_codec *codec) | static int cs42l52_remove(struct snd_soc_codec *codec) | ||||||
|  |  | ||||||
|  | @ -1348,17 +1348,8 @@ static int cs42l73_resume(struct snd_soc_codec *codec) | ||||||
| 
 | 
 | ||||||
| static int cs42l73_probe(struct snd_soc_codec *codec) | static int cs42l73_probe(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
| 	int ret; |  | ||||||
| 	struct cs42l73_private *cs42l73 = snd_soc_codec_get_drvdata(codec); | 	struct cs42l73_private *cs42l73 = snd_soc_codec_get_drvdata(codec); | ||||||
| 
 | 
 | ||||||
| 	codec->control_data = cs42l73->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; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	cs42l73_set_bias_level(codec, SND_SOC_BIAS_STANDBY); | 	cs42l73_set_bias_level(codec, SND_SOC_BIAS_STANDBY); | ||||||
| 
 | 
 | ||||||
| 	/* Set Charge Pump Frequency */ | 	/* Set Charge Pump Frequency */ | ||||||
|  | @ -1371,7 +1362,7 @@ static int cs42l73_probe(struct snd_soc_codec *codec) | ||||||
| 	cs42l73->mclksel = CS42L73_CLKID_MCLK1; | 	cs42l73->mclksel = CS42L73_CLKID_MCLK1; | ||||||
| 	cs42l73->mclk = 0; | 	cs42l73->mclk = 0; | ||||||
| 
 | 
 | ||||||
| 	return ret; | 	return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static int cs42l73_remove(struct snd_soc_codec *codec) | static int cs42l73_remove(struct snd_soc_codec *codec) | ||||||
|  |  | ||||||
|  | @ -1071,17 +1071,9 @@ static struct snd_soc_dai_driver da7210_dai = { | ||||||
| static int da7210_probe(struct snd_soc_codec *codec) | static int da7210_probe(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
| 	struct da7210_priv *da7210 = snd_soc_codec_get_drvdata(codec); | 	struct da7210_priv *da7210 = snd_soc_codec_get_drvdata(codec); | ||||||
| 	int ret; |  | ||||||
| 
 | 
 | ||||||
| 	dev_info(codec->dev, "DA7210 Audio Codec %s\n", DA7210_VERSION); | 	dev_info(codec->dev, "DA7210 Audio Codec %s\n", DA7210_VERSION); | ||||||
| 
 | 
 | ||||||
| 	codec->control_data = da7210->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; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	da7210->mclk_rate       = 0;    /* This will be set from set_sysclk() */ | 	da7210->mclk_rate       = 0;    /* This will be set from set_sysclk() */ | ||||||
| 	da7210->master          = 0;    /* This will be set from set_fmt() */ | 	da7210->master          = 0;    /* This will be set from set_fmt() */ | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1384,17 +1384,9 @@ static int da7213_set_bias_level(struct snd_soc_codec *codec, | ||||||
| 
 | 
 | ||||||
| static int da7213_probe(struct snd_soc_codec *codec) | static int da7213_probe(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
| 	int ret; |  | ||||||
| 	struct da7213_priv *da7213 = snd_soc_codec_get_drvdata(codec); | 	struct da7213_priv *da7213 = snd_soc_codec_get_drvdata(codec); | ||||||
| 	struct da7213_platform_data *pdata = da7213->pdata; | 	struct da7213_platform_data *pdata = da7213->pdata; | ||||||
| 
 | 
 | ||||||
| 	codec->control_data = da7213->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; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	/* Default to using ALC auto offset calibration mode. */ | 	/* Default to using ALC auto offset calibration mode. */ | ||||||
| 	snd_soc_update_bits(codec, DA7213_ALC_CTRL1, | 	snd_soc_update_bits(codec, DA7213_ALC_CTRL1, | ||||||
| 			    DA7213_ALC_CALIB_MODE_MAN, 0); | 			    DA7213_ALC_CALIB_MODE_MAN, 0); | ||||||
|  |  | ||||||
|  | @ -1516,23 +1516,14 @@ static int da732x_probe(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
| 	struct da732x_priv *da732x = snd_soc_codec_get_drvdata(codec); | 	struct da732x_priv *da732x = snd_soc_codec_get_drvdata(codec); | ||||||
| 	struct snd_soc_dapm_context *dapm = &codec->dapm; | 	struct snd_soc_dapm_context *dapm = &codec->dapm; | ||||||
| 	int ret = 0; |  | ||||||
| 
 | 
 | ||||||
| 	da732x->codec = codec; | 	da732x->codec = codec; | ||||||
| 
 | 
 | ||||||
| 	dapm->idle_bias_off = false; | 	dapm->idle_bias_off = false; | ||||||
| 
 | 
 | ||||||
| 	codec->control_data = da732x->regmap; |  | ||||||
| 
 |  | ||||||
| 	ret = snd_soc_codec_set_cache_io(codec, 8, 8, SND_SOC_REGMAP); |  | ||||||
| 	if (ret != 0) { |  | ||||||
| 		dev_err(codec->dev, "Failed to register codec.\n"); |  | ||||||
| 		goto err; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	da732x_set_bias_level(codec, SND_SOC_BIAS_STANDBY); | 	da732x_set_bias_level(codec, SND_SOC_BIAS_STANDBY); | ||||||
| err: | 
 | ||||||
| 	return ret; | 	return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static int da732x_remove(struct snd_soc_codec *codec) | static int da732x_remove(struct snd_soc_codec *codec) | ||||||
|  |  | ||||||
|  | @ -1381,16 +1381,8 @@ static int da9055_set_bias_level(struct snd_soc_codec *codec, | ||||||
| 
 | 
 | ||||||
| static int da9055_probe(struct snd_soc_codec *codec) | static int da9055_probe(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
| 	int ret; |  | ||||||
| 	struct da9055_priv *da9055 = snd_soc_codec_get_drvdata(codec); | 	struct da9055_priv *da9055 = snd_soc_codec_get_drvdata(codec); | ||||||
| 
 | 
 | ||||||
| 	codec->control_data = da9055->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; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	/* Enable all Gain Ramps */ | 	/* Enable all Gain Ramps */ | ||||||
| 	snd_soc_update_bits(codec, DA9055_AUX_L_CTRL, | 	snd_soc_update_bits(codec, DA9055_AUX_L_CTRL, | ||||||
| 			    DA9055_GAIN_RAMPING_EN, DA9055_GAIN_RAMPING_EN); | 			    DA9055_GAIN_RAMPING_EN, DA9055_GAIN_RAMPING_EN); | ||||||
|  |  | ||||||
|  | @ -1082,23 +1082,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 = { | static struct snd_soc_codec_driver soc_codec_dev_isabelle = { | ||||||
| 	.probe = isabelle_probe, |  | ||||||
| 	.set_bias_level = isabelle_set_bias_level, | 	.set_bias_level = isabelle_set_bias_level, | ||||||
| 	.controls = isabelle_snd_controls, | 	.controls = isabelle_snd_controls, | ||||||
| 	.num_controls = ARRAY_SIZE(isabelle_snd_controls), | 	.num_controls = ARRAY_SIZE(isabelle_snd_controls), | ||||||
|  |  | ||||||
|  | @ -1409,22 +1409,6 @@ static int lm49453_resume(struct snd_soc_codec *codec) | ||||||
| 	return 0; | 	return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static int lm49453_probe(struct snd_soc_codec *codec) |  | ||||||
| { |  | ||||||
| 	struct lm49453_priv *lm49453 = snd_soc_codec_get_drvdata(codec); |  | ||||||
| 	int ret = 0; |  | ||||||
| 
 |  | ||||||
| 	codec->control_data = lm49453->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; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	return 0; |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| /* power down chip */ | /* power down chip */ | ||||||
| static int lm49453_remove(struct snd_soc_codec *codec) | static int lm49453_remove(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
|  | @ -1433,7 +1417,6 @@ static int lm49453_remove(struct snd_soc_codec *codec) | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static struct snd_soc_codec_driver soc_codec_dev_lm49453 = { | static struct snd_soc_codec_driver soc_codec_dev_lm49453 = { | ||||||
| 	.probe = lm49453_probe, |  | ||||||
| 	.remove = lm49453_remove, | 	.remove = lm49453_remove, | ||||||
| 	.suspend = lm49453_suspend, | 	.suspend = lm49453_suspend, | ||||||
| 	.resume = lm49453_resume, | 	.resume = lm49453_resume, | ||||||
|  |  | ||||||
|  | @ -135,11 +135,6 @@ static int max9768_probe(struct snd_soc_codec *codec) | ||||||
| 	struct max9768 *max9768 = snd_soc_codec_get_drvdata(codec); | 	struct max9768 *max9768 = snd_soc_codec_get_drvdata(codec); | ||||||
| 	int ret; | 	int ret; | ||||||
| 
 | 
 | ||||||
| 	codec->control_data = max9768->regmap; |  | ||||||
| 	ret = snd_soc_codec_set_cache_io(codec, 2, 6, SND_SOC_REGMAP); |  | ||||||
| 	if (ret) |  | ||||||
| 		return ret; |  | ||||||
| 
 |  | ||||||
| 	if (max9768->flags & MAX9768_FLAG_CLASSIC_PWM) { | 	if (max9768->flags & MAX9768_FLAG_CLASSIC_PWM) { | ||||||
| 		ret = snd_soc_write(codec, MAX9768_CTRL, MAX9768_CTRL_PWM); | 		ret = snd_soc_write(codec, MAX9768_CTRL, MAX9768_CTRL_PWM); | ||||||
| 		if (ret) | 		if (ret) | ||||||
|  |  | ||||||
|  | @ -1915,12 +1915,6 @@ static int max98088_probe(struct snd_soc_codec *codec) | ||||||
| 
 | 
 | ||||||
|        regcache_mark_dirty(max98088->regmap); |        regcache_mark_dirty(max98088->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; |  | ||||||
|        } |  | ||||||
| 
 |  | ||||||
|        /* initialize private data */ |        /* initialize private data */ | ||||||
| 
 | 
 | ||||||
|        max98088->sysclk = (unsigned)-1; |        max98088->sysclk = (unsigned)-1; | ||||||
|  |  | ||||||
|  | @ -2195,14 +2195,6 @@ static int max98090_probe(struct snd_soc_codec *codec) | ||||||
| 
 | 
 | ||||||
| 	max98090->codec = codec; | 	max98090->codec = codec; | ||||||
| 
 | 
 | ||||||
| 	codec->control_data = max98090->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; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	/* Reset the codec, the DSP core, and disable all interrupts */ | 	/* Reset the codec, the DSP core, and disable all interrupts */ | ||||||
| 	max98090_reset(max98090); | 	max98090_reset(max98090); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -2234,12 +2234,6 @@ static int max98095_probe(struct snd_soc_codec *codec) | ||||||
| 	struct i2c_client *client; | 	struct i2c_client *client; | ||||||
| 	int ret = 0; | 	int ret = 0; | ||||||
| 
 | 
 | ||||||
| 	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; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	/* reset the codec, the DSP core, and disable all interrupts */ | 	/* reset the codec, the DSP core, and disable all interrupts */ | ||||||
| 	max98095_reset(codec); | 	max98095_reset(codec); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -312,14 +312,6 @@ static int max9850_resume(struct snd_soc_codec *codec) | ||||||
| 
 | 
 | ||||||
| static int max9850_probe(struct snd_soc_codec *codec) | static int max9850_probe(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
| 	int ret; |  | ||||||
| 
 |  | ||||||
| 	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; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	/* enable zero-detect */ | 	/* enable zero-detect */ | ||||||
| 	snd_soc_update_bits(codec, MAX9850_GENERAL_PURPOSE, 1, 1); | 	snd_soc_update_bits(codec, MAX9850_GENERAL_PURPOSE, 1, 1); | ||||||
| 	/* enable slew-rate control */ | 	/* enable slew-rate control */ | ||||||
|  |  | ||||||
|  | @ -586,16 +586,6 @@ static int ml26124_resume(struct snd_soc_codec *codec) | ||||||
| 
 | 
 | ||||||
| static int ml26124_probe(struct snd_soc_codec *codec) | static int ml26124_probe(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
| 	int ret; |  | ||||||
| 	struct ml26124_priv *priv = snd_soc_codec_get_drvdata(codec); |  | ||||||
| 	codec->control_data = priv->regmap; |  | ||||||
| 
 |  | ||||||
| 	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; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	/* Software Reset */ | 	/* Software Reset */ | ||||||
| 	snd_soc_update_bits(codec, ML26124_SW_RST, 0x01, 1); | 	snd_soc_update_bits(codec, ML26124_SW_RST, 0x01, 1); | ||||||
| 	snd_soc_update_bits(codec, ML26124_SW_RST, 0x01, 0); | 	snd_soc_update_bits(codec, ML26124_SW_RST, 0x01, 0); | ||||||
|  |  | ||||||
|  | @ -1585,15 +1585,6 @@ static int rt5631_probe(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
| 	struct rt5631_priv *rt5631 = snd_soc_codec_get_drvdata(codec); | 	struct rt5631_priv *rt5631 = snd_soc_codec_get_drvdata(codec); | ||||||
| 	unsigned int val; | 	unsigned int val; | ||||||
| 	int ret; |  | ||||||
| 
 |  | ||||||
| 	codec->control_data = rt5631->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; |  | ||||||
| 	} |  | ||||||
| 
 | 
 | ||||||
| 	val = rt5631_read_index(codec, RT5631_ADDA_MIXER_INTL_REG3); | 	val = rt5631_read_index(codec, RT5631_ADDA_MIXER_INTL_REG3); | ||||||
| 	if (val & 0x0002) | 	if (val & 0x0002) | ||||||
|  |  | ||||||
|  | @ -1943,16 +1943,8 @@ static int rt5640_set_bias_level(struct snd_soc_codec *codec, | ||||||
| static int rt5640_probe(struct snd_soc_codec *codec) | static int rt5640_probe(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
| 	struct rt5640_priv *rt5640 = snd_soc_codec_get_drvdata(codec); | 	struct rt5640_priv *rt5640 = snd_soc_codec_get_drvdata(codec); | ||||||
| 	int ret; |  | ||||||
| 
 | 
 | ||||||
| 	rt5640->codec = codec; | 	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; | 	codec->dapm.idle_bias_off = 1; | ||||||
| 	rt5640_set_bias_level(codec, SND_SOC_BIAS_OFF); | 	rt5640_set_bias_level(codec, SND_SOC_BIAS_OFF); | ||||||
|  |  | ||||||
|  | @ -825,8 +825,6 @@ static int sn95031_codec_probe(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
| 	pr_debug("codec_probe called\n"); | 	pr_debug("codec_probe called\n"); | ||||||
| 
 | 
 | ||||||
| 	snd_soc_codec_set_cache_io(codec, 0, 0, SND_SOC_REGMAP); |  | ||||||
| 
 |  | ||||||
| 	/* PCM interface config
 | 	/* PCM interface config
 | ||||||
| 	 * This sets the pcm rx slot conguration to max 6 slots | 	 * This sets the pcm rx slot conguration to max 6 slots | ||||||
| 	 * for max 4 dais (2 stereo and 2 mono) | 	 * for max 4 dais (2 stereo and 2 mono) | ||||||
|  |  | ||||||
|  | @ -648,16 +648,6 @@ static struct snd_soc_dai_driver ssm2518_dai = { | ||||||
| 
 | 
 | ||||||
| static int ssm2518_probe(struct snd_soc_codec *codec) | static int ssm2518_probe(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
| 	struct ssm2518 *ssm2518 = snd_soc_codec_get_drvdata(codec); |  | ||||||
| 	int ret; |  | ||||||
| 
 |  | ||||||
| 	codec->control_data = ssm2518->regmap; |  | ||||||
| 	ret = snd_soc_codec_set_cache_io(codec, 0, 0, SND_SOC_REGMAP); |  | ||||||
| 	if (ret < 0) { |  | ||||||
| 		dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret); |  | ||||||
| 		return ret; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	return ssm2518_set_bias_level(codec, SND_SOC_BIAS_OFF); | 	return ssm2518_set_bias_level(codec, SND_SOC_BIAS_OFF); | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -573,13 +573,6 @@ static int ssm260x_probe(struct snd_soc_codec *codec) | ||||||
| 	struct ssm2602_priv *ssm2602 = snd_soc_codec_get_drvdata(codec); | 	struct ssm2602_priv *ssm2602 = snd_soc_codec_get_drvdata(codec); | ||||||
| 	int ret; | 	int ret; | ||||||
| 
 | 
 | ||||||
| 	codec->control_data = ssm2602->regmap; |  | ||||||
| 	ret = snd_soc_codec_set_cache_io(codec, 0, 0, SND_SOC_REGMAP); |  | ||||||
| 	if (ret < 0) { |  | ||||||
| 		dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret); |  | ||||||
| 		return ret; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	ret = regmap_write(ssm2602->regmap, SSM2602_RESET, 0); | 	ret = regmap_write(ssm2602->regmap, SSM2602_RESET, 0); | ||||||
| 	if (ret < 0) { | 	if (ret < 0) { | ||||||
| 		dev_err(codec->dev, "Failed to issue reset: %d\n", ret); | 		dev_err(codec->dev, "Failed to issue reset: %d\n", ret); | ||||||
|  |  | ||||||
|  | @ -872,16 +872,6 @@ static int sta32x_probe(struct snd_soc_codec *codec) | ||||||
| 		return ret; | 		return ret; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	/* Tell ASoC what kind of I/O to use to read the registers.  ASoC will
 |  | ||||||
| 	 * then do the I2C transactions itself. |  | ||||||
| 	 */ |  | ||||||
| 	codec->control_data = sta32x->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 (ret=%i)\n", ret); |  | ||||||
| 		goto err; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	/* Chip documentation explicitly requires that the reset values
 | 	/* Chip documentation explicitly requires that the reset values
 | ||||||
| 	 * of reserved register bits are left untouched. | 	 * of reserved register bits are left untouched. | ||||||
| 	 * Write the register default value to cache for reserved registers, | 	 * Write the register default value to cache for reserved registers, | ||||||
|  | @ -946,10 +936,6 @@ static int sta32x_probe(struct snd_soc_codec *codec) | ||||||
| 	regulator_bulk_disable(ARRAY_SIZE(sta32x->supplies), sta32x->supplies); | 	regulator_bulk_disable(ARRAY_SIZE(sta32x->supplies), sta32x->supplies); | ||||||
| 
 | 
 | ||||||
| 	return 0; | 	return 0; | ||||||
| 
 |  | ||||||
| err: |  | ||||||
| 	regulator_bulk_disable(ARRAY_SIZE(sta32x->supplies), sta32x->supplies); |  | ||||||
| 	return ret; |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static int sta32x_remove(struct snd_soc_codec *codec) | static int sta32x_remove(struct snd_soc_codec *codec) | ||||||
|  |  | ||||||
|  | @ -322,16 +322,6 @@ static struct snd_soc_dai_driver sta529_dai = { | ||||||
| 
 | 
 | ||||||
| static int sta529_probe(struct snd_soc_codec *codec) | 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); | 	sta529_set_bias_level(codec, SND_SOC_BIAS_STANDBY); | ||||||
| 
 | 
 | ||||||
| 	return 0; | 	return 0; | ||||||
|  |  | ||||||
|  | @ -559,14 +559,6 @@ static int tlv320aic23_resume(struct snd_soc_codec *codec) | ||||||
| 
 | 
 | ||||||
| static int tlv320aic23_codec_probe(struct snd_soc_codec *codec) | static int tlv320aic23_codec_probe(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
| 	int ret; |  | ||||||
| 
 |  | ||||||
| 	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; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	/* Reset codec */ | 	/* Reset codec */ | ||||||
| 	snd_soc_write(codec, TLV320AIC23_RESET, 0); | 	snd_soc_write(codec, TLV320AIC23_RESET, 0); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -295,8 +295,6 @@ static int aic26_probe(struct snd_soc_codec *codec) | ||||||
| 	struct aic26 *aic26 = dev_get_drvdata(codec->dev); | 	struct aic26 *aic26 = dev_get_drvdata(codec->dev); | ||||||
| 	int ret, reg; | 	int ret, reg; | ||||||
| 
 | 
 | ||||||
| 	snd_soc_codec_set_cache_io(codec, 16, 16, SND_SOC_REGMAP); |  | ||||||
| 
 |  | ||||||
| 	aic26->codec = codec; | 	aic26->codec = codec; | ||||||
| 
 | 
 | ||||||
| 	/* Reset the codec to power on defaults */ | 	/* Reset the codec to power on defaults */ | ||||||
|  |  | ||||||
|  | @ -614,8 +614,6 @@ static int aic32x4_probe(struct snd_soc_codec *codec) | ||||||
| 	struct aic32x4_priv *aic32x4 = snd_soc_codec_get_drvdata(codec); | 	struct aic32x4_priv *aic32x4 = snd_soc_codec_get_drvdata(codec); | ||||||
| 	u32 tmp_reg; | 	u32 tmp_reg; | ||||||
| 
 | 
 | ||||||
| 	snd_soc_codec_set_cache_io(codec, 8, 8, SND_SOC_REGMAP); |  | ||||||
| 
 |  | ||||||
| 	if (gpio_is_valid(aic32x4->rstn_gpio)) { | 	if (gpio_is_valid(aic32x4->rstn_gpio)) { | ||||||
| 		ndelay(10); | 		ndelay(10); | ||||||
| 		gpio_set_value(aic32x4->rstn_gpio, 1); | 		gpio_set_value(aic32x4->rstn_gpio, 1); | ||||||
|  |  | ||||||
|  | @ -1344,12 +1344,6 @@ static int aic3x_probe(struct snd_soc_codec *codec) | ||||||
| 	INIT_LIST_HEAD(&aic3x->list); | 	INIT_LIST_HEAD(&aic3x->list); | ||||||
| 	aic3x->codec = codec; | 	aic3x->codec = codec; | ||||||
| 
 | 
 | ||||||
| 	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; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	for (i = 0; i < ARRAY_SIZE(aic3x->supplies); i++) { | 	for (i = 0; i < ARRAY_SIZE(aic3x->supplies); i++) { | ||||||
| 		aic3x->disable_nb[i].nb.notifier_call = aic3x_regulator_event; | 		aic3x->disable_nb[i].nb.notifier_call = aic3x_regulator_event; | ||||||
| 		aic3x->disable_nb[i].aic3x = aic3x; | 		aic3x->disable_nb[i].aic3x = aic3x; | ||||||
|  |  | ||||||
|  | @ -786,8 +786,6 @@ static int wm2000_probe(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
| 	struct wm2000_priv *wm2000 = dev_get_drvdata(codec->dev); | 	struct wm2000_priv *wm2000 = dev_get_drvdata(codec->dev); | ||||||
| 
 | 
 | ||||||
| 	snd_soc_codec_set_cache_io(codec, 16, 8, SND_SOC_REGMAP); |  | ||||||
| 
 |  | ||||||
| 	/* This will trigger a transition to standby mode by default */ | 	/* This will trigger a transition to standby mode by default */ | ||||||
| 	wm2000_anc_set_mode(wm2000); | 	wm2000_anc_set_mode(wm2000); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1556,15 +1556,8 @@ static int wm2200_probe(struct snd_soc_codec *codec) | ||||||
| 	int ret; | 	int ret; | ||||||
| 
 | 
 | ||||||
| 	wm2200->codec = codec; | 	wm2200->codec = codec; | ||||||
| 	codec->control_data = wm2200->regmap; |  | ||||||
| 	codec->dapm.bias_level = SND_SOC_BIAS_OFF; | 	codec->dapm.bias_level = SND_SOC_BIAS_OFF; | ||||||
| 
 | 
 | ||||||
| 	ret = snd_soc_codec_set_cache_io(codec, 16, 16, SND_SOC_REGMAP); |  | ||||||
| 	if (ret != 0) { |  | ||||||
| 		dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret); |  | ||||||
| 		return ret; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	ret = snd_soc_add_codec_controls(codec, wm_adsp1_fw_controls, 2); | 	ret = snd_soc_add_codec_controls(codec, wm_adsp1_fw_controls, 2); | ||||||
| 	if (ret != 0) | 	if (ret != 0) | ||||||
| 		return ret; | 		return ret; | ||||||
|  |  | ||||||
|  | @ -2337,13 +2337,6 @@ static int wm5100_probe(struct snd_soc_codec *codec) | ||||||
| 	int ret, i; | 	int ret, i; | ||||||
| 
 | 
 | ||||||
| 	wm5100->codec = codec; | 	wm5100->codec = codec; | ||||||
| 	codec->control_data = wm5100->regmap; |  | ||||||
| 
 |  | ||||||
| 	ret = snd_soc_codec_set_cache_io(codec, 16, 16, SND_SOC_REGMAP); |  | ||||||
| 	if (ret != 0) { |  | ||||||
| 		dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret); |  | ||||||
| 		return ret; |  | ||||||
| 	} |  | ||||||
| 
 | 
 | ||||||
| 	for (i = 0; i < ARRAY_SIZE(wm5100_dig_vu); i++) | 	for (i = 0; i < ARRAY_SIZE(wm5100_dig_vu); i++) | ||||||
| 		snd_soc_update_bits(codec, wm5100_dig_vu[i], WM5100_OUT_VU, | 		snd_soc_update_bits(codec, wm5100_dig_vu[i], WM5100_OUT_VU, | ||||||
|  |  | ||||||
|  | @ -589,20 +589,12 @@ static int wm8510_resume(struct snd_soc_codec *codec) | ||||||
| 
 | 
 | ||||||
| static int wm8510_probe(struct snd_soc_codec *codec) | static int wm8510_probe(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
| 	int ret; |  | ||||||
| 
 |  | ||||||
| 	ret = snd_soc_codec_set_cache_io(codec, 7, 9, SND_SOC_REGMAP); |  | ||||||
| 	if (ret < 0) { |  | ||||||
| 		printk(KERN_ERR "wm8510: failed to set cache I/O: %d\n", ret); |  | ||||||
| 		return ret; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	wm8510_reset(codec); | 	wm8510_reset(codec); | ||||||
| 
 | 
 | ||||||
| 	/* power on device */ | 	/* power on device */ | ||||||
| 	wm8510_set_bias_level(codec, SND_SOC_BIAS_STANDBY); | 	wm8510_set_bias_level(codec, SND_SOC_BIAS_STANDBY); | ||||||
| 
 | 
 | ||||||
| 	return ret; | 	return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* power down chip */ | /* power down chip */ | ||||||
|  |  | ||||||
|  | @ -392,18 +392,11 @@ static int wm8523_resume(struct snd_soc_codec *codec) | ||||||
| static int wm8523_probe(struct snd_soc_codec *codec) | static int wm8523_probe(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
| 	struct wm8523_priv *wm8523 = snd_soc_codec_get_drvdata(codec); | 	struct wm8523_priv *wm8523 = snd_soc_codec_get_drvdata(codec); | ||||||
| 	int ret; |  | ||||||
| 
 | 
 | ||||||
| 	wm8523->rate_constraint.list = &wm8523->rate_constraint_list[0]; | 	wm8523->rate_constraint.list = &wm8523->rate_constraint_list[0]; | ||||||
| 	wm8523->rate_constraint.count = | 	wm8523->rate_constraint.count = | ||||||
| 		ARRAY_SIZE(wm8523->rate_constraint_list); | 		ARRAY_SIZE(wm8523->rate_constraint_list); | ||||||
| 
 | 
 | ||||||
| 	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; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	/* Change some default settings - latch VU and enable ZC */ | 	/* Change some default settings - latch VU and enable ZC */ | ||||||
| 	snd_soc_update_bits(codec, WM8523_DAC_GAINR, | 	snd_soc_update_bits(codec, WM8523_DAC_GAINR, | ||||||
| 			    WM8523_DACR_VU, WM8523_DACR_VU); | 			    WM8523_DACR_VU, WM8523_DACR_VU); | ||||||
|  |  | ||||||
|  | @ -869,12 +869,6 @@ static int wm8580_probe(struct snd_soc_codec *codec) | ||||||
| 	struct wm8580_priv *wm8580 = snd_soc_codec_get_drvdata(codec); | 	struct wm8580_priv *wm8580 = snd_soc_codec_get_drvdata(codec); | ||||||
| 	int ret = 0; | 	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), | 	ret = regulator_bulk_enable(ARRAY_SIZE(wm8580->supplies), | ||||||
| 				    wm8580->supplies); | 				    wm8580->supplies); | ||||||
| 	if (ret != 0) { | 	if (ret != 0) { | ||||||
|  |  | ||||||
|  | @ -367,12 +367,6 @@ static int wm8711_probe(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
| 	int ret; | 	int ret; | ||||||
| 
 | 
 | ||||||
| 	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 = wm8711_reset(codec); | 	ret = wm8711_reset(codec); | ||||||
| 	if (ret < 0) { | 	if (ret < 0) { | ||||||
| 		dev_err(codec->dev, "Failed to issue reset\n"); | 		dev_err(codec->dev, "Failed to issue reset\n"); | ||||||
|  |  | ||||||
|  | @ -228,19 +228,10 @@ static int wm8728_resume(struct snd_soc_codec *codec) | ||||||
| 
 | 
 | ||||||
| static int wm8728_probe(struct snd_soc_codec *codec) | static int wm8728_probe(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
| 	int ret; |  | ||||||
| 
 |  | ||||||
| 	ret = snd_soc_codec_set_cache_io(codec, 7, 9, SND_SOC_REGMAP); |  | ||||||
| 	if (ret < 0) { |  | ||||||
| 		printk(KERN_ERR "wm8728: failed to configure cache I/O: %d\n", |  | ||||||
| 		       ret); |  | ||||||
| 		return ret; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	/* power on device */ | 	/* power on device */ | ||||||
| 	wm8728_set_bias_level(codec, SND_SOC_BIAS_STANDBY); | 	wm8728_set_bias_level(codec, SND_SOC_BIAS_STANDBY); | ||||||
| 
 | 
 | ||||||
| 	return ret; | 	return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static int wm8728_remove(struct snd_soc_codec *codec) | static int wm8728_remove(struct snd_soc_codec *codec) | ||||||
|  |  | ||||||
|  | @ -583,13 +583,6 @@ static int wm8731_probe(struct snd_soc_codec *codec) | ||||||
| 	struct wm8731_priv *wm8731 = snd_soc_codec_get_drvdata(codec); | 	struct wm8731_priv *wm8731 = snd_soc_codec_get_drvdata(codec); | ||||||
| 	int ret = 0, i; | 	int ret = 0, i; | ||||||
| 
 | 
 | ||||||
| 	codec->control_data = wm8731->regmap; |  | ||||||
| 	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; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	for (i = 0; i < ARRAY_SIZE(wm8731->supplies); i++) | 	for (i = 0; i < ARRAY_SIZE(wm8731->supplies); i++) | ||||||
| 		wm8731->supplies[i].supply = wm8731_supply_names[i]; | 		wm8731->supplies[i].supply = wm8731_supply_names[i]; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -570,12 +570,6 @@ static int wm8737_probe(struct snd_soc_codec *codec) | ||||||
| 	struct wm8737_priv *wm8737 = snd_soc_codec_get_drvdata(codec); | 	struct wm8737_priv *wm8737 = snd_soc_codec_get_drvdata(codec); | ||||||
| 	int ret; | 	int ret; | ||||||
| 
 | 
 | ||||||
| 	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(wm8737->supplies), | 	ret = regulator_bulk_enable(ARRAY_SIZE(wm8737->supplies), | ||||||
| 				    wm8737->supplies); | 				    wm8737->supplies); | ||||||
| 	if (ret != 0) { | 	if (ret != 0) { | ||||||
|  |  | ||||||
|  | @ -429,12 +429,6 @@ static int wm8741_probe(struct snd_soc_codec *codec) | ||||||
| 		goto err_get; | 		goto err_get; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	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); |  | ||||||
| 		goto err_enable; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	ret = wm8741_reset(codec); | 	ret = wm8741_reset(codec); | ||||||
| 	if (ret < 0) { | 	if (ret < 0) { | ||||||
| 		dev_err(codec->dev, "Failed to issue reset\n"); | 		dev_err(codec->dev, "Failed to issue reset\n"); | ||||||
|  |  | ||||||
|  | @ -702,12 +702,6 @@ static int wm8750_probe(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
| 	int ret; | 	int ret; | ||||||
| 
 | 
 | ||||||
| 	ret = snd_soc_codec_set_cache_io(codec, 7, 9, SND_SOC_REGMAP); |  | ||||||
| 	if (ret < 0) { |  | ||||||
| 		printk(KERN_ERR "wm8750: failed to set cache I/O: %d\n", ret); |  | ||||||
| 		return ret; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	ret = wm8750_reset(codec); | 	ret = wm8750_reset(codec); | ||||||
| 	if (ret < 0) { | 	if (ret < 0) { | ||||||
| 		printk(KERN_ERR "wm8750: failed to reset: %d\n", ret); | 		printk(KERN_ERR "wm8750: failed to reset: %d\n", ret); | ||||||
|  |  | ||||||
|  | @ -1471,13 +1471,6 @@ static int wm8753_probe(struct snd_soc_codec *codec) | ||||||
| 
 | 
 | ||||||
| 	INIT_DELAYED_WORK(&codec->dapm.delayed_work, wm8753_work); | 	INIT_DELAYED_WORK(&codec->dapm.delayed_work, wm8753_work); | ||||||
| 
 | 
 | ||||||
| 	codec->control_data = wm8753->regmap; |  | ||||||
| 	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 = wm8753_reset(codec); | 	ret = wm8753_reset(codec); | ||||||
| 	if (ret < 0) { | 	if (ret < 0) { | ||||||
| 		dev_err(codec->dev, "Failed to issue reset: %d\n", ret); | 		dev_err(codec->dev, "Failed to issue reset: %d\n", ret); | ||||||
|  |  | ||||||
|  | @ -580,12 +580,6 @@ static int wm8770_probe(struct snd_soc_codec *codec) | ||||||
| 	wm8770 = snd_soc_codec_get_drvdata(codec); | 	wm8770 = snd_soc_codec_get_drvdata(codec); | ||||||
| 	wm8770->codec = codec; | 	wm8770->codec = codec; | ||||||
| 
 | 
 | ||||||
| 	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(wm8770->supplies), | 	ret = regulator_bulk_enable(ARRAY_SIZE(wm8770->supplies), | ||||||
| 				    wm8770->supplies); | 				    wm8770->supplies); | ||||||
| 	if (ret) { | 	if (ret) { | ||||||
|  |  | ||||||
|  | @ -430,12 +430,6 @@ static int wm8776_probe(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
| 	int ret = 0; | 	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 = wm8776_reset(codec); | 	ret = wm8776_reset(codec); | ||||||
| 	if (ret < 0) { | 	if (ret < 0) { | ||||||
| 		dev_err(codec->dev, "Failed to issue reset: %d\n", ret); | 		dev_err(codec->dev, "Failed to issue reset: %d\n", ret); | ||||||
|  |  | ||||||
|  | @ -546,14 +546,6 @@ static int wm8804_probe(struct snd_soc_codec *codec) | ||||||
| 
 | 
 | ||||||
| 	wm8804 = snd_soc_codec_get_drvdata(codec); | 	wm8804 = snd_soc_codec_get_drvdata(codec); | ||||||
| 
 | 
 | ||||||
| 	codec->control_data = wm8804->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; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	for (i = 0; i < ARRAY_SIZE(wm8804->supplies); i++) | 	for (i = 0; i < ARRAY_SIZE(wm8804->supplies); i++) | ||||||
| 		wm8804->supplies[i].supply = wm8804_supply_names[i]; | 		wm8804->supplies[i].supply = wm8804_supply_names[i]; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -1178,13 +1178,7 @@ static int wm8900_resume(struct snd_soc_codec *codec) | ||||||
| 
 | 
 | ||||||
| static int wm8900_probe(struct snd_soc_codec *codec) | static int wm8900_probe(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
| 	int ret = 0, reg; | 	int reg; | ||||||
| 
 |  | ||||||
| 	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; |  | ||||||
| 	} |  | ||||||
| 
 | 
 | ||||||
| 	reg = snd_soc_read(codec, WM8900_REG_ID); | 	reg = snd_soc_read(codec, WM8900_REG_ID); | ||||||
| 	if (reg != 0x8900) { | 	if (reg != 0x8900) { | ||||||
|  |  | ||||||
|  | @ -1897,21 +1897,13 @@ static void wm8903_free_gpio(struct wm8903_priv *wm8903) | ||||||
| static int wm8903_probe(struct snd_soc_codec *codec) | static int wm8903_probe(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
| 	struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec); | 	struct wm8903_priv *wm8903 = snd_soc_codec_get_drvdata(codec); | ||||||
| 	int ret; |  | ||||||
| 
 | 
 | ||||||
| 	wm8903->codec = codec; | 	wm8903->codec = codec; | ||||||
| 	codec->control_data = wm8903->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; |  | ||||||
| 	} |  | ||||||
| 
 | 
 | ||||||
| 	/* power on device */ | 	/* power on device */ | ||||||
| 	wm8903_set_bias_level(codec, SND_SOC_BIAS_STANDBY); | 	wm8903_set_bias_level(codec, SND_SOC_BIAS_STANDBY); | ||||||
| 
 | 
 | ||||||
| 	return ret; | 	return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| /* power down chip */ | /* power down chip */ | ||||||
|  |  | ||||||
|  | @ -2047,9 +2047,6 @@ static void wm8904_handle_pdata(struct snd_soc_codec *codec) | ||||||
| static int wm8904_probe(struct snd_soc_codec *codec) | static int wm8904_probe(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
| 	struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec); | 	struct wm8904_priv *wm8904 = snd_soc_codec_get_drvdata(codec); | ||||||
| 	int ret; |  | ||||||
| 
 |  | ||||||
| 	codec->control_data = wm8904->regmap; |  | ||||||
| 
 | 
 | ||||||
| 	switch (wm8904->devtype) { | 	switch (wm8904->devtype) { | ||||||
| 	case WM8904: | 	case WM8904: | ||||||
|  | @ -2063,12 +2060,6 @@ static int wm8904_probe(struct snd_soc_codec *codec) | ||||||
| 		return -EINVAL; | 		return -EINVAL; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	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; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	wm8904_handle_pdata(codec); | 	wm8904_handle_pdata(codec); | ||||||
| 
 | 
 | ||||||
| 	wm8904_add_widgets(codec); | 	wm8904_add_widgets(codec); | ||||||
|  |  | ||||||
|  | @ -712,12 +712,6 @@ static int wm8940_probe(struct snd_soc_codec *codec) | ||||||
| 	int ret; | 	int ret; | ||||||
| 	u16 reg; | 	u16 reg; | ||||||
| 
 | 
 | ||||||
| 	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; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	ret = wm8940_reset(codec); | 	ret = wm8940_reset(codec); | ||||||
| 	if (ret < 0) { | 	if (ret < 0) { | ||||||
| 		dev_err(codec->dev, "Failed to issue reset\n"); | 		dev_err(codec->dev, "Failed to issue reset\n"); | ||||||
|  |  | ||||||
|  | @ -896,14 +896,6 @@ static int wm8955_probe(struct snd_soc_codec *codec) | ||||||
| 	struct wm8955_pdata *pdata = dev_get_platdata(codec->dev); | 	struct wm8955_pdata *pdata = dev_get_platdata(codec->dev); | ||||||
| 	int ret, i; | 	int ret, i; | ||||||
| 
 | 
 | ||||||
| 	codec->control_data = wm8955->regmap; |  | ||||||
| 
 |  | ||||||
| 	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; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	for (i = 0; i < ARRAY_SIZE(wm8955->supplies); i++) | 	for (i = 0; i < ARRAY_SIZE(wm8955->supplies); i++) | ||||||
| 		wm8955->supplies[i].supply = wm8955_supply_names[i]; | 		wm8955->supplies[i].supply = wm8955_supply_names[i]; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -976,12 +976,6 @@ static int wm8960_probe(struct snd_soc_codec *codec) | ||||||
| 			wm8960->set_bias_level = wm8960_set_bias_level_capless; | 			wm8960->set_bias_level = wm8960_set_bias_level_capless; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	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 = wm8960_reset(codec); | 	ret = wm8960_reset(codec); | ||||||
| 	if (ret < 0) { | 	if (ret < 0) { | ||||||
| 		dev_err(codec->dev, "Failed to issue reset\n"); | 		dev_err(codec->dev, "Failed to issue reset\n"); | ||||||
|  |  | ||||||
|  | @ -836,15 +836,8 @@ static struct snd_soc_dai_driver wm8961_dai = { | ||||||
| static int wm8961_probe(struct snd_soc_codec *codec) | static int wm8961_probe(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
| 	struct snd_soc_dapm_context *dapm = &codec->dapm; | 	struct snd_soc_dapm_context *dapm = &codec->dapm; | ||||||
| 	int ret = 0; |  | ||||||
| 	u16 reg; | 	u16 reg; | ||||||
| 
 | 
 | ||||||
| 	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; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	/* Enable class W */ | 	/* Enable class W */ | ||||||
| 	reg = snd_soc_read(codec, WM8961_CHARGE_PUMP_B); | 	reg = snd_soc_read(codec, WM8961_CHARGE_PUMP_B); | ||||||
| 	reg |= WM8961_CP_DYN_PWR_MASK; | 	reg |= WM8961_CP_DYN_PWR_MASK; | ||||||
|  |  | ||||||
|  | @ -3400,13 +3400,6 @@ static int wm8962_probe(struct snd_soc_codec *codec) | ||||||
| 	bool dmicclk, dmicdat; | 	bool dmicclk, dmicdat; | ||||||
| 
 | 
 | ||||||
| 	wm8962->codec = codec; | 	wm8962->codec = codec; | ||||||
| 	codec->control_data = wm8962->regmap; |  | ||||||
| 
 |  | ||||||
| 	ret = snd_soc_codec_set_cache_io(codec, 16, 16, SND_SOC_REGMAP); |  | ||||||
| 	if (ret != 0) { |  | ||||||
| 		dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret); |  | ||||||
| 		return ret; |  | ||||||
| 	} |  | ||||||
| 
 | 
 | ||||||
| 	wm8962->disable_nb[0].notifier_call = wm8962_regulator_event_0; | 	wm8962->disable_nb[0].notifier_call = wm8962_regulator_event_0; | ||||||
| 	wm8962->disable_nb[1].notifier_call = wm8962_regulator_event_1; | 	wm8962->disable_nb[1].notifier_call = wm8962_regulator_event_1; | ||||||
|  |  | ||||||
|  | @ -648,12 +648,6 @@ static int wm8971_probe(struct snd_soc_codec *codec) | ||||||
| 	int ret = 0; | 	int ret = 0; | ||||||
| 	u16 reg; | 	u16 reg; | ||||||
| 
 | 
 | ||||||
| 	ret = snd_soc_codec_set_cache_io(codec, 7, 9, SND_SOC_REGMAP); |  | ||||||
| 	if (ret < 0) { |  | ||||||
| 		printk(KERN_ERR "wm8971: failed to set cache I/O: %d\n", ret); |  | ||||||
| 		return ret; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	INIT_DELAYED_WORK(&codec->dapm.delayed_work, wm8971_work); | 	INIT_DELAYED_WORK(&codec->dapm.delayed_work, wm8971_work); | ||||||
| 	wm8971_workq = create_workqueue("wm8971"); | 	wm8971_workq = create_workqueue("wm8971"); | ||||||
| 	if (wm8971_workq == NULL) | 	if (wm8971_workq == NULL) | ||||||
|  |  | ||||||
|  | @ -593,12 +593,6 @@ static int wm8974_probe(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
| 	int ret = 0; | 	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 = wm8974_reset(codec); | 	ret = wm8974_reset(codec); | ||||||
| 	if (ret < 0) { | 	if (ret < 0) { | ||||||
| 		dev_err(codec->dev, "Failed to issue reset\n"); | 		dev_err(codec->dev, "Failed to issue reset\n"); | ||||||
|  |  | ||||||
|  | @ -975,19 +975,13 @@ static const int update_reg[] = { | ||||||
| static int wm8978_probe(struct snd_soc_codec *codec) | static int wm8978_probe(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
| 	struct wm8978_priv *wm8978 = snd_soc_codec_get_drvdata(codec); | 	struct wm8978_priv *wm8978 = snd_soc_codec_get_drvdata(codec); | ||||||
| 	int ret = 0, i; | 	int i; | ||||||
| 
 | 
 | ||||||
| 	/*
 | 	/*
 | ||||||
| 	 * Set default system clock to PLL, it is more precise, this is also the | 	 * Set default system clock to PLL, it is more precise, this is also the | ||||||
| 	 * default hardware setting | 	 * default hardware setting | ||||||
| 	 */ | 	 */ | ||||||
| 	wm8978->sysclk = WM8978_PLL; | 	wm8978->sysclk = WM8978_PLL; | ||||||
| 	codec->control_data = wm8978->regmap; |  | ||||||
| 	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; |  | ||||||
| 	} |  | ||||||
| 
 | 
 | ||||||
| 	/*
 | 	/*
 | ||||||
| 	 * Set the update bit in all registers, that have one. This way all | 	 * Set the update bit in all registers, that have one. This way all | ||||||
|  |  | ||||||
|  | @ -1000,12 +1000,6 @@ static int wm8983_probe(struct snd_soc_codec *codec) | ||||||
| 	int ret; | 	int ret; | ||||||
| 	int i; | 	int i; | ||||||
| 
 | 
 | ||||||
| 	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 = snd_soc_write(codec, WM8983_SOFTWARE_RESET, 0); | 	ret = snd_soc_write(codec, WM8983_SOFTWARE_RESET, 0); | ||||||
| 	if (ret < 0) { | 	if (ret < 0) { | ||||||
| 		dev_err(codec->dev, "Failed to issue reset: %d\n", ret); | 		dev_err(codec->dev, "Failed to issue reset: %d\n", ret); | ||||||
|  |  | ||||||
|  | @ -1000,13 +1000,6 @@ static int wm8985_probe(struct snd_soc_codec *codec) | ||||||
| 	int ret; | 	int ret; | ||||||
| 
 | 
 | ||||||
| 	wm8985 = snd_soc_codec_get_drvdata(codec); | 	wm8985 = snd_soc_codec_get_drvdata(codec); | ||||||
| 	codec->control_data = wm8985->regmap; |  | ||||||
| 
 |  | ||||||
| 	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; |  | ||||||
| 	} |  | ||||||
| 
 | 
 | ||||||
| 	for (i = 0; i < ARRAY_SIZE(wm8985->supplies); i++) | 	for (i = 0; i < ARRAY_SIZE(wm8985->supplies); i++) | ||||||
| 		wm8985->supplies[i].supply = wm8985_supply_names[i]; | 		wm8985->supplies[i].supply = wm8985_supply_names[i]; | ||||||
|  |  | ||||||
|  | @ -810,16 +810,8 @@ static int wm8988_resume(struct snd_soc_codec *codec) | ||||||
| 
 | 
 | ||||||
| static int wm8988_probe(struct snd_soc_codec *codec) | static int wm8988_probe(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
| 	struct wm8988_priv *wm8988 = snd_soc_codec_get_drvdata(codec); |  | ||||||
| 	int ret = 0; | 	int ret = 0; | ||||||
| 
 | 
 | ||||||
| 	codec->control_data = wm8988->regmap; |  | ||||||
| 	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 = wm8988_reset(codec); | 	ret = wm8988_reset(codec); | ||||||
| 	if (ret < 0) { | 	if (ret < 0) { | ||||||
| 		dev_err(codec->dev, "Failed to issue reset\n"); | 		dev_err(codec->dev, "Failed to issue reset\n"); | ||||||
|  |  | ||||||
|  | @ -1292,14 +1292,6 @@ static int wm8990_resume(struct snd_soc_codec *codec) | ||||||
|  */ |  */ | ||||||
| static int wm8990_probe(struct snd_soc_codec *codec) | static int wm8990_probe(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
| 	int ret; |  | ||||||
| 
 |  | ||||||
| 	ret = snd_soc_codec_set_cache_io(codec, 8, 16, SND_SOC_REGMAP); |  | ||||||
| 	if (ret < 0) { |  | ||||||
| 		printk(KERN_ERR "wm8990: failed to set cache I/O: %d\n", ret); |  | ||||||
| 		return ret; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	wm8990_reset(codec); | 	wm8990_reset(codec); | ||||||
| 
 | 
 | ||||||
| 	/* charge output caps */ | 	/* charge output caps */ | ||||||
|  |  | ||||||
|  | @ -1248,14 +1248,6 @@ static int wm8991_remove(struct snd_soc_codec *codec) | ||||||
| 
 | 
 | ||||||
| static int wm8991_probe(struct snd_soc_codec *codec) | static int wm8991_probe(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
| 	int ret; |  | ||||||
| 
 |  | ||||||
| 	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; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	wm8991_set_bias_level(codec, SND_SOC_BIAS_STANDBY); | 	wm8991_set_bias_level(codec, SND_SOC_BIAS_STANDBY); | ||||||
| 
 | 
 | ||||||
| 	return 0; | 	return 0; | ||||||
|  |  | ||||||
|  | @ -1493,13 +1493,6 @@ static int wm8993_probe(struct snd_soc_codec *codec) | ||||||
| 	wm8993->hubs_data.dcs_codes_r = -2; | 	wm8993->hubs_data.dcs_codes_r = -2; | ||||||
| 	wm8993->hubs_data.series_startup = 1; | 	wm8993->hubs_data.series_startup = 1; | ||||||
| 
 | 
 | ||||||
| 	codec->control_data = wm8993->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; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	/* Latch volume update bits and default ZC on */ | 	/* Latch volume update bits and default ZC on */ | ||||||
| 	snd_soc_update_bits(codec, WM8993_RIGHT_DAC_DIGITAL_VOLUME, | 	snd_soc_update_bits(codec, WM8993_RIGHT_DAC_DIGITAL_VOLUME, | ||||||
| 			    WM8993_DAC_VU, WM8993_DAC_VU); | 			    WM8993_DAC_VU, WM8993_DAC_VU); | ||||||
|  |  | ||||||
|  | @ -2047,13 +2047,6 @@ static int wm8995_probe(struct snd_soc_codec *codec) | ||||||
| 	wm8995 = snd_soc_codec_get_drvdata(codec); | 	wm8995 = snd_soc_codec_get_drvdata(codec); | ||||||
| 	wm8995->codec = codec; | 	wm8995->codec = codec; | ||||||
| 
 | 
 | ||||||
| 	codec->control_data = wm8995->regmap; |  | ||||||
| 	ret = snd_soc_codec_set_cache_io(codec, 16, 16, SND_SOC_REGMAP); |  | ||||||
| 	if (ret < 0) { |  | ||||||
| 		dev_err(codec->dev, "Failed to set cache i/o: %d\n", ret); |  | ||||||
| 		return ret; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	for (i = 0; i < ARRAY_SIZE(wm8995->supplies); i++) | 	for (i = 0; i < ARRAY_SIZE(wm8995->supplies); i++) | ||||||
| 		wm8995->supplies[i].supply = wm8995_supply_names[i]; | 		wm8995->supplies[i].supply = wm8995_supply_names[i]; | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -2628,14 +2628,6 @@ static int wm8996_probe(struct snd_soc_codec *codec) | ||||||
| 	init_completion(&wm8996->dcs_done); | 	init_completion(&wm8996->dcs_done); | ||||||
| 	init_completion(&wm8996->fll_lock); | 	init_completion(&wm8996->fll_lock); | ||||||
| 
 | 
 | ||||||
| 	codec->control_data = wm8996->regmap; |  | ||||||
| 
 |  | ||||||
| 	ret = snd_soc_codec_set_cache_io(codec, 16, 16, SND_SOC_REGMAP); |  | ||||||
| 	if (ret != 0) { |  | ||||||
| 		dev_err(codec->dev, "Failed to set cache I/O: %d\n", ret); |  | ||||||
| 		goto err; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	if (wm8996->pdata.num_retune_mobile_cfgs) | 	if (wm8996->pdata.num_retune_mobile_cfgs) | ||||||
| 		wm8996_retune_mobile_pdata(codec); | 		wm8996_retune_mobile_pdata(codec); | ||||||
| 	else | 	else | ||||||
|  | @ -2674,13 +2666,11 @@ static int wm8996_probe(struct snd_soc_codec *codec) | ||||||
| 		} else { | 		} else { | ||||||
| 			dev_err(codec->dev, "Failed to request IRQ: %d\n", | 			dev_err(codec->dev, "Failed to request IRQ: %d\n", | ||||||
| 				ret); | 				ret); | ||||||
|  | 			return ret; | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	return 0; | 	return 0; | ||||||
| 
 |  | ||||||
| err: |  | ||||||
| 	return ret; |  | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static int wm8996_remove(struct snd_soc_codec *codec) | static int wm8996_remove(struct snd_soc_codec *codec) | ||||||
|  |  | ||||||
|  | @ -1265,15 +1265,6 @@ static struct snd_soc_dai_driver wm9081_dai = { | ||||||
| static int wm9081_probe(struct snd_soc_codec *codec) | static int wm9081_probe(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
| 	struct wm9081_priv *wm9081 = snd_soc_codec_get_drvdata(codec); | 	struct wm9081_priv *wm9081 = snd_soc_codec_get_drvdata(codec); | ||||||
| 	int ret; |  | ||||||
| 
 |  | ||||||
| 	codec->control_data = wm9081->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; |  | ||||||
| 	} |  | ||||||
| 
 | 
 | ||||||
| 	/* Enable zero cross by default */ | 	/* Enable zero cross by default */ | ||||||
| 	snd_soc_update_bits(codec, WM9081_ANALOGUE_LINEOUT, | 	snd_soc_update_bits(codec, WM9081_ANALOGUE_LINEOUT, | ||||||
|  | @ -1288,7 +1279,7 @@ static int wm9081_probe(struct snd_soc_codec *codec) | ||||||
| 				     ARRAY_SIZE(wm9081_eq_controls)); | 				     ARRAY_SIZE(wm9081_eq_controls)); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	return ret; | 	return 0; | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
| static int wm9081_remove(struct snd_soc_codec *codec) | static int wm9081_remove(struct snd_soc_codec *codec) | ||||||
|  |  | ||||||
|  | @ -522,16 +522,6 @@ static int wm9090_set_bias_level(struct snd_soc_codec *codec, | ||||||
| 
 | 
 | ||||||
| static int wm9090_probe(struct snd_soc_codec *codec) | static int wm9090_probe(struct snd_soc_codec *codec) | ||||||
| { | { | ||||||
| 	struct wm9090_priv *wm9090 = dev_get_drvdata(codec->dev); |  | ||||||
| 	int ret; |  | ||||||
| 
 |  | ||||||
| 	codec->control_data = wm9090->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; |  | ||||||
| 	} |  | ||||||
| 
 |  | ||||||
| 	/* Configure some defaults; they will be written out when we
 | 	/* Configure some defaults; they will be written out when we
 | ||||||
| 	 * bring the bias up. | 	 * bring the bias up. | ||||||
| 	 */ | 	 */ | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Xiubo Li
				Xiubo Li