diff mbox series

[15/15] ASoC: soc-core: add soc_unbind_aux_dev()

Message ID 87ef1w6w8o.wl-kuninori.morimoto.gx@renesas.com (mailing list archive)
State New, archived
Headers show
Series ASoC: use modern style for aux_dev | expand

Commit Message

Kuninori Morimoto Aug. 8, 2019, 5:54 a.m. UTC
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>

It is easy to read code if it is cleanly using paired function/naming,
like start <-> stop, register <-> unregister, etc, etc.
But, current ALSA SoC code is very random, unbalance, not paired, etc.
It is easy to create bug at the such code, and it will be difficult to
debug.

soc-core.c has soc_bind_aux_dev(), but, there is no its paired
soc_unbind_aux_dev(). This patch adds it.

Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
 sound/soc/soc-core.c | 7 ++++++-
 1 file changed, 6 insertions(+), 1 deletion(-)

Comments

Sridharan, Ranjani Aug. 8, 2019, 4:45 p.m. UTC | #1
On Wed, Aug 7, 2019 at 11:03 PM Kuninori Morimoto <
kuninori.morimoto.gx@renesas.com> wrote:

>
> From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
>
> It is easy to read code if it is cleanly using paired function/naming,
> like start <-> stop, register <-> unregister, etc, etc.
> But, current ALSA SoC code is very random, unbalance, not paired, etc.
> It is easy to create bug at the such code, and it will be difficult to
> debug.
>
> soc-core.c has soc_bind_aux_dev(), but, there is no its paired
> soc_unbind_aux_dev(). This patch adds it.
>
Morimoto-san,
I'm not sure it quite improves readability to just have list_del in
unbind_aux_dev(). bin_aux_dev() does more than just adding to the
card_aux_list(). So in fact, I think  this change makes it look unbalanced.
The existing code for aux_dev looks quite similar to what bind_dai_link()
and remove_dai_link() do and they are quite intuitive.

Thanks,
Ranjani

>
> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> ---
>  sound/soc/soc-core.c | 7 ++++++-
>  1 file changed, 6 insertions(+), 1 deletion(-)
>
> diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
> index f8a5464..5e3b907 100644
> --- a/sound/soc/soc-core.c
> +++ b/sound/soc/soc-core.c
> @@ -1527,6 +1527,11 @@ static int soc_probe_link_dais(struct snd_soc_card
> *card,
>         return ret;
>  }
>
> +static void soc_unbind_aux_dev(struct snd_soc_component *component)
> +{
> +       list_del(&component->card_aux_list);
> +}
> +
>  static int soc_bind_aux_dev(struct snd_soc_card *card,
>                             struct snd_soc_aux_dev *aux_dev)
>  {
> @@ -1578,7 +1583,7 @@ static void soc_remove_aux_devices(struct
> snd_soc_card *card)
>                         if (comp->driver->remove_order == order) {
>                                 soc_remove_component(comp);
>                                 /* remove it from the card's aux_comp_list
> */
> -                               list_del(&comp->card_aux_list);
> +                               soc_unbind_aux_dev(comp);
>                         }
>                 }
>         }
> --
> 2.7.4
>
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@alsa-project.org
> https://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>
Kuninori Morimoto Aug. 20, 2019, 2:11 a.m. UTC | #2
Hi Sridharan

Thank you for your feedback

>     From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
>    
>     It is easy to read code if it is cleanly using paired function/naming,
>     like start <-> stop, register <-> unregister, etc, etc.
>     But, current ALSA SoC code is very random, unbalance, not paired, etc.
>     It is easy to create bug at the such code, and it will be difficult to
>     debug.
>    
>     soc-core.c has soc_bind_aux_dev(), but, there is no its paired
>     soc_unbind_aux_dev(). This patch adds it.
> 
> Morimoto-san,
> I'm not sure it quite improves readability to just have list_del in unbind_aux_dev(). bin_aux_dev() does more than just
> adding to the card_aux_list(). So in fact, I think  this change makes it look unbalanced.

Hmm...
But, bind_aux_dev() is doing

	1) find target component
	2) setup component->init
	3) add card_aux_list

We can ignore 1) for unbind.
This patch is for 3).
I guess we can ignore 2), but can handle it.
How about this ?

	static void soc_unbind_aux_dev(struct snd_soc_component *component)
	{
=>		component->init = NULL;
		list_del(&component->card_aux_list);
	}

> The existing code for aux_dev looks quite similar to what bind_dai_link() and remove_dai_link() do and they are quite
> intuitive.

I guess "add"_dai_link instead of "bind"_dai_link ?

Thank you for your help !!
Best regards
---
Kuninori Morimoto
diff mbox series

Patch

diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index f8a5464..5e3b907 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -1527,6 +1527,11 @@  static int soc_probe_link_dais(struct snd_soc_card *card,
 	return ret;
 }
 
+static void soc_unbind_aux_dev(struct snd_soc_component *component)
+{
+	list_del(&component->card_aux_list);
+}
+
 static int soc_bind_aux_dev(struct snd_soc_card *card,
 			    struct snd_soc_aux_dev *aux_dev)
 {
@@ -1578,7 +1583,7 @@  static void soc_remove_aux_devices(struct snd_soc_card *card)
 			if (comp->driver->remove_order == order) {
 				soc_remove_component(comp);
 				/* remove it from the card's aux_comp_list */
-				list_del(&comp->card_aux_list);
+				soc_unbind_aux_dev(comp);
 			}
 		}
 	}