diff options
Diffstat (limited to 'sound/soc/codecs/arizona.c')
| -rw-r--r-- | sound/soc/codecs/arizona.c | 249 | 
1 files changed, 127 insertions, 122 deletions
diff --git a/sound/soc/codecs/arizona.c b/sound/soc/codecs/arizona.c index b3375e19598a..5727ea079ad7 100644 --- a/sound/soc/codecs/arizona.c +++ b/sound/soc/codecs/arizona.c @@ -84,13 +84,14 @@ static int arizona_spk_ev(struct snd_soc_dapm_widget *w,  			  struct snd_kcontrol *kcontrol,  			  int event)  { -	struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm); -	struct arizona *arizona = dev_get_drvdata(codec->dev->parent); +	struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); +	struct arizona *arizona = dev_get_drvdata(component->dev->parent);  	int val;  	switch (event) {  	case SND_SOC_DAPM_POST_PMU: -		val = snd_soc_read(codec, ARIZONA_INTERRUPT_RAW_STATUS_3); +		val = snd_soc_component_read32(component, +					       ARIZONA_INTERRUPT_RAW_STATUS_3);  		if (val & ARIZONA_SPK_OVERHEAT_STS) {  			dev_crit(arizona->dev,  				 "Speaker not enabled due to temperature\n"); @@ -169,10 +170,10 @@ static const struct snd_soc_dapm_widget arizona_spkr =  			   SND_SOC_DAPM_PRE_PMU | SND_SOC_DAPM_POST_PMU |  			   SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMD); -int arizona_init_spk(struct snd_soc_codec *codec) +int arizona_init_spk(struct snd_soc_component *component)  { -	struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec); -	struct arizona_priv *priv = snd_soc_codec_get_drvdata(codec); +	struct snd_soc_dapm_context *dapm = snd_soc_component_get_dapm(component); +	struct arizona_priv *priv = snd_soc_component_get_drvdata(component);  	struct arizona *arizona = priv->arizona;  	int ret; @@ -238,10 +239,10 @@ static const struct snd_soc_dapm_route arizona_mono_routes[] = {  	{ "OUT6R", NULL, "OUT6L" },  }; -int arizona_init_mono(struct snd_soc_codec *codec) +int arizona_init_mono(struct snd_soc_component *component)  { -	struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec); -	struct arizona_priv *priv = snd_soc_codec_get_drvdata(codec); +	struct snd_soc_dapm_context *dapm = snd_soc_component_get_dapm(component); +	struct arizona_priv *priv = snd_soc_component_get_drvdata(component);  	struct arizona *arizona = priv->arizona;  	int i; @@ -255,11 +256,9 @@ int arizona_init_mono(struct snd_soc_codec *codec)  }  EXPORT_SYMBOL_GPL(arizona_init_mono); -int arizona_init_gpio(struct snd_soc_codec *codec) +int arizona_init_gpio(struct snd_soc_component *component)  { -	struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec); -	struct snd_soc_component *component = snd_soc_dapm_to_component(dapm); -	struct arizona_priv *priv = snd_soc_codec_get_drvdata(codec); +	struct arizona_priv *priv = snd_soc_component_get_drvdata(component);  	struct arizona *arizona = priv->arizona;  	int i; @@ -643,7 +642,6 @@ const unsigned int arizona_rate_val[ARIZONA_RATE_ENUM_SIZE] = {  };  EXPORT_SYMBOL_GPL(arizona_rate_val); -  const struct soc_enum arizona_isrc_fsh[] = {  	SOC_VALUE_ENUM_SINGLE(ARIZONA_ISRC_1_CTRL_1,  			      ARIZONA_ISRC1_FSH_SHIFT, 0xf, @@ -882,9 +880,9 @@ const struct snd_kcontrol_new arizona_voice_trigger_switch[] = {  };  EXPORT_SYMBOL_GPL(arizona_voice_trigger_switch); -static void arizona_in_set_vu(struct snd_soc_codec *codec, int ena) +static void arizona_in_set_vu(struct snd_soc_component *component, int ena)  { -	struct arizona_priv *priv = snd_soc_codec_get_drvdata(codec); +	struct arizona_priv *priv = snd_soc_component_get_drvdata(component);  	unsigned int val;  	int i; @@ -894,15 +892,15 @@ static void arizona_in_set_vu(struct snd_soc_codec *codec, int ena)  		val = 0;  	for (i = 0; i < priv->num_inputs; i++) -		snd_soc_update_bits(codec, +		snd_soc_component_update_bits(component,  				    ARIZONA_ADC_DIGITAL_VOLUME_1L + (i * 4),  				    ARIZONA_IN_VU, val);  } -bool arizona_input_analog(struct snd_soc_codec *codec, int shift) +bool arizona_input_analog(struct snd_soc_component *component, int shift)  {  	unsigned int reg = ARIZONA_IN1L_CONTROL + ((shift / 2) * 8); -	unsigned int val = snd_soc_read(codec, reg); +	unsigned int val = snd_soc_component_read32(component, reg);  	return !(val & ARIZONA_IN1_MODE_MASK);  } @@ -911,8 +909,8 @@ EXPORT_SYMBOL_GPL(arizona_input_analog);  int arizona_in_ev(struct snd_soc_dapm_widget *w, struct snd_kcontrol *kcontrol,  		  int event)  { -	struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm); -	struct arizona_priv *priv = snd_soc_codec_get_drvdata(codec); +	struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); +	struct arizona_priv *priv = snd_soc_component_get_drvdata(component);  	unsigned int reg;  	if (w->shift % 2) @@ -925,25 +923,26 @@ int arizona_in_ev(struct snd_soc_dapm_widget *w, struct snd_kcontrol *kcontrol,  		priv->in_pending++;  		break;  	case SND_SOC_DAPM_POST_PMU: -		snd_soc_update_bits(codec, reg, ARIZONA_IN1L_MUTE, 0); +		snd_soc_component_update_bits(component, reg, +					      ARIZONA_IN1L_MUTE, 0);  		/* If this is the last input pending then allow VU */  		priv->in_pending--;  		if (priv->in_pending == 0) {  			msleep(1); -			arizona_in_set_vu(codec, 1); +			arizona_in_set_vu(component, 1);  		}  		break;  	case SND_SOC_DAPM_PRE_PMD: -		snd_soc_update_bits(codec, reg, +		snd_soc_component_update_bits(component, reg,  				    ARIZONA_IN1L_MUTE | ARIZONA_IN_VU,  				    ARIZONA_IN1L_MUTE | ARIZONA_IN_VU);  		break;  	case SND_SOC_DAPM_POST_PMD:  		/* Disable volume updates if no inputs are enabled */ -		reg = snd_soc_read(codec, ARIZONA_INPUT_ENABLES); +		reg = snd_soc_component_read32(component, ARIZONA_INPUT_ENABLES);  		if (reg == 0) -			arizona_in_set_vu(codec, 0); +			arizona_in_set_vu(component, 0);  		break;  	default:  		break; @@ -957,8 +956,8 @@ int arizona_out_ev(struct snd_soc_dapm_widget *w,  		   struct snd_kcontrol *kcontrol,  		   int event)  { -	struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm); -	struct arizona_priv *priv = snd_soc_codec_get_drvdata(codec); +	struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); +	struct arizona_priv *priv = snd_soc_component_get_drvdata(component);  	struct arizona *arizona = priv->arizona;  	switch (event) { @@ -1001,7 +1000,7 @@ int arizona_out_ev(struct snd_soc_dapm_widget *w,  		case ARIZONA_OUT4R_ENA_SHIFT:  			priv->out_up_pending--;  			if (!priv->out_up_pending && priv->out_up_delay) { -				dev_dbg(codec->dev, "Power up delay: %d\n", +				dev_dbg(component->dev, "Power up delay: %d\n",  					priv->out_up_delay);  				msleep(priv->out_up_delay);  				priv->out_up_delay = 0; @@ -1054,7 +1053,7 @@ int arizona_out_ev(struct snd_soc_dapm_widget *w,  		case ARIZONA_OUT4R_ENA_SHIFT:  			priv->out_down_pending--;  			if (!priv->out_down_pending && priv->out_down_delay) { -				dev_dbg(codec->dev, "Power down delay: %d\n", +				dev_dbg(component->dev, "Power down delay: %d\n",  					priv->out_down_delay);  				msleep(priv->out_down_delay);  				priv->out_down_delay = 0; @@ -1072,12 +1071,11 @@ int arizona_out_ev(struct snd_soc_dapm_widget *w,  }  EXPORT_SYMBOL_GPL(arizona_out_ev); -int arizona_hp_ev(struct snd_soc_dapm_widget *w, -		   struct snd_kcontrol *kcontrol, -		   int event) +int arizona_hp_ev(struct snd_soc_dapm_widget *w, struct snd_kcontrol *kcontrol, +		  int event)  { -	struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm); -	struct arizona_priv *priv = snd_soc_codec_get_drvdata(codec); +	struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); +	struct arizona_priv *priv = snd_soc_component_get_drvdata(component);  	struct arizona *arizona = priv->arizona;  	unsigned int mask = 1 << w->shift;  	unsigned int val; @@ -1111,15 +1109,15 @@ int arizona_hp_ev(struct snd_soc_dapm_widget *w,  }  EXPORT_SYMBOL_GPL(arizona_hp_ev); -static int arizona_dvfs_enable(struct snd_soc_codec *codec) +static int arizona_dvfs_enable(struct snd_soc_component *component)  { -	const struct arizona_priv *priv = snd_soc_codec_get_drvdata(codec); +	const struct arizona_priv *priv = snd_soc_component_get_drvdata(component);  	struct arizona *arizona = priv->arizona;  	int ret;  	ret = regulator_set_voltage(arizona->dcvdd, 1800000, 1800000);  	if (ret) { -		dev_err(codec->dev, "Failed to boost DCVDD: %d\n", ret); +		dev_err(component->dev, "Failed to boost DCVDD: %d\n", ret);  		return ret;  	} @@ -1128,7 +1126,7 @@ static int arizona_dvfs_enable(struct snd_soc_codec *codec)  				 ARIZONA_SUBSYS_MAX_FREQ,  				 ARIZONA_SUBSYS_MAX_FREQ);  	if (ret) { -		dev_err(codec->dev, "Failed to enable subsys max: %d\n", ret); +		dev_err(component->dev, "Failed to enable subsys max: %d\n", ret);  		regulator_set_voltage(arizona->dcvdd, 1200000, 1800000);  		return ret;  	} @@ -1136,9 +1134,9 @@ static int arizona_dvfs_enable(struct snd_soc_codec *codec)  	return 0;  } -static int arizona_dvfs_disable(struct snd_soc_codec *codec) +static int arizona_dvfs_disable(struct snd_soc_component *component)  { -	const struct arizona_priv *priv = snd_soc_codec_get_drvdata(codec); +	const struct arizona_priv *priv = snd_soc_component_get_drvdata(component);  	struct arizona *arizona = priv->arizona;  	int ret; @@ -1146,28 +1144,28 @@ static int arizona_dvfs_disable(struct snd_soc_codec *codec)  				 ARIZONA_DYNAMIC_FREQUENCY_SCALING_1,  				 ARIZONA_SUBSYS_MAX_FREQ, 0);  	if (ret) { -		dev_err(codec->dev, "Failed to disable subsys max: %d\n", ret); +		dev_err(component->dev, "Failed to disable subsys max: %d\n", ret);  		return ret;  	}  	ret = regulator_set_voltage(arizona->dcvdd, 1200000, 1800000);  	if (ret) { -		dev_err(codec->dev, "Failed to unboost DCVDD: %d\n", ret); +		dev_err(component->dev, "Failed to unboost DCVDD: %d\n", ret);  		return ret;  	}  	return 0;  } -int arizona_dvfs_up(struct snd_soc_codec *codec, unsigned int flags) +int arizona_dvfs_up(struct snd_soc_component *component, unsigned int flags)  { -	struct arizona_priv *priv = snd_soc_codec_get_drvdata(codec); +	struct arizona_priv *priv = snd_soc_component_get_drvdata(component);  	int ret = 0;  	mutex_lock(&priv->dvfs_lock);  	if (!priv->dvfs_cached && !priv->dvfs_reqs) { -		ret = arizona_dvfs_enable(codec); +		ret = arizona_dvfs_enable(component);  		if (ret)  			goto err;  	} @@ -1179,9 +1177,9 @@ err:  }  EXPORT_SYMBOL_GPL(arizona_dvfs_up); -int arizona_dvfs_down(struct snd_soc_codec *codec, unsigned int flags) +int arizona_dvfs_down(struct snd_soc_component *component, unsigned int flags)  { -	struct arizona_priv *priv = snd_soc_codec_get_drvdata(codec); +	struct arizona_priv *priv = snd_soc_component_get_drvdata(component);  	unsigned int old_reqs;  	int ret = 0; @@ -1191,7 +1189,7 @@ int arizona_dvfs_down(struct snd_soc_codec *codec, unsigned int flags)  	priv->dvfs_reqs &= ~flags;  	if (!priv->dvfs_cached && old_reqs && !priv->dvfs_reqs) -		ret = arizona_dvfs_disable(codec); +		ret = arizona_dvfs_disable(component);  	mutex_unlock(&priv->dvfs_lock);  	return ret; @@ -1201,8 +1199,8 @@ EXPORT_SYMBOL_GPL(arizona_dvfs_down);  int arizona_dvfs_sysclk_ev(struct snd_soc_dapm_widget *w,  			   struct snd_kcontrol *kcontrol, int event)  { -	struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm); -	struct arizona_priv *priv = snd_soc_codec_get_drvdata(codec); +	struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); +	struct arizona_priv *priv = snd_soc_component_get_drvdata(component);  	int ret = 0;  	mutex_lock(&priv->dvfs_lock); @@ -1210,7 +1208,7 @@ int arizona_dvfs_sysclk_ev(struct snd_soc_dapm_widget *w,  	switch (event) {  	case SND_SOC_DAPM_POST_PMU:  		if (priv->dvfs_reqs) -			ret = arizona_dvfs_enable(codec); +			ret = arizona_dvfs_enable(component);  		priv->dvfs_cached = false;  		break; @@ -1222,7 +1220,7 @@ int arizona_dvfs_sysclk_ev(struct snd_soc_dapm_widget *w,  		priv->dvfs_cached = true;  		if (priv->dvfs_reqs) -			ret = arizona_dvfs_disable(codec); +			ret = arizona_dvfs_disable(component);  		break;  	default:  		break; @@ -1243,7 +1241,7 @@ int arizona_anc_ev(struct snd_soc_dapm_widget *w,  		   struct snd_kcontrol *kcontrol,  		   int event)  { -	struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm); +	struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm);  	unsigned int val;  	switch (event) { @@ -1257,7 +1255,7 @@ int arizona_anc_ev(struct snd_soc_dapm_widget *w,  		return 0;  	} -	snd_soc_write(codec, ARIZONA_CLOCK_CONTROL, val); +	snd_soc_component_write(component, ARIZONA_CLOCK_CONTROL, val);  	return 0;  } @@ -1277,10 +1275,10 @@ static unsigned int arizona_opclk_ref_44k1_rates[] = {  	45158400,  }; -static int arizona_set_opclk(struct snd_soc_codec *codec, unsigned int clk, -			     unsigned int freq) +static int arizona_set_opclk(struct snd_soc_component *component, +			     unsigned int clk, unsigned int freq)  { -	struct arizona_priv *priv = snd_soc_codec_get_drvdata(codec); +	struct arizona_priv *priv = snd_soc_component_get_drvdata(component);  	unsigned int reg;  	unsigned int *rates;  	int ref, div, refclk; @@ -1304,13 +1302,13 @@ static int arizona_set_opclk(struct snd_soc_codec *codec, unsigned int clk,  		rates = arizona_opclk_ref_48k_rates;  	for (ref = 0; ref < ARRAY_SIZE(arizona_opclk_ref_48k_rates) && -		     rates[ref] <= refclk; ref++) { +	     rates[ref] <= refclk; ref++) {  		div = 1;  		while (rates[ref] / div >= freq && div < 32) {  			if (rates[ref] / div == freq) { -				dev_dbg(codec->dev, "Configured %dHz OPCLK\n", +				dev_dbg(component->dev, "Configured %dHz OPCLK\n",  					freq); -				snd_soc_update_bits(codec, reg, +				snd_soc_component_update_bits(component, reg,  						    ARIZONA_OPCLK_DIV_MASK |  						    ARIZONA_OPCLK_SEL_MASK,  						    (div << @@ -1322,22 +1320,22 @@ static int arizona_set_opclk(struct snd_soc_codec *codec, unsigned int clk,  		}  	} -	dev_err(codec->dev, "Unable to generate %dHz OPCLK\n", freq); +	dev_err(component->dev, "Unable to generate %dHz OPCLK\n", freq);  	return -EINVAL;  }  int arizona_clk_ev(struct snd_soc_dapm_widget *w,  		   struct snd_kcontrol *kcontrol, int event)  { -	struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm); -	struct arizona *arizona = dev_get_drvdata(codec->dev->parent); +	struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); +	struct arizona *arizona = dev_get_drvdata(component->dev->parent);  	unsigned int val;  	int clk_idx;  	int ret;  	ret = regmap_read(arizona->regmap, w->reg, &val);  	if (ret) { -		dev_err(codec->dev, "Failed to check clock source: %d\n", ret); +		dev_err(component->dev, "Failed to check clock source: %d\n", ret);  		return ret;  	} @@ -1366,10 +1364,10 @@ int arizona_clk_ev(struct snd_soc_dapm_widget *w,  }  EXPORT_SYMBOL_GPL(arizona_clk_ev); -int arizona_set_sysclk(struct snd_soc_codec *codec, int clk_id, +int arizona_set_sysclk(struct snd_soc_component *component, int clk_id,  		       int source, unsigned int freq, int dir)  { -	struct arizona_priv *priv = snd_soc_codec_get_drvdata(codec); +	struct arizona_priv *priv = snd_soc_component_get_drvdata(component);  	struct arizona *arizona = priv->arizona;  	char *name;  	unsigned int reg; @@ -1391,7 +1389,7 @@ int arizona_set_sysclk(struct snd_soc_codec *codec, int clk_id,  		break;  	case ARIZONA_CLK_OPCLK:  	case ARIZONA_CLK_ASYNC_OPCLK: -		return arizona_set_opclk(codec, clk_id, freq); +		return arizona_set_opclk(component, clk_id, freq);  	default:  		return -EINVAL;  	} @@ -1445,8 +1443,8 @@ EXPORT_SYMBOL_GPL(arizona_set_sysclk);  static int arizona_set_fmt(struct snd_soc_dai *dai, unsigned int fmt)  { -	struct snd_soc_codec *codec = dai->codec; -	struct arizona_priv *priv = snd_soc_codec_get_drvdata(codec); +	struct snd_soc_component *component = dai->component; +	struct arizona_priv *priv = snd_soc_component_get_drvdata(component);  	struct arizona *arizona = priv->arizona;  	int lrclk, bclk, mode, base; @@ -1620,8 +1618,8 @@ static const struct snd_pcm_hw_constraint_list arizona_constraint = {  static int arizona_startup(struct snd_pcm_substream *substream,  			   struct snd_soc_dai *dai)  { -	struct snd_soc_codec *codec = dai->codec; -	struct arizona_priv *priv = snd_soc_codec_get_drvdata(codec); +	struct snd_soc_component *component = dai->component; +	struct arizona_priv *priv = snd_soc_component_get_drvdata(component);  	struct arizona_dai_priv *dai_priv = &priv->dai[dai->id - 1];  	unsigned int base_rate; @@ -1651,10 +1649,10 @@ static int arizona_startup(struct snd_pcm_substream *substream,  					  &dai_priv->constraint);  } -static void arizona_wm5102_set_dac_comp(struct snd_soc_codec *codec, +static void arizona_wm5102_set_dac_comp(struct snd_soc_component *component,  					unsigned int rate)  { -	struct arizona_priv *priv = snd_soc_codec_get_drvdata(codec); +	struct arizona_priv *priv = snd_soc_component_get_drvdata(component);  	struct arizona *arizona = priv->arizona;  	struct reg_sequence dac_comp[] = {  		{ 0x80, 0x3 }, @@ -1680,8 +1678,8 @@ static int arizona_hw_params_rate(struct snd_pcm_substream *substream,  				  struct snd_pcm_hw_params *params,  				  struct snd_soc_dai *dai)  { -	struct snd_soc_codec *codec = dai->codec; -	struct arizona_priv *priv = snd_soc_codec_get_drvdata(codec); +	struct snd_soc_component *component = dai->component; +	struct arizona_priv *priv = snd_soc_component_get_drvdata(component);  	struct arizona_dai_priv *dai_priv = &priv->dai[dai->id - 1];  	int base = dai->driver->base;  	int i, sr_val, ret; @@ -1704,9 +1702,9 @@ static int arizona_hw_params_rate(struct snd_pcm_substream *substream,  	case WM5102:  	case WM8997:  		if (arizona_sr_vals[sr_val] >= 88200) -			ret = arizona_dvfs_up(codec, ARIZONA_DVFS_SR1_RQ); +			ret = arizona_dvfs_up(component, ARIZONA_DVFS_SR1_RQ);  		else -			ret = arizona_dvfs_down(codec, ARIZONA_DVFS_SR1_RQ); +			ret = arizona_dvfs_down(component, ARIZONA_DVFS_SR1_RQ);  		if (ret) {  			arizona_aif_err(dai, "Failed to change DVFS %d\n", ret); @@ -1721,26 +1719,31 @@ static int arizona_hw_params_rate(struct snd_pcm_substream *substream,  	case ARIZONA_CLK_SYSCLK:  		switch (priv->arizona->type) {  		case WM5102: -			arizona_wm5102_set_dac_comp(codec, +			arizona_wm5102_set_dac_comp(component,  						    params_rate(params));  			break;  		default:  			break;  		} -		snd_soc_update_bits(codec, ARIZONA_SAMPLE_RATE_1, -				    ARIZONA_SAMPLE_RATE_1_MASK, sr_val); +		snd_soc_component_update_bits(component, ARIZONA_SAMPLE_RATE_1, +					      ARIZONA_SAMPLE_RATE_1_MASK, +					      sr_val);  		if (base) -			snd_soc_update_bits(codec, base + ARIZONA_AIF_RATE_CTRL, -					    ARIZONA_AIF1_RATE_MASK, 0); +			snd_soc_component_update_bits(component, +					base + ARIZONA_AIF_RATE_CTRL, +					ARIZONA_AIF1_RATE_MASK, 0);  		break;  	case ARIZONA_CLK_ASYNCCLK: -		snd_soc_update_bits(codec, ARIZONA_ASYNC_SAMPLE_RATE_1, -				    ARIZONA_ASYNC_SAMPLE_RATE_1_MASK, sr_val); +		snd_soc_component_update_bits(component, +					      ARIZONA_ASYNC_SAMPLE_RATE_1, +					      ARIZONA_ASYNC_SAMPLE_RATE_1_MASK, +					      sr_val);  		if (base) -			snd_soc_update_bits(codec, base + ARIZONA_AIF_RATE_CTRL, -					    ARIZONA_AIF1_RATE_MASK, -					    8 << ARIZONA_AIF1_RATE_SHIFT); +			snd_soc_component_update_bits(component, +					base + ARIZONA_AIF_RATE_CTRL, +					ARIZONA_AIF1_RATE_MASK, +					8 << ARIZONA_AIF1_RATE_SHIFT);  		break;  	default:  		arizona_aif_err(dai, "Invalid clock %d\n", dai_priv->clk); @@ -1750,20 +1753,20 @@ static int arizona_hw_params_rate(struct snd_pcm_substream *substream,  	return 0;  } -static bool arizona_aif_cfg_changed(struct snd_soc_codec *codec, +static bool arizona_aif_cfg_changed(struct snd_soc_component *component,  				    int base, int bclk, int lrclk, int frame)  {  	int val; -	val = snd_soc_read(codec, base + ARIZONA_AIF_BCLK_CTRL); +	val = snd_soc_component_read32(component, base + ARIZONA_AIF_BCLK_CTRL);  	if (bclk != (val & ARIZONA_AIF1_BCLK_FREQ_MASK))  		return true; -	val = snd_soc_read(codec, base + ARIZONA_AIF_TX_BCLK_RATE); +	val = snd_soc_component_read32(component, base + ARIZONA_AIF_TX_BCLK_RATE);  	if (lrclk != (val & ARIZONA_AIF1TX_BCPF_MASK))  		return true; -	val = snd_soc_read(codec, base + ARIZONA_AIF_FRAME_CTRL_1); +	val = snd_soc_component_read32(component, base + ARIZONA_AIF_FRAME_CTRL_1);  	if (frame != (val & (ARIZONA_AIF1TX_WL_MASK |  			     ARIZONA_AIF1TX_SLOT_LEN_MASK)))  		return true; @@ -1775,8 +1778,8 @@ static int arizona_hw_params(struct snd_pcm_substream *substream,  			     struct snd_pcm_hw_params *params,  			     struct snd_soc_dai *dai)  { -	struct snd_soc_codec *codec = dai->codec; -	struct arizona_priv *priv = snd_soc_codec_get_drvdata(codec); +	struct snd_soc_component *component = dai->component; +	struct arizona_priv *priv = snd_soc_component_get_drvdata(component);  	struct arizona *arizona = priv->arizona;  	int base = dai->driver->base;  	const int *rates; @@ -1813,7 +1816,7 @@ static int arizona_hw_params(struct snd_pcm_substream *substream,  	}  	/* Force multiple of 2 channels for I2S mode */ -	val = snd_soc_read(codec, base + ARIZONA_AIF_FORMAT); +	val = snd_soc_component_read32(component, base + ARIZONA_AIF_FORMAT);  	val &= ARIZONA_AIF1_FMT_MASK;  	if ((channels & 1) && (val == ARIZONA_FMT_I2S_MODE)) {  		arizona_aif_dbg(dai, "Forcing stereo mode\n"); @@ -1841,19 +1844,20 @@ static int arizona_hw_params(struct snd_pcm_substream *substream,  	frame = wl << ARIZONA_AIF1TX_WL_SHIFT | tdm_width; -	reconfig = arizona_aif_cfg_changed(codec, base, bclk, lrclk, frame); +	reconfig = arizona_aif_cfg_changed(component, base, bclk, lrclk, frame);  	if (reconfig) {  		/* Save AIF TX/RX state */ -		aif_tx_state = snd_soc_read(codec, +		aif_tx_state = snd_soc_component_read32(component,  					    base + ARIZONA_AIF_TX_ENABLES); -		aif_rx_state = snd_soc_read(codec, +		aif_rx_state = snd_soc_component_read32(component,  					    base + ARIZONA_AIF_RX_ENABLES);  		/* Disable AIF TX/RX before reconfiguring it */  		regmap_update_bits_async(arizona->regmap, -				    base + ARIZONA_AIF_TX_ENABLES, 0xff, 0x0); +					 base + ARIZONA_AIF_TX_ENABLES, +					 0xff, 0x0);  		regmap_update_bits(arizona->regmap, -				    base + ARIZONA_AIF_RX_ENABLES, 0xff, 0x0); +				   base + ARIZONA_AIF_RX_ENABLES, 0xff, 0x0);  	}  	ret = arizona_hw_params_rate(substream, params, dai); @@ -1908,9 +1912,9 @@ static const char *arizona_dai_clk_str(int clk_id)  static int arizona_dai_set_sysclk(struct snd_soc_dai *dai,  				  int clk_id, unsigned int freq, int dir)  { -	struct snd_soc_codec *codec = dai->codec; -	struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec); -	struct arizona_priv *priv = snd_soc_codec_get_drvdata(codec); +	struct snd_soc_component *component = dai->component; +	struct snd_soc_dapm_context *dapm = snd_soc_component_get_dapm(component); +	struct arizona_priv *priv = snd_soc_component_get_drvdata(component);  	struct arizona_dai_priv *dai_priv = &priv->dai[dai->id - 1];  	struct snd_soc_dapm_route routes[2]; @@ -1926,12 +1930,12 @@ static int arizona_dai_set_sysclk(struct snd_soc_dai *dai,  		return 0;  	if (dai->active) { -		dev_err(codec->dev, "Can't change clock on active DAI %d\n", +		dev_err(component->dev, "Can't change clock on active DAI %d\n",  			dai->id);  		return -EBUSY;  	} -	dev_dbg(codec->dev, "Setting AIF%d to %s\n", dai->id + 1, +	dev_dbg(component->dev, "Setting AIF%d to %s\n", dai->id + 1,  		arizona_dai_clk_str(clk_id));  	memset(&routes, 0, sizeof(routes)); @@ -1953,7 +1957,7 @@ static int arizona_dai_set_sysclk(struct snd_soc_dai *dai,  static int arizona_set_tristate(struct snd_soc_dai *dai, int tristate)  { -	struct snd_soc_codec *codec = dai->codec; +	struct snd_soc_component *component = dai->component;  	int base = dai->driver->base;  	unsigned int reg; @@ -1962,16 +1966,17 @@ static int arizona_set_tristate(struct snd_soc_dai *dai, int tristate)  	else  		reg = 0; -	return snd_soc_update_bits(codec, base + ARIZONA_AIF_RATE_CTRL, -				   ARIZONA_AIF1_TRI, reg); +	return snd_soc_component_update_bits(component, +					     base + ARIZONA_AIF_RATE_CTRL, +					     ARIZONA_AIF1_TRI, reg);  }  static void arizona_set_channels_to_mask(struct snd_soc_dai *dai,  					 unsigned int base,  					 int channels, unsigned int mask)  { -	struct snd_soc_codec *codec = dai->codec; -	struct arizona_priv *priv = snd_soc_codec_get_drvdata(codec); +	struct snd_soc_component *component = dai->component; +	struct arizona_priv *priv = snd_soc_component_get_drvdata(component);  	struct arizona *arizona = priv->arizona;  	int slot, i; @@ -1992,8 +1997,8 @@ static void arizona_set_channels_to_mask(struct snd_soc_dai *dai,  static int arizona_set_tdm_slot(struct snd_soc_dai *dai, unsigned int tx_mask,  				unsigned int rx_mask, int slots, int slot_width)  { -	struct snd_soc_codec *codec = dai->codec; -	struct arizona_priv *priv = snd_soc_codec_get_drvdata(codec); +	struct snd_soc_component *component = dai->component; +	struct arizona_priv *priv = snd_soc_component_get_drvdata(component);  	struct arizona *arizona = priv->arizona;  	int base = dai->driver->base;  	int rx_max_chan = dai->driver->playback.channels_max; @@ -2321,7 +2326,6 @@ static int arizona_calc_fll(struct arizona_fll *fll,  	arizona_fll_dbg(fll, "GAIN=0x%x(%d)\n", cfg->gain, 1 << cfg->gain);  	return 0; -  }  static void arizona_apply_fll(struct arizona *arizona, unsigned int base, @@ -2567,9 +2571,8 @@ int arizona_set_fll_refclk(struct arizona_fll *fll, int source,  	fll->ref_src = source;  	fll->ref_freq = Fref; -	if (fll->fout && Fref > 0) { +	if (fll->fout && Fref > 0)  		ret = arizona_enable_fll(fll); -	}  	return ret;  } @@ -2645,7 +2648,7 @@ EXPORT_SYMBOL_GPL(arizona_init_fll);  /**   * arizona_set_output_mode - Set the mode of the specified output   * - * @codec: Device to configure + * @component: Device to configure   * @output: Output number   * @diff: True to set the output to differential mode   * @@ -2658,7 +2661,8 @@ EXPORT_SYMBOL_GPL(arizona_init_fll);   * Most systems have a single static configuration and should use   * platform data instead.   */ -int arizona_set_output_mode(struct snd_soc_codec *codec, int output, bool diff) +int arizona_set_output_mode(struct snd_soc_component *component, int output, +			    bool diff)  {  	unsigned int reg, val; @@ -2672,7 +2676,8 @@ int arizona_set_output_mode(struct snd_soc_codec *codec, int output, bool diff)  	else  		val = 0; -	return snd_soc_update_bits(codec, reg, ARIZONA_OUT1_MONO, val); +	return snd_soc_component_update_bits(component, reg, +					     ARIZONA_OUT1_MONO, val);  }  EXPORT_SYMBOL_GPL(arizona_set_output_mode); @@ -2721,8 +2726,8 @@ static bool arizona_eq_filter_unstable(bool mode, __be16 _a, __be16 _b)  int arizona_eq_coeff_put(struct snd_kcontrol *kcontrol,  			 struct snd_ctl_elem_value *ucontrol)  { -	struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); -	struct arizona *arizona = dev_get_drvdata(codec->dev->parent); +	struct snd_soc_component *component = snd_soc_kcontrol_component(kcontrol); +	struct arizona *arizona = dev_get_drvdata(component->dev->parent);  	struct soc_bytes *params = (void *)kcontrol->private_value;  	unsigned int val;  	__be16 *data; @@ -2765,8 +2770,8 @@ EXPORT_SYMBOL_GPL(arizona_eq_coeff_put);  int arizona_lhpf_coeff_put(struct snd_kcontrol *kcontrol,  			   struct snd_ctl_elem_value *ucontrol)  { -	struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); -	struct arizona *arizona = dev_get_drvdata(codec->dev->parent); +	struct snd_soc_component *component = snd_soc_kcontrol_component(kcontrol); +	struct arizona *arizona = dev_get_drvdata(component->dev->parent);  	__be16 *data = (__be16 *)ucontrol->value.bytes.data;  	s16 val = be16_to_cpu(*data);  | 

