2022-09-08 08:32:36

by Shengjiu Wang

[permalink] [raw]
Subject: [PATCH] ASoC: ak4458: Remove component probe() and remove()

Most function in ak4458_probe() and ak4458_remove() are
duplicate with dai ops, so remove them and move dsd_path
setting to dai ops.

Signed-off-by: Shengjiu Wang <[email protected]>
---
sound/soc/codecs/ak4458.c | 53 ++++++---------------------------------
1 file changed, 7 insertions(+), 46 deletions(-)

diff --git a/sound/soc/codecs/ak4458.c b/sound/soc/codecs/ak4458.c
index ea33cc83c86c..b534212096ee 100644
--- a/sound/soc/codecs/ak4458.c
+++ b/sound/soc/codecs/ak4458.c
@@ -447,6 +447,13 @@ static int ak4458_hw_params(struct snd_pcm_substream *substream,
snd_soc_component_update_bits(component, AK4458_0B_CONTROL7,
AK4458_DCHAIN_MASK, dchn);

+ if (ak4458->drvdata->type == AK4497) {
+ ret = snd_soc_component_update_bits(component, AK4458_09_DSD2,
+ 0x4, (ak4458->dsd_path << 2));
+ if (ret < 0)
+ return ret;
+ }
+
ret = ak4458_rstn_control(component, 0);
if (ret)
return ret;
@@ -629,48 +636,6 @@ static void ak4458_reset(struct ak4458_priv *ak4458, bool active)
}
}

