From 0ec65b677c255204d8a26efea400fd7a37771476 Mon Sep 17 00:00:00 2001 From: Kuninori Morimoto Date: Mon, 29 Jan 2018 03:53:32 +0000 Subject: [PATCH 1/5] ASoC: cs4349: replace codec to component Now we can replace Codec to Component. Let's do it. Note: xxx_codec_xxx() -> xxx_component_xxx() .idle_bias_off = 0 -> .idle_bias_on = 1 .ignore_pmdown_time = 0 -> .use_pmdown_time = 1 - -> .endianness = 1 - -> .non_legacy_dai_naming = 1 Signed-off-by: Kuninori Morimoto Signed-off-by: Mark Brown --- sound/soc/codecs/cs4349.c | 39 ++++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 19 deletions(-) diff --git a/sound/soc/codecs/cs4349.c b/sound/soc/codecs/cs4349.c index 0a749c79ef57..bee0e343723f 100644 --- a/sound/soc/codecs/cs4349.c +++ b/sound/soc/codecs/cs4349.c @@ -74,8 +74,8 @@ static bool cs4349_writeable_register(struct device *dev, unsigned int reg) static int cs4349_set_dai_fmt(struct snd_soc_dai *codec_dai, unsigned int format) { - struct snd_soc_codec *codec = codec_dai->codec; - struct cs4349_private *cs4349 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = codec_dai->component; + struct cs4349_private *cs4349 = snd_soc_component_get_drvdata(component); unsigned int fmt; fmt = format & SND_SOC_DAIFMT_FORMAT_MASK; @@ -97,8 +97,8 @@ static int cs4349_pcm_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 cs4349_private *cs4349 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = dai->component; + struct cs4349_private *cs4349 = snd_soc_component_get_drvdata(component); int fmt, ret; cs4349->rate = params_rate(params); @@ -126,7 +126,7 @@ static int cs4349_pcm_hw_params(struct snd_pcm_substream *substream, return -EINVAL; } - ret = snd_soc_update_bits(codec, CS4349_MODE, DIF_MASK, + ret = snd_soc_component_update_bits(component, CS4349_MODE, DIF_MASK, MODE_FORMAT(fmt)); if (ret < 0) return ret; @@ -136,14 +136,14 @@ static int cs4349_pcm_hw_params(struct snd_pcm_substream *substream, static int cs4349_digital_mute(struct snd_soc_dai *dai, int mute) { - struct snd_soc_codec *codec = dai->codec; + struct snd_soc_component *component = dai->component; int reg; reg = 0; if (mute) reg = MUTE_AB_MASK; - return snd_soc_update_bits(codec, CS4349_MUTE, MUTE_AB_MASK, reg); + return snd_soc_component_update_bits(component, CS4349_MUTE, MUTE_AB_MASK, reg); } static DECLARE_TLV_DB_SCALE(dig_tlv, -12750, 50, 0); @@ -255,15 +255,17 @@ static struct snd_soc_dai_driver cs4349_dai = { .symmetric_rates = 1, }; -static const struct snd_soc_codec_driver soc_codec_dev_cs4349 = { - .component_driver = { - .controls = cs4349_snd_controls, - .num_controls = ARRAY_SIZE(cs4349_snd_controls), - .dapm_widgets = cs4349_dapm_widgets, - .num_dapm_widgets = ARRAY_SIZE(cs4349_dapm_widgets), - .dapm_routes = cs4349_routes, - .num_dapm_routes = ARRAY_SIZE(cs4349_routes), - }, +static const struct snd_soc_component_driver soc_component_dev_cs4349 = { + .controls = cs4349_snd_controls, + .num_controls = ARRAY_SIZE(cs4349_snd_controls), + .dapm_widgets = cs4349_dapm_widgets, + .num_dapm_widgets = ARRAY_SIZE(cs4349_dapm_widgets), + .dapm_routes = cs4349_routes, + .num_dapm_routes = ARRAY_SIZE(cs4349_routes), + .idle_bias_on = 1, + .use_pmdown_time = 1, + .endianness = 1, + .non_legacy_dai_naming = 1, }; static const struct regmap_config cs4349_regmap = { @@ -305,7 +307,8 @@ static int cs4349_i2c_probe(struct i2c_client *client, i2c_set_clientdata(client, cs4349); - return snd_soc_register_codec(&client->dev, &soc_codec_dev_cs4349, + return devm_snd_soc_register_component(&client->dev, + &soc_component_dev_cs4349, &cs4349_dai, 1); } @@ -313,8 +316,6 @@ static int cs4349_i2c_remove(struct i2c_client *client) { struct cs4349_private *cs4349 = i2c_get_clientdata(client); - snd_soc_unregister_codec(&client->dev); - /* Hold down reset */ gpiod_set_value_cansleep(cs4349->reset_gpio, 0); From 99a9f452093e40f82e51a2f49d95ee3c04ad298b Mon Sep 17 00:00:00 2001 From: Kuninori Morimoto Date: Mon, 29 Jan 2018 03:56:58 +0000 Subject: [PATCH 2/5] ASoC: cs42xx8: replace codec to component Now we can replace Codec to Component. Let's do it. Note: 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 Signed-off-by: Mark Brown --- sound/soc/codecs/cs42xx8-i2c.c | 1 - sound/soc/codecs/cs42xx8.c | 57 +++++++++++++++++----------------- 2 files changed, 28 insertions(+), 30 deletions(-) diff --git a/sound/soc/codecs/cs42xx8-i2c.c b/sound/soc/codecs/cs42xx8-i2c.c index 800c1d549347..0214e3ab9da0 100644 --- a/sound/soc/codecs/cs42xx8-i2c.c +++ b/sound/soc/codecs/cs42xx8-i2c.c @@ -33,7 +33,6 @@ static int cs42xx8_i2c_probe(struct i2c_client *i2c, static int cs42xx8_i2c_remove(struct i2c_client *i2c) { - snd_soc_unregister_codec(&i2c->dev); pm_runtime_disable(&i2c->dev); return 0; diff --git a/sound/soc/codecs/cs42xx8.c b/sound/soc/codecs/cs42xx8.c index c1785bd4ff19..ebb9e0cf8364 100644 --- a/sound/soc/codecs/cs42xx8.c +++ b/sound/soc/codecs/cs42xx8.c @@ -194,8 +194,8 @@ static const struct cs42xx8_ratios cs42xx8_ratios[] = { static int cs42xx8_set_dai_sysclk(struct snd_soc_dai *codec_dai, int clk_id, unsigned int freq, int dir) { - struct snd_soc_codec *codec = codec_dai->codec; - struct cs42xx8_priv *cs42xx8 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = codec_dai->component; + struct cs42xx8_priv *cs42xx8 = snd_soc_component_get_drvdata(component); cs42xx8->sysclk = freq; @@ -205,8 +205,8 @@ static int cs42xx8_set_dai_sysclk(struct snd_soc_dai *codec_dai, static int cs42xx8_set_dai_fmt(struct snd_soc_dai *codec_dai, unsigned int format) { - struct snd_soc_codec *codec = codec_dai->codec; - struct cs42xx8_priv *cs42xx8 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = codec_dai->component; + struct cs42xx8_priv *cs42xx8 = snd_soc_component_get_drvdata(component); u32 val; /* Set DAI format */ @@ -224,7 +224,7 @@ static int cs42xx8_set_dai_fmt(struct snd_soc_dai *codec_dai, val = CS42XX8_INTF_DAC_DIF_TDM | CS42XX8_INTF_ADC_DIF_TDM; break; default: - dev_err(codec->dev, "unsupported dai format\n"); + dev_err(component->dev, "unsupported dai format\n"); return -EINVAL; } @@ -241,7 +241,7 @@ static int cs42xx8_set_dai_fmt(struct snd_soc_dai *codec_dai, cs42xx8->slave_mode = false; break; default: - dev_err(codec->dev, "unsupported master/slave mode\n"); + dev_err(component->dev, "unsupported master/slave mode\n"); return -EINVAL; } @@ -252,8 +252,8 @@ static int cs42xx8_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 cs42xx8_priv *cs42xx8 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = dai->component; + struct cs42xx8_priv *cs42xx8 = snd_soc_component_get_drvdata(component); bool tx = substream->stream == SNDRV_PCM_STREAM_PLAYBACK; u32 ratio = cs42xx8->sysclk / params_rate(params); u32 i, fm, val, mask; @@ -267,7 +267,7 @@ static int cs42xx8_hw_params(struct snd_pcm_substream *substream, } if (i == ARRAY_SIZE(cs42xx8_ratios)) { - dev_err(codec->dev, "unsupported sysclk ratio\n"); + dev_err(component->dev, "unsupported sysclk ratio\n"); return -EINVAL; } @@ -285,8 +285,8 @@ static int cs42xx8_hw_params(struct snd_pcm_substream *substream, static int cs42xx8_digital_mute(struct snd_soc_dai *dai, int mute) { - struct snd_soc_codec *codec = dai->codec; - struct cs42xx8_priv *cs42xx8 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = dai->component; + struct cs42xx8_priv *cs42xx8 = snd_soc_component_get_drvdata(component); u8 dac_unmute = cs42xx8->tx_channels ? ~((0x1 << cs42xx8->tx_channels) - 1) : 0; @@ -382,14 +382,14 @@ const struct regmap_config cs42xx8_regmap_config = { }; EXPORT_SYMBOL_GPL(cs42xx8_regmap_config); -static int cs42xx8_codec_probe(struct snd_soc_codec *codec) +static int cs42xx8_component_probe(struct snd_soc_component *component) { - struct cs42xx8_priv *cs42xx8 = snd_soc_codec_get_drvdata(codec); - struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec); + struct cs42xx8_priv *cs42xx8 = snd_soc_component_get_drvdata(component); + struct snd_soc_dapm_context *dapm = snd_soc_component_get_dapm(component); switch (cs42xx8->drvdata->num_adcs) { case 3: - snd_soc_add_codec_controls(codec, cs42xx8_adc3_snd_controls, + snd_soc_add_component_controls(component, cs42xx8_adc3_snd_controls, ARRAY_SIZE(cs42xx8_adc3_snd_controls)); snd_soc_dapm_new_controls(dapm, cs42xx8_adc3_dapm_widgets, ARRAY_SIZE(cs42xx8_adc3_dapm_widgets)); @@ -406,18 +406,17 @@ static int cs42xx8_codec_probe(struct snd_soc_codec *codec) return 0; } -static const struct snd_soc_codec_driver cs42xx8_driver = { - .probe = cs42xx8_codec_probe, - .idle_bias_off = true, - - .component_driver = { - .controls = cs42xx8_snd_controls, - .num_controls = ARRAY_SIZE(cs42xx8_snd_controls), - .dapm_widgets = cs42xx8_dapm_widgets, - .num_dapm_widgets = ARRAY_SIZE(cs42xx8_dapm_widgets), - .dapm_routes = cs42xx8_dapm_routes, - .num_dapm_routes = ARRAY_SIZE(cs42xx8_dapm_routes), - }, +static const struct snd_soc_component_driver cs42xx8_driver = { + .probe = cs42xx8_component_probe, + .controls = cs42xx8_snd_controls, + .num_controls = ARRAY_SIZE(cs42xx8_snd_controls), + .dapm_widgets = cs42xx8_dapm_widgets, + .num_dapm_widgets = ARRAY_SIZE(cs42xx8_dapm_widgets), + .dapm_routes = cs42xx8_dapm_routes, + .num_dapm_routes = ARRAY_SIZE(cs42xx8_dapm_routes), + .use_pmdown_time = 1, + .endianness = 1, + .non_legacy_dai_naming = 1, }; const struct cs42xx8_driver_data cs42448_data = { @@ -520,9 +519,9 @@ int cs42xx8_probe(struct device *dev, struct regmap *regmap) /* Each adc supports stereo input */ cs42xx8_dai.capture.channels_max = cs42xx8->drvdata->num_adcs * 2; - ret = snd_soc_register_codec(dev, &cs42xx8_driver, &cs42xx8_dai, 1); + ret = devm_snd_soc_register_component(dev, &cs42xx8_driver, &cs42xx8_dai, 1); if (ret) { - dev_err(dev, "failed to register codec:%d\n", ret); + dev_err(dev, "failed to register component:%d\n", ret); goto err_enable; } From 092631bf863d6c632afc1ec935c3acb7b45a8622 Mon Sep 17 00:00:00 2001 From: Kuninori Morimoto Date: Mon, 29 Jan 2018 03:57:25 +0000 Subject: [PATCH 3/5] ASoC: cs42l73: replace codec to component Now we can replace Codec to Component. Let's do it. Note: xxx_codec_xxx() -> xxx_component_xxx() .idle_bias_off = 0 -> .idle_bias_on = 1 .ignore_pmdown_time = 0 -> .use_pmdown_time = 1 - -> .endianness = 1 - -> .non_legacy_dai_naming = 1 Signed-off-by: Kuninori Morimoto Signed-off-by: Mark Brown --- sound/soc/codecs/cs42l73.c | 122 ++++++++++++++++++------------------- 1 file changed, 58 insertions(+), 64 deletions(-) diff --git a/sound/soc/codecs/cs42l73.c b/sound/soc/codecs/cs42l73.c index aebaa97490b6..36b57ee00a30 100644 --- a/sound/soc/codecs/cs42l73.c +++ b/sound/soc/codecs/cs42l73.c @@ -490,8 +490,8 @@ static const struct snd_kcontrol_new cs42l73_snd_controls[] = { static int cs42l73_spklo_spk_amp_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 cs42l73_private *priv = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); + struct cs42l73_private *priv = snd_soc_component_get_drvdata(component); switch (event) { case SND_SOC_DAPM_POST_PMD: /* 150 ms delay between setting PDN and MCLKDIS */ @@ -506,8 +506,8 @@ static int cs42l73_spklo_spk_amp_event(struct snd_soc_dapm_widget *w, static int cs42l73_ear_amp_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 cs42l73_private *priv = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); + struct cs42l73_private *priv = snd_soc_component_get_drvdata(component); switch (event) { case SND_SOC_DAPM_POST_PMD: /* 50 ms delay between setting PDN and MCLKDIS */ @@ -524,8 +524,8 @@ static int cs42l73_ear_amp_event(struct snd_soc_dapm_widget *w, static int cs42l73_hp_amp_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 cs42l73_private *priv = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); + struct cs42l73_private *priv = snd_soc_component_get_drvdata(component); switch (event) { case SND_SOC_DAPM_POST_PMD: /* 30 ms delay between setting PDN and MCLKDIS */ @@ -884,8 +884,8 @@ static int cs42l73_get_mclk_coeff(int mclk, int srate) static int cs42l73_set_mclk(struct snd_soc_dai *dai, unsigned int freq) { - struct snd_soc_codec *codec = dai->codec; - struct cs42l73_private *priv = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = dai->component; + struct cs42l73_private *priv = snd_soc_component_get_drvdata(component); int mclkx_coeff; u32 mclk = 0; @@ -899,14 +899,14 @@ static int cs42l73_set_mclk(struct snd_soc_dai *dai, unsigned int freq) mclk = cs42l73_mclkx_coeffs[mclkx_coeff].mclkx / cs42l73_mclkx_coeffs[mclkx_coeff].ratio; - dev_dbg(codec->dev, "MCLK%u %u <-> internal MCLK %u\n", + dev_dbg(component->dev, "MCLK%u %u <-> internal MCLK %u\n", priv->mclksel + 1, cs42l73_mclkx_coeffs[mclkx_coeff].mclkx, mclk); dmmcc = (priv->mclksel << 4) | (cs42l73_mclkx_coeffs[mclkx_coeff].mclkdiv << 1); - snd_soc_write(codec, CS42L73_DMMCC, dmmcc); + snd_soc_component_write(component, CS42L73_DMMCC, dmmcc); priv->sysclk = mclkx_coeff; priv->mclk = mclk; @@ -917,8 +917,8 @@ static int cs42l73_set_mclk(struct snd_soc_dai *dai, unsigned int freq) static int cs42l73_set_sysclk(struct snd_soc_dai *dai, int clk_id, unsigned int freq, int dir) { - struct snd_soc_codec *codec = dai->codec; - struct cs42l73_private *priv = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = dai->component; + struct cs42l73_private *priv = snd_soc_component_get_drvdata(component); switch (clk_id) { case CS42L73_CLKID_MCLK1: @@ -930,7 +930,7 @@ static int cs42l73_set_sysclk(struct snd_soc_dai *dai, } if ((cs42l73_set_mclk(dai, freq)) < 0) { - dev_err(codec->dev, "Unable to set MCLK for dai %s\n", + dev_err(component->dev, "Unable to set MCLK for dai %s\n", dai->name); return -EINVAL; } @@ -942,14 +942,14 @@ static int cs42l73_set_sysclk(struct snd_soc_dai *dai, static int cs42l73_set_dai_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt) { - struct snd_soc_codec *codec = codec_dai->codec; - struct cs42l73_private *priv = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = codec_dai->component; + struct cs42l73_private *priv = snd_soc_component_get_drvdata(component); u8 id = codec_dai->id; unsigned int inv, format; u8 spc, mmcc; - spc = snd_soc_read(codec, CS42L73_SPC(id)); - mmcc = snd_soc_read(codec, CS42L73_MMCC(id)); + spc = snd_soc_component_read32(component, CS42L73_SPC(id)); + mmcc = snd_soc_component_read32(component, CS42L73_MMCC(id)); switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) { case SND_SOC_DAIFMT_CBM_CFM: @@ -974,12 +974,12 @@ static int cs42l73_set_dai_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt) case SND_SOC_DAIFMT_DSP_A: case SND_SOC_DAIFMT_DSP_B: if (mmcc & CS42L73_MS_MASTER) { - dev_err(codec->dev, + dev_err(component->dev, "PCM format in slave mode only\n"); return -EINVAL; } if (id == CS42L73_ASP) { - dev_err(codec->dev, + dev_err(component->dev, "PCM format is not supported on ASP port\n"); return -EINVAL; } @@ -1029,7 +1029,7 @@ static unsigned int cs42l73_get_xspfs_coeff(u32 rate) return 0; /* 0 = Don't know */ } -static void cs42l73_update_asrc(struct snd_soc_codec *codec, int id, int srate) +static void cs42l73_update_asrc(struct snd_soc_component *component, int id, int srate) { u8 spfs = 0; @@ -1038,13 +1038,13 @@ static void cs42l73_update_asrc(struct snd_soc_codec *codec, int id, int srate) switch (id) { case CS42L73_XSP: - snd_soc_update_bits(codec, CS42L73_VXSPFS, 0x0f, spfs); + snd_soc_component_update_bits(component, CS42L73_VXSPFS, 0x0f, spfs); break; case CS42L73_ASP: - snd_soc_update_bits(codec, CS42L73_ASPC, 0x3c, spfs << 2); + snd_soc_component_update_bits(component, CS42L73_ASPC, 0x3c, spfs << 2); break; case CS42L73_VSP: - snd_soc_update_bits(codec, CS42L73_VXSPFS, 0xf0, spfs << 4); + snd_soc_component_update_bits(component, CS42L73_VXSPFS, 0xf0, spfs << 4); break; default: break; @@ -1055,8 +1055,8 @@ static int cs42l73_pcm_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 cs42l73_private *priv = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = dai->component; + struct cs42l73_private *priv = snd_soc_component_get_drvdata(component); int id = dai->id; int mclk_coeff; int srate = params_rate(params); @@ -1070,7 +1070,7 @@ static int cs42l73_pcm_hw_params(struct snd_pcm_substream *substream, if (mclk_coeff < 0) return -EINVAL; - dev_dbg(codec->dev, + dev_dbg(component->dev, "DAI[%d]: MCLK %u, srate %u, MMCC[5:0] = %x\n", id, priv->mclk, srate, cs42l73_mclk_coeffs[mclk_coeff].mmcc); @@ -1091,38 +1091,38 @@ static int cs42l73_pcm_hw_params(struct snd_pcm_substream *substream, /* Update ASRCs */ priv->config[id].srate = srate; - snd_soc_write(codec, CS42L73_SPC(id), priv->config[id].spc); - snd_soc_write(codec, CS42L73_MMCC(id), priv->config[id].mmcc); + snd_soc_component_write(component, CS42L73_SPC(id), priv->config[id].spc); + snd_soc_component_write(component, CS42L73_MMCC(id), priv->config[id].mmcc); - cs42l73_update_asrc(codec, id, srate); + cs42l73_update_asrc(component, id, srate); return 0; } -static int cs42l73_set_bias_level(struct snd_soc_codec *codec, +static int cs42l73_set_bias_level(struct snd_soc_component *component, enum snd_soc_bias_level level) { - struct cs42l73_private *cs42l73 = snd_soc_codec_get_drvdata(codec); + struct cs42l73_private *cs42l73 = snd_soc_component_get_drvdata(component); switch (level) { case SND_SOC_BIAS_ON: - snd_soc_update_bits(codec, CS42L73_DMMCC, CS42L73_MCLKDIS, 0); - snd_soc_update_bits(codec, CS42L73_PWRCTL1, CS42L73_PDN, 0); + snd_soc_component_update_bits(component, CS42L73_DMMCC, CS42L73_MCLKDIS, 0); + snd_soc_component_update_bits(component, CS42L73_PWRCTL1, CS42L73_PDN, 0); break; case SND_SOC_BIAS_PREPARE: break; case SND_SOC_BIAS_STANDBY: - if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) { + if (snd_soc_component_get_bias_level(component) == SND_SOC_BIAS_OFF) { regcache_cache_only(cs42l73->regmap, false); regcache_sync(cs42l73->regmap); } - snd_soc_update_bits(codec, CS42L73_PWRCTL1, CS42L73_PDN, 1); + snd_soc_component_update_bits(component, CS42L73_PWRCTL1, CS42L73_PDN, 1); break; case SND_SOC_BIAS_OFF: - snd_soc_update_bits(codec, CS42L73_PWRCTL1, CS42L73_PDN, 1); + snd_soc_component_update_bits(component, CS42L73_PWRCTL1, CS42L73_PDN, 1); if (cs42l73->shutdwn_delay > 0) { mdelay(cs42l73->shutdwn_delay); cs42l73->shutdwn_delay = 0; @@ -1131,7 +1131,7 @@ static int cs42l73_set_bias_level(struct snd_soc_codec *codec, * down. */ } - snd_soc_update_bits(codec, CS42L73_DMMCC, CS42L73_MCLKDIS, 1); + snd_soc_component_update_bits(component, CS42L73_DMMCC, CS42L73_MCLKDIS, 1); break; } return 0; @@ -1139,10 +1139,10 @@ static int cs42l73_set_bias_level(struct snd_soc_codec *codec, static int cs42l73_set_tristate(struct snd_soc_dai *dai, int tristate) { - struct snd_soc_codec *codec = dai->codec; + struct snd_soc_component *component = dai->component; int id = dai->id; - return snd_soc_update_bits(codec, CS42L73_SPC(id), CS42L73_SP_3ST, + return snd_soc_component_update_bits(component, CS42L73_SPC(id), CS42L73_SP_3ST, tristate << 7); } @@ -1235,13 +1235,13 @@ static struct snd_soc_dai_driver cs42l73_dai[] = { } }; -static int cs42l73_probe(struct snd_soc_codec *codec) +static int cs42l73_probe(struct snd_soc_component *component) { - struct cs42l73_private *cs42l73 = snd_soc_codec_get_drvdata(codec); + struct cs42l73_private *cs42l73 = snd_soc_component_get_drvdata(component); /* Set Charge Pump Frequency */ if (cs42l73->pdata.chgfreq) - snd_soc_update_bits(codec, CS42L73_CPFCHC, + snd_soc_component_update_bits(component, CS42L73_CPFCHC, CS42L73_CHARGEPUMP_MASK, cs42l73->pdata.chgfreq << 4); @@ -1252,19 +1252,20 @@ static int cs42l73_probe(struct snd_soc_codec *codec) return 0; } -static const struct snd_soc_codec_driver soc_codec_dev_cs42l73 = { - .probe = cs42l73_probe, - .set_bias_level = cs42l73_set_bias_level, - .suspend_bias_off = true, - - .component_driver = { - .controls = cs42l73_snd_controls, - .num_controls = ARRAY_SIZE(cs42l73_snd_controls), - .dapm_widgets = cs42l73_dapm_widgets, - .num_dapm_widgets = ARRAY_SIZE(cs42l73_dapm_widgets), - .dapm_routes = cs42l73_audio_map, - .num_dapm_routes = ARRAY_SIZE(cs42l73_audio_map), - }, +static const struct snd_soc_component_driver soc_component_dev_cs42l73 = { + .probe = cs42l73_probe, + .set_bias_level = cs42l73_set_bias_level, + .controls = cs42l73_snd_controls, + .num_controls = ARRAY_SIZE(cs42l73_snd_controls), + .dapm_widgets = cs42l73_dapm_widgets, + .num_dapm_widgets = ARRAY_SIZE(cs42l73_dapm_widgets), + .dapm_routes = cs42l73_audio_map, + .num_dapm_routes = ARRAY_SIZE(cs42l73_audio_map), + .suspend_bias_off = 1, + .idle_bias_on = 1, + .use_pmdown_time = 1, + .endianness = 1, + .non_legacy_dai_naming = 1, }; static const struct regmap_config cs42l73_regmap = { @@ -1361,20 +1362,14 @@ static int cs42l73_i2c_probe(struct i2c_client *i2c_client, dev_info(&i2c_client->dev, "Cirrus Logic CS42L73, Revision: %02X\n", reg & 0xFF); - ret = snd_soc_register_codec(&i2c_client->dev, - &soc_codec_dev_cs42l73, cs42l73_dai, + ret = devm_snd_soc_register_component(&i2c_client->dev, + &soc_component_dev_cs42l73, cs42l73_dai, ARRAY_SIZE(cs42l73_dai)); if (ret < 0) return ret; return 0; } -static int cs42l73_i2c_remove(struct i2c_client *client) -{ - snd_soc_unregister_codec(&client->dev); - return 0; -} - static const struct of_device_id cs42l73_of_match[] = { { .compatible = "cirrus,cs42l73", }, {}, @@ -1395,7 +1390,6 @@ static struct i2c_driver cs42l73_i2c_driver = { }, .id_table = cs42l73_id, .probe = cs42l73_i2c_probe, - .remove = cs42l73_i2c_remove, }; From 97b566066ffc2f35940450b408c5f4afa997e4a7 Mon Sep 17 00:00:00 2001 From: Kuninori Morimoto Date: Mon, 29 Jan 2018 04:00:02 +0000 Subject: [PATCH 4/5] ASoC: cs43130: replace codec to component Now we can replace Codec to Component. Let's do it. Note: xxx_codec_xxx() -> xxx_component_xxx() .idle_bias_off = 0 -> .idle_bias_on = 1 .ignore_pmdown_time = 0 -> .use_pmdown_time = 1 - -> .endianness = 1 - -> .non_legacy_dai_naming = 1 Signed-off-by: Kuninori Morimoto Signed-off-by: Mark Brown --- sound/soc/codecs/cs43130.c | 243 +++++++++++++++++++------------------ sound/soc/codecs/cs43130.h | 2 +- 2 files changed, 123 insertions(+), 122 deletions(-) diff --git a/sound/soc/codecs/cs43130.c b/sound/soc/codecs/cs43130.c index 5ba0edc19df4..feca0a672976 100644 --- a/sound/soc/codecs/cs43130.c +++ b/sound/soc/codecs/cs43130.c @@ -236,12 +236,12 @@ static const struct cs43130_pll_params *cs43130_get_pll_table( return NULL; } -static int cs43130_pll_config(struct snd_soc_codec *codec) +static int cs43130_pll_config(struct snd_soc_component *component) { - struct cs43130_private *cs43130 = snd_soc_codec_get_drvdata(codec); + struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); const struct cs43130_pll_params *pll_entry; - dev_dbg(codec->dev, "cs43130->mclk = %u, cs43130->mclk_int = %u\n", + dev_dbg(component->dev, "cs43130->mclk = %u, cs43130->mclk_int = %u\n", cs43130->mclk, cs43130->mclk_int); pll_entry = cs43130_get_pll_table(cs43130->mclk, cs43130->mclk_int); @@ -286,11 +286,11 @@ static int cs43130_pll_config(struct snd_soc_codec *codec) return 0; } -static int cs43130_set_pll(struct snd_soc_codec *codec, int pll_id, int source, +static int cs43130_set_pll(struct snd_soc_component *component, int pll_id, int source, unsigned int freq_in, unsigned int freq_out) { int ret = 0; - struct cs43130_private *cs43130 = snd_soc_codec_get_drvdata(codec); + struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); switch (freq_in) { case 9600000: @@ -306,7 +306,7 @@ static int cs43130_set_pll(struct snd_soc_codec *codec, int pll_id, int source, cs43130->mclk = freq_in; break; default: - dev_err(codec->dev, + dev_err(component->dev, "unsupported pll input reference clock:%d\n", freq_in); return -EINVAL; } @@ -319,21 +319,21 @@ static int cs43130_set_pll(struct snd_soc_codec *codec, int pll_id, int source, cs43130->mclk_int = freq_out; break; default: - dev_err(codec->dev, + dev_err(component->dev, "unsupported pll output ref clock: %u\n", freq_out); return -EINVAL; } - ret = cs43130_pll_config(codec); - dev_dbg(codec->dev, "cs43130->pll_bypass = %d", cs43130->pll_bypass); + ret = cs43130_pll_config(component); + dev_dbg(component->dev, "cs43130->pll_bypass = %d", cs43130->pll_bypass); return ret; } -static int cs43130_change_clksrc(struct snd_soc_codec *codec, +static int cs43130_change_clksrc(struct snd_soc_component *component, enum cs43130_mclk_src_sel src) { int ret; - struct cs43130_private *cs43130 = snd_soc_codec_get_drvdata(codec); + struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); int mclk_int_decoded; if (src == cs43130->mclk_int_src) { @@ -349,7 +349,7 @@ static int cs43130_change_clksrc(struct snd_soc_codec *codec, mclk_int_decoded = CS43130_MCLK_24P5; break; default: - dev_err(codec->dev, "Invalid MCLK INT freq: %u\n", cs43130->mclk_int); + dev_err(component->dev, "Invalid MCLK INT freq: %u\n", cs43130->mclk_int); return -EINVAL; } @@ -373,7 +373,7 @@ static int cs43130_change_clksrc(struct snd_soc_codec *codec, CS43130_XTAL_RDY_INT_MASK, 1 << CS43130_XTAL_RDY_INT_SHIFT); if (ret == 0) { - dev_err(codec->dev, "Timeout waiting for XTAL_READY interrupt\n"); + dev_err(component->dev, "Timeout waiting for XTAL_READY interrupt\n"); return -ETIMEDOUT; } } @@ -409,7 +409,7 @@ static int cs43130_change_clksrc(struct snd_soc_codec *codec, CS43130_XTAL_RDY_INT_MASK, 1 << CS43130_XTAL_RDY_INT_SHIFT); if (ret == 0) { - dev_err(codec->dev, "Timeout waiting for XTAL_READY interrupt\n"); + dev_err(component->dev, "Timeout waiting for XTAL_READY interrupt\n"); return -ETIMEDOUT; } } @@ -425,7 +425,7 @@ static int cs43130_change_clksrc(struct snd_soc_codec *codec, CS43130_PLL_RDY_INT_MASK, 1 << CS43130_PLL_RDY_INT_SHIFT); if (ret == 0) { - dev_err(codec->dev, "Timeout waiting for PLL_READY interrupt\n"); + dev_err(component->dev, "Timeout waiting for PLL_READY interrupt\n"); return -ETIMEDOUT; } @@ -456,7 +456,7 @@ static int cs43130_change_clksrc(struct snd_soc_codec *codec, 1 << CS43130_PDN_PLL_SHIFT); break; default: - dev_err(codec->dev, "Invalid MCLK source value\n"); + dev_err(component->dev, "Invalid MCLK source value\n"); return -EINVAL; } @@ -774,8 +774,8 @@ static int cs43130_dsd_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 cs43130_private *cs43130 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = dai->component; + struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); unsigned int required_clk; u8 dsd_speed; @@ -787,11 +787,11 @@ static int cs43130_dsd_hw_params(struct snd_pcm_substream *substream, else required_clk = CS43130_MCLK_24M; - cs43130_set_pll(codec, 0, 0, cs43130->mclk, required_clk); + cs43130_set_pll(component, 0, 0, cs43130->mclk, required_clk); if (cs43130->pll_bypass) - cs43130_change_clksrc(codec, CS43130_MCLK_SRC_EXT); + cs43130_change_clksrc(component, CS43130_MCLK_SRC_EXT); else - cs43130_change_clksrc(codec, CS43130_MCLK_SRC_PLL); + cs43130_change_clksrc(component, CS43130_MCLK_SRC_PLL); } cs43130->clk_req++; @@ -807,7 +807,7 @@ static int cs43130_dsd_hw_params(struct snd_pcm_substream *substream, dsd_speed = 1; break; default: - dev_err(codec->dev, "Rate(%u) not supported\n", + dev_err(component->dev, "Rate(%u) not supported\n", params_rate(params)); return -EINVAL; } @@ -833,8 +833,8 @@ static int cs43130_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 cs43130_private *cs43130 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = dai->component; + struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); const struct cs43130_rate_map *rate_map; unsigned int sclk = cs43130->dais[dai->id].sclk; unsigned int bitwidth_sclk; @@ -850,11 +850,11 @@ static int cs43130_hw_params(struct snd_pcm_substream *substream, else required_clk = CS43130_MCLK_24M; - cs43130_set_pll(codec, 0, 0, cs43130->mclk, required_clk); + cs43130_set_pll(component, 0, 0, cs43130->mclk, required_clk); if (cs43130->pll_bypass) - cs43130_change_clksrc(codec, CS43130_MCLK_SRC_EXT); + cs43130_change_clksrc(component, CS43130_MCLK_SRC_EXT); else - cs43130_change_clksrc(codec, CS43130_MCLK_SRC_PLL); + cs43130_change_clksrc(component, CS43130_MCLK_SRC_PLL); } cs43130->clk_req++; @@ -878,7 +878,7 @@ static int cs43130_hw_params(struct snd_pcm_substream *substream, dsd_speed = 1; break; default: - dev_err(codec->dev, "Rate(%u) not supported\n", + dev_err(component->dev, "Rate(%u) not supported\n", params_rate(params)); return -EINVAL; } @@ -895,7 +895,7 @@ static int cs43130_hw_params(struct snd_pcm_substream *substream, regmap_write(cs43130->regmap, CS43130_SP_SRATE, rate_map->val); break; default: - dev_err(codec->dev, "Invalid DAI (%d)\n", dai->id); + dev_err(component->dev, "Invalid DAI (%d)\n", dai->id); return -EINVAL; } @@ -919,21 +919,21 @@ static int cs43130_hw_params(struct snd_pcm_substream *substream, if (!sclk) { /* at this point, SCLK must be set */ - dev_err(codec->dev, "SCLK freq is not set\n"); + dev_err(component->dev, "SCLK freq is not set\n"); return -EINVAL; } bitwidth_sclk = (sclk / params_rate(params)) / params_channels(params); if (bitwidth_sclk < bitwidth_dai) { - dev_err(codec->dev, "Format not supported: SCLK freq is too low\n"); + dev_err(component->dev, "Format not supported: SCLK freq is too low\n"); return -EINVAL; } - dev_dbg(codec->dev, + dev_dbg(component->dev, "sclk = %u, fs = %d, bitwidth_dai = %u\n", sclk, params_rate(params), bitwidth_dai); - dev_dbg(codec->dev, + dev_dbg(component->dev, "bitwidth_sclk = %u, num_ch = %u\n", bitwidth_sclk, params_channels(params)); @@ -946,14 +946,14 @@ static int cs43130_hw_params(struct snd_pcm_substream *substream, static int cs43130_hw_free(struct snd_pcm_substream *substream, struct snd_soc_dai *dai) { - struct snd_soc_codec *codec = dai->codec; - struct cs43130_private *cs43130 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = dai->component; + struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); mutex_lock(&cs43130->clk_mutex); cs43130->clk_req--; if (!cs43130->clk_req) { /* no DAI is currently using clk */ - cs43130_change_clksrc(codec, CS43130_MCLK_SRC_RCO); + cs43130_change_clksrc(component, CS43130_MCLK_SRC_RCO); cs43130_pcm_dsd_mix(false, cs43130->regmap); } mutex_unlock(&cs43130->clk_mutex); @@ -1023,8 +1023,8 @@ static int cs43130_pcm_ch_put(struct snd_kcontrol *kcontrol, { struct soc_enum *e = (struct soc_enum *)kcontrol->private_value; unsigned int *item = ucontrol->value.enumerated.item; - struct snd_soc_codec *codec = snd_soc_kcontrol_codec(kcontrol); - struct cs43130_private *cs43130 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = snd_soc_kcontrol_component(kcontrol); + struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); unsigned int val; if (item[0] >= e->items) @@ -1144,8 +1144,8 @@ static const struct reg_sequence unmute_seq[] = { static int cs43130_dsd_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 cs43130_private *cs43130 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); + struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); switch (event) { case SND_SOC_DAPM_PRE_PMU: @@ -1192,7 +1192,7 @@ static int cs43130_dsd_event(struct snd_soc_dapm_widget *w, } break; default: - dev_err(codec->dev, "Invalid event = 0x%x\n", event); + dev_err(component->dev, "Invalid event = 0x%x\n", event); return -EINVAL; } return 0; @@ -1201,8 +1201,8 @@ static int cs43130_dsd_event(struct snd_soc_dapm_widget *w, static int cs43130_pcm_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 cs43130_private *cs43130 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); + struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); switch (event) { case SND_SOC_DAPM_PRE_PMU: @@ -1249,7 +1249,7 @@ static int cs43130_pcm_event(struct snd_soc_dapm_widget *w, } break; default: - dev_err(codec->dev, "Invalid event = 0x%x\n", event); + dev_err(component->dev, "Invalid event = 0x%x\n", event); return -EINVAL; } return 0; @@ -1270,8 +1270,8 @@ static const struct reg_sequence dac_postpmd_seq[] = { static int cs43130_dac_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 cs43130_private *cs43130 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); + struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); switch (event) { case SND_SOC_DAPM_PRE_PMU: @@ -1325,7 +1325,7 @@ static int cs43130_dac_event(struct snd_soc_dapm_widget *w, } break; default: - dev_err(codec->dev, "Invalid DAC event = 0x%x\n", event); + dev_err(component->dev, "Invalid DAC event = 0x%x\n", event); return -EINVAL; } return 0; @@ -1350,8 +1350,8 @@ static const struct reg_sequence hpin_postpmu_seq[] = { static int cs43130_hpin_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 cs43130_private *cs43130 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = snd_soc_dapm_to_component(w->dapm); + struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); switch (event) { case SND_SOC_DAPM_POST_PMD: @@ -1363,7 +1363,7 @@ static int cs43130_hpin_event(struct snd_soc_dapm_widget *w, ARRAY_SIZE(hpin_postpmu_seq)); break; default: - dev_err(codec->dev, "Invalid HPIN event = 0x%x\n", event); + dev_err(component->dev, "Invalid HPIN event = 0x%x\n", event); return -EINVAL; } return 0; @@ -1471,8 +1471,8 @@ static int cs43130_dop_startup(struct snd_pcm_substream *substream, static int cs43130_pcm_set_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt) { - struct snd_soc_codec *codec = codec_dai->codec; - struct cs43130_private *cs43130 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = codec_dai->component; + struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) { case SND_SOC_DAIFMT_CBS_CFS: @@ -1482,7 +1482,7 @@ static int cs43130_pcm_set_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt) cs43130->dais[codec_dai->id].dai_mode = SND_SOC_DAIFMT_CBM_CFM; break; default: - dev_err(codec->dev, "unsupported mode\n"); + dev_err(component->dev, "unsupported mode\n"); return -EINVAL; } @@ -1500,12 +1500,12 @@ static int cs43130_pcm_set_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt) cs43130->dais[codec_dai->id].dai_format = SND_SOC_DAIFMT_DSP_B; break; default: - dev_err(codec->dev, + dev_err(component->dev, "unsupported audio format\n"); return -EINVAL; } - dev_dbg(codec->dev, "dai_id = %d, dai_mode = %u, dai_format = %u\n", + dev_dbg(component->dev, "dai_id = %d, dai_mode = %u, dai_format = %u\n", codec_dai->id, cs43130->dais[codec_dai->id].dai_mode, cs43130->dais[codec_dai->id].dai_format); @@ -1515,8 +1515,8 @@ static int cs43130_pcm_set_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt) static int cs43130_dsd_set_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt) { - struct snd_soc_codec *codec = codec_dai->codec; - struct cs43130_private *cs43130 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = codec_dai->component; + struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) { case SND_SOC_DAIFMT_CBS_CFS: @@ -1526,11 +1526,11 @@ static int cs43130_dsd_set_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt) cs43130->dais[codec_dai->id].dai_mode = SND_SOC_DAIFMT_CBM_CFM; break; default: - dev_err(codec->dev, "Unsupported DAI format.\n"); + dev_err(component->dev, "Unsupported DAI format.\n"); return -EINVAL; } - dev_dbg(codec->dev, "dai_mode = 0x%x\n", + dev_dbg(component->dev, "dai_mode = 0x%x\n", cs43130->dais[codec_dai->id].dai_mode); return 0; @@ -1539,11 +1539,11 @@ static int cs43130_dsd_set_fmt(struct snd_soc_dai *codec_dai, unsigned int fmt) static int cs43130_set_sysclk(struct snd_soc_dai *codec_dai, int clk_id, unsigned int freq, int dir) { - struct snd_soc_codec *codec = codec_dai->codec; - struct cs43130_private *cs43130 = snd_soc_codec_get_drvdata(codec); + struct snd_soc_component *component = codec_dai->component; + struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); cs43130->dais[codec_dai->id].sclk = freq; - dev_dbg(codec->dev, "dai_id = %d, sclk = %u\n", codec_dai->id, + dev_dbg(component->dev, "dai_id = %d, sclk = %u\n", codec_dai->id, cs43130->dais[codec_dai->id].sclk); return 0; @@ -1627,13 +1627,13 @@ static struct snd_soc_dai_driver cs43130_dai[] = { }; -static int cs43130_codec_set_sysclk(struct snd_soc_codec *codec, +static int cs43130_component_set_sysclk(struct snd_soc_component *component, int clk_id, int source, unsigned int freq, int dir) { - struct cs43130_private *cs43130 = snd_soc_codec_get_drvdata(codec); + struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); - dev_dbg(codec->dev, "clk_id = %d, source = %d, freq = %d, dir = %d\n", + dev_dbg(component->dev, "clk_id = %d, source = %d, freq = %d, dir = %d\n", clk_id, source, freq, dir); switch (freq) { @@ -1642,14 +1642,14 @@ static int cs43130_codec_set_sysclk(struct snd_soc_codec *codec, cs43130->mclk = freq; break; default: - dev_err(codec->dev, "Invalid MCLK INT freq: %u\n", freq); + dev_err(component->dev, "Invalid MCLK INT freq: %u\n", freq); return -EINVAL; } if (source == CS43130_MCLK_SRC_EXT) { cs43130->pll_bypass = true; } else { - dev_err(codec->dev, "Invalid MCLK source\n"); + dev_err(component->dev, "Invalid MCLK source\n"); return -EINVAL; } @@ -1929,7 +1929,7 @@ static int cs43130_update_hpload(unsigned int msk, int ac_idx, unsigned int reg; u32 addr; u16 impedance; - struct snd_soc_codec *codec = cs43130->codec; + struct snd_soc_component *component = cs43130->component; switch (msk) { case CS43130_HPLOAD_DC_INT: @@ -1959,7 +1959,7 @@ static int cs43130_update_hpload(unsigned int msk, int ac_idx, else cs43130->hpload_dc[HP_RIGHT] = impedance; - dev_dbg(codec->dev, "HP DC impedance (Ch %u): %u\n", !left_ch, + dev_dbg(component->dev, "HP DC impedance (Ch %u): %u\n", !left_ch, impedance); } else { if (left_ch) @@ -1967,7 +1967,7 @@ static int cs43130_update_hpload(unsigned int msk, int ac_idx, else cs43130->hpload_ac[ac_idx][HP_RIGHT] = impedance; - dev_dbg(codec->dev, "HP AC (%u Hz) impedance (Ch %u): %u\n", + dev_dbg(component->dev, "HP AC (%u Hz) impedance (Ch %u): %u\n", cs43130->ac_freq[ac_idx], !left_ch, impedance); } @@ -1981,7 +1981,7 @@ static int cs43130_hpload_proc(struct cs43130_private *cs43130, int ret; unsigned int msk; u16 ac_reg_val; - struct snd_soc_codec *codec = cs43130->codec; + struct snd_soc_component *component = cs43130->component; reinit_completion(&cs43130->hpload_evt); @@ -2004,17 +2004,17 @@ static int cs43130_hpload_proc(struct cs43130_private *cs43130, msecs_to_jiffies(1000)); regmap_read(cs43130->regmap, CS43130_INT_MASK_4, &msk); if (!ret) { - dev_err(codec->dev, "Timeout waiting for HPLOAD interrupt\n"); + dev_err(component->dev, "Timeout waiting for HPLOAD interrupt\n"); return -1; } - dev_dbg(codec->dev, "HP load stat: %x, INT_MASK_4: %x\n", + dev_dbg(component->dev, "HP load stat: %x, INT_MASK_4: %x\n", cs43130->hpload_stat, msk); if ((cs43130->hpload_stat & (CS43130_HPLOAD_NO_DC_INT | CS43130_HPLOAD_UNPLUG_INT | CS43130_HPLOAD_OOR_INT)) || !(cs43130->hpload_stat & rslt_msk)) { - dev_dbg(codec->dev, "HP load measure failed\n"); + dev_dbg(component->dev, "HP load measure failed\n"); return -1; } @@ -2056,11 +2056,11 @@ static void cs43130_imp_meas(struct work_struct *wk) unsigned int reg, seq_size; int i, ret, ac_idx; struct cs43130_private *cs43130; - struct snd_soc_codec *codec; + struct snd_soc_component *component; struct reg_sequences *hpload_seq; cs43130 = container_of(wk, struct cs43130_private, work); - codec = cs43130->codec; + component = cs43130->component; if (!cs43130->mclk) return; @@ -2070,11 +2070,11 @@ static void cs43130_imp_meas(struct work_struct *wk) mutex_lock(&cs43130->clk_mutex); if (!cs43130->clk_req) { /* clk not in use */ - cs43130_set_pll(codec, 0, 0, cs43130->mclk, CS43130_MCLK_22M); + cs43130_set_pll(component, 0, 0, cs43130->mclk, CS43130_MCLK_22M); if (cs43130->pll_bypass) - cs43130_change_clksrc(codec, CS43130_MCLK_SRC_EXT); + cs43130_change_clksrc(component, CS43130_MCLK_SRC_EXT); else - cs43130_change_clksrc(codec, CS43130_MCLK_SRC_PLL); + cs43130_change_clksrc(component, CS43130_MCLK_SRC_PLL); } cs43130->clk_req++; @@ -2125,9 +2125,9 @@ static void cs43130_imp_meas(struct work_struct *wk) snd_soc_jack_report(&cs43130->jack, CS43130_JACK_HEADPHONE, CS43130_JACK_MASK); - dev_dbg(codec->dev, "Set HP output control. DC threshold\n"); + dev_dbg(component->dev, "Set HP output control. DC threshold\n"); for (i = 0; i < CS43130_DC_THRESHOLD; i++) - dev_dbg(codec->dev, "DC threshold[%d]: %u.\n", i, + dev_dbg(component->dev, "DC threshold[%d]: %u.\n", i, cs43130->dc_threshold[i]); cs43130_set_hv(cs43130->regmap, cs43130->hpload_dc[HP_LEFT], @@ -2154,14 +2154,14 @@ exit: cs43130->clk_req--; /* clk not in use */ if (!cs43130->clk_req) - cs43130_change_clksrc(codec, CS43130_MCLK_SRC_RCO); + cs43130_change_clksrc(component, CS43130_MCLK_SRC_RCO); mutex_unlock(&cs43130->clk_mutex); } static irqreturn_t cs43130_irq_thread(int irq, void *data) { struct cs43130_private *cs43130 = (struct cs43130_private *)data; - struct snd_soc_codec *codec = cs43130->codec; + struct snd_soc_component *component = cs43130->component; unsigned int stickies[CS43130_NUM_INT]; unsigned int irq_occurrence = 0; unsigned int masks[CS43130_NUM_INT]; @@ -2179,7 +2179,7 @@ static irqreturn_t cs43130_irq_thread(int irq, void *data) for (j = 0; j < 8; j++) irq_occurrence += (stickies[i] >> j) & 1; } - dev_dbg(codec->dev, "number of interrupts occurred (%u)\n", + dev_dbg(component->dev, "number of interrupts occurred (%u)\n", irq_occurrence); if (!irq_occurrence) @@ -2197,7 +2197,7 @@ static irqreturn_t cs43130_irq_thread(int irq, void *data) if (stickies[3] & CS43130_HPLOAD_NO_DC_INT) { cs43130->hpload_stat = stickies[3]; - dev_err(codec->dev, + dev_err(component->dev, "DC load has not completed before AC load (%x)\n", cs43130->hpload_stat); complete(&cs43130->hpload_evt); @@ -2206,7 +2206,7 @@ static irqreturn_t cs43130_irq_thread(int irq, void *data) if (stickies[3] & CS43130_HPLOAD_UNPLUG_INT) { cs43130->hpload_stat = stickies[3]; - dev_err(codec->dev, "HP unplugged during measurement (%x)\n", + dev_err(component->dev, "HP unplugged during measurement (%x)\n", cs43130->hpload_stat); complete(&cs43130->hpload_evt); return IRQ_HANDLED; @@ -2214,7 +2214,7 @@ static irqreturn_t cs43130_irq_thread(int irq, void *data) if (stickies[3] & CS43130_HPLOAD_OOR_INT) { cs43130->hpload_stat = stickies[3]; - dev_err(codec->dev, "HP load out of range (%x)\n", + dev_err(component->dev, "HP load out of range (%x)\n", cs43130->hpload_stat); complete(&cs43130->hpload_evt); return IRQ_HANDLED; @@ -2222,7 +2222,7 @@ static irqreturn_t cs43130_irq_thread(int irq, void *data) if (stickies[3] & CS43130_HPLOAD_AC_INT) { cs43130->hpload_stat = stickies[3]; - dev_dbg(codec->dev, "HP AC load measurement done (%x)\n", + dev_dbg(component->dev, "HP AC load measurement done (%x)\n", cs43130->hpload_stat); complete(&cs43130->hpload_evt); return IRQ_HANDLED; @@ -2230,7 +2230,7 @@ static irqreturn_t cs43130_irq_thread(int irq, void *data) if (stickies[3] & CS43130_HPLOAD_DC_INT) { cs43130->hpload_stat = stickies[3]; - dev_dbg(codec->dev, "HP DC load measurement done (%x)\n", + dev_dbg(component->dev, "HP DC load measurement done (%x)\n", cs43130->hpload_stat); complete(&cs43130->hpload_evt); return IRQ_HANDLED; @@ -2238,7 +2238,7 @@ static irqreturn_t cs43130_irq_thread(int irq, void *data) if (stickies[3] & CS43130_HPLOAD_ON_INT) { cs43130->hpload_stat = stickies[3]; - dev_dbg(codec->dev, "HP load state machine on done (%x)\n", + dev_dbg(component->dev, "HP load state machine on done (%x)\n", cs43130->hpload_stat); complete(&cs43130->hpload_evt); return IRQ_HANDLED; @@ -2246,19 +2246,19 @@ static irqreturn_t cs43130_irq_thread(int irq, void *data) if (stickies[3] & CS43130_HPLOAD_OFF_INT) { cs43130->hpload_stat = stickies[3]; - dev_dbg(codec->dev, "HP load state machine off done (%x)\n", + dev_dbg(component->dev, "HP load state machine off done (%x)\n", cs43130->hpload_stat); complete(&cs43130->hpload_evt); return IRQ_HANDLED; } if (stickies[0] & CS43130_XTAL_ERR_INT) { - dev_err(codec->dev, "Crystal err: clock is not running\n"); + dev_err(component->dev, "Crystal err: clock is not running\n"); return IRQ_HANDLED; } if (stickies[0] & CS43130_HP_UNPLUG_INT) { - dev_dbg(codec->dev, "HP unplugged\n"); + dev_dbg(component->dev, "HP unplugged\n"); cs43130->hpload_done = false; snd_soc_jack_report(&cs43130->jack, 0, CS43130_JACK_MASK); return IRQ_HANDLED; @@ -2267,7 +2267,7 @@ static irqreturn_t cs43130_irq_thread(int irq, void *data) if (stickies[0] & CS43130_HP_PLUG_INT) { if (cs43130->dc_meas && !cs43130->hpload_done && !work_busy(&cs43130->work)) { - dev_dbg(codec->dev, "HP load queue work\n"); + dev_dbg(component->dev, "HP load queue work\n"); queue_work(cs43130->wq, &cs43130->work); } @@ -2279,14 +2279,14 @@ static irqreturn_t cs43130_irq_thread(int irq, void *data) return IRQ_NONE; } -static int cs43130_probe(struct snd_soc_codec *codec) +static int cs43130_probe(struct snd_soc_component *component) { int ret; - struct cs43130_private *cs43130 = snd_soc_codec_get_drvdata(codec); - struct snd_soc_card *card = codec->component.card; + struct cs43130_private *cs43130 = snd_soc_component_get_drvdata(component); + struct snd_soc_card *card = component->card; unsigned int reg; - cs43130->codec = codec; + cs43130->component = component; if (cs43130->xtal_ibias != CS43130_XTAL_UNUSED) { regmap_update_bits(cs43130->regmap, CS43130_CRYSTAL_SET, @@ -2299,25 +2299,25 @@ static int cs43130_probe(struct snd_soc_codec *codec) ret = snd_soc_card_jack_new(card, "Headphone", CS43130_JACK_MASK, &cs43130->jack, NULL, 0); if (ret < 0) { - dev_err(codec->dev, "Cannot create jack\n"); + dev_err(component->dev, "Cannot create jack\n"); return ret; } cs43130->hpload_done = false; if (cs43130->dc_meas) { - ret = device_create_file(codec->dev, &dev_attr_hpload_dc_l); + ret = device_create_file(component->dev, &dev_attr_hpload_dc_l); if (ret < 0) return ret; - ret = device_create_file(codec->dev, &dev_attr_hpload_dc_r); + ret = device_create_file(component->dev, &dev_attr_hpload_dc_r); if (ret < 0) return ret; - ret = device_create_file(codec->dev, &dev_attr_hpload_ac_l); + ret = device_create_file(component->dev, &dev_attr_hpload_ac_l); if (ret < 0) return ret; - ret = device_create_file(codec->dev, &dev_attr_hpload_ac_r); + ret = device_create_file(component->dev, &dev_attr_hpload_ac_r); if (ret < 0) return ret; @@ -2338,14 +2338,16 @@ static int cs43130_probe(struct snd_soc_codec *codec) return 0; } -static struct snd_soc_codec_driver soc_codec_dev_cs43130 = { +static struct snd_soc_component_driver soc_component_dev_cs43130 = { .probe = cs43130_probe, - .component_driver = { - .controls = cs43130_snd_controls, - .num_controls = ARRAY_SIZE(cs43130_snd_controls), - }, - .set_sysclk = cs43130_codec_set_sysclk, + .controls = cs43130_snd_controls, + .num_controls = ARRAY_SIZE(cs43130_snd_controls), + .set_sysclk = cs43130_component_set_sysclk, .set_pll = cs43130_set_pll, + .idle_bias_on = 1, + .use_pmdown_time = 1, + .endianness = 1, + .non_legacy_dai_naming = 1, }; static const struct regmap_config cs43130_regmap = { @@ -2536,33 +2538,34 @@ static int cs43130_i2c_probe(struct i2c_client *client, memcpy(all_hp_routes + ARRAY_SIZE(digital_hp_routes), analog_hp_routes, sizeof(analog_hp_routes)); - soc_codec_dev_cs43130.component_driver.dapm_widgets = + soc_component_dev_cs43130.dapm_widgets = all_hp_widgets; - soc_codec_dev_cs43130.component_driver.num_dapm_widgets = + soc_component_dev_cs43130.num_dapm_widgets = ARRAY_SIZE(all_hp_widgets); - soc_codec_dev_cs43130.component_driver.dapm_routes = + soc_component_dev_cs43130.dapm_routes = all_hp_routes; - soc_codec_dev_cs43130.component_driver.num_dapm_routes = + soc_component_dev_cs43130.num_dapm_routes = ARRAY_SIZE(all_hp_routes); break; case CS43198_CHIP_ID: case CS4399_CHIP_ID: - soc_codec_dev_cs43130.component_driver.dapm_widgets = + soc_component_dev_cs43130.dapm_widgets = digital_hp_widgets; - soc_codec_dev_cs43130.component_driver.num_dapm_widgets = + soc_component_dev_cs43130.num_dapm_widgets = ARRAY_SIZE(digital_hp_widgets); - soc_codec_dev_cs43130.component_driver.dapm_routes = + soc_component_dev_cs43130.dapm_routes = digital_hp_routes; - soc_codec_dev_cs43130.component_driver.num_dapm_routes = + soc_component_dev_cs43130.num_dapm_routes = ARRAY_SIZE(digital_hp_routes); break; } - ret = snd_soc_register_codec(&client->dev, &soc_codec_dev_cs43130, + ret = devm_snd_soc_register_component(&client->dev, + &soc_component_dev_cs43130, cs43130_dai, ARRAY_SIZE(cs43130_dai)); if (ret < 0) { dev_err(&client->dev, - "snd_soc_register_codec failed with ret = %d\n", ret); + "snd_soc_register_component failed with ret = %d\n", ret); goto err; } @@ -2604,8 +2607,6 @@ static int cs43130_i2c_remove(struct i2c_client *client) pm_runtime_disable(&client->dev); regulator_bulk_disable(CS43130_NUM_SUPPLIES, cs43130->supplies); - snd_soc_unregister_codec(&client->dev); - return 0; } diff --git a/sound/soc/codecs/cs43130.h b/sound/soc/codecs/cs43130.h index 781258418d89..c3c6eef61e87 100644 --- a/sound/soc/codecs/cs43130.h +++ b/sound/soc/codecs/cs43130.h @@ -508,7 +508,7 @@ struct cs43130_dai { }; struct cs43130_private { - struct snd_soc_codec *codec; + struct snd_soc_component *component; struct regmap *regmap; struct regulator_bulk_data supplies[CS43130_NUM_SUPPLIES]; struct gpio_desc *reset_gpio; From 534cf41c0c09e5c7b7aee706abcd3812ef17ae89 Mon Sep 17 00:00:00 2001 From: Kuninori Morimoto Date: Mon, 29 Jan 2018 04:00:28 +0000 Subject: [PATCH 5/5] ASoC: cs53l30: replace codec to component Now we can replace Codec to Component. Let's do it. Note: 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 Signed-off-by: Mark Brown --- sound/soc/codecs/cs53l30.c | 57 ++++++++++++++++++-------------------- 1 file changed, 27 insertions(+), 30 deletions(-) diff --git a/sound/soc/codecs/cs53l30.c b/sound/soc/codecs/cs53l30.c index c7edf2df5e36..8995ea45b4ca 100644 --- a/sound/soc/codecs/cs53l30.c +++ b/sound/soc/codecs/cs53l30.c @@ -549,7 +549,7 @@ static int cs53l30_get_mclk_coeff(int mclk_rate, int srate) static int cs53l30_set_sysclk(struct snd_soc_dai *dai, int clk_id, unsigned int freq, int dir) { - struct cs53l30_private *priv = snd_soc_codec_get_drvdata(dai->codec); + struct cs53l30_private *priv = snd_soc_component_get_drvdata(dai->component); int mclkx_coeff; u32 mclk_rate; @@ -572,7 +572,7 @@ static int cs53l30_set_sysclk(struct snd_soc_dai *dai, static int cs53l30_set_dai_fmt(struct snd_soc_dai *dai, unsigned int fmt) { - struct cs53l30_private *priv = snd_soc_codec_get_drvdata(dai->codec); + struct cs53l30_private *priv = snd_soc_component_get_drvdata(dai->component); u8 aspcfg = 0, aspctl1 = 0; switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) { @@ -626,7 +626,7 @@ static int cs53l30_pcm_hw_params(struct snd_pcm_substream *substream, struct snd_pcm_hw_params *params, struct snd_soc_dai *dai) { - struct cs53l30_private *priv = snd_soc_codec_get_drvdata(dai->codec); + struct cs53l30_private *priv = snd_soc_component_get_drvdata(dai->component); int srate = params_rate(params); int mclk_coeff; @@ -650,11 +650,11 @@ static int cs53l30_pcm_hw_params(struct snd_pcm_substream *substream, return 0; } -static int cs53l30_set_bias_level(struct snd_soc_codec *codec, +static int cs53l30_set_bias_level(struct snd_soc_component *component, enum snd_soc_bias_level level) { - struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec); - struct cs53l30_private *priv = snd_soc_codec_get_drvdata(codec); + struct snd_soc_dapm_context *dapm = snd_soc_component_get_dapm(component); + struct cs53l30_private *priv = snd_soc_component_get_drvdata(component); unsigned int reg; int i, inter_max_check, ret; @@ -670,7 +670,7 @@ static int cs53l30_set_bias_level(struct snd_soc_codec *codec, if (dapm->bias_level == SND_SOC_BIAS_OFF) { ret = clk_prepare_enable(priv->mclk); if (ret) { - dev_err(codec->dev, + dev_err(component->dev, "failed to enable MCLK: %d\n", ret); return ret; } @@ -736,7 +736,7 @@ static int cs53l30_set_bias_level(struct snd_soc_codec *codec, static int cs53l30_set_tristate(struct snd_soc_dai *dai, int tristate) { - struct cs53l30_private *priv = snd_soc_codec_get_drvdata(dai->codec); + struct cs53l30_private *priv = snd_soc_component_get_drvdata(dai->component); u8 val = tristate ? CS53L30_ASP_3ST : 0; return regmap_update_bits(priv->regmap, CS53L30_ASP_CTL1, @@ -770,7 +770,7 @@ static int cs53l30_set_dai_tdm_slot(struct snd_soc_dai *dai, unsigned int tx_mask, unsigned int rx_mask, int slots, int slot_width) { - struct cs53l30_private *priv = snd_soc_codec_get_drvdata(dai->codec); + struct cs53l30_private *priv = snd_soc_component_get_drvdata(dai->component); unsigned int loc[CS53L30_TDM_SLOT_MAX] = {48, 48, 48, 48}; unsigned int slot_next, slot_step; u64 tx_enable = 0; @@ -840,7 +840,7 @@ static int cs53l30_set_dai_tdm_slot(struct snd_soc_dai *dai, static int cs53l30_mute_stream(struct snd_soc_dai *dai, int mute, int stream) { - struct cs53l30_private *priv = snd_soc_codec_get_drvdata(dai->codec); + struct cs53l30_private *priv = snd_soc_component_get_drvdata(dai->component); gpiod_set_value_cansleep(priv->mute_gpio, mute); @@ -876,10 +876,10 @@ static struct snd_soc_dai_driver cs53l30_dai = { .symmetric_rates = 1, }; -static int cs53l30_codec_probe(struct snd_soc_codec *codec) +static int cs53l30_component_probe(struct snd_soc_component *component) { - struct cs53l30_private *priv = snd_soc_codec_get_drvdata(codec); - struct snd_soc_dapm_context *dapm = snd_soc_codec_get_dapm(codec); + struct cs53l30_private *priv = snd_soc_component_get_drvdata(component); + struct snd_soc_dapm_context *dapm = snd_soc_component_get_dapm(component); if (priv->use_sdout2) snd_soc_dapm_add_routes(dapm, cs53l30_dapm_routes_sdout2, @@ -891,19 +891,18 @@ static int cs53l30_codec_probe(struct snd_soc_codec *codec) return 0; } -static const struct snd_soc_codec_driver cs53l30_driver = { - .probe = cs53l30_codec_probe, - .set_bias_level = cs53l30_set_bias_level, - .idle_bias_off = true, - - .component_driver = { - .controls = cs53l30_snd_controls, - .num_controls = ARRAY_SIZE(cs53l30_snd_controls), - .dapm_widgets = cs53l30_dapm_widgets, - .num_dapm_widgets = ARRAY_SIZE(cs53l30_dapm_widgets), - .dapm_routes = cs53l30_dapm_routes, - .num_dapm_routes = ARRAY_SIZE(cs53l30_dapm_routes), - }, +static const struct snd_soc_component_driver cs53l30_driver = { + .probe = cs53l30_component_probe, + .set_bias_level = cs53l30_set_bias_level, + .controls = cs53l30_snd_controls, + .num_controls = ARRAY_SIZE(cs53l30_snd_controls), + .dapm_widgets = cs53l30_dapm_widgets, + .num_dapm_widgets = ARRAY_SIZE(cs53l30_dapm_widgets), + .dapm_routes = cs53l30_dapm_routes, + .num_dapm_routes = ARRAY_SIZE(cs53l30_dapm_routes), + .use_pmdown_time = 1, + .endianness = 1, + .non_legacy_dai_naming = 1, }; static struct regmap_config cs53l30_regmap = { @@ -1033,9 +1032,9 @@ static int cs53l30_i2c_probe(struct i2c_client *client, dev_info(dev, "Cirrus Logic CS53L30, Revision: %02X\n", reg & 0xFF); - ret = snd_soc_register_codec(dev, &cs53l30_driver, &cs53l30_dai, 1); + ret = devm_snd_soc_register_component(dev, &cs53l30_driver, &cs53l30_dai, 1); if (ret) { - dev_err(dev, "failed to register codec: %d\n", ret); + dev_err(dev, "failed to register component: %d\n", ret); goto error; } @@ -1051,8 +1050,6 @@ static int cs53l30_i2c_remove(struct i2c_client *client) { struct cs53l30_private *cs53l30 = i2c_get_clientdata(client); - snd_soc_unregister_codec(&client->dev); - /* Hold down reset */ gpiod_set_value_cansleep(cs53l30->reset_gpio, 0);