|
@@ -84,13 +84,14 @@ static int arizona_spk_ev(struct snd_soc_dapm_widget *w,
|
|
struct snd_kcontrol *kcontrol,
|
|
struct snd_kcontrol *kcontrol,
|
|
int event)
|
|
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;
|
|
int val;
|
|
|
|
|
|
switch (event) {
|
|
switch (event) {
|
|
case SND_SOC_DAPM_POST_PMU:
|
|
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) {
|
|
if (val & ARIZONA_SPK_OVERHEAT_STS) {
|
|
dev_crit(arizona->dev,
|
|
dev_crit(arizona->dev,
|
|
"Speaker not enabled due to temperature\n");
|
|
"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_PMU | SND_SOC_DAPM_POST_PMU |
|
|
SND_SOC_DAPM_PRE_PMD | SND_SOC_DAPM_POST_PMD);
|
|
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;
|
|
struct arizona *arizona = priv->arizona;
|
|
int ret;
|
|
int ret;
|
|
|
|
|
|
@@ -238,10 +239,10 @@ static const struct snd_soc_dapm_route arizona_mono_routes[] = {
|
|
{ "OUT6R", NULL, "OUT6L" },
|
|
{ "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;
|
|
struct arizona *arizona = priv->arizona;
|
|
int i;
|
|
int i;
|
|
|
|
|
|
@@ -255,11 +256,9 @@ int arizona_init_mono(struct snd_soc_codec *codec)
|
|
}
|
|
}
|
|
EXPORT_SYMBOL_GPL(arizona_init_mono);
|
|
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;
|
|
struct arizona *arizona = priv->arizona;
|
|
int i;
|
|
int i;
|
|
|
|
|
|
@@ -643,7 +642,6 @@ const unsigned int arizona_rate_val[ARIZONA_RATE_ENUM_SIZE] = {
|
|
};
|
|
};
|
|
EXPORT_SYMBOL_GPL(arizona_rate_val);
|
|
EXPORT_SYMBOL_GPL(arizona_rate_val);
|
|
|
|
|
|
-
|
|
|
|
const struct soc_enum arizona_isrc_fsh[] = {
|
|
const struct soc_enum arizona_isrc_fsh[] = {
|
|
SOC_VALUE_ENUM_SINGLE(ARIZONA_ISRC_1_CTRL_1,
|
|
SOC_VALUE_ENUM_SINGLE(ARIZONA_ISRC_1_CTRL_1,
|
|
ARIZONA_ISRC1_FSH_SHIFT, 0xf,
|
|
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);
|
|
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;
|
|
unsigned int val;
|
|
int i;
|
|
int i;
|
|
|
|
|
|
@@ -894,15 +892,15 @@ static void arizona_in_set_vu(struct snd_soc_codec *codec, int ena)
|
|
val = 0;
|
|
val = 0;
|
|
|
|
|
|
for (i = 0; i < priv->num_inputs; i++)
|
|
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_ADC_DIGITAL_VOLUME_1L + (i * 4),
|
|
ARIZONA_IN_VU, val);
|
|
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 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);
|
|
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 arizona_in_ev(struct snd_soc_dapm_widget *w, struct snd_kcontrol *kcontrol,
|
|
int event)
|
|
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;
|
|
unsigned int reg;
|
|
|
|
|
|
if (w->shift % 2)
|
|
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++;
|
|
priv->in_pending++;
|
|
break;
|
|
break;
|
|
case SND_SOC_DAPM_POST_PMU:
|
|
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 */
|
|
/* If this is the last input pending then allow VU */
|
|
priv->in_pending--;
|
|
priv->in_pending--;
|
|
if (priv->in_pending == 0) {
|
|
if (priv->in_pending == 0) {
|
|
msleep(1);
|
|
msleep(1);
|
|
- arizona_in_set_vu(codec, 1);
|
|
|
|
|
|
+ arizona_in_set_vu(component, 1);
|
|
}
|
|
}
|
|
break;
|
|
break;
|
|
case SND_SOC_DAPM_PRE_PMD:
|
|
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,
|
|
ARIZONA_IN1L_MUTE | ARIZONA_IN_VU);
|
|
ARIZONA_IN1L_MUTE | ARIZONA_IN_VU);
|
|
break;
|
|
break;
|
|
case SND_SOC_DAPM_POST_PMD:
|
|
case SND_SOC_DAPM_POST_PMD:
|
|
/* Disable volume updates if no inputs are enabled */
|
|
/* 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)
|
|
if (reg == 0)
|
|
- arizona_in_set_vu(codec, 0);
|
|
|
|
|
|
+ arizona_in_set_vu(component, 0);
|
|
break;
|
|
break;
|
|
default:
|
|
default:
|
|
break;
|
|
break;
|
|
@@ -957,8 +956,8 @@ int arizona_out_ev(struct snd_soc_dapm_widget *w,
|
|
struct snd_kcontrol *kcontrol,
|
|
struct snd_kcontrol *kcontrol,
|
|
int event)
|
|
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;
|
|
struct arizona *arizona = priv->arizona;
|
|
|
|
|
|
switch (event) {
|
|
switch (event) {
|
|
@@ -1001,7 +1000,7 @@ int arizona_out_ev(struct snd_soc_dapm_widget *w,
|
|
case ARIZONA_OUT4R_ENA_SHIFT:
|
|
case ARIZONA_OUT4R_ENA_SHIFT:
|
|
priv->out_up_pending--;
|
|
priv->out_up_pending--;
|
|
if (!priv->out_up_pending && priv->out_up_delay) {
|
|
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);
|
|
priv->out_up_delay);
|
|
msleep(priv->out_up_delay);
|
|
msleep(priv->out_up_delay);
|
|
priv->out_up_delay = 0;
|
|
priv->out_up_delay = 0;
|
|
@@ -1054,7 +1053,7 @@ int arizona_out_ev(struct snd_soc_dapm_widget *w,
|
|
case ARIZONA_OUT4R_ENA_SHIFT:
|
|
case ARIZONA_OUT4R_ENA_SHIFT:
|
|
priv->out_down_pending--;
|
|
priv->out_down_pending--;
|
|
if (!priv->out_down_pending && priv->out_down_delay) {
|
|
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);
|
|
priv->out_down_delay);
|
|
msleep(priv->out_down_delay);
|
|
msleep(priv->out_down_delay);
|
|
priv->out_down_delay = 0;
|
|
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);
|
|
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;
|
|
struct arizona *arizona = priv->arizona;
|
|
unsigned int mask = 1 << w->shift;
|
|
unsigned int mask = 1 << w->shift;
|
|
unsigned int val;
|
|
unsigned int val;
|
|
@@ -1111,15 +1109,15 @@ int arizona_hp_ev(struct snd_soc_dapm_widget *w,
|
|
}
|
|
}
|
|
EXPORT_SYMBOL_GPL(arizona_hp_ev);
|
|
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;
|
|
struct arizona *arizona = priv->arizona;
|
|
int ret;
|
|
int ret;
|
|
|
|
|
|
ret = regulator_set_voltage(arizona->dcvdd, 1800000, 1800000);
|
|
ret = regulator_set_voltage(arizona->dcvdd, 1800000, 1800000);
|
|
if (ret) {
|
|
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;
|
|
return ret;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1128,7 +1126,7 @@ static int arizona_dvfs_enable(struct snd_soc_codec *codec)
|
|
ARIZONA_SUBSYS_MAX_FREQ,
|
|
ARIZONA_SUBSYS_MAX_FREQ,
|
|
ARIZONA_SUBSYS_MAX_FREQ);
|
|
ARIZONA_SUBSYS_MAX_FREQ);
|
|
if (ret) {
|
|
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);
|
|
regulator_set_voltage(arizona->dcvdd, 1200000, 1800000);
|
|
return ret;
|
|
return ret;
|
|
}
|
|
}
|
|
@@ -1136,9 +1134,9 @@ static int arizona_dvfs_enable(struct snd_soc_codec *codec)
|
|
return 0;
|
|
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;
|
|
struct arizona *arizona = priv->arizona;
|
|
int ret;
|
|
int ret;
|
|
|
|
|
|
@@ -1146,28 +1144,28 @@ static int arizona_dvfs_disable(struct snd_soc_codec *codec)
|
|
ARIZONA_DYNAMIC_FREQUENCY_SCALING_1,
|
|
ARIZONA_DYNAMIC_FREQUENCY_SCALING_1,
|
|
ARIZONA_SUBSYS_MAX_FREQ, 0);
|
|
ARIZONA_SUBSYS_MAX_FREQ, 0);
|
|
if (ret) {
|
|
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;
|
|
return ret;
|
|
}
|
|
}
|
|
|
|
|
|
ret = regulator_set_voltage(arizona->dcvdd, 1200000, 1800000);
|
|
ret = regulator_set_voltage(arizona->dcvdd, 1200000, 1800000);
|
|
if (ret) {
|
|
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 ret;
|
|
}
|
|
}
|
|
|
|
|
|
return 0;
|
|
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;
|
|
int ret = 0;
|
|
|
|
|
|
mutex_lock(&priv->dvfs_lock);
|
|
mutex_lock(&priv->dvfs_lock);
|
|
|
|
|
|
if (!priv->dvfs_cached && !priv->dvfs_reqs) {
|
|
if (!priv->dvfs_cached && !priv->dvfs_reqs) {
|
|
- ret = arizona_dvfs_enable(codec);
|
|
|
|
|
|
+ ret = arizona_dvfs_enable(component);
|
|
if (ret)
|
|
if (ret)
|
|
goto err;
|
|
goto err;
|
|
}
|
|
}
|
|
@@ -1179,9 +1177,9 @@ err:
|
|
}
|
|
}
|
|
EXPORT_SYMBOL_GPL(arizona_dvfs_up);
|
|
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;
|
|
unsigned int old_reqs;
|
|
int ret = 0;
|
|
int ret = 0;
|
|
|
|
|
|
@@ -1191,7 +1189,7 @@ int arizona_dvfs_down(struct snd_soc_codec *codec, unsigned int flags)
|
|
priv->dvfs_reqs &= ~flags;
|
|
priv->dvfs_reqs &= ~flags;
|
|
|
|
|
|
if (!priv->dvfs_cached && old_reqs && !priv->dvfs_reqs)
|
|
if (!priv->dvfs_cached && old_reqs && !priv->dvfs_reqs)
|
|
- ret = arizona_dvfs_disable(codec);
|
|
|
|
|
|
+ ret = arizona_dvfs_disable(component);
|
|
|
|
|
|
mutex_unlock(&priv->dvfs_lock);
|
|
mutex_unlock(&priv->dvfs_lock);
|
|
return ret;
|
|
return ret;
|
|
@@ -1201,8 +1199,8 @@ EXPORT_SYMBOL_GPL(arizona_dvfs_down);
|
|
int arizona_dvfs_sysclk_ev(struct snd_soc_dapm_widget *w,
|
|
int arizona_dvfs_sysclk_ev(struct snd_soc_dapm_widget *w,
|
|
struct snd_kcontrol *kcontrol, int event)
|
|
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;
|
|
int ret = 0;
|
|
|
|
|
|
mutex_lock(&priv->dvfs_lock);
|
|
mutex_lock(&priv->dvfs_lock);
|
|
@@ -1210,7 +1208,7 @@ int arizona_dvfs_sysclk_ev(struct snd_soc_dapm_widget *w,
|
|
switch (event) {
|
|
switch (event) {
|
|
case SND_SOC_DAPM_POST_PMU:
|
|
case SND_SOC_DAPM_POST_PMU:
|
|
if (priv->dvfs_reqs)
|
|
if (priv->dvfs_reqs)
|
|
- ret = arizona_dvfs_enable(codec);
|
|
|
|
|
|
+ ret = arizona_dvfs_enable(component);
|
|
|
|
|
|
priv->dvfs_cached = false;
|
|
priv->dvfs_cached = false;
|
|
break;
|
|
break;
|
|
@@ -1222,7 +1220,7 @@ int arizona_dvfs_sysclk_ev(struct snd_soc_dapm_widget *w,
|
|
priv->dvfs_cached = true;
|
|
priv->dvfs_cached = true;
|
|
|
|
|
|
if (priv->dvfs_reqs)
|
|
if (priv->dvfs_reqs)
|
|
- ret = arizona_dvfs_disable(codec);
|
|
|
|
|
|
+ ret = arizona_dvfs_disable(component);
|
|
break;
|
|
break;
|
|
default:
|
|
default:
|
|
break;
|
|
break;
|
|
@@ -1243,7 +1241,7 @@ int arizona_anc_ev(struct snd_soc_dapm_widget *w,
|
|
struct snd_kcontrol *kcontrol,
|
|
struct snd_kcontrol *kcontrol,
|
|
int event)
|
|
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;
|
|
unsigned int val;
|
|
|
|
|
|
switch (event) {
|
|
switch (event) {
|
|
@@ -1257,7 +1255,7 @@ int arizona_anc_ev(struct snd_soc_dapm_widget *w,
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
|
|
|
|
- snd_soc_write(codec, ARIZONA_CLOCK_CONTROL, val);
|
|
|
|
|
|
+ snd_soc_component_write(component, ARIZONA_CLOCK_CONTROL, val);
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|
|
@@ -1277,10 +1275,10 @@ static unsigned int arizona_opclk_ref_44k1_rates[] = {
|
|
45158400,
|
|
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 reg;
|
|
unsigned int *rates;
|
|
unsigned int *rates;
|
|
int ref, div, refclk;
|
|
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;
|
|
rates = arizona_opclk_ref_48k_rates;
|
|
|
|
|
|
for (ref = 0; ref < ARRAY_SIZE(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;
|
|
div = 1;
|
|
while (rates[ref] / div >= freq && div < 32) {
|
|
while (rates[ref] / div >= freq && div < 32) {
|
|
if (rates[ref] / div == freq) {
|
|
if (rates[ref] / div == freq) {
|
|
- dev_dbg(codec->dev, "Configured %dHz OPCLK\n",
|
|
|
|
|
|
+ dev_dbg(component->dev, "Configured %dHz OPCLK\n",
|
|
freq);
|
|
freq);
|
|
- snd_soc_update_bits(codec, reg,
|
|
|
|
|
|
+ snd_soc_component_update_bits(component, reg,
|
|
ARIZONA_OPCLK_DIV_MASK |
|
|
ARIZONA_OPCLK_DIV_MASK |
|
|
ARIZONA_OPCLK_SEL_MASK,
|
|
ARIZONA_OPCLK_SEL_MASK,
|
|
(div <<
|
|
(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;
|
|
return -EINVAL;
|
|
}
|
|
}
|
|
|
|
|
|
int arizona_clk_ev(struct snd_soc_dapm_widget *w,
|
|
int arizona_clk_ev(struct snd_soc_dapm_widget *w,
|
|
struct snd_kcontrol *kcontrol, int event)
|
|
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;
|
|
unsigned int val;
|
|
int clk_idx;
|
|
int clk_idx;
|
|
int ret;
|
|
int ret;
|
|
|
|
|
|
ret = regmap_read(arizona->regmap, w->reg, &val);
|
|
ret = regmap_read(arizona->regmap, w->reg, &val);
|
|
if (ret) {
|
|
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;
|
|
return ret;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -1366,10 +1364,10 @@ int arizona_clk_ev(struct snd_soc_dapm_widget *w,
|
|
}
|
|
}
|
|
EXPORT_SYMBOL_GPL(arizona_clk_ev);
|
|
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)
|
|
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;
|
|
struct arizona *arizona = priv->arizona;
|
|
char *name;
|
|
char *name;
|
|
unsigned int reg;
|
|
unsigned int reg;
|
|
@@ -1391,7 +1389,7 @@ int arizona_set_sysclk(struct snd_soc_codec *codec, int clk_id,
|
|
break;
|
|
break;
|
|
case ARIZONA_CLK_OPCLK:
|
|
case ARIZONA_CLK_OPCLK:
|
|
case ARIZONA_CLK_ASYNC_OPCLK:
|
|
case ARIZONA_CLK_ASYNC_OPCLK:
|
|
- return arizona_set_opclk(codec, clk_id, freq);
|
|
|
|
|
|
+ return arizona_set_opclk(component, clk_id, freq);
|
|
default:
|
|
default:
|
|
return -EINVAL;
|
|
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)
|
|
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;
|
|
struct arizona *arizona = priv->arizona;
|
|
int lrclk, bclk, mode, base;
|
|
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,
|
|
static int arizona_startup(struct snd_pcm_substream *substream,
|
|
struct snd_soc_dai *dai)
|
|
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];
|
|
struct arizona_dai_priv *dai_priv = &priv->dai[dai->id - 1];
|
|
unsigned int base_rate;
|
|
unsigned int base_rate;
|
|
|
|
|
|
@@ -1651,10 +1649,10 @@ static int arizona_startup(struct snd_pcm_substream *substream,
|
|
&dai_priv->constraint);
|
|
&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)
|
|
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 arizona *arizona = priv->arizona;
|
|
struct reg_sequence dac_comp[] = {
|
|
struct reg_sequence dac_comp[] = {
|
|
{ 0x80, 0x3 },
|
|
{ 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_pcm_hw_params *params,
|
|
struct snd_soc_dai *dai)
|
|
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];
|
|
struct arizona_dai_priv *dai_priv = &priv->dai[dai->id - 1];
|
|
int base = dai->driver->base;
|
|
int base = dai->driver->base;
|
|
int i, sr_val, ret;
|
|
int i, sr_val, ret;
|
|
@@ -1704,9 +1702,9 @@ static int arizona_hw_params_rate(struct snd_pcm_substream *substream,
|
|
case WM5102:
|
|
case WM5102:
|
|
case WM8997:
|
|
case WM8997:
|
|
if (arizona_sr_vals[sr_val] >= 88200)
|
|
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
|
|
else
|
|
- ret = arizona_dvfs_down(codec, ARIZONA_DVFS_SR1_RQ);
|
|
|
|
|
|
+ ret = arizona_dvfs_down(component, ARIZONA_DVFS_SR1_RQ);
|
|
|
|
|
|
if (ret) {
|
|
if (ret) {
|
|
arizona_aif_err(dai, "Failed to change DVFS %d\n", 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:
|
|
case ARIZONA_CLK_SYSCLK:
|
|
switch (priv->arizona->type) {
|
|
switch (priv->arizona->type) {
|
|
case WM5102:
|
|
case WM5102:
|
|
- arizona_wm5102_set_dac_comp(codec,
|
|
|
|
|
|
+ arizona_wm5102_set_dac_comp(component,
|
|
params_rate(params));
|
|
params_rate(params));
|
|
break;
|
|
break;
|
|
default:
|
|
default:
|
|
break;
|
|
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)
|
|
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;
|
|
break;
|
|
case ARIZONA_CLK_ASYNCCLK:
|
|
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)
|
|
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;
|
|
break;
|
|
default:
|
|
default:
|
|
arizona_aif_err(dai, "Invalid clock %d\n", dai_priv->clk);
|
|
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;
|
|
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 base, int bclk, int lrclk, int frame)
|
|
{
|
|
{
|
|
int val;
|
|
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))
|
|
if (bclk != (val & ARIZONA_AIF1_BCLK_FREQ_MASK))
|
|
return true;
|
|
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))
|
|
if (lrclk != (val & ARIZONA_AIF1TX_BCPF_MASK))
|
|
return true;
|
|
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 |
|
|
if (frame != (val & (ARIZONA_AIF1TX_WL_MASK |
|
|
ARIZONA_AIF1TX_SLOT_LEN_MASK)))
|
|
ARIZONA_AIF1TX_SLOT_LEN_MASK)))
|
|
return true;
|
|
return true;
|
|
@@ -1775,8 +1778,8 @@ static int arizona_hw_params(struct snd_pcm_substream *substream,
|
|
struct snd_pcm_hw_params *params,
|
|
struct snd_pcm_hw_params *params,
|
|
struct snd_soc_dai *dai)
|
|
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;
|
|
struct arizona *arizona = priv->arizona;
|
|
int base = dai->driver->base;
|
|
int base = dai->driver->base;
|
|
const int *rates;
|
|
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 */
|
|
/* 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;
|
|
val &= ARIZONA_AIF1_FMT_MASK;
|
|
if ((channels & 1) && (val == ARIZONA_FMT_I2S_MODE)) {
|
|
if ((channels & 1) && (val == ARIZONA_FMT_I2S_MODE)) {
|
|
arizona_aif_dbg(dai, "Forcing stereo mode\n");
|
|
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;
|
|
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) {
|
|
if (reconfig) {
|
|
/* Save AIF TX/RX state */
|
|
/* 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);
|
|
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);
|
|
base + ARIZONA_AIF_RX_ENABLES);
|
|
/* Disable AIF TX/RX before reconfiguring it */
|
|
/* Disable AIF TX/RX before reconfiguring it */
|
|
regmap_update_bits_async(arizona->regmap,
|
|
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,
|
|
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);
|
|
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,
|
|
static int arizona_dai_set_sysclk(struct snd_soc_dai *dai,
|
|
int clk_id, unsigned int freq, int dir)
|
|
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 arizona_dai_priv *dai_priv = &priv->dai[dai->id - 1];
|
|
struct snd_soc_dapm_route routes[2];
|
|
struct snd_soc_dapm_route routes[2];
|
|
|
|
|
|
@@ -1926,12 +1930,12 @@ static int arizona_dai_set_sysclk(struct snd_soc_dai *dai,
|
|
return 0;
|
|
return 0;
|
|
|
|
|
|
if (dai->active) {
|
|
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);
|
|
dai->id);
|
|
return -EBUSY;
|
|
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));
|
|
arizona_dai_clk_str(clk_id));
|
|
|
|
|
|
memset(&routes, 0, sizeof(routes));
|
|
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)
|
|
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;
|
|
int base = dai->driver->base;
|
|
unsigned int reg;
|
|
unsigned int reg;
|
|
|
|
|
|
@@ -1962,16 +1966,17 @@ static int arizona_set_tristate(struct snd_soc_dai *dai, int tristate)
|
|
else
|
|
else
|
|
reg = 0;
|
|
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,
|
|
static void arizona_set_channels_to_mask(struct snd_soc_dai *dai,
|
|
unsigned int base,
|
|
unsigned int base,
|
|
int channels, unsigned int mask)
|
|
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;
|
|
struct arizona *arizona = priv->arizona;
|
|
int slot, i;
|
|
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,
|
|
static int arizona_set_tdm_slot(struct snd_soc_dai *dai, unsigned int tx_mask,
|
|
unsigned int rx_mask, int slots, int slot_width)
|
|
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;
|
|
struct arizona *arizona = priv->arizona;
|
|
int base = dai->driver->base;
|
|
int base = dai->driver->base;
|
|
int rx_max_chan = dai->driver->playback.channels_max;
|
|
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);
|
|
arizona_fll_dbg(fll, "GAIN=0x%x(%d)\n", cfg->gain, 1 << cfg->gain);
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
-
|
|
|
|
}
|
|
}
|
|
|
|
|
|
static void arizona_apply_fll(struct arizona *arizona, unsigned int base,
|
|
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_src = source;
|
|
fll->ref_freq = Fref;
|
|
fll->ref_freq = Fref;
|
|
|
|
|
|
- if (fll->fout && Fref > 0) {
|
|
|
|
|
|
+ if (fll->fout && Fref > 0)
|
|
ret = arizona_enable_fll(fll);
|
|
ret = arizona_enable_fll(fll);
|
|
- }
|
|
|
|
|
|
|
|
return ret;
|
|
return ret;
|
|
}
|
|
}
|
|
@@ -2645,7 +2648,7 @@ EXPORT_SYMBOL_GPL(arizona_init_fll);
|
|
/**
|
|
/**
|
|
* arizona_set_output_mode - Set the mode of the specified output
|
|
* arizona_set_output_mode - Set the mode of the specified output
|
|
*
|
|
*
|
|
- * @codec: Device to configure
|
|
|
|
|
|
+ * @component: Device to configure
|
|
* @output: Output number
|
|
* @output: Output number
|
|
* @diff: True to set the output to differential mode
|
|
* @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
|
|
* Most systems have a single static configuration and should use
|
|
* platform data instead.
|
|
* 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;
|
|
unsigned int reg, val;
|
|
|
|
|
|
@@ -2672,7 +2676,8 @@ int arizona_set_output_mode(struct snd_soc_codec *codec, int output, bool diff)
|
|
else
|
|
else
|
|
val = 0;
|
|
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);
|
|
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,
|
|
int arizona_eq_coeff_put(struct snd_kcontrol *kcontrol,
|
|
struct snd_ctl_elem_value *ucontrol)
|
|
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;
|
|
struct soc_bytes *params = (void *)kcontrol->private_value;
|
|
unsigned int val;
|
|
unsigned int val;
|
|
__be16 *data;
|
|
__be16 *data;
|
|
@@ -2765,8 +2770,8 @@ EXPORT_SYMBOL_GPL(arizona_eq_coeff_put);
|
|
int arizona_lhpf_coeff_put(struct snd_kcontrol *kcontrol,
|
|
int arizona_lhpf_coeff_put(struct snd_kcontrol *kcontrol,
|
|
struct snd_ctl_elem_value *ucontrol)
|
|
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;
|
|
__be16 *data = (__be16 *)ucontrol->value.bytes.data;
|
|
s16 val = be16_to_cpu(*data);
|
|
s16 val = be16_to_cpu(*data);
|
|
|
|
|