mirror of
https://github.com/FEX-Emu/linux.git
synced 2024-12-30 13:38:40 +00:00
ASoC: arizona: replace codec to component
Now we can replace Codec to Component. Let's do it. Because there are many drivers which are using arizona, we need to update these all related drivers in same time. Otherwise compile error/warning happen Note: cs47l24 xxx_codec_xxx() -> xxx_component_xxx() .idle_bias_off = 1 -> .idle_bias_on = 0 .ignore_pmdown_time = 0 -> .use_pmdown_time = 1 - -> .endianness = 1 - -> .non_legacy_dai_naming = 1 wm5102 xxx_codec_xxx() -> xxx_component_xxx() .idle_bias_off = 1 -> .idle_bias_on = 0 .ignore_pmdown_time = 0 -> .use_pmdown_time = 1 - -> .endianness = 1 - -> .non_legacy_dai_naming = 1 wm5110 xxx_codec_xxx() -> xxx_component_xxx() .idle_bias_off = 1 -> .idle_bias_on = 0 .ignore_pmdown_time = 0 -> .use_pmdown_time = 1 - -> .endianness = 1 - -> .non_legacy_dai_naming = 1 wm8997 xxx_codec_xxx() -> xxx_component_xxx() .idle_bias_off = 1 -> .idle_bias_on = 0 .ignore_pmdown_time = 0 -> .use_pmdown_time = 1 - -> .endianness = 1 - -> .non_legacy_dai_naming = 1 wm8998 xxx_codec_xxx() -> xxx_component_xxx() .idle_bias_off = 1 -> .idle_bias_on = 0 .ignore_pmdown_time = 0 -> .use_pmdown_time = 1 - -> .endianness = 1 - -> .non_legacy_dai_naming = 1 Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> Tested-by: Charles Keepax <ckeepax@opensource.cirrus.com> Acked-by: Charles Keepax <ckeepax@opensource.cirrus.com> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
03a0ddeda7
commit
0fe1daa666
@ -84,13 +84,13 @@ 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 +169,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 +238,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 +255,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;
|
||||
|
||||
@ -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,25 @@ 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 +955,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 +999,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 +1052,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;
|
||||
@ -1076,8 +1074,8 @@ 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,
|
||||
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;
|
||||
@ -1308,9 +1306,9 @@ static int arizona_set_opclk(struct snd_soc_codec *codec, unsigned int clk,
|
||||
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,24 +1719,24 @@ 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,
|
||||
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,
|
||||
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,
|
||||
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,
|
||||
snd_soc_component_update_bits(component, base + ARIZONA_AIF_RATE_CTRL,
|
||||
ARIZONA_AIF1_RATE_MASK,
|
||||
8 << ARIZONA_AIF1_RATE_SHIFT);
|
||||
break;
|
||||
@ -1750,20 +1748,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 +1773,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 +1811,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,13 +1839,13 @@ 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,
|
||||
@ -1908,9 +1906,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 +1924,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 +1951,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,7 +1960,7 @@ 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,
|
||||
return snd_soc_component_update_bits(component, base + ARIZONA_AIF_RATE_CTRL,
|
||||
ARIZONA_AIF1_TRI, reg);
|
||||
}
|
||||
|
||||
@ -1970,8 +1968,8 @@ 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 +1990,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;
|
||||
@ -2645,7 +2643,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 +2656,7 @@ 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 +2670,7 @@ 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 +2719,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 +2763,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);
|
||||
|
||||
|
@ -273,7 +273,7 @@ int arizona_lhpf_coeff_put(struct snd_kcontrol *kcontrol,
|
||||
|
||||
int arizona_clk_ev(struct snd_soc_dapm_widget *w, struct snd_kcontrol *kcontrol,
|
||||
int event);
|
||||
int arizona_set_sysclk(struct snd_soc_codec *codec, int clk_id, int source,
|
||||
int arizona_set_sysclk(struct snd_soc_component *component, int clk_id, int source,
|
||||
unsigned int freq, int dir);
|
||||
|
||||
extern const struct snd_soc_dai_ops arizona_dai_ops;
|
||||
@ -297,8 +297,8 @@ struct arizona_fll {
|
||||
char clock_ok_name[ARIZONA_FLL_NAME_LEN];
|
||||
};
|
||||
|
||||
int arizona_dvfs_up(struct snd_soc_codec *codec, unsigned int flags);
|
||||
int arizona_dvfs_down(struct snd_soc_codec *codec, unsigned int flags);
|
||||
int arizona_dvfs_up(struct snd_soc_component *component, unsigned int flags);
|
||||
int arizona_dvfs_down(struct snd_soc_component *component, unsigned int flags);
|
||||
int arizona_dvfs_sysclk_ev(struct snd_soc_dapm_widget *w,
|
||||
struct snd_kcontrol *kcontrol, int event);
|
||||
void arizona_init_dvfs(struct arizona_priv *priv);
|
||||
@ -310,9 +310,9 @@ int arizona_set_fll_refclk(struct arizona_fll *fll, int source,
|
||||
int arizona_set_fll(struct arizona_fll *fll, int source,
|
||||
unsigned int Fref, unsigned int Fout);
|
||||
|
||||
int arizona_init_spk(struct snd_soc_codec *codec);
|
||||
int arizona_init_gpio(struct snd_soc_codec *codec);
|
||||
int arizona_init_mono(struct snd_soc_codec *codec);
|
||||
int arizona_init_spk(struct snd_soc_component *component);
|
||||
int arizona_init_gpio(struct snd_soc_component *component);
|
||||
int arizona_init_mono(struct snd_soc_component *component);
|
||||
|
||||
int arizona_init_common(struct arizona *arizona);
|
||||
int arizona_init_vol_limit(struct arizona *arizona);
|
||||
@ -322,20 +322,20 @@ int arizona_free_spk_irqs(struct arizona *arizona);
|
||||
|
||||
int arizona_init_dai(struct arizona_priv *priv, int dai);
|
||||
|
||||
int arizona_set_output_mode(struct snd_soc_codec *codec, int output,
|
||||
int arizona_set_output_mode(struct snd_soc_component *component, int output,
|
||||
bool diff);
|
||||
|
||||
bool arizona_input_analog(struct snd_soc_codec *codec, int shift);
|
||||
bool arizona_input_analog(struct snd_soc_component *component, int shift);
|
||||
|
||||
const char *arizona_sample_rate_val_to_name(unsigned int rate_val);
|
||||
|
||||
static inline int arizona_register_notifier(struct snd_soc_codec *codec,
|
||||
static inline int arizona_register_notifier(struct snd_soc_component *component,
|
||||
struct notifier_block *nb,
|
||||
int (*notify)
|
||||
(struct notifier_block *nb,
|
||||
unsigned long action, void *data))
|
||||
{
|
||||
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;
|
||||
|
||||
nb->notifier_call = notify;
|
||||
@ -343,10 +343,10 @@ static inline int arizona_register_notifier(struct snd_soc_codec *codec,
|
||||
return blocking_notifier_chain_register(&arizona->notifier, nb);
|
||||
}
|
||||
|
||||
static inline int arizona_unregister_notifier(struct snd_soc_codec *codec,
|
||||
static inline int arizona_unregister_notifier(struct snd_soc_component *component,
|
||||
struct notifier_block *nb)
|
||||
{
|
||||
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;
|
||||
|
||||
return blocking_notifier_chain_unregister(&arizona->notifier, nb);
|
||||
|
@ -62,14 +62,14 @@ static const struct wm_adsp_region *cs47l24_dsp_regions[] = {
|
||||
static int cs47l24_adsp_power_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 v;
|
||||
int ret;
|
||||
|
||||
ret = regmap_read(arizona->regmap, ARIZONA_SYSTEM_CLOCK_1, &v);
|
||||
if (ret != 0) {
|
||||
dev_err(codec->dev, "Failed to read SYSCLK state: %d\n", ret);
|
||||
dev_err(component->dev, "Failed to read SYSCLK state: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -931,10 +931,10 @@ static const struct snd_soc_dapm_route cs47l24_dapm_routes[] = {
|
||||
{ "DSP3 Voice Trigger", "Switch", "DSP3" },
|
||||
};
|
||||
|
||||
static int cs47l24_set_fll(struct snd_soc_codec *codec, int fll_id, int source,
|
||||
static int cs47l24_set_fll(struct snd_soc_component *component, int fll_id, int source,
|
||||
unsigned int Fref, unsigned int Fout)
|
||||
{
|
||||
struct cs47l24_priv *cs47l24 = snd_soc_codec_get_drvdata(codec);
|
||||
struct cs47l24_priv *cs47l24 = snd_soc_component_get_drvdata(component);
|
||||
|
||||
switch (fll_id) {
|
||||
case CS47L24_FLL1:
|
||||
@ -1118,33 +1118,32 @@ static irqreturn_t cs47l24_adsp2_irq(int irq, void *data)
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
static int cs47l24_codec_probe(struct snd_soc_codec *codec)
|
||||
static int cs47l24_component_probe(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 cs47l24_priv *priv = snd_soc_codec_get_drvdata(codec);
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_component_get_dapm(component);
|
||||
struct cs47l24_priv *priv = snd_soc_component_get_drvdata(component);
|
||||
struct arizona *arizona = priv->core.arizona;
|
||||
int ret;
|
||||
|
||||
arizona->dapm = dapm;
|
||||
snd_soc_codec_init_regmap(codec, arizona->regmap);
|
||||
snd_soc_component_init_regmap(component, arizona->regmap);
|
||||
|
||||
ret = arizona_init_spk(codec);
|
||||
ret = arizona_init_spk(component);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
arizona_init_gpio(codec);
|
||||
arizona_init_mono(codec);
|
||||
arizona_init_gpio(component);
|
||||
arizona_init_mono(component);
|
||||
|
||||
ret = wm_adsp2_codec_probe(&priv->core.adsp[1], codec);
|
||||
ret = wm_adsp2_component_probe(&priv->core.adsp[1], component);
|
||||
if (ret)
|
||||
goto err_adsp2_codec_probe;
|
||||
|
||||
ret = wm_adsp2_codec_probe(&priv->core.adsp[2], codec);
|
||||
ret = wm_adsp2_component_probe(&priv->core.adsp[2], component);
|
||||
if (ret)
|
||||
goto err_adsp2_codec_probe;
|
||||
|
||||
ret = snd_soc_add_codec_controls(codec,
|
||||
ret = snd_soc_add_component_controls(component,
|
||||
&arizona_adsp2_rate_controls[1], 2);
|
||||
if (ret)
|
||||
goto err_adsp2_codec_probe;
|
||||
@ -1154,22 +1153,20 @@ static int cs47l24_codec_probe(struct snd_soc_codec *codec)
|
||||
return 0;
|
||||
|
||||
err_adsp2_codec_probe:
|
||||
wm_adsp2_codec_remove(&priv->core.adsp[1], codec);
|
||||
wm_adsp2_codec_remove(&priv->core.adsp[2], codec);
|
||||
wm_adsp2_component_remove(&priv->core.adsp[1], component);
|
||||
wm_adsp2_component_remove(&priv->core.adsp[2], component);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int cs47l24_codec_remove(struct snd_soc_codec *codec)
|
||||
static void cs47l24_component_remove(struct snd_soc_component *component)
|
||||
{
|
||||
struct cs47l24_priv *priv = snd_soc_codec_get_drvdata(codec);
|
||||
struct cs47l24_priv *priv = snd_soc_component_get_drvdata(component);
|
||||
|
||||
wm_adsp2_codec_remove(&priv->core.adsp[1], codec);
|
||||
wm_adsp2_codec_remove(&priv->core.adsp[2], codec);
|
||||
wm_adsp2_component_remove(&priv->core.adsp[1], component);
|
||||
wm_adsp2_component_remove(&priv->core.adsp[2], component);
|
||||
|
||||
priv->core.arizona->dapm = NULL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define CS47L24_DIG_VU 0x0200
|
||||
@ -1190,25 +1187,22 @@ static struct snd_compr_ops cs47l24_compr_ops = {
|
||||
.copy = wm_adsp_compr_copy,
|
||||
};
|
||||
|
||||
static const struct snd_soc_codec_driver soc_codec_dev_cs47l24 = {
|
||||
.probe = cs47l24_codec_probe,
|
||||
.remove = cs47l24_codec_remove,
|
||||
|
||||
.idle_bias_off = true,
|
||||
|
||||
.set_sysclk = arizona_set_sysclk,
|
||||
.set_pll = cs47l24_set_fll,
|
||||
|
||||
.component_driver = {
|
||||
.name = DRV_NAME,
|
||||
.compr_ops = &cs47l24_compr_ops,
|
||||
.controls = cs47l24_snd_controls,
|
||||
.num_controls = ARRAY_SIZE(cs47l24_snd_controls),
|
||||
.dapm_widgets = cs47l24_dapm_widgets,
|
||||
.num_dapm_widgets = ARRAY_SIZE(cs47l24_dapm_widgets),
|
||||
.dapm_routes = cs47l24_dapm_routes,
|
||||
.num_dapm_routes = ARRAY_SIZE(cs47l24_dapm_routes),
|
||||
},
|
||||
static const struct snd_soc_component_driver soc_component_dev_cs47l24 = {
|
||||
.probe = cs47l24_component_probe,
|
||||
.remove = cs47l24_component_remove,
|
||||
.set_sysclk = arizona_set_sysclk,
|
||||
.set_pll = cs47l24_set_fll,
|
||||
.name = DRV_NAME,
|
||||
.compr_ops = &cs47l24_compr_ops,
|
||||
.controls = cs47l24_snd_controls,
|
||||
.num_controls = ARRAY_SIZE(cs47l24_snd_controls),
|
||||
.dapm_widgets = cs47l24_dapm_widgets,
|
||||
.num_dapm_widgets = ARRAY_SIZE(cs47l24_dapm_widgets),
|
||||
.dapm_routes = cs47l24_dapm_routes,
|
||||
.num_dapm_routes = ARRAY_SIZE(cs47l24_dapm_routes),
|
||||
.use_pmdown_time = 1,
|
||||
.endianness = 1,
|
||||
.non_legacy_dai_naming = 1,
|
||||
};
|
||||
|
||||
static int cs47l24_probe(struct platform_device *pdev)
|
||||
@ -1299,10 +1293,11 @@ static int cs47l24_probe(struct platform_device *pdev)
|
||||
if (ret < 0)
|
||||
goto err_dsp_irq;
|
||||
|
||||
ret = snd_soc_register_codec(&pdev->dev, &soc_codec_dev_cs47l24,
|
||||
ret = devm_snd_soc_register_component(&pdev->dev,
|
||||
&soc_component_dev_cs47l24,
|
||||
cs47l24_dai, ARRAY_SIZE(cs47l24_dai));
|
||||
if (ret < 0) {
|
||||
dev_err(&pdev->dev, "Failed to register codec: %d\n", ret);
|
||||
dev_err(&pdev->dev, "Failed to register component: %d\n", ret);
|
||||
goto err_spk_irqs;
|
||||
}
|
||||
|
||||
@ -1321,7 +1316,6 @@ static int cs47l24_remove(struct platform_device *pdev)
|
||||
struct cs47l24_priv *cs47l24 = platform_get_drvdata(pdev);
|
||||
struct arizona *arizona = cs47l24->core.arizona;
|
||||
|
||||
snd_soc_unregister_codec(&pdev->dev);
|
||||
pm_runtime_disable(&pdev->dev);
|
||||
|
||||
wm_adsp2_remove(&cs47l24->core.adsp[1]);
|
||||
|
@ -583,8 +583,8 @@ static const struct reg_default wm5102_sysclk_revb_patch[] = {
|
||||
static int wm5102_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 *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);
|
||||
struct regmap *regmap = arizona->regmap;
|
||||
const struct reg_default *patch = NULL;
|
||||
int i, patch_size;
|
||||
@ -622,8 +622,8 @@ static int wm5102_sysclk_ev(struct snd_soc_dapm_widget *w,
|
||||
static int wm5102_adsp_power_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 v = 0;
|
||||
int ret;
|
||||
|
||||
@ -631,7 +631,7 @@ static int wm5102_adsp_power_ev(struct snd_soc_dapm_widget *w,
|
||||
case SND_SOC_DAPM_PRE_PMU:
|
||||
ret = regmap_read(arizona->regmap, ARIZONA_SYSTEM_CLOCK_1, &v);
|
||||
if (ret != 0) {
|
||||
dev_err(codec->dev,
|
||||
dev_err(component->dev,
|
||||
"Failed to read SYSCLK state: %d\n", ret);
|
||||
return -EIO;
|
||||
}
|
||||
@ -639,9 +639,9 @@ static int wm5102_adsp_power_ev(struct snd_soc_dapm_widget *w,
|
||||
v = (v & ARIZONA_SYSCLK_FREQ_MASK) >> ARIZONA_SYSCLK_FREQ_SHIFT;
|
||||
|
||||
if (v >= 3) {
|
||||
ret = arizona_dvfs_up(codec, ARIZONA_DVFS_ADSP1_RQ);
|
||||
ret = arizona_dvfs_up(component, ARIZONA_DVFS_ADSP1_RQ);
|
||||
if (ret) {
|
||||
dev_err(codec->dev,
|
||||
dev_err(component->dev,
|
||||
"Failed to raise DVFS: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
@ -649,9 +649,9 @@ static int wm5102_adsp_power_ev(struct snd_soc_dapm_widget *w,
|
||||
break;
|
||||
|
||||
case SND_SOC_DAPM_POST_PMD:
|
||||
ret = arizona_dvfs_down(codec, ARIZONA_DVFS_ADSP1_RQ);
|
||||
ret = arizona_dvfs_down(component, ARIZONA_DVFS_ADSP1_RQ);
|
||||
if (ret)
|
||||
dev_warn(codec->dev,
|
||||
dev_warn(component->dev,
|
||||
"Failed to lower DVFS: %d\n", ret);
|
||||
break;
|
||||
|
||||
@ -665,8 +665,8 @@ static int wm5102_adsp_power_ev(struct snd_soc_dapm_widget *w,
|
||||
static int wm5102_out_comp_coeff_get(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);
|
||||
|
||||
mutex_lock(&arizona->dac_comp_lock);
|
||||
put_unaligned_be16(arizona->dac_comp_coeff,
|
||||
@ -679,8 +679,8 @@ static int wm5102_out_comp_coeff_get(struct snd_kcontrol *kcontrol,
|
||||
static int wm5102_out_comp_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);
|
||||
|
||||
mutex_lock(&arizona->dac_comp_lock);
|
||||
memcpy(&arizona->dac_comp_coeff, ucontrol->value.bytes.data,
|
||||
@ -694,8 +694,8 @@ static int wm5102_out_comp_coeff_put(struct snd_kcontrol *kcontrol,
|
||||
static int wm5102_out_comp_switch_get(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);
|
||||
|
||||
mutex_lock(&arizona->dac_comp_lock);
|
||||
ucontrol->value.integer.value[0] = arizona->dac_comp_enabled;
|
||||
@ -707,8 +707,8 @@ static int wm5102_out_comp_switch_get(struct snd_kcontrol *kcontrol,
|
||||
static int wm5102_out_comp_switch_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);
|
||||
|
||||
mutex_lock(&arizona->dac_comp_lock);
|
||||
arizona->dac_comp_enabled = ucontrol->value.integer.value[0];
|
||||
@ -1736,10 +1736,10 @@ static const struct snd_soc_dapm_route wm5102_dapm_routes[] = {
|
||||
{ "DRC1 Signal Activity", NULL, "DRC1R" },
|
||||
};
|
||||
|
||||
static int wm5102_set_fll(struct snd_soc_codec *codec, int fll_id, int source,
|
||||
static int wm5102_set_fll(struct snd_soc_component *component, int fll_id, int source,
|
||||
unsigned int Fref, unsigned int Fout)
|
||||
{
|
||||
struct wm5102_priv *wm5102 = snd_soc_codec_get_drvdata(codec);
|
||||
struct wm5102_priv *wm5102 = snd_soc_component_get_drvdata(component);
|
||||
|
||||
switch (fll_id) {
|
||||
case WM5102_FLL1:
|
||||
@ -1933,30 +1933,29 @@ static irqreturn_t wm5102_adsp2_irq(int irq, void *data)
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
static int wm5102_codec_probe(struct snd_soc_codec *codec)
|
||||
static int wm5102_component_probe(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 wm5102_priv *priv = snd_soc_codec_get_drvdata(codec);
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_component_get_dapm(component);
|
||||
struct wm5102_priv *priv = snd_soc_component_get_drvdata(component);
|
||||
struct arizona *arizona = priv->core.arizona;
|
||||
int ret;
|
||||
|
||||
snd_soc_codec_init_regmap(codec, arizona->regmap);
|
||||
snd_soc_component_init_regmap(component, arizona->regmap);
|
||||
|
||||
ret = wm_adsp2_codec_probe(&priv->core.adsp[0], codec);
|
||||
ret = wm_adsp2_component_probe(&priv->core.adsp[0], component);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = snd_soc_add_codec_controls(codec,
|
||||
ret = snd_soc_add_component_controls(component,
|
||||
arizona_adsp2_rate_controls, 1);
|
||||
if (ret)
|
||||
goto err_adsp2_codec_probe;
|
||||
|
||||
ret = arizona_init_spk(codec);
|
||||
ret = arizona_init_spk(component);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
arizona_init_gpio(codec);
|
||||
arizona_init_gpio(component);
|
||||
|
||||
snd_soc_component_disable_pin(component, "HAPTICS");
|
||||
|
||||
@ -1965,20 +1964,18 @@ static int wm5102_codec_probe(struct snd_soc_codec *codec)
|
||||
return 0;
|
||||
|
||||
err_adsp2_codec_probe:
|
||||
wm_adsp2_codec_remove(&priv->core.adsp[0], codec);
|
||||
wm_adsp2_component_remove(&priv->core.adsp[0], component);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int wm5102_codec_remove(struct snd_soc_codec *codec)
|
||||
static void wm5102_component_remove(struct snd_soc_component *component)
|
||||
{
|
||||
struct wm5102_priv *priv = snd_soc_codec_get_drvdata(codec);
|
||||
struct wm5102_priv *priv = snd_soc_component_get_drvdata(component);
|
||||
|
||||
wm_adsp2_codec_remove(&priv->core.adsp[0], codec);
|
||||
wm_adsp2_component_remove(&priv->core.adsp[0], component);
|
||||
|
||||
priv->core.arizona->dapm = NULL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define WM5102_DIG_VU 0x0200
|
||||
@ -2005,25 +2002,22 @@ static struct snd_compr_ops wm5102_compr_ops = {
|
||||
.copy = wm_adsp_compr_copy,
|
||||
};
|
||||
|
||||
static const struct snd_soc_codec_driver soc_codec_dev_wm5102 = {
|
||||
.probe = wm5102_codec_probe,
|
||||
.remove = wm5102_codec_remove,
|
||||
|
||||
.idle_bias_off = true,
|
||||
|
||||
.set_sysclk = arizona_set_sysclk,
|
||||
.set_pll = wm5102_set_fll,
|
||||
|
||||
.component_driver = {
|
||||
.name = DRV_NAME,
|
||||
.compr_ops = &wm5102_compr_ops,
|
||||
.controls = wm5102_snd_controls,
|
||||
.num_controls = ARRAY_SIZE(wm5102_snd_controls),
|
||||
.dapm_widgets = wm5102_dapm_widgets,
|
||||
.num_dapm_widgets = ARRAY_SIZE(wm5102_dapm_widgets),
|
||||
.dapm_routes = wm5102_dapm_routes,
|
||||
.num_dapm_routes = ARRAY_SIZE(wm5102_dapm_routes),
|
||||
},
|
||||
static const struct snd_soc_component_driver soc_component_dev_wm5102 = {
|
||||
.probe = wm5102_component_probe,
|
||||
.remove = wm5102_component_remove,
|
||||
.set_sysclk = arizona_set_sysclk,
|
||||
.set_pll = wm5102_set_fll,
|
||||
.name = DRV_NAME,
|
||||
.compr_ops = &wm5102_compr_ops,
|
||||
.controls = wm5102_snd_controls,
|
||||
.num_controls = ARRAY_SIZE(wm5102_snd_controls),
|
||||
.dapm_widgets = wm5102_dapm_widgets,
|
||||
.num_dapm_widgets = ARRAY_SIZE(wm5102_dapm_widgets),
|
||||
.dapm_routes = wm5102_dapm_routes,
|
||||
.num_dapm_routes = ARRAY_SIZE(wm5102_dapm_routes),
|
||||
.use_pmdown_time = 1,
|
||||
.endianness = 1,
|
||||
.non_legacy_dai_naming = 1,
|
||||
};
|
||||
|
||||
static int wm5102_probe(struct platform_device *pdev)
|
||||
@ -2110,10 +2104,11 @@ static int wm5102_probe(struct platform_device *pdev)
|
||||
if (ret < 0)
|
||||
goto err_dsp_irq;
|
||||
|
||||
ret = snd_soc_register_codec(&pdev->dev, &soc_codec_dev_wm5102,
|
||||
ret = devm_snd_soc_register_component(&pdev->dev,
|
||||
&soc_component_dev_wm5102,
|
||||
wm5102_dai, ARRAY_SIZE(wm5102_dai));
|
||||
if (ret < 0) {
|
||||
dev_err(&pdev->dev, "Failed to register codec: %d\n", ret);
|
||||
dev_err(&pdev->dev, "Failed to register component: %d\n", ret);
|
||||
goto err_spk_irqs;
|
||||
}
|
||||
|
||||
@ -2132,7 +2127,6 @@ static int wm5102_remove(struct platform_device *pdev)
|
||||
struct wm5102_priv *wm5102 = platform_get_drvdata(pdev);
|
||||
struct arizona *arizona = wm5102->core.arizona;
|
||||
|
||||
snd_soc_unregister_codec(&pdev->dev);
|
||||
pm_runtime_disable(&pdev->dev);
|
||||
|
||||
wm_adsp2_remove(&wm5102->core.adsp[0]);
|
||||
|
@ -161,8 +161,8 @@ static const struct reg_default wm5110_sysclk_reve_patch[] = {
|
||||
static int wm5110_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 *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);
|
||||
struct regmap *regmap = arizona->regmap;
|
||||
const struct reg_default *patch = NULL;
|
||||
int i, patch_size;
|
||||
@ -198,14 +198,14 @@ static int wm5110_sysclk_ev(struct snd_soc_dapm_widget *w,
|
||||
static int wm5110_adsp_power_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 v;
|
||||
int ret;
|
||||
|
||||
ret = regmap_read(arizona->regmap, ARIZONA_SYSTEM_CLOCK_1, &v);
|
||||
if (ret != 0) {
|
||||
dev_err(codec->dev, "Failed to read SYSCLK state: %d\n", ret);
|
||||
dev_err(component->dev, "Failed to read SYSCLK state: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -288,10 +288,10 @@ static const struct reg_sequence wm5110_dre_right_enable[] = {
|
||||
|
||||
static int wm5110_hp_pre_enable(struct snd_soc_dapm_widget *w)
|
||||
{
|
||||
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 val = snd_soc_read(codec, ARIZONA_DRE_ENABLE);
|
||||
unsigned int val = snd_soc_component_read32(component, ARIZONA_DRE_ENABLE);
|
||||
const struct reg_sequence *wseq;
|
||||
int nregs;
|
||||
|
||||
@ -325,25 +325,25 @@ static int wm5110_hp_pre_enable(struct snd_soc_dapm_widget *w)
|
||||
|
||||
static int wm5110_hp_pre_disable(struct snd_soc_dapm_widget *w)
|
||||
{
|
||||
struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm);
|
||||
struct arizona_priv *priv = snd_soc_codec_get_drvdata(codec);
|
||||
unsigned int val = snd_soc_read(codec, ARIZONA_DRE_ENABLE);
|
||||
struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm);
|
||||
struct arizona_priv *priv = snd_soc_component_get_drvdata(component);
|
||||
unsigned int val = snd_soc_component_read32(component, ARIZONA_DRE_ENABLE);
|
||||
|
||||
switch (w->shift) {
|
||||
case ARIZONA_OUT1L_ENA_SHIFT:
|
||||
if (!(val & ARIZONA_DRE1L_ENA_MASK)) {
|
||||
snd_soc_update_bits(codec, ARIZONA_SPARE_TRIGGERS,
|
||||
snd_soc_component_update_bits(component, ARIZONA_SPARE_TRIGGERS,
|
||||
ARIZONA_WS_TRG1, ARIZONA_WS_TRG1);
|
||||
snd_soc_update_bits(codec, ARIZONA_SPARE_TRIGGERS,
|
||||
snd_soc_component_update_bits(component, ARIZONA_SPARE_TRIGGERS,
|
||||
ARIZONA_WS_TRG1, 0);
|
||||
priv->out_down_delay += 27;
|
||||
}
|
||||
break;
|
||||
case ARIZONA_OUT1R_ENA_SHIFT:
|
||||
if (!(val & ARIZONA_DRE1R_ENA_MASK)) {
|
||||
snd_soc_update_bits(codec, ARIZONA_SPARE_TRIGGERS,
|
||||
snd_soc_component_update_bits(component, ARIZONA_SPARE_TRIGGERS,
|
||||
ARIZONA_WS_TRG2, ARIZONA_WS_TRG2);
|
||||
snd_soc_update_bits(codec, ARIZONA_SPARE_TRIGGERS,
|
||||
snd_soc_component_update_bits(component, ARIZONA_SPARE_TRIGGERS,
|
||||
ARIZONA_WS_TRG2, 0);
|
||||
priv->out_down_delay += 27;
|
||||
}
|
||||
@ -358,8 +358,8 @@ static int wm5110_hp_pre_disable(struct snd_soc_dapm_widget *w)
|
||||
static int wm5110_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);
|
||||
|
||||
switch (priv->arizona->rev) {
|
||||
case 0 ... 3:
|
||||
@ -397,9 +397,9 @@ static int wm5110_clear_pga_volume(struct arizona *arizona, int output)
|
||||
static int wm5110_put_dre(struct snd_kcontrol *kcontrol,
|
||||
struct snd_ctl_elem_value *ucontrol)
|
||||
{
|
||||
struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol);
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
struct arizona *arizona = dev_get_drvdata(codec->dev->parent);
|
||||
struct snd_soc_component *component = snd_soc_kcontrol_component(kcontrol);
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_component_get_dapm(component);
|
||||
struct arizona *arizona = dev_get_drvdata(component->dev->parent);
|
||||
struct soc_mixer_control *mc =
|
||||
(struct soc_mixer_control *)kcontrol->private_value;
|
||||
unsigned int ena, dre;
|
||||
@ -458,8 +458,8 @@ err:
|
||||
static int wm5110_in_pga_get(struct snd_kcontrol *kcontrol,
|
||||
struct snd_ctl_elem_value *ucontrol)
|
||||
{
|
||||
struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol);
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
struct snd_soc_component *component = snd_soc_kcontrol_component(kcontrol);
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_component_get_dapm(component);
|
||||
int ret;
|
||||
|
||||
/*
|
||||
@ -478,8 +478,8 @@ static int wm5110_in_pga_get(struct snd_kcontrol *kcontrol,
|
||||
static int wm5110_in_pga_put(struct snd_kcontrol *kcontrol,
|
||||
struct snd_ctl_elem_value *ucontrol)
|
||||
{
|
||||
struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol);
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
struct snd_soc_component *component = snd_soc_kcontrol_component(kcontrol);
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_component_get_dapm(component);
|
||||
int ret;
|
||||
|
||||
/*
|
||||
@ -498,9 +498,9 @@ static int wm5110_in_pga_put(struct snd_kcontrol *kcontrol,
|
||||
static int wm5110_in_analog_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 wm5110_priv *wm5110 = 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 wm5110_priv *wm5110 = snd_soc_component_get_drvdata(component);
|
||||
struct arizona *arizona = priv->arizona;
|
||||
unsigned int reg, mask;
|
||||
struct reg_sequence analog_seq[] = {
|
||||
@ -519,9 +519,9 @@ static int wm5110_in_analog_ev(struct snd_soc_dapm_widget *w,
|
||||
wm5110->in_post_pending++;
|
||||
return 0;
|
||||
case SND_SOC_DAPM_PRE_PMU:
|
||||
wm5110->in_pga_cache[w->shift] = snd_soc_read(codec, reg);
|
||||
wm5110->in_pga_cache[w->shift] = snd_soc_component_read32(component, reg);
|
||||
|
||||
snd_soc_update_bits(codec, reg, mask,
|
||||
snd_soc_component_update_bits(component, reg, mask,
|
||||
0x40 << ARIZONA_IN1L_PGA_VOL_SHIFT);
|
||||
|
||||
wm5110->in_pre_pending--;
|
||||
@ -538,7 +538,7 @@ static int wm5110_in_analog_ev(struct snd_soc_dapm_widget *w,
|
||||
|
||||
break;
|
||||
case SND_SOC_DAPM_POST_PMU:
|
||||
snd_soc_update_bits(codec, reg, mask,
|
||||
snd_soc_component_update_bits(component, reg, mask,
|
||||
wm5110->in_pga_cache[w->shift]);
|
||||
|
||||
wm5110->in_post_pending--;
|
||||
@ -557,13 +557,13 @@ static int wm5110_in_analog_ev(struct snd_soc_dapm_widget *w,
|
||||
static int wm5110_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);
|
||||
struct arizona *arizona = priv->arizona;
|
||||
|
||||
switch (arizona->rev) {
|
||||
case 0 ... 4:
|
||||
if (arizona_input_analog(codec, w->shift))
|
||||
if (arizona_input_analog(component, w->shift))
|
||||
wm5110_in_analog_ev(w, kcontrol, event);
|
||||
|
||||
break;
|
||||
@ -2034,10 +2034,10 @@ static const struct snd_soc_dapm_route wm5110_dapm_routes[] = {
|
||||
{ "DSP3 Voice Trigger", "Switch", "DSP3" },
|
||||
};
|
||||
|
||||
static int wm5110_set_fll(struct snd_soc_codec *codec, int fll_id, int source,
|
||||
static int wm5110_set_fll(struct snd_soc_component *component, int fll_id, int source,
|
||||
unsigned int Fref, unsigned int Fout)
|
||||
{
|
||||
struct wm5110_priv *wm5110 = snd_soc_codec_get_drvdata(codec);
|
||||
struct wm5110_priv *wm5110 = snd_soc_component_get_drvdata(component);
|
||||
|
||||
switch (fll_id) {
|
||||
case WM5110_FLL1:
|
||||
@ -2278,31 +2278,30 @@ static irqreturn_t wm5110_adsp2_irq(int irq, void *data)
|
||||
return IRQ_HANDLED;
|
||||
}
|
||||
|
||||
static int wm5110_codec_probe(struct snd_soc_codec *codec)
|
||||
static int wm5110_component_probe(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 wm5110_priv *priv = snd_soc_codec_get_drvdata(codec);
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_component_get_dapm(component);
|
||||
struct wm5110_priv *priv = snd_soc_component_get_drvdata(component);
|
||||
struct arizona *arizona = priv->core.arizona;
|
||||
int i, ret;
|
||||
|
||||
arizona->dapm = dapm;
|
||||
snd_soc_codec_init_regmap(codec, arizona->regmap);
|
||||
snd_soc_component_init_regmap(component, arizona->regmap);
|
||||
|
||||
ret = arizona_init_spk(codec);
|
||||
ret = arizona_init_spk(component);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
arizona_init_gpio(codec);
|
||||
arizona_init_mono(codec);
|
||||
arizona_init_gpio(component);
|
||||
arizona_init_mono(component);
|
||||
|
||||
for (i = 0; i < WM5110_NUM_ADSP; ++i) {
|
||||
ret = wm_adsp2_codec_probe(&priv->core.adsp[i], codec);
|
||||
ret = wm_adsp2_component_probe(&priv->core.adsp[i], component);
|
||||
if (ret)
|
||||
goto err_adsp2_codec_probe;
|
||||
}
|
||||
|
||||
ret = snd_soc_add_codec_controls(codec,
|
||||
ret = snd_soc_add_component_controls(component,
|
||||
arizona_adsp2_rate_controls,
|
||||
WM5110_NUM_ADSP);
|
||||
if (ret)
|
||||
@ -2314,22 +2313,20 @@ static int wm5110_codec_probe(struct snd_soc_codec *codec)
|
||||
|
||||
err_adsp2_codec_probe:
|
||||
for (--i; i >= 0; --i)
|
||||
wm_adsp2_codec_remove(&priv->core.adsp[i], codec);
|
||||
wm_adsp2_component_remove(&priv->core.adsp[i], component);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int wm5110_codec_remove(struct snd_soc_codec *codec)
|
||||
static void wm5110_component_remove(struct snd_soc_component *component)
|
||||
{
|
||||
struct wm5110_priv *priv = snd_soc_codec_get_drvdata(codec);
|
||||
struct wm5110_priv *priv = snd_soc_component_get_drvdata(component);
|
||||
int i;
|
||||
|
||||
for (i = 0; i < WM5110_NUM_ADSP; ++i)
|
||||
wm_adsp2_codec_remove(&priv->core.adsp[i], codec);
|
||||
wm_adsp2_component_remove(&priv->core.adsp[i], component);
|
||||
|
||||
priv->core.arizona->dapm = NULL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define WM5110_DIG_VU 0x0200
|
||||
@ -2359,25 +2356,22 @@ static struct snd_compr_ops wm5110_compr_ops = {
|
||||
.copy = wm_adsp_compr_copy,
|
||||
};
|
||||
|
||||
static const struct snd_soc_codec_driver soc_codec_dev_wm5110 = {
|
||||
.probe = wm5110_codec_probe,
|
||||
.remove = wm5110_codec_remove,
|
||||
|
||||
.idle_bias_off = true,
|
||||
|
||||
.set_sysclk = arizona_set_sysclk,
|
||||
.set_pll = wm5110_set_fll,
|
||||
|
||||
.component_driver = {
|
||||
.name = DRV_NAME,
|
||||
.compr_ops = &wm5110_compr_ops,
|
||||
.controls = wm5110_snd_controls,
|
||||
.num_controls = ARRAY_SIZE(wm5110_snd_controls),
|
||||
.dapm_widgets = wm5110_dapm_widgets,
|
||||
.num_dapm_widgets = ARRAY_SIZE(wm5110_dapm_widgets),
|
||||
.dapm_routes = wm5110_dapm_routes,
|
||||
.num_dapm_routes = ARRAY_SIZE(wm5110_dapm_routes),
|
||||
},
|
||||
static const struct snd_soc_component_driver soc_component_dev_wm5110 = {
|
||||
.probe = wm5110_component_probe,
|
||||
.remove = wm5110_component_remove,
|
||||
.set_sysclk = arizona_set_sysclk,
|
||||
.set_pll = wm5110_set_fll,
|
||||
.name = DRV_NAME,
|
||||
.compr_ops = &wm5110_compr_ops,
|
||||
.controls = wm5110_snd_controls,
|
||||
.num_controls = ARRAY_SIZE(wm5110_snd_controls),
|
||||
.dapm_widgets = wm5110_dapm_widgets,
|
||||
.num_dapm_widgets = ARRAY_SIZE(wm5110_dapm_widgets),
|
||||
.dapm_routes = wm5110_dapm_routes,
|
||||
.num_dapm_routes = ARRAY_SIZE(wm5110_dapm_routes),
|
||||
.use_pmdown_time = 1,
|
||||
.endianness = 1,
|
||||
.non_legacy_dai_naming = 1,
|
||||
};
|
||||
|
||||
static int wm5110_probe(struct platform_device *pdev)
|
||||
@ -2465,10 +2459,11 @@ static int wm5110_probe(struct platform_device *pdev)
|
||||
if (ret < 0)
|
||||
goto err_dsp_irq;
|
||||
|
||||
ret = snd_soc_register_codec(&pdev->dev, &soc_codec_dev_wm5110,
|
||||
ret = devm_snd_soc_register_component(&pdev->dev,
|
||||
&soc_component_dev_wm5110,
|
||||
wm5110_dai, ARRAY_SIZE(wm5110_dai));
|
||||
if (ret < 0) {
|
||||
dev_err(&pdev->dev, "Failed to register codec: %d\n", ret);
|
||||
dev_err(&pdev->dev, "Failed to register component: %d\n", ret);
|
||||
goto err_spk_irqs;
|
||||
}
|
||||
|
||||
@ -2488,7 +2483,6 @@ static int wm5110_remove(struct platform_device *pdev)
|
||||
struct arizona *arizona = wm5110->core.arizona;
|
||||
int i;
|
||||
|
||||
snd_soc_unregister_codec(&pdev->dev);
|
||||
pm_runtime_disable(&pdev->dev);
|
||||
|
||||
for (i = 0; i < WM5110_NUM_ADSP; i++)
|
||||
|
@ -84,8 +84,8 @@ static const struct reg_default wm8997_sysclk_reva_patch[] = {
|
||||
static int wm8997_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 *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);
|
||||
struct regmap *regmap = arizona->regmap;
|
||||
const struct reg_default *patch = NULL;
|
||||
int i, patch_size;
|
||||
@ -927,10 +927,10 @@ static const struct snd_soc_dapm_route wm8997_dapm_routes[] = {
|
||||
{ "MICSUPP", NULL, "SYSCLK" },
|
||||
};
|
||||
|
||||
static int wm8997_set_fll(struct snd_soc_codec *codec, int fll_id, int source,
|
||||
static int wm8997_set_fll(struct snd_soc_component *component, int fll_id, int source,
|
||||
unsigned int Fref, unsigned int Fout)
|
||||
{
|
||||
struct wm8997_priv *wm8997 = snd_soc_codec_get_drvdata(codec);
|
||||
struct wm8997_priv *wm8997 = snd_soc_component_get_drvdata(component);
|
||||
|
||||
switch (fll_id) {
|
||||
case WM8997_FLL1:
|
||||
@ -1057,17 +1057,16 @@ static struct snd_soc_dai_driver wm8997_dai[] = {
|
||||
},
|
||||
};
|
||||
|
||||
static int wm8997_codec_probe(struct snd_soc_codec *codec)
|
||||
static int wm8997_component_probe(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 wm8997_priv *priv = snd_soc_codec_get_drvdata(codec);
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_component_get_dapm(component);
|
||||
struct wm8997_priv *priv = snd_soc_component_get_drvdata(component);
|
||||
struct arizona *arizona = priv->core.arizona;
|
||||
int ret;
|
||||
|
||||
snd_soc_codec_init_regmap(codec, arizona->regmap);
|
||||
snd_soc_component_init_regmap(component, arizona->regmap);
|
||||
|
||||
ret = arizona_init_spk(codec);
|
||||
ret = arizona_init_spk(component);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
@ -1078,13 +1077,11 @@ static int wm8997_codec_probe(struct snd_soc_codec *codec)
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int wm8997_codec_remove(struct snd_soc_codec *codec)
|
||||
static void wm8997_component_remove(struct snd_soc_component *component)
|
||||
{
|
||||
struct wm8997_priv *priv = snd_soc_codec_get_drvdata(codec);
|
||||
struct wm8997_priv *priv = snd_soc_component_get_drvdata(component);
|
||||
|
||||
priv->core.arizona->dapm = NULL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define WM8997_DIG_VU 0x0200
|
||||
@ -1098,23 +1095,20 @@ static unsigned int wm8997_digital_vu[] = {
|
||||
ARIZONA_DAC_DIGITAL_VOLUME_5R,
|
||||
};
|
||||
|
||||
static const struct snd_soc_codec_driver soc_codec_dev_wm8997 = {
|
||||
.probe = wm8997_codec_probe,
|
||||
.remove = wm8997_codec_remove,
|
||||
|
||||
.idle_bias_off = true,
|
||||
|
||||
.set_sysclk = arizona_set_sysclk,
|
||||
.set_pll = wm8997_set_fll,
|
||||
|
||||
.component_driver = {
|
||||
.controls = wm8997_snd_controls,
|
||||
.num_controls = ARRAY_SIZE(wm8997_snd_controls),
|
||||
.dapm_widgets = wm8997_dapm_widgets,
|
||||
.num_dapm_widgets = ARRAY_SIZE(wm8997_dapm_widgets),
|
||||
.dapm_routes = wm8997_dapm_routes,
|
||||
.num_dapm_routes = ARRAY_SIZE(wm8997_dapm_routes),
|
||||
},
|
||||
static const struct snd_soc_component_driver soc_component_dev_wm8997 = {
|
||||
.probe = wm8997_component_probe,
|
||||
.remove = wm8997_component_remove,
|
||||
.set_sysclk = arizona_set_sysclk,
|
||||
.set_pll = wm8997_set_fll,
|
||||
.controls = wm8997_snd_controls,
|
||||
.num_controls = ARRAY_SIZE(wm8997_snd_controls),
|
||||
.dapm_widgets = wm8997_dapm_widgets,
|
||||
.num_dapm_widgets = ARRAY_SIZE(wm8997_dapm_widgets),
|
||||
.dapm_routes = wm8997_dapm_routes,
|
||||
.num_dapm_routes = ARRAY_SIZE(wm8997_dapm_routes),
|
||||
.use_pmdown_time = 1,
|
||||
.endianness = 1,
|
||||
.non_legacy_dai_naming = 1,
|
||||
};
|
||||
|
||||
static int wm8997_probe(struct platform_device *pdev)
|
||||
@ -1178,10 +1172,11 @@ static int wm8997_probe(struct platform_device *pdev)
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
ret = snd_soc_register_codec(&pdev->dev, &soc_codec_dev_wm8997,
|
||||
ret = devm_snd_soc_register_component(&pdev->dev,
|
||||
&soc_component_dev_wm8997,
|
||||
wm8997_dai, ARRAY_SIZE(wm8997_dai));
|
||||
if (ret < 0) {
|
||||
dev_err(&pdev->dev, "Failed to register codec: %d\n", ret);
|
||||
dev_err(&pdev->dev, "Failed to register component: %d\n", ret);
|
||||
goto err_spk_irqs;
|
||||
}
|
||||
|
||||
@ -1196,7 +1191,6 @@ static int wm8997_remove(struct platform_device *pdev)
|
||||
struct wm8997_priv *wm8997 = platform_get_drvdata(pdev);
|
||||
struct arizona *arizona = wm8997->core.arizona;
|
||||
|
||||
snd_soc_unregister_codec(&pdev->dev);
|
||||
pm_runtime_disable(&pdev->dev);
|
||||
|
||||
arizona_free_spk_irqs(arizona);
|
||||
|
@ -41,12 +41,12 @@ static int wm8998_asrc_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) {
|
||||
case SND_SOC_DAPM_PRE_PMU:
|
||||
val = snd_soc_read(codec, ARIZONA_ASRC_RATE1);
|
||||
val = snd_soc_component_read32(component, ARIZONA_ASRC_RATE1);
|
||||
val &= ARIZONA_ASRC_RATE1_MASK;
|
||||
val >>= ARIZONA_ASRC_RATE1_SHIFT;
|
||||
|
||||
@ -54,23 +54,23 @@ static int wm8998_asrc_ev(struct snd_soc_dapm_widget *w,
|
||||
case 0:
|
||||
case 1:
|
||||
case 2:
|
||||
val = snd_soc_read(codec,
|
||||
val = snd_soc_component_read32(component,
|
||||
ARIZONA_SAMPLE_RATE_1 + val);
|
||||
if (val >= 0x11) {
|
||||
dev_warn(codec->dev,
|
||||
dev_warn(component->dev,
|
||||
"Unsupported ASRC rate1 (%s)\n",
|
||||
arizona_sample_rate_val_to_name(val));
|
||||
return -EINVAL;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
dev_err(codec->dev,
|
||||
dev_err(component->dev,
|
||||
"Illegal ASRC rate1 selector (0x%x)\n",
|
||||
val);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
val = snd_soc_read(codec, ARIZONA_ASRC_RATE2);
|
||||
val = snd_soc_component_read32(component, ARIZONA_ASRC_RATE2);
|
||||
val &= ARIZONA_ASRC_RATE2_MASK;
|
||||
val >>= ARIZONA_ASRC_RATE2_SHIFT;
|
||||
|
||||
@ -78,17 +78,17 @@ static int wm8998_asrc_ev(struct snd_soc_dapm_widget *w,
|
||||
case 8:
|
||||
case 9:
|
||||
val -= 0x8;
|
||||
val = snd_soc_read(codec,
|
||||
val = snd_soc_component_read32(component,
|
||||
ARIZONA_ASYNC_SAMPLE_RATE_1 + val);
|
||||
if (val >= 0x11) {
|
||||
dev_warn(codec->dev,
|
||||
dev_warn(component->dev,
|
||||
"Unsupported ASRC rate2 (%s)\n",
|
||||
arizona_sample_rate_val_to_name(val));
|
||||
return -EINVAL;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
dev_err(codec->dev,
|
||||
dev_err(component->dev,
|
||||
"Illegal ASRC rate2 selector (0x%x)\n",
|
||||
val);
|
||||
return -EINVAL;
|
||||
@ -104,9 +104,9 @@ static int wm8998_asrc_ev(struct snd_soc_dapm_widget *w,
|
||||
static int wm8998_inmux_put(struct snd_kcontrol *kcontrol,
|
||||
struct snd_ctl_elem_value *ucontrol)
|
||||
{
|
||||
struct snd_soc_codec *codec = snd_soc_dapm_kcontrol_codec(kcontrol);
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
struct wm8998_priv *wm8998 = snd_soc_codec_get_drvdata(codec);
|
||||
struct snd_soc_component *component = snd_soc_dapm_kcontrol_component(kcontrol);
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_component_get_dapm(component);
|
||||
struct wm8998_priv *wm8998 = snd_soc_component_get_drvdata(component);
|
||||
struct arizona *arizona = wm8998->core.arizona;
|
||||
struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
|
||||
unsigned int mode_reg, mode_index;
|
||||
@ -137,9 +137,9 @@ static int wm8998_inmux_put(struct snd_kcontrol *kcontrol,
|
||||
if (inmode & ARIZONA_INMODE_SE)
|
||||
src_val |= 1 << ARIZONA_IN1L_SRC_SE_SHIFT;
|
||||
|
||||
snd_soc_update_bits(codec, mode_reg, ARIZONA_IN1_MODE_MASK, mode_val);
|
||||
snd_soc_component_update_bits(component, mode_reg, ARIZONA_IN1_MODE_MASK, mode_val);
|
||||
|
||||
snd_soc_update_bits(codec, e->reg,
|
||||
snd_soc_component_update_bits(component, e->reg,
|
||||
ARIZONA_IN1L_SRC_MASK | ARIZONA_IN1L_SRC_SE_MASK,
|
||||
src_val);
|
||||
|
||||
@ -1249,10 +1249,10 @@ static struct snd_soc_dai_driver wm8998_dai[] = {
|
||||
},
|
||||
};
|
||||
|
||||
static int wm8998_set_fll(struct snd_soc_codec *codec, int fll_id, int source,
|
||||
static int wm8998_set_fll(struct snd_soc_component *component, int fll_id, int source,
|
||||
unsigned int Fref, unsigned int Fout)
|
||||
{
|
||||
struct wm8998_priv *wm8998 = snd_soc_codec_get_drvdata(codec);
|
||||
struct wm8998_priv *wm8998 = snd_soc_component_get_drvdata(component);
|
||||
|
||||
switch (fll_id) {
|
||||
case WM8998_FLL1:
|
||||
@ -1270,35 +1270,32 @@ static int wm8998_set_fll(struct snd_soc_codec *codec, int fll_id, int source,
|
||||
}
|
||||
}
|
||||
|
||||
static int wm8998_codec_probe(struct snd_soc_codec *codec)
|
||||
static int wm8998_component_probe(struct snd_soc_component *component)
|
||||
{
|
||||
struct wm8998_priv *priv = snd_soc_codec_get_drvdata(codec);
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
struct snd_soc_component *component = snd_soc_dapm_to_component(dapm);
|
||||
struct wm8998_priv *priv = snd_soc_component_get_drvdata(component);
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_component_get_dapm(component);
|
||||
struct arizona *arizona = priv->core.arizona;
|
||||
int ret;
|
||||
|
||||
arizona->dapm = dapm;
|
||||
snd_soc_codec_init_regmap(codec, arizona->regmap);
|
||||
snd_soc_component_init_regmap(component, arizona->regmap);
|
||||
|
||||
ret = arizona_init_spk(codec);
|
||||
ret = arizona_init_spk(component);
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
arizona_init_gpio(codec);
|
||||
arizona_init_gpio(component);
|
||||
|
||||
snd_soc_component_disable_pin(component, "HAPTICS");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
static int wm8998_codec_remove(struct snd_soc_codec *codec)
|
||||
static void wm8998_component_remove(struct snd_soc_component *component)
|
||||
{
|
||||
struct wm8998_priv *priv = snd_soc_codec_get_drvdata(codec);
|
||||
struct wm8998_priv *priv = snd_soc_component_get_drvdata(component);
|
||||
|
||||
priv->core.arizona->dapm = NULL;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
#define WM8998_DIG_VU 0x0200
|
||||
@ -1315,23 +1312,20 @@ static unsigned int wm8998_digital_vu[] = {
|
||||
ARIZONA_DAC_DIGITAL_VOLUME_5R,
|
||||
};
|
||||
|
||||
static const struct snd_soc_codec_driver soc_codec_dev_wm8998 = {
|
||||
.probe = wm8998_codec_probe,
|
||||
.remove = wm8998_codec_remove,
|
||||
|
||||
.idle_bias_off = true,
|
||||
|
||||
.set_sysclk = arizona_set_sysclk,
|
||||
.set_pll = wm8998_set_fll,
|
||||
|
||||
.component_driver = {
|
||||
.controls = wm8998_snd_controls,
|
||||
.num_controls = ARRAY_SIZE(wm8998_snd_controls),
|
||||
.dapm_widgets = wm8998_dapm_widgets,
|
||||
.num_dapm_widgets = ARRAY_SIZE(wm8998_dapm_widgets),
|
||||
.dapm_routes = wm8998_dapm_routes,
|
||||
.num_dapm_routes = ARRAY_SIZE(wm8998_dapm_routes),
|
||||
},
|
||||
static const struct snd_soc_component_driver soc_component_dev_wm8998 = {
|
||||
.probe = wm8998_component_probe,
|
||||
.remove = wm8998_component_remove,
|
||||
.set_sysclk = arizona_set_sysclk,
|
||||
.set_pll = wm8998_set_fll,
|
||||
.controls = wm8998_snd_controls,
|
||||
.num_controls = ARRAY_SIZE(wm8998_snd_controls),
|
||||
.dapm_widgets = wm8998_dapm_widgets,
|
||||
.num_dapm_widgets = ARRAY_SIZE(wm8998_dapm_widgets),
|
||||
.dapm_routes = wm8998_dapm_routes,
|
||||
.num_dapm_routes = ARRAY_SIZE(wm8998_dapm_routes),
|
||||
.use_pmdown_time = 1,
|
||||
.endianness = 1,
|
||||
.non_legacy_dai_naming = 1,
|
||||
};
|
||||
|
||||
static int wm8998_probe(struct platform_device *pdev)
|
||||
@ -1384,10 +1378,11 @@ static int wm8998_probe(struct platform_device *pdev)
|
||||
if (ret < 0)
|
||||
return ret;
|
||||
|
||||
ret = snd_soc_register_codec(&pdev->dev, &soc_codec_dev_wm8998,
|
||||
ret = devm_snd_soc_register_component(&pdev->dev,
|
||||
&soc_component_dev_wm8998,
|
||||
wm8998_dai, ARRAY_SIZE(wm8998_dai));
|
||||
if (ret < 0) {
|
||||
dev_err(&pdev->dev, "Failed to register codec: %d\n", ret);
|
||||
dev_err(&pdev->dev, "Failed to register component: %d\n", ret);
|
||||
goto err_spk_irqs;
|
||||
}
|
||||
|
||||
@ -1404,7 +1399,6 @@ static int wm8998_remove(struct platform_device *pdev)
|
||||
struct wm8998_priv *wm8998 = platform_get_drvdata(pdev);
|
||||
struct arizona *arizona = wm8998->core.arizona;
|
||||
|
||||
snd_soc_unregister_codec(&pdev->dev);
|
||||
pm_runtime_disable(&pdev->dev);
|
||||
|
||||
arizona_free_spk_irqs(arizona);
|
||||
|
@ -605,13 +605,13 @@ static const struct {
|
||||
};
|
||||
|
||||
static void wm_adsp2_init_debugfs(struct wm_adsp *dsp,
|
||||
struct snd_soc_codec *codec)
|
||||
struct snd_soc_component *component)
|
||||
{
|
||||
struct dentry *root = NULL;
|
||||
char *root_name;
|
||||
int i;
|
||||
|
||||
if (!codec->component.debugfs_root) {
|
||||
if (!component->debugfs_root) {
|
||||
adsp_err(dsp, "No codec debugfs root\n");
|
||||
goto err;
|
||||
}
|
||||
@ -621,7 +621,7 @@ static void wm_adsp2_init_debugfs(struct wm_adsp *dsp,
|
||||
goto err;
|
||||
|
||||
snprintf(root_name, PAGE_SIZE, "dsp%d", dsp->num);
|
||||
root = debugfs_create_dir(root_name, codec->component.debugfs_root);
|
||||
root = debugfs_create_dir(root_name, component->debugfs_root);
|
||||
kfree(root_name);
|
||||
|
||||
if (!root)
|
||||
@ -662,7 +662,7 @@ static void wm_adsp2_cleanup_debugfs(struct wm_adsp *dsp)
|
||||
}
|
||||
#else
|
||||
static inline void wm_adsp2_init_debugfs(struct wm_adsp *dsp,
|
||||
struct snd_soc_codec *codec)
|
||||
struct snd_soc_component *component)
|
||||
{
|
||||
}
|
||||
|
||||
@ -688,9 +688,9 @@ static inline void wm_adsp_debugfs_clear(struct wm_adsp *dsp)
|
||||
static int wm_adsp_fw_get(struct snd_kcontrol *kcontrol,
|
||||
struct snd_ctl_elem_value *ucontrol)
|
||||
{
|
||||
struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol);
|
||||
struct snd_soc_component *component = snd_soc_kcontrol_component(kcontrol);
|
||||
struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
|
||||
struct wm_adsp *dsp = snd_soc_codec_get_drvdata(codec);
|
||||
struct wm_adsp *dsp = snd_soc_component_get_drvdata(component);
|
||||
|
||||
ucontrol->value.enumerated.item[0] = dsp[e->shift_l].fw;
|
||||
|
||||
@ -700,9 +700,9 @@ static int wm_adsp_fw_get(struct snd_kcontrol *kcontrol,
|
||||
static int wm_adsp_fw_put(struct snd_kcontrol *kcontrol,
|
||||
struct snd_ctl_elem_value *ucontrol)
|
||||
{
|
||||
struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol);
|
||||
struct snd_soc_component *component = snd_soc_kcontrol_component(kcontrol);
|
||||
struct soc_enum *e = (struct soc_enum *)kcontrol->private_value;
|
||||
struct wm_adsp *dsp = snd_soc_codec_get_drvdata(codec);
|
||||
struct wm_adsp *dsp = snd_soc_component_get_drvdata(component);
|
||||
int ret = 0;
|
||||
|
||||
if (ucontrol->value.enumerated.item[0] == dsp[e->shift_l].fw)
|
||||
@ -1213,7 +1213,7 @@ static int wmfw_add_ctl(struct wm_adsp *dsp, struct wm_coeff_ctl *ctl)
|
||||
break;
|
||||
}
|
||||
|
||||
ret = snd_soc_add_codec_controls(dsp->codec, kcontrol, 1);
|
||||
ret = snd_soc_add_component_controls(dsp->component, kcontrol, 1);
|
||||
if (ret < 0)
|
||||
goto err_kcontrol;
|
||||
|
||||
@ -2396,14 +2396,14 @@ int wm_adsp1_event(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 wm_adsp *dsps = snd_soc_codec_get_drvdata(codec);
|
||||
struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm);
|
||||
struct wm_adsp *dsps = snd_soc_component_get_drvdata(component);
|
||||
struct wm_adsp *dsp = &dsps[w->shift];
|
||||
struct wm_coeff_ctl *ctl;
|
||||
int ret;
|
||||
unsigned int val;
|
||||
|
||||
dsp->codec = codec;
|
||||
dsp->component = component;
|
||||
|
||||
mutex_lock(&dsp->pwr_lock);
|
||||
|
||||
@ -2633,8 +2633,8 @@ static void wm_adsp2_set_dspclk(struct wm_adsp *dsp, unsigned int freq)
|
||||
int wm_adsp2_preloader_get(struct snd_kcontrol *kcontrol,
|
||||
struct snd_ctl_elem_value *ucontrol)
|
||||
{
|
||||
struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol);
|
||||
struct wm_adsp *dsp = snd_soc_codec_get_drvdata(codec);
|
||||
struct snd_soc_component *component = snd_soc_kcontrol_component(kcontrol);
|
||||
struct wm_adsp *dsp = snd_soc_component_get_drvdata(component);
|
||||
|
||||
ucontrol->value.integer.value[0] = dsp->preloaded;
|
||||
|
||||
@ -2645,9 +2645,9 @@ EXPORT_SYMBOL_GPL(wm_adsp2_preloader_get);
|
||||
int wm_adsp2_preloader_put(struct snd_kcontrol *kcontrol,
|
||||
struct snd_ctl_elem_value *ucontrol)
|
||||
{
|
||||
struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol);
|
||||
struct wm_adsp *dsp = snd_soc_codec_get_drvdata(codec);
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
struct snd_soc_component *component = snd_soc_kcontrol_component(kcontrol);
|
||||
struct wm_adsp *dsp = snd_soc_component_get_drvdata(component);
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_component_get_dapm(component);
|
||||
struct soc_mixer_control *mc =
|
||||
(struct soc_mixer_control *)kcontrol->private_value;
|
||||
char preload[32];
|
||||
@ -2683,8 +2683,8 @@ int wm_adsp2_early_event(struct snd_soc_dapm_widget *w,
|
||||
struct snd_kcontrol *kcontrol, int event,
|
||||
unsigned int freq)
|
||||
{
|
||||
struct snd_soc_codec *codec = snd_soc_dapm_to_codec(w->dapm);
|
||||
struct wm_adsp *dsps = snd_soc_codec_get_drvdata(codec);
|
||||
struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm);
|
||||
struct wm_adsp *dsps = snd_soc_component_get_drvdata(component);
|
||||
struct wm_adsp *dsp = &dsps[w->shift];
|
||||
struct wm_coeff_ctl *ctl;
|
||||
|
||||
@ -2726,8 +2726,8 @@ EXPORT_SYMBOL_GPL(wm_adsp2_early_event);
|
||||
int wm_adsp2_event(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 wm_adsp *dsps = snd_soc_codec_get_drvdata(codec);
|
||||
struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm);
|
||||
struct wm_adsp *dsps = snd_soc_component_get_drvdata(component);
|
||||
struct wm_adsp *dsp = &dsps[w->shift];
|
||||
int ret;
|
||||
|
||||
@ -2841,31 +2841,31 @@ err:
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(wm_adsp2_event);
|
||||
|
||||
int wm_adsp2_codec_probe(struct wm_adsp *dsp, struct snd_soc_codec *codec)
|
||||
int wm_adsp2_component_probe(struct wm_adsp *dsp, struct snd_soc_component *component)
|
||||
{
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec);
|
||||
struct snd_soc_dapm_context *dapm = snd_soc_component_get_dapm(component);
|
||||
char preload[32];
|
||||
|
||||
snprintf(preload, ARRAY_SIZE(preload), "DSP%d Preload", dsp->num);
|
||||
snd_soc_dapm_disable_pin(dapm, preload);
|
||||
|
||||
wm_adsp2_init_debugfs(dsp, codec);
|
||||
wm_adsp2_init_debugfs(dsp, component);
|
||||
|
||||
dsp->codec = codec;
|
||||
dsp->component = component;
|
||||
|
||||
return snd_soc_add_codec_controls(codec,
|
||||
return snd_soc_add_component_controls(component,
|
||||
&wm_adsp_fw_controls[dsp->num - 1],
|
||||
1);
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(wm_adsp2_codec_probe);
|
||||
EXPORT_SYMBOL_GPL(wm_adsp2_component_probe);
|
||||
|
||||
int wm_adsp2_codec_remove(struct wm_adsp *dsp, struct snd_soc_codec *codec)
|
||||
int wm_adsp2_component_remove(struct wm_adsp *dsp, struct snd_soc_component *component)
|
||||
{
|
||||
wm_adsp2_cleanup_debugfs(dsp);
|
||||
|
||||
return 0;
|
||||
}
|
||||
EXPORT_SYMBOL_GPL(wm_adsp2_codec_remove);
|
||||
EXPORT_SYMBOL_GPL(wm_adsp2_component_remove);
|
||||
|
||||
int wm_adsp2_init(struct wm_adsp *dsp)
|
||||
{
|
||||
|
@ -62,7 +62,7 @@ struct wm_adsp {
|
||||
int type;
|
||||
struct device *dev;
|
||||
struct regmap *regmap;
|
||||
struct snd_soc_codec *codec;
|
||||
struct snd_soc_component *component;
|
||||
|
||||
int base;
|
||||
int sysclk_reg;
|
||||
@ -126,8 +126,8 @@ extern const struct snd_kcontrol_new wm_adsp_fw_controls[];
|
||||
int wm_adsp1_init(struct wm_adsp *dsp);
|
||||
int wm_adsp2_init(struct wm_adsp *dsp);
|
||||
void wm_adsp2_remove(struct wm_adsp *dsp);
|
||||
int wm_adsp2_codec_probe(struct wm_adsp *dsp, struct snd_soc_codec *codec);
|
||||
int wm_adsp2_codec_remove(struct wm_adsp *dsp, struct snd_soc_codec *codec);
|
||||
int wm_adsp2_component_probe(struct wm_adsp *dsp, struct snd_soc_component *component);
|
||||
int wm_adsp2_component_remove(struct wm_adsp *dsp, struct snd_soc_component *component);
|
||||
int wm_adsp1_event(struct snd_soc_dapm_widget *w,
|
||||
struct snd_kcontrol *kcontrol, int event);
|
||||
int wm_adsp2_early_event(struct snd_soc_dapm_widget *w,
|
||||
|
@ -31,7 +31,7 @@
|
||||
#define TM2_DAI_AIF2 1
|
||||
|
||||
struct tm2_machine_priv {
|
||||
struct snd_soc_codec *codec;
|
||||
struct snd_soc_component *component;
|
||||
unsigned int sysclk_rate;
|
||||
struct gpio_desc *gpio_mic_bias;
|
||||
};
|
||||
@ -39,33 +39,33 @@ struct tm2_machine_priv {
|
||||
static int tm2_start_sysclk(struct snd_soc_card *card)
|
||||
{
|
||||
struct tm2_machine_priv *priv = snd_soc_card_get_drvdata(card);
|
||||
struct snd_soc_codec *codec = priv->codec;
|
||||
struct snd_soc_component *component = priv->component;
|
||||
int ret;
|
||||
|
||||
ret = snd_soc_codec_set_pll(codec, WM5110_FLL1_REFCLK,
|
||||
ret = snd_soc_component_set_pll(component, WM5110_FLL1_REFCLK,
|
||||
ARIZONA_FLL_SRC_MCLK1,
|
||||
MCLK_RATE,
|
||||
priv->sysclk_rate);
|
||||
if (ret < 0) {
|
||||
dev_err(codec->dev, "Failed to set FLL1 source: %d\n", ret);
|
||||
dev_err(component->dev, "Failed to set FLL1 source: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = snd_soc_codec_set_pll(codec, WM5110_FLL1,
|
||||
ret = snd_soc_component_set_pll(component, WM5110_FLL1,
|
||||
ARIZONA_FLL_SRC_MCLK1,
|
||||
MCLK_RATE,
|
||||
priv->sysclk_rate);
|
||||
if (ret < 0) {
|
||||
dev_err(codec->dev, "Failed to start FLL1: %d\n", ret);
|
||||
dev_err(component->dev, "Failed to start FLL1: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = snd_soc_codec_set_sysclk(codec, ARIZONA_CLK_SYSCLK,
|
||||
ret = snd_soc_component_set_sysclk(component, ARIZONA_CLK_SYSCLK,
|
||||
ARIZONA_CLK_SRC_FLL1,
|
||||
priv->sysclk_rate,
|
||||
SND_SOC_CLOCK_IN);
|
||||
if (ret < 0) {
|
||||
dev_err(codec->dev, "Failed to set SYSCLK source: %d\n", ret);
|
||||
dev_err(component->dev, "Failed to set SYSCLK source: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -75,19 +75,19 @@ static int tm2_start_sysclk(struct snd_soc_card *card)
|
||||
static int tm2_stop_sysclk(struct snd_soc_card *card)
|
||||
{
|
||||
struct tm2_machine_priv *priv = snd_soc_card_get_drvdata(card);
|
||||
struct snd_soc_codec *codec = priv->codec;
|
||||
struct snd_soc_component *component = priv->component;
|
||||
int ret;
|
||||
|
||||
ret = snd_soc_codec_set_pll(codec, WM5110_FLL1, 0, 0, 0);
|
||||
ret = snd_soc_component_set_pll(component, WM5110_FLL1, 0, 0, 0);
|
||||
if (ret < 0) {
|
||||
dev_err(codec->dev, "Failed to stop FLL1: %d\n", ret);
|
||||
dev_err(component->dev, "Failed to stop FLL1: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = snd_soc_codec_set_sysclk(codec, ARIZONA_CLK_SYSCLK,
|
||||
ret = snd_soc_component_set_sysclk(component, ARIZONA_CLK_SYSCLK,
|
||||
ARIZONA_CLK_SRC_FLL1, 0, 0);
|
||||
if (ret < 0) {
|
||||
dev_err(codec->dev, "Failed to stop SYSCLK: %d\n", ret);
|
||||
dev_err(component->dev, "Failed to stop SYSCLK: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -98,7 +98,7 @@ static int tm2_aif1_hw_params(struct snd_pcm_substream *substream,
|
||||
struct snd_pcm_hw_params *params)
|
||||
{
|
||||
struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||
struct snd_soc_codec *codec = rtd->codec;
|
||||
struct snd_soc_component *component = rtd->codec_dai->component;
|
||||
struct tm2_machine_priv *priv = snd_soc_card_get_drvdata(rtd->card);
|
||||
|
||||
switch (params_rate(params)) {
|
||||
@ -123,7 +123,7 @@ static int tm2_aif1_hw_params(struct snd_pcm_substream *substream,
|
||||
priv->sysclk_rate = 135475200U;
|
||||
break;
|
||||
default:
|
||||
dev_err(codec->dev, "Not supported sample rate: %d\n",
|
||||
dev_err(component->dev, "Not supported sample rate: %d\n",
|
||||
params_rate(params));
|
||||
return -EINVAL;
|
||||
}
|
||||
@ -139,7 +139,7 @@ static int tm2_aif2_hw_params(struct snd_pcm_substream *substream,
|
||||
struct snd_pcm_hw_params *params)
|
||||
{
|
||||
struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||
struct snd_soc_codec *codec = rtd->codec;
|
||||
struct snd_soc_component *component = rtd->codec_dai->component;
|
||||
unsigned int asyncclk_rate;
|
||||
int ret;
|
||||
|
||||
@ -155,35 +155,35 @@ static int tm2_aif2_hw_params(struct snd_pcm_substream *substream,
|
||||
asyncclk_rate = 45158400U;
|
||||
break;
|
||||
default:
|
||||
dev_err(codec->dev, "Not supported sample rate: %d\n",
|
||||
dev_err(component->dev, "Not supported sample rate: %d\n",
|
||||
params_rate(params));
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
ret = snd_soc_codec_set_pll(codec, WM5110_FLL2_REFCLK,
|
||||
ret = snd_soc_component_set_pll(component, WM5110_FLL2_REFCLK,
|
||||
ARIZONA_FLL_SRC_MCLK1,
|
||||
MCLK_RATE,
|
||||
asyncclk_rate);
|
||||
if (ret < 0) {
|
||||
dev_err(codec->dev, "Failed to set FLL2 source: %d\n", ret);
|
||||
dev_err(component->dev, "Failed to set FLL2 source: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = snd_soc_codec_set_pll(codec, WM5110_FLL2,
|
||||
ret = snd_soc_component_set_pll(component, WM5110_FLL2,
|
||||
ARIZONA_FLL_SRC_MCLK1,
|
||||
MCLK_RATE,
|
||||
asyncclk_rate);
|
||||
if (ret < 0) {
|
||||
dev_err(codec->dev, "Failed to start FLL2: %d\n", ret);
|
||||
dev_err(component->dev, "Failed to start FLL2: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = snd_soc_codec_set_sysclk(codec, ARIZONA_CLK_ASYNCCLK,
|
||||
ret = snd_soc_component_set_sysclk(component, ARIZONA_CLK_ASYNCCLK,
|
||||
ARIZONA_CLK_SRC_FLL2,
|
||||
asyncclk_rate,
|
||||
SND_SOC_CLOCK_IN);
|
||||
if (ret < 0) {
|
||||
dev_err(codec->dev, "Failed to set ASYNCCLK source: %d\n", ret);
|
||||
dev_err(component->dev, "Failed to set ASYNCCLK source: %d\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
@ -193,14 +193,14 @@ static int tm2_aif2_hw_params(struct snd_pcm_substream *substream,
|
||||
static int tm2_aif2_hw_free(struct snd_pcm_substream *substream)
|
||||
{
|
||||
struct snd_soc_pcm_runtime *rtd = substream->private_data;
|
||||
struct snd_soc_codec *codec = rtd->codec;
|
||||
struct snd_soc_component *component = rtd->codec_dai->component;
|
||||
int ret;
|
||||
|
||||
/* disable FLL2 */
|
||||
ret = snd_soc_codec_set_pll(codec, WM5110_FLL2, ARIZONA_FLL_SRC_MCLK1,
|
||||
ret = snd_soc_component_set_pll(component, WM5110_FLL2, ARIZONA_FLL_SRC_MCLK1,
|
||||
0, 0);
|
||||
if (ret < 0)
|
||||
dev_err(codec->dev, "Failed to stop FLL2: %d\n", ret);
|
||||
dev_err(component->dev, "Failed to stop FLL2: %d\n", ret);
|
||||
|
||||
return ret;
|
||||
}
|
||||
@ -269,7 +269,7 @@ static int tm2_late_probe(struct snd_soc_card *card)
|
||||
|
||||
rtd = snd_soc_get_pcm_runtime(card, card->dai_link[TM2_DAI_AIF1].name);
|
||||
aif1_dai = rtd->codec_dai;
|
||||
priv->codec = rtd->codec;
|
||||
priv->component = rtd->codec_dai->component;
|
||||
|
||||
ret = snd_soc_dai_set_sysclk(aif1_dai, ARIZONA_CLK_SYSCLK, 0, 0);
|
||||
if (ret < 0) {
|
||||
|
Loading…
Reference in New Issue
Block a user