-static int ak4458_init(struct snd_soc_component *component)
-{
- struct ak4458_priv *ak4458 = snd_soc_component_get_drvdata(component);
- int ret;
-
- /* External Mute ON */
- if (ak4458->mute_gpiod)
- gpiod_set_value_cansleep(ak4458->mute_gpiod, 1);
-
- ak4458_reset(ak4458, false);
-
- ret = snd_soc_component_update_bits(component, AK4458_00_CONTROL1,
- 0x80, 0x80); /* ACKS bit = 1; 10000000 */
- if (ret < 0)
- return ret;
-
- if (ak4458->drvdata->type == AK4497) {
- ret = snd_soc_component_update_bits(component, AK4458_09_DSD2,
- 0x4, (ak4458->dsd_path << 2));
- if (ret < 0)
- return ret;
- }
-
- return ak4458_rstn_control(component, 1);
-}
-
-static int ak4458_probe(struct snd_soc_component *component)
-{
- struct ak4458_priv *ak4458 = snd_soc_component_get_drvdata(component);
-
- ak4458->fs = 48000;
-
- return ak4458_init(component);
-}
-
-static void ak4458_remove(struct snd_soc_component *component)
-{
- struct ak4458_priv *ak4458 = snd_soc_component_get_drvdata(component);
-
- ak4458_reset(ak4458, true);
-}
-
#ifdef CONFIG_PM
static int __maybe_unused ak4458_runtime_suspend(struct device *dev)
{
@@ -714,8 +679,6 @@ static int __maybe_unused ak4458_runtime_resume(struct device *dev)
#endif /* CONFIG_PM */

static const struct snd_soc_component_driver soc_codec_dev_ak4458 = {
- .probe = ak4458_probe,
- .remove = ak4458_remove,
.controls = ak4458_snd_controls,
.num_controls = ARRAY_SIZE(ak4458_snd_controls),
.dapm_widgets = ak4458_dapm_widgets,
@@ -728,8 +691,6 @@ static const struct snd_soc_component_driver soc_codec_dev_ak4458 = {
};

static const struct snd_soc_component_driver soc_codec_dev_ak4497 = {
- .probe = ak4458_probe,
- .remove = ak4458_remove,
.controls = ak4497_snd_controls,
.num_controls = ARRAY_SIZE(ak4497_snd_controls),
.dapm_widgets = ak4497_dapm_widgets,
--
2.34.1


2022-09-08 09:21:09

by Daniel Baluta

[permalink] [raw]
Subject: Re: [PATCH] ASoC: ak4458: Remove component probe() and remove()

On Thu, Sep 8, 2022 at 11:03 AM Shengjiu Wang <[email protected]> wrote:
>
> Most function in ak4458_probe() and ak4458_remove() are
> duplicate with dai ops, so remove them and move dsd_path
> setting to dai ops.
>
> Signed-off-by: Shengjiu Wang <[email protected]>

Reviewed-by: Daniel Baluta <[email protected]>

> ---
> sound/soc/codecs/ak4458.c | 53 ++++++---------------------------------
> 1 file changed, 7 insertions(+), 46 deletions(-)
>
> diff --git a/sound/soc/codecs/ak4458.c b/sound/soc/codecs/ak4458.c
> index ea33cc83c86c..b534212096ee 100644
> --- a/sound/soc/codecs/ak4458.c
> +++ b/sound/soc/codecs/ak4458.c
> @@ -447,6 +447,13 @@ static int ak4458_hw_params(struct snd_pcm_substream *substream,
> snd_soc_component_update_bits(component, AK4458_0B_CONTROL7,
> AK4458_DCHAIN_MASK, dchn);
>
> + if (ak4458->drvdata->type == AK4497) {
> + ret = snd_soc_component_update_bits(component, AK4458_09_DSD2,
> + 0x4, (ak4458->dsd_path << 2));
> + if (ret < 0)
> + return ret;
> + }
> +
> ret = ak4458_rstn_control(component, 0);
> if (ret)
> return ret;
> @@ -629,48 +636,6 @@ static void ak4458_reset(struct ak4458_priv *ak4458, bool active)
> }
> }
>
> -static int ak4458_init(struct snd_soc_component *component)
> -{
> - struct ak4458_priv *ak4458 = snd_soc_component_get_drvdata(component);
> - int ret;
> -
> - /* External Mute ON */
> - if (ak4458->mute_gpiod)
> - gpiod_set_value_cansleep(ak4458->mute_gpiod, 1);
> -
> - ak4458_reset(ak4458, false);
> -
> - ret = snd_soc_component_update_bits(component, AK4458_00_CONTROL1,
> - 0x80, 0x80); /* ACKS bit = 1; 10000000 */
> - if (ret < 0)
> - return ret;
> -
> - if (ak4458->drvdata->type == AK4497) {
> - ret = snd_soc_component_update_bits(component, AK4458_09_DSD2,
> - 0x4, (ak4458->dsd_path << 2));
> - if (ret < 0)
> - return ret;
> - }
> -
> - return ak4458_rstn_control(component, 1);
> -}
> -
> -static int ak4458_probe(struct snd_soc_component *component)
> -{
> - struct ak4458_priv *ak4458 = snd_soc_component_get_drvdata(component);
> -
> - ak4458->fs = 48000;
> -
> - return ak4458_init(component);
> -}
> -
> -static void ak4458_remove(struct snd_soc_component *component)
> -{
> - struct ak4458_priv *ak4458 = snd_soc_component_get_drvdata(component);
> -
> - ak4458_reset(ak4458, true);
> -}
> -
> #ifdef CONFIG_PM
> static int __maybe_unused ak4458_runtime_suspend(struct device *dev)
> {
> @@ -714,8 +679,6 @@ static int __maybe_unused ak4458_runtime_resume(struct device *dev)
> #endif /* CONFIG_PM */
>
> static const struct snd_soc_component_driver soc_codec_dev_ak4458 = {
> - .probe = ak4458_probe,
> - .remove = ak4458_remove,
> .controls = ak4458_snd_controls,
> .num_controls = ARRAY_SIZE(ak4458_snd_controls),
> .dapm_widgets = ak4458_dapm_widgets,
> @@ -728,8 +691,6 @@ static const struct snd_soc_component_driver soc_codec_dev_ak4458 = {
> };
>
> static const struct snd_soc_component_driver soc_codec_dev_ak4497 = {
> - .probe = ak4458_probe,
> - .remove = ak4458_remove,
> .controls = ak4497_snd_controls,
> .num_controls = ARRAY_SIZE(ak4497_snd_controls),
> .dapm_widgets = ak4497_dapm_widgets,
> --
> 2.34.1
>

2022-09-08 13:25:30

by Mark Brown

[permalink] [raw]
Subject: Re: [PATCH] ASoC: ak4458: Remove component probe() and remove()

On Thu, 8 Sep 2022 15:31:56 +0800, Shengjiu Wang wrote:
> Most function in ak4458_probe() and ak4458_remove() are
> duplicate with dai ops, so remove them and move dsd_path
> setting to dai ops.
>
>

Applied to

https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next

Thanks!

[1/1] ASoC: ak4458: Remove component probe() and remove()
commit: e9e7df88996d64544178f48b0299dfe736c6aa22

All being well this means that it will be integrated into the linux-next
tree (usually sometime in the next 24 hours) and sent to Linus during
the next merge window (or sooner if it is a bug fix), however if
problems are discovered then the patch may be dropped or reverted.

You may get further e-mails resulting from automated or manual testing
and review of the tree, please engage with people reporting problems and
send followup patches addressing any issues that are reported if needed.

If any updates are required or you are submitting further changes they
should be sent as incremental updates against current git, existing
patches will not be replaced.

Please add any relevant lists and maintainers to the CCs when replying
to this mail.

Thanks,
Mark