* [PATCH v2 01/25] ASoC: soc-core: use device_register()
2019-08-07 1:29 [PATCH v2 00/25] ASoC: cleanup patches for soc-core Kuninori Morimoto
@ 2019-08-07 1:29 ` Kuninori Morimoto
2019-08-07 1:30 ` [PATCH v2 02/25] ASoC: soc-core: set component->debugfs_root NULL Kuninori Morimoto
` (23 subsequent siblings)
24 siblings, 0 replies; 54+ messages in thread
From: Kuninori Morimoto @ 2019-08-07 1:29 UTC (permalink / raw)
To: Mark Brown; +Cc: Linux-ALSA
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.
soc-core.c is using device_unregiser(), but there is no its paired
device_regiser(). We can find its code at soc_post_component_init()
which is using device_initialize() and device_add().
Here, device_initialize() + device_add() = device_register().
device_initialize() is doing each dev member's initialization only.
So, the timing is not important here.
let's use device_register() instead of device_initialize()/device_add().
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
v1 -> v2
- no change
sound/soc/soc-core.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 0f75dac..40bac40 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -1336,7 +1336,6 @@ static int soc_post_component_init(struct snd_soc_pcm_runtime *rtd,
rtd->dev = kzalloc(sizeof(struct device), GFP_KERNEL);
if (!rtd->dev)
return -ENOMEM;
- device_initialize(rtd->dev);
rtd->dev->parent = rtd->card->dev;
rtd->dev->release = rtd_release;
rtd->dev->groups = soc_dev_attr_groups;
@@ -1347,7 +1346,7 @@ static int soc_post_component_init(struct snd_soc_pcm_runtime *rtd,
INIT_LIST_HEAD(&rtd->dpcm[SNDRV_PCM_STREAM_CAPTURE].be_clients);
INIT_LIST_HEAD(&rtd->dpcm[SNDRV_PCM_STREAM_PLAYBACK].fe_clients);
INIT_LIST_HEAD(&rtd->dpcm[SNDRV_PCM_STREAM_CAPTURE].fe_clients);
- ret = device_add(rtd->dev);
+ ret = device_register(rtd->dev);
if (ret < 0) {
/* calling put_device() here to free the rtd->dev */
put_device(rtd->dev);
--
2.7.4
^ permalink raw reply related [flat|nested] 54+ messages in thread* [PATCH v2 02/25] ASoC: soc-core: set component->debugfs_root NULL
2019-08-07 1:29 [PATCH v2 00/25] ASoC: cleanup patches for soc-core Kuninori Morimoto
2019-08-07 1:29 ` [PATCH v2 01/25] ASoC: soc-core: use device_register() Kuninori Morimoto
@ 2019-08-07 1:30 ` Kuninori Morimoto
2019-08-07 13:30 ` Applied "ASoC: soc-core: set component->debugfs_root NULL" to the asoc tree Mark Brown
2019-08-07 1:30 ` [PATCH v2 03/25] ASoC: soc-core: add comment for for_each_xxx Kuninori Morimoto
` (22 subsequent siblings)
24 siblings, 1 reply; 54+ messages in thread
From: Kuninori Morimoto @ 2019-08-07 1:30 UTC (permalink / raw)
To: Mark Brown; +Cc: Linux-ALSA
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
To be more safety code, let's set NULL to component->debugfs_root
when it was cleanuped.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
v1 -> v2
- no change
sound/soc/soc-core.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 40bac40..00887f7 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -171,7 +171,10 @@ static void soc_init_component_debugfs(struct snd_soc_component *component)
static void soc_cleanup_component_debugfs(struct snd_soc_component *component)
{
+ if (!component->debugfs_root)
+ return;
debugfs_remove_recursive(component->debugfs_root);
+ component->debugfs_root = NULL;
}
static int dai_list_show(struct seq_file *m, void *v)
--
2.7.4
^ permalink raw reply related [flat|nested] 54+ messages in thread* Applied "ASoC: soc-core: set component->debugfs_root NULL" to the asoc tree
2019-08-07 1:30 ` [PATCH v2 02/25] ASoC: soc-core: set component->debugfs_root NULL Kuninori Morimoto
@ 2019-08-07 13:30 ` Mark Brown
0 siblings, 0 replies; 54+ messages in thread
From: Mark Brown @ 2019-08-07 13:30 UTC (permalink / raw)
To: Kuninori Morimoto; +Cc: Linux-ALSA, Mark Brown
The patch
ASoC: soc-core: set component->debugfs_root NULL
has been applied to the asoc tree at
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-5.4
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
>From ad64bfbd09d7b7997a1b1510983350836bcd6ed9 Mon Sep 17 00:00:00 2001
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Date: Wed, 7 Aug 2019 10:30:13 +0900
Subject: [PATCH] ASoC: soc-core: set component->debugfs_root NULL
To be more safety code, let's set NULL to component->debugfs_root
when it was cleanuped.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87muglahq0.wl-kuninori.morimoto.gx@renesas.com
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
---
sound/soc/soc-core.c | 3 +++
1 file changed, 3 insertions(+)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 0f75dac4bb26..2f37c4e0974b 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -171,7 +171,10 @@ static void soc_init_component_debugfs(struct snd_soc_component *component)
static void soc_cleanup_component_debugfs(struct snd_soc_component *component)
{
+ if (!component->debugfs_root)
+ return;
debugfs_remove_recursive(component->debugfs_root);
+ component->debugfs_root = NULL;
}
static int dai_list_show(struct seq_file *m, void *v)
--
2.20.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v2 03/25] ASoC: soc-core: add comment for for_each_xxx
2019-08-07 1:29 [PATCH v2 00/25] ASoC: cleanup patches for soc-core Kuninori Morimoto
2019-08-07 1:29 ` [PATCH v2 01/25] ASoC: soc-core: use device_register() Kuninori Morimoto
2019-08-07 1:30 ` [PATCH v2 02/25] ASoC: soc-core: set component->debugfs_root NULL Kuninori Morimoto
@ 2019-08-07 1:30 ` Kuninori Morimoto
2019-08-07 13:30 ` Applied "ASoC: soc-core: add comment for for_each_xxx" to the asoc tree Mark Brown
2019-08-07 1:30 ` [PATCH v2 04/25] ASoC: soc-core: check return value of snd_soc_add_dai_link() Kuninori Morimoto
` (21 subsequent siblings)
24 siblings, 1 reply; 54+ messages in thread
From: Kuninori Morimoto @ 2019-08-07 1:30 UTC (permalink / raw)
To: Mark Brown; +Cc: Linux-ALSA
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
soc-core has many for_each_xxx, but it is a little bit
difficult to know which list is relead to which for_each_xxx.
This patch adds missing comment for it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
v1 -> v2
- no change
sound/soc/soc-core.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 00887f7..c46a617 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -380,6 +380,7 @@ static void soc_free_pcm_runtime(struct snd_soc_pcm_runtime *rtd)
static void soc_add_pcm_runtime(struct snd_soc_card *card,
struct snd_soc_pcm_runtime *rtd)
{
+ /* see for_each_card_rtds */
list_add_tail(&rtd->list, &card->rtd_list);
rtd->num = card->num_rtd;
card->num_rtd++;
@@ -1149,6 +1150,7 @@ int snd_soc_add_dai_link(struct snd_soc_card *card,
if (dai_link->dobj.type && card->add_dai_link)
card->add_dai_link(card, dai_link);
+ /* see for_each_card_links */
list_add_tail(&dai_link->list, &card->dai_link_list);
return 0;
--
2.7.4
^ permalink raw reply related [flat|nested] 54+ messages in thread* Applied "ASoC: soc-core: add comment for for_each_xxx" to the asoc tree
2019-08-07 1:30 ` [PATCH v2 03/25] ASoC: soc-core: add comment for for_each_xxx Kuninori Morimoto
@ 2019-08-07 13:30 ` Mark Brown
0 siblings, 0 replies; 54+ messages in thread
From: Mark Brown @ 2019-08-07 13:30 UTC (permalink / raw)
To: Kuninori Morimoto; +Cc: Linux-ALSA, Mark Brown
The patch
ASoC: soc-core: add comment for for_each_xxx
has been applied to the asoc tree at
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-5.4
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
>From 6634e3d6ea8cd92fce10d1d2da0c8e42ab84da32 Mon Sep 17 00:00:00 2001
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Date: Wed, 7 Aug 2019 10:30:31 +0900
Subject: [PATCH] ASoC: soc-core: add comment for for_each_xxx
soc-core has many for_each_xxx, but it is a little bit
difficult to know which list is relead to which for_each_xxx.
This patch adds missing comment for it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87lfw5ahpj.wl-kuninori.morimoto.gx@renesas.com
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
---
sound/soc/soc-core.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 2f37c4e0974b..5e6a48a0f79e 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -380,6 +380,7 @@ static void soc_free_pcm_runtime(struct snd_soc_pcm_runtime *rtd)
static void soc_add_pcm_runtime(struct snd_soc_card *card,
struct snd_soc_pcm_runtime *rtd)
{
+ /* see for_each_card_rtds */
list_add_tail(&rtd->list, &card->rtd_list);
rtd->num = card->num_rtd;
card->num_rtd++;
@@ -1149,6 +1150,7 @@ int snd_soc_add_dai_link(struct snd_soc_card *card,
if (dai_link->dobj.type && card->add_dai_link)
card->add_dai_link(card, dai_link);
+ /* see for_each_card_links */
list_add_tail(&dai_link->list, &card->dai_link_list);
return 0;
--
2.20.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v2 04/25] ASoC: soc-core: check return value of snd_soc_add_dai_link()
2019-08-07 1:29 [PATCH v2 00/25] ASoC: cleanup patches for soc-core Kuninori Morimoto
` (2 preceding siblings ...)
2019-08-07 1:30 ` [PATCH v2 03/25] ASoC: soc-core: add comment for for_each_xxx Kuninori Morimoto
@ 2019-08-07 1:30 ` Kuninori Morimoto
2019-08-07 13:30 ` Applied "ASoC: soc-core: check return value of snd_soc_add_dai_link()" to the asoc tree Mark Brown
2019-08-07 1:30 ` [PATCH v2 05/25] ASoC: soc-core: don't use for_each_card_links_safe() at snd_soc_find_dai_link() Kuninori Morimoto
` (20 subsequent siblings)
24 siblings, 1 reply; 54+ messages in thread
From: Kuninori Morimoto @ 2019-08-07 1:30 UTC (permalink / raw)
To: Mark Brown; +Cc: Linux-ALSA
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
snd_soc_add_dai_link() might return error, we need to check it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
v1 -> v2
- no change
sound/soc/soc-core.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index c46a617..315c80d 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -1963,8 +1963,11 @@ static int snd_soc_instantiate_card(struct snd_soc_card *card)
}
/* add predefined DAI links to the list */
- for_each_card_prelinks(card, i, dai_link)
- snd_soc_add_dai_link(card, dai_link);
+ for_each_card_prelinks(card, i, dai_link) {
+ ret = snd_soc_add_dai_link(card, dai_link);
+ if (ret < 0)
+ goto probe_end;
+ }
/* card bind complete so register a sound card */
ret = snd_card_new(card->dev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1,
--
2.7.4
^ permalink raw reply related [flat|nested] 54+ messages in thread* Applied "ASoC: soc-core: check return value of snd_soc_add_dai_link()" to the asoc tree
2019-08-07 1:30 ` [PATCH v2 04/25] ASoC: soc-core: check return value of snd_soc_add_dai_link() Kuninori Morimoto
@ 2019-08-07 13:30 ` Mark Brown
0 siblings, 0 replies; 54+ messages in thread
From: Mark Brown @ 2019-08-07 13:30 UTC (permalink / raw)
To: Kuninori Morimoto; +Cc: Linux-ALSA, Mark Brown
The patch
ASoC: soc-core: check return value of snd_soc_add_dai_link()
has been applied to the asoc tree at
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-5.4
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
>From 5b99a0aad08a3428cc3262ecee29a71c88c981c2 Mon Sep 17 00:00:00 2001
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Date: Wed, 7 Aug 2019 10:30:36 +0900
Subject: [PATCH] ASoC: soc-core: check return value of snd_soc_add_dai_link()
snd_soc_add_dai_link() might return error, we need to check it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87k1bpahpd.wl-kuninori.morimoto.gx@renesas.com
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
---
sound/soc/soc-core.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 5e6a48a0f79e..7345679d4903 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -1964,8 +1964,11 @@ static int snd_soc_instantiate_card(struct snd_soc_card *card)
}
/* add predefined DAI links to the list */
- for_each_card_prelinks(card, i, dai_link)
- snd_soc_add_dai_link(card, dai_link);
+ for_each_card_prelinks(card, i, dai_link) {
+ ret = snd_soc_add_dai_link(card, dai_link);
+ if (ret < 0)
+ goto probe_end;
+ }
/* card bind complete so register a sound card */
ret = snd_card_new(card->dev, SNDRV_DEFAULT_IDX1, SNDRV_DEFAULT_STR1,
--
2.20.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v2 05/25] ASoC: soc-core: don't use for_each_card_links_safe() at snd_soc_find_dai_link()
2019-08-07 1:29 [PATCH v2 00/25] ASoC: cleanup patches for soc-core Kuninori Morimoto
` (3 preceding siblings ...)
2019-08-07 1:30 ` [PATCH v2 04/25] ASoC: soc-core: check return value of snd_soc_add_dai_link() Kuninori Morimoto
@ 2019-08-07 1:30 ` Kuninori Morimoto
2019-08-07 13:30 ` Applied "ASoC: soc-core: don't use for_each_card_links_safe() at snd_soc_find_dai_link()" to the asoc tree Mark Brown
2019-08-07 1:30 ` [PATCH v2 06/25] ASoC: soc-core: reuse rtdcom at snd_soc_rtdcom_add() Kuninori Morimoto
` (19 subsequent siblings)
24 siblings, 1 reply; 54+ messages in thread
From: Kuninori Morimoto @ 2019-08-07 1:30 UTC (permalink / raw)
To: Mark Brown; +Cc: Linux-ALSA
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
It doesn't removes list during loop at snd_soc_find_dai_link().
We don't need to use _safe loop.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
v1 -> v2
- no change
sound/soc/soc-core.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 315c80d..05e8df2 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -817,11 +817,11 @@ struct snd_soc_dai_link *snd_soc_find_dai_link(struct snd_soc_card *card,
int id, const char *name,
const char *stream_name)
{
- struct snd_soc_dai_link *link, *_link;
+ struct snd_soc_dai_link *link;
lockdep_assert_held(&client_mutex);
- for_each_card_links_safe(card, link, _link) {
+ for_each_card_links(card, link) {
if (link->id != id)
continue;
--
2.7.4
^ permalink raw reply related [flat|nested] 54+ messages in thread* Applied "ASoC: soc-core: don't use for_each_card_links_safe() at snd_soc_find_dai_link()" to the asoc tree
2019-08-07 1:30 ` [PATCH v2 05/25] ASoC: soc-core: don't use for_each_card_links_safe() at snd_soc_find_dai_link() Kuninori Morimoto
@ 2019-08-07 13:30 ` Mark Brown
0 siblings, 0 replies; 54+ messages in thread
From: Mark Brown @ 2019-08-07 13:30 UTC (permalink / raw)
To: Kuninori Morimoto; +Cc: Linux-ALSA, Mark Brown
The patch
ASoC: soc-core: don't use for_each_card_links_safe() at snd_soc_find_dai_link()
has been applied to the asoc tree at
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-5.4
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
>From 42849064500b24892e2abfe8679507dfffd585f1 Mon Sep 17 00:00:00 2001
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Date: Wed, 7 Aug 2019 10:30:41 +0900
Subject: [PATCH] ASoC: soc-core: don't use for_each_card_links_safe() at
snd_soc_find_dai_link()
It doesn't removes list during loop at snd_soc_find_dai_link().
We don't need to use _safe loop.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87imr9ahp9.wl-kuninori.morimoto.gx@renesas.com
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
---
sound/soc/soc-core.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 7345679d4903..e176b972e4e6 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -817,11 +817,11 @@ struct snd_soc_dai_link *snd_soc_find_dai_link(struct snd_soc_card *card,
int id, const char *name,
const char *stream_name)
{
- struct snd_soc_dai_link *link, *_link;
+ struct snd_soc_dai_link *link;
lockdep_assert_held(&client_mutex);
- for_each_card_links_safe(card, link, _link) {
+ for_each_card_links(card, link) {
if (link->id != id)
continue;
--
2.20.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v2 06/25] ASoC: soc-core: reuse rtdcom at snd_soc_rtdcom_add()
2019-08-07 1:29 [PATCH v2 00/25] ASoC: cleanup patches for soc-core Kuninori Morimoto
` (4 preceding siblings ...)
2019-08-07 1:30 ` [PATCH v2 05/25] ASoC: soc-core: don't use for_each_card_links_safe() at snd_soc_find_dai_link() Kuninori Morimoto
@ 2019-08-07 1:30 ` Kuninori Morimoto
2019-08-07 13:30 ` Applied "ASoC: soc-core: reuse rtdcom at snd_soc_rtdcom_add()" to the asoc tree Mark Brown
2019-08-07 1:30 ` [PATCH v2 07/25] ASoC: soc-core: tidyup for snd_soc_dapm_new_controls() Kuninori Morimoto
` (18 subsequent siblings)
24 siblings, 1 reply; 54+ messages in thread
From: Kuninori Morimoto @ 2019-08-07 1:30 UTC (permalink / raw)
To: Mark Brown; +Cc: Linux-ALSA
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
snd_soc_rtdcom_add() is using both "rtdcom" and "new_rtdcom" as
variable name, but these are not used at same time.
Let's reuse rtdcom.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
v1 -> v2
- no change
sound/soc/soc-core.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 05e8df2..6347d65 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -274,7 +274,6 @@ static int snd_soc_rtdcom_add(struct snd_soc_pcm_runtime *rtd,
struct snd_soc_component *component)
{
struct snd_soc_rtdcom_list *rtdcom;
- struct snd_soc_rtdcom_list *new_rtdcom;
for_each_rtdcom(rtd, rtdcom) {
/* already connected */
@@ -282,14 +281,14 @@ static int snd_soc_rtdcom_add(struct snd_soc_pcm_runtime *rtd,
return 0;
}
- new_rtdcom = kmalloc(sizeof(*new_rtdcom), GFP_KERNEL);
- if (!new_rtdcom)
+ rtdcom = kmalloc(sizeof(*rtdcom), GFP_KERNEL);
+ if (!rtdcom)
return -ENOMEM;
- new_rtdcom->component = component;
- INIT_LIST_HEAD(&new_rtdcom->list);
+ rtdcom->component = component;
+ INIT_LIST_HEAD(&rtdcom->list);
- list_add_tail(&new_rtdcom->list, &rtd->component_list);
+ list_add_tail(&rtdcom->list, &rtd->component_list);
return 0;
}
--
2.7.4
^ permalink raw reply related [flat|nested] 54+ messages in thread* Applied "ASoC: soc-core: reuse rtdcom at snd_soc_rtdcom_add()" to the asoc tree
2019-08-07 1:30 ` [PATCH v2 06/25] ASoC: soc-core: reuse rtdcom at snd_soc_rtdcom_add() Kuninori Morimoto
@ 2019-08-07 13:30 ` Mark Brown
0 siblings, 0 replies; 54+ messages in thread
From: Mark Brown @ 2019-08-07 13:30 UTC (permalink / raw)
To: Kuninori Morimoto; +Cc: Linux-ALSA, Mark Brown
The patch
ASoC: soc-core: reuse rtdcom at snd_soc_rtdcom_add()
has been applied to the asoc tree at
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-5.4
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
>From 32d2c172fe88705058310635a732259c0a98e89b Mon Sep 17 00:00:00 2001
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Date: Wed, 7 Aug 2019 10:30:47 +0900
Subject: [PATCH] ASoC: soc-core: reuse rtdcom at snd_soc_rtdcom_add()
snd_soc_rtdcom_add() is using both "rtdcom" and "new_rtdcom" as
variable name, but these are not used at same time.
Let's reuse rtdcom.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87h86tahp2.wl-kuninori.morimoto.gx@renesas.com
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
---
sound/soc/soc-core.c | 11 +++++------
1 file changed, 5 insertions(+), 6 deletions(-)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index e176b972e4e6..d12054ab8741 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -274,7 +274,6 @@ static int snd_soc_rtdcom_add(struct snd_soc_pcm_runtime *rtd,
struct snd_soc_component *component)
{
struct snd_soc_rtdcom_list *rtdcom;
- struct snd_soc_rtdcom_list *new_rtdcom;
for_each_rtdcom(rtd, rtdcom) {
/* already connected */
@@ -282,14 +281,14 @@ static int snd_soc_rtdcom_add(struct snd_soc_pcm_runtime *rtd,
return 0;
}
- new_rtdcom = kmalloc(sizeof(*new_rtdcom), GFP_KERNEL);
- if (!new_rtdcom)
+ rtdcom = kmalloc(sizeof(*rtdcom), GFP_KERNEL);
+ if (!rtdcom)
return -ENOMEM;
- new_rtdcom->component = component;
- INIT_LIST_HEAD(&new_rtdcom->list);
+ rtdcom->component = component;
+ INIT_LIST_HEAD(&rtdcom->list);
- list_add_tail(&new_rtdcom->list, &rtd->component_list);
+ list_add_tail(&rtdcom->list, &rtd->component_list);
return 0;
}
--
2.20.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v2 07/25] ASoC: soc-core: tidyup for snd_soc_dapm_new_controls()
2019-08-07 1:29 [PATCH v2 00/25] ASoC: cleanup patches for soc-core Kuninori Morimoto
` (5 preceding siblings ...)
2019-08-07 1:30 ` [PATCH v2 06/25] ASoC: soc-core: reuse rtdcom at snd_soc_rtdcom_add() Kuninori Morimoto
@ 2019-08-07 1:30 ` Kuninori Morimoto
2019-08-07 13:30 ` Applied "ASoC: soc-core: tidyup for snd_soc_dapm_new_controls()" to the asoc tree Mark Brown
2019-08-07 1:30 ` [PATCH v2 08/25] ASoC: soc-core: tidyup for snd_soc_add_component_controls() Kuninori Morimoto
` (17 subsequent siblings)
24 siblings, 1 reply; 54+ messages in thread
From: Kuninori Morimoto @ 2019-08-07 1:30 UTC (permalink / raw)
To: Mark Brown; +Cc: Linux-ALSA
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
snd_soc_dapm_new_controls() registers controls by using
for(... i < num; ...). It means if widget was NULL, num should be zero.
Thus, we don't need to check about widget pointer.
This patch also cares missing return value.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
v1 -> v2
- check return value
- change Subject
sound/soc/soc-core.c | 26 +++++++++++++-------------
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 6347d65..b3979bb 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -1264,16 +1264,14 @@ static int soc_probe_component(struct snd_soc_card *card,
soc_init_component_debugfs(component);
- if (component->driver->dapm_widgets) {
- ret = snd_soc_dapm_new_controls(dapm,
+ ret = snd_soc_dapm_new_controls(dapm,
component->driver->dapm_widgets,
component->driver->num_dapm_widgets);
- if (ret != 0) {
- dev_err(component->dev,
- "Failed to create new controls %d\n", ret);
- goto err_probe;
- }
+ if (ret != 0) {
+ dev_err(component->dev,
+ "Failed to create new controls %d\n", ret);
+ goto err_probe;
}
for_each_component_dais(component, dai) {
@@ -1989,13 +1987,15 @@ static int snd_soc_instantiate_card(struct snd_soc_card *card)
INIT_WORK(&card->deferred_resume_work, soc_resume_deferred);
#endif
- if (card->dapm_widgets)
- snd_soc_dapm_new_controls(&card->dapm, card->dapm_widgets,
- card->num_dapm_widgets);
+ ret = snd_soc_dapm_new_controls(&card->dapm, card->dapm_widgets,
+ card->num_dapm_widgets);
+ if (ret < 0)
+ goto probe_end;
- if (card->of_dapm_widgets)
- snd_soc_dapm_new_controls(&card->dapm, card->of_dapm_widgets,
- card->num_of_dapm_widgets);
+ ret = snd_soc_dapm_new_controls(&card->dapm, card->of_dapm_widgets,
+ card->num_of_dapm_widgets);
+ if (ret < 0)
+ goto probe_end;
/* initialise the sound card only once */
if (card->probe) {
--
2.7.4
^ permalink raw reply related [flat|nested] 54+ messages in thread* Applied "ASoC: soc-core: tidyup for snd_soc_dapm_new_controls()" to the asoc tree
2019-08-07 1:30 ` [PATCH v2 07/25] ASoC: soc-core: tidyup for snd_soc_dapm_new_controls() Kuninori Morimoto
@ 2019-08-07 13:30 ` Mark Brown
0 siblings, 0 replies; 54+ messages in thread
From: Mark Brown @ 2019-08-07 13:30 UTC (permalink / raw)
To: Kuninori Morimoto; +Cc: Linux-ALSA, Mark Brown
The patch
ASoC: soc-core: tidyup for snd_soc_dapm_new_controls()
has been applied to the asoc tree at
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-5.4
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
>From b8ba3b572c70c8559ef76c1e0ca02e7b05126e8c Mon Sep 17 00:00:00 2001
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Date: Wed, 7 Aug 2019 10:30:53 +0900
Subject: [PATCH] ASoC: soc-core: tidyup for snd_soc_dapm_new_controls()
snd_soc_dapm_new_controls() registers controls by using
for(... i < num; ...). It means if widget was NULL, num should be zero.
Thus, we don't need to check about widget pointer.
This patch also cares missing return value.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87ftmdahow.wl-kuninori.morimoto.gx@renesas.com
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
---
sound/soc/soc-core.c | 26 +++++++++++++-------------
1 file changed, 13 insertions(+), 13 deletions(-)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index d12054ab8741..bb1e9e2c4ff4 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -1264,16 +1264,14 @@ static int soc_probe_component(struct snd_soc_card *card,
soc_init_component_debugfs(component);
- if (component->driver->dapm_widgets) {
- ret = snd_soc_dapm_new_controls(dapm,
+ ret = snd_soc_dapm_new_controls(dapm,
component->driver->dapm_widgets,
component->driver->num_dapm_widgets);
- if (ret != 0) {
- dev_err(component->dev,
- "Failed to create new controls %d\n", ret);
- goto err_probe;
- }
+ if (ret != 0) {
+ dev_err(component->dev,
+ "Failed to create new controls %d\n", ret);
+ goto err_probe;
}
for_each_component_dais(component, dai) {
@@ -1990,13 +1988,15 @@ static int snd_soc_instantiate_card(struct snd_soc_card *card)
INIT_WORK(&card->deferred_resume_work, soc_resume_deferred);
#endif
- if (card->dapm_widgets)
- snd_soc_dapm_new_controls(&card->dapm, card->dapm_widgets,
- card->num_dapm_widgets);
+ ret = snd_soc_dapm_new_controls(&card->dapm, card->dapm_widgets,
+ card->num_dapm_widgets);
+ if (ret < 0)
+ goto probe_end;
- if (card->of_dapm_widgets)
- snd_soc_dapm_new_controls(&card->dapm, card->of_dapm_widgets,
- card->num_of_dapm_widgets);
+ ret = snd_soc_dapm_new_controls(&card->dapm, card->of_dapm_widgets,
+ card->num_of_dapm_widgets);
+ if (ret < 0)
+ goto probe_end;
/* initialise the sound card only once */
if (card->probe) {
--
2.20.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v2 08/25] ASoC: soc-core: tidyup for snd_soc_add_component_controls()
2019-08-07 1:29 [PATCH v2 00/25] ASoC: cleanup patches for soc-core Kuninori Morimoto
` (6 preceding siblings ...)
2019-08-07 1:30 ` [PATCH v2 07/25] ASoC: soc-core: tidyup for snd_soc_dapm_new_controls() Kuninori Morimoto
@ 2019-08-07 1:30 ` Kuninori Morimoto
2019-08-08 20:33 ` Applied "ASoC: soc-core: tidyup for snd_soc_add_component_controls()" to the asoc tree Mark Brown
2019-08-07 1:31 ` [PATCH v2 09/25] ASoC: soc-core: tidyup for snd_soc_dapm_add_routes() Kuninori Morimoto
` (16 subsequent siblings)
24 siblings, 1 reply; 54+ messages in thread
From: Kuninori Morimoto @ 2019-08-07 1:30 UTC (permalink / raw)
To: Mark Brown; +Cc: Linux-ALSA
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
snd_soc_add_component_controls() registers controls by using
for(... i < num; ...). If controls was NULL, num should be zero.
Thus, we don't need to check about controls pointer.
This patch also cares missing return value.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
v1 -> v2
- check return value
- change Subject
sound/soc/soc-core.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index b3979bb..21cdd3c 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -1304,10 +1304,12 @@ static int soc_probe_component(struct snd_soc_card *card,
}
}
- if (component->driver->controls)
- snd_soc_add_component_controls(component,
- component->driver->controls,
- component->driver->num_controls);
+ ret = snd_soc_add_component_controls(component,
+ component->driver->controls,
+ component->driver->num_controls);
+ if (ret < 0)
+ goto err_probe;
+
if (component->driver->dapm_routes)
snd_soc_dapm_add_routes(dapm,
component->driver->dapm_routes,
--
2.7.4
^ permalink raw reply related [flat|nested] 54+ messages in thread* Applied "ASoC: soc-core: tidyup for snd_soc_add_component_controls()" to the asoc tree
2019-08-07 1:30 ` [PATCH v2 08/25] ASoC: soc-core: tidyup for snd_soc_add_component_controls() Kuninori Morimoto
@ 2019-08-08 20:33 ` Mark Brown
0 siblings, 0 replies; 54+ messages in thread
From: Mark Brown @ 2019-08-08 20:33 UTC (permalink / raw)
To: Kuninori Morimoto; +Cc: Linux-ALSA, Mark Brown
The patch
ASoC: soc-core: tidyup for snd_soc_add_component_controls()
has been applied to the asoc tree at
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
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
>From e6d7020c2946bef2efab7c70339eee6a6b3cb6a6 Mon Sep 17 00:00:00 2001
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Date: Wed, 7 Aug 2019 10:30:58 +0900
Subject: [PATCH] ASoC: soc-core: tidyup for snd_soc_add_component_controls()
snd_soc_add_component_controls() registers controls by using
for(... i < num; ...). If controls was NULL, num should be zero.
Thus, we don't need to check about controls pointer.
This patch also cares missing return value.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87ef1xahor.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
---
sound/soc/soc-core.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index bb1e9e2c4ff4..e481f9999bfb 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -1304,10 +1304,12 @@ static int soc_probe_component(struct snd_soc_card *card,
}
}
- if (component->driver->controls)
- snd_soc_add_component_controls(component,
- component->driver->controls,
- component->driver->num_controls);
+ ret = snd_soc_add_component_controls(component,
+ component->driver->controls,
+ component->driver->num_controls);
+ if (ret < 0)
+ goto err_probe;
+
if (component->driver->dapm_routes)
snd_soc_dapm_add_routes(dapm,
component->driver->dapm_routes,
--
2.20.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v2 09/25] ASoC: soc-core: tidyup for snd_soc_dapm_add_routes()
2019-08-07 1:29 [PATCH v2 00/25] ASoC: cleanup patches for soc-core Kuninori Morimoto
` (7 preceding siblings ...)
2019-08-07 1:30 ` [PATCH v2 08/25] ASoC: soc-core: tidyup for snd_soc_add_component_controls() Kuninori Morimoto
@ 2019-08-07 1:31 ` Kuninori Morimoto
2019-08-08 20:33 ` Applied "ASoC: soc-core: tidyup for snd_soc_dapm_add_routes()" to the asoc tree Mark Brown
2019-08-20 11:18 ` [PATCH v2 09/25] ASoC: soc-core: tidyup for snd_soc_dapm_add_routes() Cezary Rojewski
2019-08-07 1:31 ` [PATCH v2 10/25] ASoC: soc-core: tidyup for snd_soc_add_card_controls() Kuninori Morimoto
` (15 subsequent siblings)
24 siblings, 2 replies; 54+ messages in thread
From: Kuninori Morimoto @ 2019-08-07 1:31 UTC (permalink / raw)
To: Mark Brown; +Cc: Linux-ALSA
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
snd_soc_dapm_add_routes() registers routes by using
for(... i < num; ...). If routes was NULL, num should be zero.
Thus, we don't need to check about route pointer.
This patch also cares missing return value.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
v1 -> v2
- check return value
- change Subject
sound/soc/soc-core.c | 23 +++++++++++++----------
1 file changed, 13 insertions(+), 10 deletions(-)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 21cdd3c..ca1b04c 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -1310,10 +1310,11 @@ static int soc_probe_component(struct snd_soc_card *card,
if (ret < 0)
goto err_probe;
- if (component->driver->dapm_routes)
- snd_soc_dapm_add_routes(dapm,
- component->driver->dapm_routes,
- component->driver->num_dapm_routes);
+ ret = snd_soc_dapm_add_routes(dapm,
+ component->driver->dapm_routes,
+ component->driver->num_dapm_routes);
+ if (ret < 0)
+ goto err_probe;
list_add(&dapm->list, &card->dapm_list);
/* see for_each_card_components */
@@ -2060,13 +2061,15 @@ static int snd_soc_instantiate_card(struct snd_soc_card *card)
snd_soc_add_card_controls(card, card->controls,
card->num_controls);
- if (card->dapm_routes)
- snd_soc_dapm_add_routes(&card->dapm, card->dapm_routes,
- card->num_dapm_routes);
+ ret = snd_soc_dapm_add_routes(&card->dapm, card->dapm_routes,
+ card->num_dapm_routes);
+ if (ret < 0)
+ goto probe_end;
- if (card->of_dapm_routes)
- snd_soc_dapm_add_routes(&card->dapm, card->of_dapm_routes,
- card->num_of_dapm_routes);
+ ret = snd_soc_dapm_add_routes(&card->dapm, card->of_dapm_routes,
+ card->num_of_dapm_routes);
+ if (ret < 0)
+ goto probe_end;
/* try to set some sane longname if DMI is available */
snd_soc_set_dmi_name(card, NULL);
--
2.7.4
^ permalink raw reply related [flat|nested] 54+ messages in thread* Applied "ASoC: soc-core: tidyup for snd_soc_dapm_add_routes()" to the asoc tree
2019-08-07 1:31 ` [PATCH v2 09/25] ASoC: soc-core: tidyup for snd_soc_dapm_add_routes() Kuninori Morimoto
@ 2019-08-08 20:33 ` Mark Brown
2019-08-20 11:18 ` [PATCH v2 09/25] ASoC: soc-core: tidyup for snd_soc_dapm_add_routes() Cezary Rojewski
1 sibling, 0 replies; 54+ messages in thread
From: Mark Brown @ 2019-08-08 20:33 UTC (permalink / raw)
To: Kuninori Morimoto; +Cc: Linux-ALSA, Mark Brown
The patch
ASoC: soc-core: tidyup for snd_soc_dapm_add_routes()
has been applied to the asoc tree at
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-5.4
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
>From daa480bde6b3a9b728965e52efffc329ccee3f77 Mon Sep 17 00:00:00 2001
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Date: Wed, 7 Aug 2019 10:31:03 +0900
Subject: [PATCH] ASoC: soc-core: tidyup for snd_soc_dapm_add_routes()
snd_soc_dapm_add_routes() registers routes by using
for(... i < num; ...). If routes was NULL, num should be zero.
Thus, we don't need to check about route pointer.
This patch also cares missing return value.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87d0hhahon.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
---
sound/soc/soc-core.c | 23 +++++++++++++----------
1 file changed, 13 insertions(+), 10 deletions(-)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index e481f9999bfb..de95b68ce9ee 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -1310,10 +1310,11 @@ static int soc_probe_component(struct snd_soc_card *card,
if (ret < 0)
goto err_probe;
- if (component->driver->dapm_routes)
- snd_soc_dapm_add_routes(dapm,
- component->driver->dapm_routes,
- component->driver->num_dapm_routes);
+ ret = snd_soc_dapm_add_routes(dapm,
+ component->driver->dapm_routes,
+ component->driver->num_dapm_routes);
+ if (ret < 0)
+ goto err_probe;
list_add(&dapm->list, &card->dapm_list);
/* see for_each_card_components */
@@ -2061,13 +2062,15 @@ static int snd_soc_instantiate_card(struct snd_soc_card *card)
snd_soc_add_card_controls(card, card->controls,
card->num_controls);
- if (card->dapm_routes)
- snd_soc_dapm_add_routes(&card->dapm, card->dapm_routes,
- card->num_dapm_routes);
+ ret = snd_soc_dapm_add_routes(&card->dapm, card->dapm_routes,
+ card->num_dapm_routes);
+ if (ret < 0)
+ goto probe_end;
- if (card->of_dapm_routes)
- snd_soc_dapm_add_routes(&card->dapm, card->of_dapm_routes,
- card->num_of_dapm_routes);
+ ret = snd_soc_dapm_add_routes(&card->dapm, card->of_dapm_routes,
+ card->num_of_dapm_routes);
+ if (ret < 0)
+ goto probe_end;
/* try to set some sane longname if DMI is available */
snd_soc_set_dmi_name(card, NULL);
--
2.20.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* Re: [PATCH v2 09/25] ASoC: soc-core: tidyup for snd_soc_dapm_add_routes()
2019-08-07 1:31 ` [PATCH v2 09/25] ASoC: soc-core: tidyup for snd_soc_dapm_add_routes() Kuninori Morimoto
2019-08-08 20:33 ` Applied "ASoC: soc-core: tidyup for snd_soc_dapm_add_routes()" to the asoc tree Mark Brown
@ 2019-08-20 11:18 ` Cezary Rojewski
2019-08-20 12:36 ` Pierre-Louis Bossart
2019-08-20 17:40 ` Mark Brown
1 sibling, 2 replies; 54+ messages in thread
From: Cezary Rojewski @ 2019-08-20 11:18 UTC (permalink / raw)
To: Kuninori Morimoto, Mark Brown; +Cc: Linux-ALSA
On 2019-08-07 03:31, Kuninori Morimoto wrote:
>
> From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
>
> snd_soc_dapm_add_routes() registers routes by using
> for(... i < num; ...). If routes was NULL, num should be zero.
> Thus, we don't need to check about route pointer.
> This patch also cares missing return value.
>
> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> ---
> v1 -> v2
>
> - check return value
> - change Subject
>
> sound/soc/soc-core.c | 23 +++++++++++++----------
> 1 file changed, 13 insertions(+), 10 deletions(-)
>
> diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
> index 21cdd3c..ca1b04c 100644
> --- a/sound/soc/soc-core.c
> +++ b/sound/soc/soc-core.c
> @@ -1310,10 +1310,11 @@ static int soc_probe_component(struct snd_soc_card *card,
> if (ret < 0)
> goto err_probe;
>
> - if (component->driver->dapm_routes)
> - snd_soc_dapm_add_routes(dapm,
> - component->driver->dapm_routes,
> - component->driver->num_dapm_routes);
> + ret = snd_soc_dapm_add_routes(dapm,
> + component->driver->dapm_routes,
> + component->driver->num_dapm_routes);
> + if (ret < 0)
> + goto err_probe;
>
> list_add(&dapm->list, &card->dapm_list);
> /* see for_each_card_components */
> @@ -2060,13 +2061,15 @@ static int snd_soc_instantiate_card(struct snd_soc_card *card)
> snd_soc_add_card_controls(card, card->controls,
> card->num_controls);
>
> - if (card->dapm_routes)
> - snd_soc_dapm_add_routes(&card->dapm, card->dapm_routes,
> - card->num_dapm_routes);
> + ret = snd_soc_dapm_add_routes(&card->dapm, card->dapm_routes,
> + card->num_dapm_routes);
> + if (ret < 0)
> + goto probe_end;
>
> - if (card->of_dapm_routes)
> - snd_soc_dapm_add_routes(&card->dapm, card->of_dapm_routes,
> - card->num_of_dapm_routes);
> + ret = snd_soc_dapm_add_routes(&card->dapm, card->of_dapm_routes,
> + card->num_of_dapm_routes);
> + if (ret < 0)
> + goto probe_end;
>
> /* try to set some sane longname if DMI is available */
> snd_soc_set_dmi_name(card, NULL);
>
Hello there,
I've run a validation cycle on recent broonie/for-next and this commit
caused regression. However, it may be simply an error on board side instead.
Previously, ret from snd_soc_dapm_add_routes has been ignored thus it
was permissive for addition of several routes to fail. As long as some
routes succeeded, card was working just fine. Now it's no longer the
case - behavior of the card initialization has changed: it is required
for ALL routes to succeed before card can be fully instantiated.
Must say collapsing snd_soc_instantiate_card is a wonderful way to test
your card's removal flow (soc__cleanup_card_resources and friends)..
Question is simple: are we staying with all-for-one/ one-for-all
approach or we reverting to permissive behavior?
Czarek
^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v2 09/25] ASoC: soc-core: tidyup for snd_soc_dapm_add_routes()
2019-08-20 11:18 ` [PATCH v2 09/25] ASoC: soc-core: tidyup for snd_soc_dapm_add_routes() Cezary Rojewski
@ 2019-08-20 12:36 ` Pierre-Louis Bossart
2019-08-20 13:38 ` Cezary Rojewski
2019-08-20 17:40 ` Mark Brown
1 sibling, 1 reply; 54+ messages in thread
From: Pierre-Louis Bossart @ 2019-08-20 12:36 UTC (permalink / raw)
To: Cezary Rojewski, Kuninori Morimoto, Mark Brown; +Cc: Linux-ALSA
On 8/20/19 6:18 AM, Cezary Rojewski wrote:
> On 2019-08-07 03:31, Kuninori Morimoto wrote:
>>
>> From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
>>
>> snd_soc_dapm_add_routes() registers routes by using
>> for(... i < num; ...). If routes was NULL, num should be zero.
>> Thus, we don't need to check about route pointer.
>> This patch also cares missing return value.
>>
>> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
>> ---
>> v1 -> v2
>>
>> - check return value
>> - change Subject
>>
>> sound/soc/soc-core.c | 23 +++++++++++++----------
>> 1 file changed, 13 insertions(+), 10 deletions(-)
>>
>> diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
>> index 21cdd3c..ca1b04c 100644
>> --- a/sound/soc/soc-core.c
>> +++ b/sound/soc/soc-core.c
>> @@ -1310,10 +1310,11 @@ static int soc_probe_component(struct
>> snd_soc_card *card,
>> if (ret < 0)
>> goto err_probe;
>> - if (component->driver->dapm_routes)
>> - snd_soc_dapm_add_routes(dapm,
>> - component->driver->dapm_routes,
>> - component->driver->num_dapm_routes);
>> + ret = snd_soc_dapm_add_routes(dapm,
>> + component->driver->dapm_routes,
>> + component->driver->num_dapm_routes);
>> + if (ret < 0)
>> + goto err_probe;
>> list_add(&dapm->list, &card->dapm_list);
>> /* see for_each_card_components */
>> @@ -2060,13 +2061,15 @@ static int snd_soc_instantiate_card(struct
>> snd_soc_card *card)
>> snd_soc_add_card_controls(card, card->controls,
>> card->num_controls);
>> - if (card->dapm_routes)
>> - snd_soc_dapm_add_routes(&card->dapm, card->dapm_routes,
>> - card->num_dapm_routes);
>> + ret = snd_soc_dapm_add_routes(&card->dapm, card->dapm_routes,
>> + card->num_dapm_routes);
>> + if (ret < 0)
>> + goto probe_end;
>> - if (card->of_dapm_routes)
>> - snd_soc_dapm_add_routes(&card->dapm, card->of_dapm_routes,
>> - card->num_of_dapm_routes);
>> + ret = snd_soc_dapm_add_routes(&card->dapm, card->of_dapm_routes,
>> + card->num_of_dapm_routes);
>> + if (ret < 0)
>> + goto probe_end;
>> /* try to set some sane longname if DMI is available */
>> snd_soc_set_dmi_name(card, NULL);
>>
>
> Hello there,
>
> I've run a validation cycle on recent broonie/for-next and this commit
> caused regression. However, it may be simply an error on board side
> instead.
>
> Previously, ret from snd_soc_dapm_add_routes has been ignored thus it
> was permissive for addition of several routes to fail. As long as some
> routes succeeded, card was working just fine. Now it's no longer the
> case - behavior of the card initialization has changed: it is required
> for ALL routes to succeed before card can be fully instantiated.
>
> Must say collapsing snd_soc_instantiate_card is a wonderful way to test
> your card's removal flow (soc__cleanup_card_resources and friends)..
>
> Question is simple: are we staying with all-for-one/ one-for-all
> approach or we reverting to permissive behavior?
Can you elaborate in which test case this patch creates a problem? Just
curious why the route addition fails in the first place.
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
https://mailman.alsa-project.org/mailman/listinfo/alsa-devel
^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v2 09/25] ASoC: soc-core: tidyup for snd_soc_dapm_add_routes()
2019-08-20 12:36 ` Pierre-Louis Bossart
@ 2019-08-20 13:38 ` Cezary Rojewski
2019-08-20 14:05 ` Pierre-Louis Bossart
0 siblings, 1 reply; 54+ messages in thread
From: Cezary Rojewski @ 2019-08-20 13:38 UTC (permalink / raw)
To: Pierre-Louis Bossart, Kuninori Morimoto, Mark Brown; +Cc: Linux-ALSA
On 2019-08-20 14:36, Pierre-Louis Bossart wrote:
>
>
> On 8/20/19 6:18 AM, Cezary Rojewski wrote:
>> On 2019-08-07 03:31, Kuninori Morimoto wrote:
>>>
>>> From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
>>>
>>> snd_soc_dapm_add_routes() registers routes by using
>>> for(... i < num; ...). If routes was NULL, num should be zero.
>>> Thus, we don't need to check about route pointer.
>>> This patch also cares missing return value.
>>>
>>> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
>>> ---
>>> v1 -> v2
>>>
>>> - check return value
>>> - change Subject
>>>
>>> sound/soc/soc-core.c | 23 +++++++++++++----------
>>> 1 file changed, 13 insertions(+), 10 deletions(-)
>>>
>>> diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
>>> index 21cdd3c..ca1b04c 100644
>>> --- a/sound/soc/soc-core.c
>>> +++ b/sound/soc/soc-core.c
>>> @@ -1310,10 +1310,11 @@ static int soc_probe_component(struct
>>> snd_soc_card *card,
>>> if (ret < 0)
>>> goto err_probe;
>>> - if (component->driver->dapm_routes)
>>> - snd_soc_dapm_add_routes(dapm,
>>> - component->driver->dapm_routes,
>>> - component->driver->num_dapm_routes);
>>> + ret = snd_soc_dapm_add_routes(dapm,
>>> + component->driver->dapm_routes,
>>> + component->driver->num_dapm_routes);
>>> + if (ret < 0)
>>> + goto err_probe;
>>> list_add(&dapm->list, &card->dapm_list);
>>> /* see for_each_card_components */
>>> @@ -2060,13 +2061,15 @@ static int snd_soc_instantiate_card(struct
>>> snd_soc_card *card)
>>> snd_soc_add_card_controls(card, card->controls,
>>> card->num_controls);
>>> - if (card->dapm_routes)
>>> - snd_soc_dapm_add_routes(&card->dapm, card->dapm_routes,
>>> - card->num_dapm_routes);
>>> + ret = snd_soc_dapm_add_routes(&card->dapm, card->dapm_routes,
>>> + card->num_dapm_routes);
>>> + if (ret < 0)
>>> + goto probe_end;
>>> - if (card->of_dapm_routes)
>>> - snd_soc_dapm_add_routes(&card->dapm, card->of_dapm_routes,
>>> - card->num_of_dapm_routes);
>>> + ret = snd_soc_dapm_add_routes(&card->dapm, card->of_dapm_routes,
>>> + card->num_of_dapm_routes);
>>> + if (ret < 0)
>>> + goto probe_end;
>>> /* try to set some sane longname if DMI is available */
>>> snd_soc_set_dmi_name(card, NULL);
>>>
>>
>> Hello there,
>>
>> I've run a validation cycle on recent broonie/for-next and this commit
>> caused regression. However, it may be simply an error on board side
>> instead.
>>
>> Previously, ret from snd_soc_dapm_add_routes has been ignored thus it
>> was permissive for addition of several routes to fail. As long as some
>> routes succeeded, card was working just fine. Now it's no longer the
>> case - behavior of the card initialization has changed: it is required
>> for ALL routes to succeed before card can be fully instantiated.
>>
>> Must say collapsing snd_soc_instantiate_card is a wonderful way to
>> test your card's removal flow (soc__cleanup_card_resources and friends)..
>>
>> Question is simple: are we staying with all-for-one/ one-for-all
>> approach or we reverting to permissive behavior?
>
> Can you elaborate in which test case this patch creates a problem? Just
> curious why the route addition fails in the first place.
If snd_soc_instantiate_card fails so does any test, really. Red wall was
easy to spot even for a hungry developer : )
Our cnl_rt274 board declares several routes, yet our topology does not
provide necessary info for all of them. And thus, addition of some
routes fails. This was fine till now. That's also why I'd mentioned in
the very first sentence: it might be simply a board issue. Maybe we
should have never abused permissive behavior in the first place.
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
https://mailman.alsa-project.org/mailman/listinfo/alsa-devel
^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v2 09/25] ASoC: soc-core: tidyup for snd_soc_dapm_add_routes()
2019-08-20 13:38 ` Cezary Rojewski
@ 2019-08-20 14:05 ` Pierre-Louis Bossart
2019-08-20 15:04 ` Cezary Rojewski
0 siblings, 1 reply; 54+ messages in thread
From: Pierre-Louis Bossart @ 2019-08-20 14:05 UTC (permalink / raw)
To: Cezary Rojewski, Kuninori Morimoto, Mark Brown; +Cc: Linux-ALSA
On 8/20/19 8:38 AM, Cezary Rojewski wrote:
> On 2019-08-20 14:36, Pierre-Louis Bossart wrote:
>>
>>
>> On 8/20/19 6:18 AM, Cezary Rojewski wrote:
>>> On 2019-08-07 03:31, Kuninori Morimoto wrote:
>>>>
>>>> From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
>>>>
>>>> snd_soc_dapm_add_routes() registers routes by using
>>>> for(... i < num; ...). If routes was NULL, num should be zero.
>>>> Thus, we don't need to check about route pointer.
>>>> This patch also cares missing return value.
>>>>
>>>> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
>>>> ---
>>>> v1 -> v2
>>>>
>>>> - check return value
>>>> - change Subject
>>>>
>>>> sound/soc/soc-core.c | 23 +++++++++++++----------
>>>> 1 file changed, 13 insertions(+), 10 deletions(-)
>>>>
>>>> diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
>>>> index 21cdd3c..ca1b04c 100644
>>>> --- a/sound/soc/soc-core.c
>>>> +++ b/sound/soc/soc-core.c
>>>> @@ -1310,10 +1310,11 @@ static int soc_probe_component(struct
>>>> snd_soc_card *card,
>>>> if (ret < 0)
>>>> goto err_probe;
>>>> - if (component->driver->dapm_routes)
>>>> - snd_soc_dapm_add_routes(dapm,
>>>> - component->driver->dapm_routes,
>>>> - component->driver->num_dapm_routes);
>>>> + ret = snd_soc_dapm_add_routes(dapm,
>>>> + component->driver->dapm_routes,
>>>> + component->driver->num_dapm_routes);
>>>> + if (ret < 0)
>>>> + goto err_probe;
>>>> list_add(&dapm->list, &card->dapm_list);
>>>> /* see for_each_card_components */
>>>> @@ -2060,13 +2061,15 @@ static int snd_soc_instantiate_card(struct
>>>> snd_soc_card *card)
>>>> snd_soc_add_card_controls(card, card->controls,
>>>> card->num_controls);
>>>> - if (card->dapm_routes)
>>>> - snd_soc_dapm_add_routes(&card->dapm, card->dapm_routes,
>>>> - card->num_dapm_routes);
>>>> + ret = snd_soc_dapm_add_routes(&card->dapm, card->dapm_routes,
>>>> + card->num_dapm_routes);
>>>> + if (ret < 0)
>>>> + goto probe_end;
>>>> - if (card->of_dapm_routes)
>>>> - snd_soc_dapm_add_routes(&card->dapm, card->of_dapm_routes,
>>>> - card->num_of_dapm_routes);
>>>> + ret = snd_soc_dapm_add_routes(&card->dapm, card->of_dapm_routes,
>>>> + card->num_of_dapm_routes);
>>>> + if (ret < 0)
>>>> + goto probe_end;
>>>> /* try to set some sane longname if DMI is available */
>>>> snd_soc_set_dmi_name(card, NULL);
>>>>
>>>
>>> Hello there,
>>>
>>> I've run a validation cycle on recent broonie/for-next and this
>>> commit caused regression. However, it may be simply an error on board
>>> side instead.
>>>
>>> Previously, ret from snd_soc_dapm_add_routes has been ignored thus it
>>> was permissive for addition of several routes to fail. As long as
>>> some routes succeeded, card was working just fine. Now it's no longer
>>> the case - behavior of the card initialization has changed: it is
>>> required for ALL routes to succeed before card can be fully
>>> instantiated.
>>>
>>> Must say collapsing snd_soc_instantiate_card is a wonderful way to
>>> test your card's removal flow (soc__cleanup_card_resources and
>>> friends)..
>>>
>>> Question is simple: are we staying with all-for-one/ one-for-all
>>> approach or we reverting to permissive behavior?
>>
>> Can you elaborate in which test case this patch creates a problem?
>> Just curious why the route addition fails in the first place.
>
> If snd_soc_instantiate_card fails so does any test, really. Red wall was
> easy to spot even for a hungry developer : )
>
> Our cnl_rt274 board declares several routes, yet our topology does not
> provide necessary info for all of them. And thus, addition of some
> routes fails. This was fine till now. That's also why I'd mentioned in
> the very first sentence: it might be simply a board issue. Maybe we
> should have never abused permissive behavior in the first place.
Yep, and that driver is not upstream as well so Intel can't complain here...
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
https://mailman.alsa-project.org/mailman/listinfo/alsa-devel
^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v2 09/25] ASoC: soc-core: tidyup for snd_soc_dapm_add_routes()
2019-08-20 14:05 ` Pierre-Louis Bossart
@ 2019-08-20 15:04 ` Cezary Rojewski
2019-08-20 17:39 ` Pierre-Louis Bossart
0 siblings, 1 reply; 54+ messages in thread
From: Cezary Rojewski @ 2019-08-20 15:04 UTC (permalink / raw)
To: Pierre-Louis Bossart, Kuninori Morimoto, Mark Brown; +Cc: Linux-ALSA
On 2019-08-20 16:05, Pierre-Louis Bossart wrote:
>
>
> On 8/20/19 8:38 AM, Cezary Rojewski wrote:
>> On 2019-08-20 14:36, Pierre-Louis Bossart wrote:
>>>
>>>
>>> On 8/20/19 6:18 AM, Cezary Rojewski wrote:
>>>> On 2019-08-07 03:31, Kuninori Morimoto wrote:
>>>>>
>>>>> From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
>>>>>
>>>>> snd_soc_dapm_add_routes() registers routes by using
>>>>> for(... i < num; ...). If routes was NULL, num should be zero.
>>>>> Thus, we don't need to check about route pointer.
>>>>> This patch also cares missing return value.
>>>>>
>>>>> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
>>>>> ---
>>>>> v1 -> v2
>>>>>
>>>>> - check return value
>>>>> - change Subject
>>>>>
>>>>> sound/soc/soc-core.c | 23 +++++++++++++----------
>>>>> 1 file changed, 13 insertions(+), 10 deletions(-)
>>>>>
>>>>> diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
>>>>> index 21cdd3c..ca1b04c 100644
>>>>> --- a/sound/soc/soc-core.c
>>>>> +++ b/sound/soc/soc-core.c
>>>>> @@ -1310,10 +1310,11 @@ static int soc_probe_component(struct
>>>>> snd_soc_card *card,
>>>>> if (ret < 0)
>>>>> goto err_probe;
>>>>> - if (component->driver->dapm_routes)
>>>>> - snd_soc_dapm_add_routes(dapm,
>>>>> - component->driver->dapm_routes,
>>>>> - component->driver->num_dapm_routes);
>>>>> + ret = snd_soc_dapm_add_routes(dapm,
>>>>> + component->driver->dapm_routes,
>>>>> + component->driver->num_dapm_routes);
>>>>> + if (ret < 0)
>>>>> + goto err_probe;
>>>>> list_add(&dapm->list, &card->dapm_list);
>>>>> /* see for_each_card_components */
>>>>> @@ -2060,13 +2061,15 @@ static int snd_soc_instantiate_card(struct
>>>>> snd_soc_card *card)
>>>>> snd_soc_add_card_controls(card, card->controls,
>>>>> card->num_controls);
>>>>> - if (card->dapm_routes)
>>>>> - snd_soc_dapm_add_routes(&card->dapm, card->dapm_routes,
>>>>> - card->num_dapm_routes);
>>>>> + ret = snd_soc_dapm_add_routes(&card->dapm, card->dapm_routes,
>>>>> + card->num_dapm_routes);
>>>>> + if (ret < 0)
>>>>> + goto probe_end;
>>>>> - if (card->of_dapm_routes)
>>>>> - snd_soc_dapm_add_routes(&card->dapm, card->of_dapm_routes,
>>>>> - card->num_of_dapm_routes);
>>>>> + ret = snd_soc_dapm_add_routes(&card->dapm, card->of_dapm_routes,
>>>>> + card->num_of_dapm_routes);
>>>>> + if (ret < 0)
>>>>> + goto probe_end;
>>>>> /* try to set some sane longname if DMI is available */
>>>>> snd_soc_set_dmi_name(card, NULL);
>>>>>
>>>>
>>>> Hello there,
>>>>
>>>> I've run a validation cycle on recent broonie/for-next and this
>>>> commit caused regression. However, it may be simply an error on
>>>> board side instead.
>>>>
>>>> Previously, ret from snd_soc_dapm_add_routes has been ignored thus
>>>> it was permissive for addition of several routes to fail. As long as
>>>> some routes succeeded, card was working just fine. Now it's no
>>>> longer the case - behavior of the card initialization has changed:
>>>> it is required for ALL routes to succeed before card can be fully
>>>> instantiated.
>>>>
>>>> Must say collapsing snd_soc_instantiate_card is a wonderful way to
>>>> test your card's removal flow (soc__cleanup_card_resources and
>>>> friends)..
>>>>
>>>> Question is simple: are we staying with all-for-one/ one-for-all
>>>> approach or we reverting to permissive behavior?
>>>
>>> Can you elaborate in which test case this patch creates a problem?
>>> Just curious why the route addition fails in the first place.
>>
>> If snd_soc_instantiate_card fails so does any test, really. Red wall
>> was easy to spot even for a hungry developer : )
>>
>> Our cnl_rt274 board declares several routes, yet our topology does not
>> provide necessary info for all of them. And thus, addition of some
>> routes fails. This was fine till now. That's also why I'd mentioned in
>> the very first sentence: it might be simply a board issue. Maybe we
>> should have never abused permissive behavior in the first place.
>
> Yep, and that driver is not upstream as well so Intel can't complain
> here...
??
It's not about complaining, rather starting a discussion. If I were
using boards with topology not fully matching its board equivalent
(because if has never been required of me) then there may be others who
did the exact same trick. Your card won't be enumerated now == change of
behavior.
Board bxt_rt298 is upstreamed and the exact same failures could be
reproduced since topology has something to say here too..
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
https://mailman.alsa-project.org/mailman/listinfo/alsa-devel
^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v2 09/25] ASoC: soc-core: tidyup for snd_soc_dapm_add_routes()
2019-08-20 15:04 ` Cezary Rojewski
@ 2019-08-20 17:39 ` Pierre-Louis Bossart
0 siblings, 0 replies; 54+ messages in thread
From: Pierre-Louis Bossart @ 2019-08-20 17:39 UTC (permalink / raw)
To: Cezary Rojewski, Kuninori Morimoto, Mark Brown; +Cc: Linux-ALSA
>>>>> Question is simple: are we staying with all-for-one/ one-for-all
>>>>> approach or we reverting to permissive behavior?
>>>>
>>>> Can you elaborate in which test case this patch creates a problem?
>>>> Just curious why the route addition fails in the first place.
>>>
>>> If snd_soc_instantiate_card fails so does any test, really. Red wall
>>> was easy to spot even for a hungry developer : )
>>>
>>> Our cnl_rt274 board declares several routes, yet our topology does
>>> not provide necessary info for all of them. And thus, addition of
>>> some routes fails. This was fine till now. That's also why I'd
>>> mentioned in the very first sentence: it might be simply a board
>>> issue. Maybe we should have never abused permissive behavior in the
>>> first place.
>>
>> Yep, and that driver is not upstream as well so Intel can't complain
>> here...
>
> ??
>
> It's not about complaining, rather starting a discussion. If I were
> using boards with topology not fully matching its board equivalent
> (because if has never been required of me) then there may be others who
> did the exact same trick. Your card won't be enumerated now == change of
> behavior.
>
> Board bxt_rt298 is upstreamed and the exact same failures could be
> reproduced since topology has something to say here too..
That's different. For bxt_rt298 there is a topology that was released,
and if it's incorrect it should be fixed.
I *hope* we are not going to see such regressions with SKL/KBL
Chromebooks, that would be more of a problem since there are more users.
^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v2 09/25] ASoC: soc-core: tidyup for snd_soc_dapm_add_routes()
2019-08-20 11:18 ` [PATCH v2 09/25] ASoC: soc-core: tidyup for snd_soc_dapm_add_routes() Cezary Rojewski
2019-08-20 12:36 ` Pierre-Louis Bossart
@ 2019-08-20 17:40 ` Mark Brown
1 sibling, 0 replies; 54+ messages in thread
From: Mark Brown @ 2019-08-20 17:40 UTC (permalink / raw)
To: Cezary Rojewski; +Cc: Linux-ALSA, Kuninori Morimoto
[-- Attachment #1.1: Type: text/plain, Size: 717 bytes --]
On Tue, Aug 20, 2019 at 01:18:01PM +0200, Cezary Rojewski wrote:
> Previously, ret from snd_soc_dapm_add_routes has been ignored thus it was
> permissive for addition of several routes to fail. As long as some routes
> succeeded, card was working just fine. Now it's no longer the case -
> behavior of the card initialization has changed: it is required for ALL
> routes to succeed before card can be fully instantiated.
I really wouldn't expect routes failing to add to be a normal part of
instantiation (we should have been complaining about that in the logs
shouldn't we?). Whatever enumeration is causing the missing widgets
to not instantiate also ought to control the addition of the routes
connecting them.
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
[-- Attachment #2: Type: text/plain, Size: 0 bytes --]
^ permalink raw reply [flat|nested] 54+ messages in thread
* [PATCH v2 10/25] ASoC: soc-core: tidyup for snd_soc_add_card_controls()
2019-08-07 1:29 [PATCH v2 00/25] ASoC: cleanup patches for soc-core Kuninori Morimoto
` (8 preceding siblings ...)
2019-08-07 1:31 ` [PATCH v2 09/25] ASoC: soc-core: tidyup for snd_soc_dapm_add_routes() Kuninori Morimoto
@ 2019-08-07 1:31 ` Kuninori Morimoto
2019-08-08 20:33 ` Applied "ASoC: soc-core: tidyup for snd_soc_add_card_controls()" to the asoc tree Mark Brown
2019-08-07 1:31 ` [PATCH v2 11/25] ASoC: soc-core: call snd_soc_dapm_debugfs_init() at soc_init_card_debugfs() Kuninori Morimoto
` (14 subsequent siblings)
24 siblings, 1 reply; 54+ messages in thread
From: Kuninori Morimoto @ 2019-08-07 1:31 UTC (permalink / raw)
To: Mark Brown; +Cc: Linux-ALSA
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
snd_soc_add_card_controls() registers controls by using
for(... i < num; ...). If controls was NULL, num should be zero.
Thus, we don't need to check about controls pointer.
This patch also cares missing return value.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
v1 -> v2
- check return value
- change Subject
sound/soc/soc-core.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index ca1b04c..e939544 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -2057,9 +2057,10 @@ static int snd_soc_instantiate_card(struct snd_soc_card *card)
snd_soc_dapm_link_dai_widgets(card);
snd_soc_dapm_connect_dai_link_widgets(card);
- if (card->controls)
- snd_soc_add_card_controls(card, card->controls,
- card->num_controls);
+ ret = snd_soc_add_card_controls(card, card->controls,
+ card->num_controls);
+ if (ret < 0)
+ goto probe_end;
ret = snd_soc_dapm_add_routes(&card->dapm, card->dapm_routes,
card->num_dapm_routes);
--
2.7.4
^ permalink raw reply related [flat|nested] 54+ messages in thread* Applied "ASoC: soc-core: tidyup for snd_soc_add_card_controls()" to the asoc tree
2019-08-07 1:31 ` [PATCH v2 10/25] ASoC: soc-core: tidyup for snd_soc_add_card_controls() Kuninori Morimoto
@ 2019-08-08 20:33 ` Mark Brown
0 siblings, 0 replies; 54+ messages in thread
From: Mark Brown @ 2019-08-08 20:33 UTC (permalink / raw)
To: Kuninori Morimoto; +Cc: Linux-ALSA, Mark Brown
The patch
ASoC: soc-core: tidyup for snd_soc_add_card_controls()
has been applied to the asoc tree at
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-5.4
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
>From 9b98c7c2a0599084c7ed629b5f88f474d2578307 Mon Sep 17 00:00:00 2001
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Date: Wed, 7 Aug 2019 10:31:08 +0900
Subject: [PATCH] ASoC: soc-core: tidyup for snd_soc_add_card_controls()
snd_soc_add_card_controls() registers controls by using
for(... i < num; ...). If controls was NULL, num should be zero.
Thus, we don't need to check about controls pointer.
This patch also cares missing return value.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87blx1ahoi.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
---
sound/soc/soc-core.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index de95b68ce9ee..4b9ae867613c 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -2058,9 +2058,10 @@ static int snd_soc_instantiate_card(struct snd_soc_card *card)
snd_soc_dapm_link_dai_widgets(card);
snd_soc_dapm_connect_dai_link_widgets(card);
- if (card->controls)
- snd_soc_add_card_controls(card, card->controls,
- card->num_controls);
+ ret = snd_soc_add_card_controls(card, card->controls,
+ card->num_controls);
+ if (ret < 0)
+ goto probe_end;
ret = snd_soc_dapm_add_routes(&card->dapm, card->dapm_routes,
card->num_dapm_routes);
--
2.20.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v2 11/25] ASoC: soc-core: call snd_soc_dapm_debugfs_init() at soc_init_card_debugfs()
2019-08-07 1:29 [PATCH v2 00/25] ASoC: cleanup patches for soc-core Kuninori Morimoto
` (9 preceding siblings ...)
2019-08-07 1:31 ` [PATCH v2 10/25] ASoC: soc-core: tidyup for snd_soc_add_card_controls() Kuninori Morimoto
@ 2019-08-07 1:31 ` Kuninori Morimoto
2019-08-08 20:33 ` Applied "ASoC: soc-core: call snd_soc_dapm_debugfs_init() at soc_init_card_debugfs()" to the asoc tree Mark Brown
2019-08-07 1:31 ` [PATCH v2 12/25] ASoC: soc-core: remove unneeded list_empty() check for snd_soc_try_rebind_card() Kuninori Morimoto
` (13 subsequent siblings)
24 siblings, 1 reply; 54+ messages in thread
From: Kuninori Morimoto @ 2019-08-07 1:31 UTC (permalink / raw)
To: Mark Brown; +Cc: Linux-ALSA
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
We have 2 soc_init_card_debugfs() implementations for with/without DEBUG_FS.
But, snd_soc_instantiate_card() calls snd_soc_dapm_debugfs_init() under
ifdef DEBUG_FS after soc_init_card_debugfs(). This is very strange.
We can call snd_soc_dapm_debugfs_init() under soc_init_card_debugfs().
#ifdef CONFIG_DEBUG_FS
=> static void soc_init_card_debugfs(...)
{
...
}
...
#else
=> static inline void soc_init_card_debugfs(...)
{
...
}
#endif
static int snd_soc_instantiate_card(struct snd_soc_card *card)
{
...
=> soc_init_card_debugfs(card);
* #ifdef CONFIG_DEBUG_FS
* snd_soc_dapm_debugfs_init(&card->dapm, card->debugfs_card_root);
* #endif
}
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
v1 -> v2
- no change
sound/soc/soc-core.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index e939544..eb4a247 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -216,6 +216,8 @@ static void soc_init_card_debugfs(struct snd_soc_card *card)
debugfs_create_u32("dapm_pop_time", 0644, card->debugfs_card_root,
&card->pop_time);
+
+ snd_soc_dapm_debugfs_init(&card->dapm, card->debugfs_card_root);
}
static void soc_cleanup_card_debugfs(struct snd_soc_card *card)
@@ -1981,10 +1983,6 @@ static int snd_soc_instantiate_card(struct snd_soc_card *card)
soc_init_card_debugfs(card);
-#ifdef CONFIG_DEBUG_FS
- snd_soc_dapm_debugfs_init(&card->dapm, card->debugfs_card_root);
-#endif
-
#ifdef CONFIG_PM_SLEEP
/* deferred resume work */
INIT_WORK(&card->deferred_resume_work, soc_resume_deferred);
--
2.7.4
^ permalink raw reply related [flat|nested] 54+ messages in thread* Applied "ASoC: soc-core: call snd_soc_dapm_debugfs_init() at soc_init_card_debugfs()" to the asoc tree
2019-08-07 1:31 ` [PATCH v2 11/25] ASoC: soc-core: call snd_soc_dapm_debugfs_init() at soc_init_card_debugfs() Kuninori Morimoto
@ 2019-08-08 20:33 ` Mark Brown
0 siblings, 0 replies; 54+ messages in thread
From: Mark Brown @ 2019-08-08 20:33 UTC (permalink / raw)
To: Kuninori Morimoto; +Cc: Linux-ALSA, Mark Brown
The patch
ASoC: soc-core: call snd_soc_dapm_debugfs_init() at soc_init_card_debugfs()
has been applied to the asoc tree at
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-5.4
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
>From d8ca7a0a8583fc491b625450580c4092879af3dd Mon Sep 17 00:00:00 2001
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Date: Wed, 7 Aug 2019 10:31:14 +0900
Subject: [PATCH] ASoC: soc-core: call snd_soc_dapm_debugfs_init() at
soc_init_card_debugfs()
We have 2 soc_init_card_debugfs() implementations for with/without DEBUG_FS.
But, snd_soc_instantiate_card() calls snd_soc_dapm_debugfs_init() under
ifdef DEBUG_FS after soc_init_card_debugfs(). This is very strange.
We can call snd_soc_dapm_debugfs_init() under soc_init_card_debugfs().
#ifdef CONFIG_DEBUG_FS
=> static void soc_init_card_debugfs(...)
{
...
}
...
#else
=> static inline void soc_init_card_debugfs(...)
{
...
}
#endif
static int snd_soc_instantiate_card(struct snd_soc_card *card)
{
...
=> soc_init_card_debugfs(card);
* #ifdef CONFIG_DEBUG_FS
* snd_soc_dapm_debugfs_init(&card->dapm, card->debugfs_card_root);
* #endif
}
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/87a7clahob.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
---
sound/soc/soc-core.c | 6 ++----
1 file changed, 2 insertions(+), 4 deletions(-)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 4b9ae867613c..cf3d967d731e 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -216,6 +216,8 @@ static void soc_init_card_debugfs(struct snd_soc_card *card)
debugfs_create_u32("dapm_pop_time", 0644, card->debugfs_card_root,
&card->pop_time);
+
+ snd_soc_dapm_debugfs_init(&card->dapm, card->debugfs_card_root);
}
static void soc_cleanup_card_debugfs(struct snd_soc_card *card)
@@ -1982,10 +1984,6 @@ static int snd_soc_instantiate_card(struct snd_soc_card *card)
soc_init_card_debugfs(card);
-#ifdef CONFIG_DEBUG_FS
- snd_soc_dapm_debugfs_init(&card->dapm, card->debugfs_card_root);
-#endif
-
#ifdef CONFIG_PM_SLEEP
/* deferred resume work */
INIT_WORK(&card->deferred_resume_work, soc_resume_deferred);
--
2.20.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v2 12/25] ASoC: soc-core: remove unneeded list_empty() check for snd_soc_try_rebind_card()
2019-08-07 1:29 [PATCH v2 00/25] ASoC: cleanup patches for soc-core Kuninori Morimoto
` (10 preceding siblings ...)
2019-08-07 1:31 ` [PATCH v2 11/25] ASoC: soc-core: call snd_soc_dapm_debugfs_init() at soc_init_card_debugfs() Kuninori Morimoto
@ 2019-08-07 1:31 ` Kuninori Morimoto
2019-08-08 20:33 ` Applied "ASoC: soc-core: remove unneeded list_empty() check for snd_soc_try_rebind_card()" to the asoc tree Mark Brown
2019-08-07 1:31 ` [PATCH v2 13/25] ASoC: soc-core: tidyup for card->deferred_resume_work Kuninori Morimoto
` (12 subsequent siblings)
24 siblings, 1 reply; 54+ messages in thread
From: Kuninori Morimoto @ 2019-08-07 1:31 UTC (permalink / raw)
To: Mark Brown; +Cc: Linux-ALSA
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
list_for_each_entry_safe() will do nothing if it was empty list.
This patch removes unneeded list_empty() check for
list_for_each_entry_safe().
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
v1 -> v2
- no change
sound/soc/soc-core.c | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index eb4a247..5f23207 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -2807,12 +2807,9 @@ static void snd_soc_try_rebind_card(void)
{
struct snd_soc_card *card, *c;
- if (!list_empty(&unbind_card_list)) {
- list_for_each_entry_safe(card, c, &unbind_card_list, list) {
- if (!snd_soc_bind_card(card))
- list_del(&card->list);
- }
- }
+ list_for_each_entry_safe(card, c, &unbind_card_list, list)
+ if (!snd_soc_bind_card(card))
+ list_del(&card->list);
}
int snd_soc_add_component(struct device *dev,
--
2.7.4
^ permalink raw reply related [flat|nested] 54+ messages in thread* Applied "ASoC: soc-core: remove unneeded list_empty() check for snd_soc_try_rebind_card()" to the asoc tree
2019-08-07 1:31 ` [PATCH v2 12/25] ASoC: soc-core: remove unneeded list_empty() check for snd_soc_try_rebind_card() Kuninori Morimoto
@ 2019-08-08 20:33 ` Mark Brown
0 siblings, 0 replies; 54+ messages in thread
From: Mark Brown @ 2019-08-08 20:33 UTC (permalink / raw)
To: Kuninori Morimoto; +Cc: Linux-ALSA, Mark Brown
The patch
ASoC: soc-core: remove unneeded list_empty() check for snd_soc_try_rebind_card()
has been applied to the asoc tree at
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-5.4
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
>From b245d273cbcd64eeaa93305f99c4ea8a6baf9c89 Mon Sep 17 00:00:00 2001
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Date: Wed, 7 Aug 2019 10:31:19 +0900
Subject: [PATCH] ASoC: soc-core: remove unneeded list_empty() check for
snd_soc_try_rebind_card()
list_for_each_entry_safe() will do nothing if it was empty list.
This patch removes unneeded list_empty() check for
list_for_each_entry_safe().
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/878ss5aho6.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
---
sound/soc/soc-core.c | 9 +++------
1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index cf3d967d731e..6b0042835233 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -2808,12 +2808,9 @@ static void snd_soc_try_rebind_card(void)
{
struct snd_soc_card *card, *c;
- if (!list_empty(&unbind_card_list)) {
- list_for_each_entry_safe(card, c, &unbind_card_list, list) {
- if (!snd_soc_bind_card(card))
- list_del(&card->list);
- }
- }
+ list_for_each_entry_safe(card, c, &unbind_card_list, list)
+ if (!snd_soc_bind_card(card))
+ list_del(&card->list);
}
int snd_soc_add_component(struct device *dev,
--
2.20.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v2 13/25] ASoC: soc-core: tidyup for card->deferred_resume_work
2019-08-07 1:29 [PATCH v2 00/25] ASoC: cleanup patches for soc-core Kuninori Morimoto
` (11 preceding siblings ...)
2019-08-07 1:31 ` [PATCH v2 12/25] ASoC: soc-core: remove unneeded list_empty() check for snd_soc_try_rebind_card() Kuninori Morimoto
@ 2019-08-07 1:31 ` Kuninori Morimoto
2019-08-08 20:33 ` Applied "ASoC: soc-core: tidyup for card->deferred_resume_work" to the asoc tree Mark Brown
2019-08-07 1:31 ` [PATCH v2 14/25] ASoC: soc-core: define soc_dpcm_debugfs_add() for non CONFIG_DEBUG_FS Kuninori Morimoto
` (11 subsequent siblings)
24 siblings, 1 reply; 54+ messages in thread
From: Kuninori Morimoto @ 2019-08-07 1:31 UTC (permalink / raw)
To: Mark Brown; +Cc: Linux-ALSA
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
card->deferred_resume_work is used if CONFIG_PM_SLEEP was defined.
but
1) It is defined even though CONFIG_PM_SLEEP was not defined
2) random ifdef code is difficult to read.
This patch tidyup these issues.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
v1 -> v2
- fixup typo at git-log
include/sound/soc.h | 5 +++--
sound/soc/soc-core.c | 14 ++++++++++----
2 files changed, 13 insertions(+), 6 deletions(-)
diff --git a/include/sound/soc.h b/include/sound/soc.h
index 6ac6481..85ad971 100644
--- a/include/sound/soc.h
+++ b/include/sound/soc.h
@@ -1058,8 +1058,6 @@ struct snd_soc_card {
int num_of_dapm_routes;
bool fully_routed;
- struct work_struct deferred_resume_work;
-
/* lists of probed devices belonging to this card */
struct list_head component_dev_list;
struct list_head list;
@@ -1080,6 +1078,9 @@ struct snd_soc_card {
#ifdef CONFIG_DEBUG_FS
struct dentry *debugfs_card_root;
#endif
+#ifdef CONFIG_PM_SLEEP
+ struct work_struct deferred_resume_work;
+#endif
u32 pop_time;
void *drvdata;
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 5f23207..93de95d 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -701,9 +701,18 @@ int snd_soc_resume(struct device *dev)
return 0;
}
EXPORT_SYMBOL_GPL(snd_soc_resume);
+
+static void soc_resume_init(struct snd_soc_card *card)
+{
+ /* deferred resume work */
+ INIT_WORK(&card->deferred_resume_work, soc_resume_deferred);
+}
#else
#define snd_soc_suspend NULL
#define snd_soc_resume NULL
+static inline void soc_resume_init(struct snd_soc_card *card)
+{
+}
#endif
static const struct snd_soc_dai_ops null_dai_ops = {
@@ -1983,10 +1992,7 @@ static int snd_soc_instantiate_card(struct snd_soc_card *card)
soc_init_card_debugfs(card);
-#ifdef CONFIG_PM_SLEEP
- /* deferred resume work */
- INIT_WORK(&card->deferred_resume_work, soc_resume_deferred);
-#endif
+ soc_resume_init(card);
ret = snd_soc_dapm_new_controls(&card->dapm, card->dapm_widgets,
card->num_dapm_widgets);
--
2.7.4
^ permalink raw reply related [flat|nested] 54+ messages in thread* Applied "ASoC: soc-core: tidyup for card->deferred_resume_work" to the asoc tree
2019-08-07 1:31 ` [PATCH v2 13/25] ASoC: soc-core: tidyup for card->deferred_resume_work Kuninori Morimoto
@ 2019-08-08 20:33 ` Mark Brown
0 siblings, 0 replies; 54+ messages in thread
From: Mark Brown @ 2019-08-08 20:33 UTC (permalink / raw)
To: Kuninori Morimoto; +Cc: Linux-ALSA, Mark Brown
The patch
ASoC: soc-core: tidyup for card->deferred_resume_work
has been applied to the asoc tree at
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-5.4
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
>From b3da42519c3e6ad977af844d61c31d0e5f874f1c Mon Sep 17 00:00:00 2001
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Date: Wed, 7 Aug 2019 10:31:24 +0900
Subject: [PATCH] ASoC: soc-core: tidyup for card->deferred_resume_work
card->deferred_resume_work is used if CONFIG_PM_SLEEP was defined.
but
1) It is defined even though CONFIG_PM_SLEEP was not defined
2) random ifdef code is difficult to read.
This patch tidyup these issues.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/877e7paho1.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
---
include/sound/soc.h | 5 +++--
sound/soc/soc-core.c | 14 ++++++++++----
2 files changed, 13 insertions(+), 6 deletions(-)
diff --git a/include/sound/soc.h b/include/sound/soc.h
index 6ac6481b4882..85ad971e9432 100644
--- a/include/sound/soc.h
+++ b/include/sound/soc.h
@@ -1058,8 +1058,6 @@ struct snd_soc_card {
int num_of_dapm_routes;
bool fully_routed;
- struct work_struct deferred_resume_work;
-
/* lists of probed devices belonging to this card */
struct list_head component_dev_list;
struct list_head list;
@@ -1079,6 +1077,9 @@ struct snd_soc_card {
#ifdef CONFIG_DEBUG_FS
struct dentry *debugfs_card_root;
+#endif
+#ifdef CONFIG_PM_SLEEP
+ struct work_struct deferred_resume_work;
#endif
u32 pop_time;
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 6b0042835233..25b26caea4e0 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -701,9 +701,18 @@ int snd_soc_resume(struct device *dev)
return 0;
}
EXPORT_SYMBOL_GPL(snd_soc_resume);
+
+static void soc_resume_init(struct snd_soc_card *card)
+{
+ /* deferred resume work */
+ INIT_WORK(&card->deferred_resume_work, soc_resume_deferred);
+}
#else
#define snd_soc_suspend NULL
#define snd_soc_resume NULL
+static inline void soc_resume_init(struct snd_soc_card *card)
+{
+}
#endif
static const struct snd_soc_dai_ops null_dai_ops = {
@@ -1984,10 +1993,7 @@ static int snd_soc_instantiate_card(struct snd_soc_card *card)
soc_init_card_debugfs(card);
-#ifdef CONFIG_PM_SLEEP
- /* deferred resume work */
- INIT_WORK(&card->deferred_resume_work, soc_resume_deferred);
-#endif
+ soc_resume_init(card);
ret = snd_soc_dapm_new_controls(&card->dapm, card->dapm_widgets,
card->num_dapm_widgets);
--
2.20.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v2 14/25] ASoC: soc-core: define soc_dpcm_debugfs_add() for non CONFIG_DEBUG_FS
2019-08-07 1:29 [PATCH v2 00/25] ASoC: cleanup patches for soc-core Kuninori Morimoto
` (12 preceding siblings ...)
2019-08-07 1:31 ` [PATCH v2 13/25] ASoC: soc-core: tidyup for card->deferred_resume_work Kuninori Morimoto
@ 2019-08-07 1:31 ` Kuninori Morimoto
2019-08-08 20:33 ` Applied "ASoC: soc-core: define soc_dpcm_debugfs_add() for non CONFIG_DEBUG_FS" to the asoc tree Mark Brown
2019-08-07 1:31 ` [PATCH v2 15/25] ASoC: soc-core: dai_link check under soc_dpcm_debugfs_add() Kuninori Morimoto
` (10 subsequent siblings)
24 siblings, 1 reply; 54+ messages in thread
From: Kuninori Morimoto @ 2019-08-07 1:31 UTC (permalink / raw)
To: Mark Brown; +Cc: Linux-ALSA
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
soc_dpcm_debugfs_add() is implemented at soc-pcm.c under CONFIG_DEBUG_FS.
Thus, soc-core.c which is only user of it need to use CONFIG_DEBUG_FS, too.
This patch defines soc_dpcm_debugfs_add() for non CONFIG_DEBUG_FS case.
Then, we can remove #ifdef CONFIG_DEBUG_FS from soc-core.c
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
v1 -> v2
- no change
include/sound/soc-dpcm.h | 9 ++++++++-
sound/soc/soc-core.c | 2 --
2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/include/sound/soc-dpcm.h b/include/sound/soc-dpcm.h
index 4be3a2b..e55aeb0 100644
--- a/include/sound/soc-dpcm.h
+++ b/include/sound/soc-dpcm.h
@@ -142,9 +142,16 @@ void snd_soc_dpcm_be_set_state(struct snd_soc_pcm_runtime *be, int stream,
/* internal use only */
int soc_dpcm_be_digital_mute(struct snd_soc_pcm_runtime *fe, int mute);
-void soc_dpcm_debugfs_add(struct snd_soc_pcm_runtime *rtd);
int soc_dpcm_runtime_update(struct snd_soc_card *);
+#ifdef CONFIG_DEBUG_FS
+void soc_dpcm_debugfs_add(struct snd_soc_pcm_runtime *rtd);
+#else
+static inline void soc_dpcm_debugfs_add(struct snd_soc_pcm_runtime *rtd)
+{
+}
+#endif
+
int dpcm_path_get(struct snd_soc_pcm_runtime *fe,
int stream, struct snd_soc_dapm_widget_list **list_);
int dpcm_process_paths(struct snd_soc_pcm_runtime *fe,
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 93de95d..d95259c 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -1486,11 +1486,9 @@ static int soc_probe_link_dais(struct snd_soc_card *card,
if (ret)
return ret;
-#ifdef CONFIG_DEBUG_FS
/* add DPCM sysfs entries */
if (dai_link->dynamic)
soc_dpcm_debugfs_add(rtd);
-#endif
num = rtd->num;
--
2.7.4
^ permalink raw reply related [flat|nested] 54+ messages in thread* Applied "ASoC: soc-core: define soc_dpcm_debugfs_add() for non CONFIG_DEBUG_FS" to the asoc tree
2019-08-07 1:31 ` [PATCH v2 14/25] ASoC: soc-core: define soc_dpcm_debugfs_add() for non CONFIG_DEBUG_FS Kuninori Morimoto
@ 2019-08-08 20:33 ` Mark Brown
0 siblings, 0 replies; 54+ messages in thread
From: Mark Brown @ 2019-08-08 20:33 UTC (permalink / raw)
To: Kuninori Morimoto; +Cc: Linux-ALSA, Mark Brown
The patch
ASoC: soc-core: define soc_dpcm_debugfs_add() for non CONFIG_DEBUG_FS
has been applied to the asoc tree at
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-5.4
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
>From ee5b3f11416d1ba69e919b2fe86aae0b46f9a83e Mon Sep 17 00:00:00 2001
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Date: Wed, 7 Aug 2019 10:31:31 +0900
Subject: [PATCH] ASoC: soc-core: define soc_dpcm_debugfs_add() for non
CONFIG_DEBUG_FS
soc_dpcm_debugfs_add() is implemented at soc-pcm.c under CONFIG_DEBUG_FS.
Thus, soc-core.c which is only user of it need to use CONFIG_DEBUG_FS, too.
This patch defines soc_dpcm_debugfs_add() for non CONFIG_DEBUG_FS case.
Then, we can remove #ifdef CONFIG_DEBUG_FS from soc-core.c
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/875zn9ahnv.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
---
include/sound/soc-dpcm.h | 9 ++++++++-
sound/soc/soc-core.c | 2 --
2 files changed, 8 insertions(+), 3 deletions(-)
diff --git a/include/sound/soc-dpcm.h b/include/sound/soc-dpcm.h
index 4be3a2b7c106..e55aeb00ce2d 100644
--- a/include/sound/soc-dpcm.h
+++ b/include/sound/soc-dpcm.h
@@ -142,9 +142,16 @@ void snd_soc_dpcm_be_set_state(struct snd_soc_pcm_runtime *be, int stream,
/* internal use only */
int soc_dpcm_be_digital_mute(struct snd_soc_pcm_runtime *fe, int mute);
-void soc_dpcm_debugfs_add(struct snd_soc_pcm_runtime *rtd);
int soc_dpcm_runtime_update(struct snd_soc_card *);
+#ifdef CONFIG_DEBUG_FS
+void soc_dpcm_debugfs_add(struct snd_soc_pcm_runtime *rtd);
+#else
+static inline void soc_dpcm_debugfs_add(struct snd_soc_pcm_runtime *rtd)
+{
+}
+#endif
+
int dpcm_path_get(struct snd_soc_pcm_runtime *fe,
int stream, struct snd_soc_dapm_widget_list **list_);
int dpcm_process_paths(struct snd_soc_pcm_runtime *fe,
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 25b26caea4e0..2a75fba31aa4 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -1487,11 +1487,9 @@ static int soc_probe_link_dais(struct snd_soc_card *card,
if (ret)
return ret;
-#ifdef CONFIG_DEBUG_FS
/* add DPCM sysfs entries */
if (dai_link->dynamic)
soc_dpcm_debugfs_add(rtd);
-#endif
num = rtd->num;
--
2.20.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v2 15/25] ASoC: soc-core: dai_link check under soc_dpcm_debugfs_add()
2019-08-07 1:29 [PATCH v2 00/25] ASoC: cleanup patches for soc-core Kuninori Morimoto
` (13 preceding siblings ...)
2019-08-07 1:31 ` [PATCH v2 14/25] ASoC: soc-core: define soc_dpcm_debugfs_add() for non CONFIG_DEBUG_FS Kuninori Morimoto
@ 2019-08-07 1:31 ` Kuninori Morimoto
2019-08-08 20:33 ` Applied "ASoC: soc-core: dai_link check under soc_dpcm_debugfs_add()" to the asoc tree Mark Brown
2019-08-07 1:31 ` [PATCH v2 16/25] ASoC: soc-core: merge snd_soc_initialize_card_lists() Kuninori Morimoto
` (9 subsequent siblings)
24 siblings, 1 reply; 54+ messages in thread
From: Kuninori Morimoto @ 2019-08-07 1:31 UTC (permalink / raw)
To: Mark Brown; +Cc: Linux-ALSA
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
soc_dpcm_debugfs_add(rtd) is checking rtd->dai_link pointer,
but, rtd->dai_link->dynamic have been already checked before calling it.
static int soc_probe_link_dais(...) {
dai_link = rtd->dai_link;
...
=> if (dai_link->dynamic)
=> soc_dpcm_debugfs_add(rtd);
...
}
void soc_dpcm_debugfs_add(rtd)
{
=> if (!rtd->dai_link)
return;
...
}
These pointer checks are strange/pointless.
This patch checks dai_link->dynamic under soc_dpcm_debugfs_add().
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
v1 -> v2
- no change
sound/soc/soc-core.c | 3 +--
sound/soc/soc-pcm.c | 3 +++
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index d95259c..665223f 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -1487,8 +1487,7 @@ static int soc_probe_link_dais(struct snd_soc_card *card,
return ret;
/* add DPCM sysfs entries */
- if (dai_link->dynamic)
- soc_dpcm_debugfs_add(rtd);
+ soc_dpcm_debugfs_add(rtd);
num = rtd->num;
diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c
index 77c986f..da657c8 100644
--- a/sound/soc/soc-pcm.c
+++ b/sound/soc/soc-pcm.c
@@ -3200,6 +3200,9 @@ void soc_dpcm_debugfs_add(struct snd_soc_pcm_runtime *rtd)
if (!rtd->dai_link)
return;
+ if (!rtd->dai_link->dynamic)
+ return;
+
if (!rtd->card->debugfs_card_root)
return;
--
2.7.4
^ permalink raw reply related [flat|nested] 54+ messages in thread* Applied "ASoC: soc-core: dai_link check under soc_dpcm_debugfs_add()" to the asoc tree
2019-08-07 1:31 ` [PATCH v2 15/25] ASoC: soc-core: dai_link check under soc_dpcm_debugfs_add() Kuninori Morimoto
@ 2019-08-08 20:33 ` Mark Brown
0 siblings, 0 replies; 54+ messages in thread
From: Mark Brown @ 2019-08-08 20:33 UTC (permalink / raw)
To: Kuninori Morimoto; +Cc: Linux-ALSA, Mark Brown
The patch
ASoC: soc-core: dai_link check under soc_dpcm_debugfs_add()
has been applied to the asoc tree at
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-5.4
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
>From 596becd3f82a7b7e091b0f5c380bc9a0e6758126 Mon Sep 17 00:00:00 2001
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Date: Wed, 7 Aug 2019 10:31:36 +0900
Subject: [PATCH] ASoC: soc-core: dai_link check under soc_dpcm_debugfs_add()
soc_dpcm_debugfs_add(rtd) is checking rtd->dai_link pointer,
but, rtd->dai_link->dynamic have been already checked before calling it.
static int soc_probe_link_dais(...) {
dai_link = rtd->dai_link;
...
=> if (dai_link->dynamic)
=> soc_dpcm_debugfs_add(rtd);
...
}
void soc_dpcm_debugfs_add(rtd)
{
=> if (!rtd->dai_link)
return;
...
}
These pointer checks are strange/pointless.
This patch checks dai_link->dynamic under soc_dpcm_debugfs_add().
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Link: https://lore.kernel.org/r/874l2tahnq.wl-kuninori.morimoto.gx@renesas.com
Signed-off-by: Mark Brown <broonie@kernel.org>
---
sound/soc/soc-core.c | 3 +--
sound/soc/soc-pcm.c | 3 +++
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 2a75fba31aa4..1fbd525763d5 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -1488,8 +1488,7 @@ static int soc_probe_link_dais(struct snd_soc_card *card,
return ret;
/* add DPCM sysfs entries */
- if (dai_link->dynamic)
- soc_dpcm_debugfs_add(rtd);
+ soc_dpcm_debugfs_add(rtd);
num = rtd->num;
diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c
index 77c986fe08d0..da657c8179cc 100644
--- a/sound/soc/soc-pcm.c
+++ b/sound/soc/soc-pcm.c
@@ -3200,6 +3200,9 @@ void soc_dpcm_debugfs_add(struct snd_soc_pcm_runtime *rtd)
if (!rtd->dai_link)
return;
+ if (!rtd->dai_link->dynamic)
+ return;
+
if (!rtd->card->debugfs_card_root)
return;
--
2.20.1
^ permalink raw reply related [flat|nested] 54+ messages in thread
* [PATCH v2 16/25] ASoC: soc-core: merge snd_soc_initialize_card_lists()
2019-08-07 1:29 [PATCH v2 00/25] ASoC: cleanup patches for soc-core Kuninori Morimoto
` (14 preceding siblings ...)
2019-08-07 1:31 ` [PATCH v2 15/25] ASoC: soc-core: dai_link check under soc_dpcm_debugfs_add() Kuninori Morimoto
@ 2019-08-07 1:31 ` Kuninori Morimoto
2019-08-07 1:31 ` [PATCH v2 17/25] ASoC: soc-core: remove unneeded dai_link check from snd_soc_remove_dai_link() Kuninori Morimoto
` (8 subsequent siblings)
24 siblings, 0 replies; 54+ messages in thread
From: Kuninori Morimoto @ 2019-08-07 1:31 UTC (permalink / raw)
To: Mark Brown; +Cc: Linux-ALSA
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
snd_soc_initialize_card_lists() is doing card related
INIT_LIST_HEAD(), but, it is already doing at
snd_soc_register_card(). We don't need to do it separately.
This patch merges these.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
v1 -> v2
- no change
include/sound/soc.h | 10 ----------
sound/soc/soc-core.c | 13 ++++++++-----
2 files changed, 8 insertions(+), 15 deletions(-)
diff --git a/include/sound/soc.h b/include/sound/soc.h
index 85ad971..c92697e 100644
--- a/include/sound/soc.h
+++ b/include/sound/soc.h
@@ -1210,16 +1210,6 @@ static inline void *snd_soc_card_get_drvdata(struct snd_soc_card *card)
return card->drvdata;
}
-static inline void snd_soc_initialize_card_lists(struct snd_soc_card *card)
-{
- INIT_LIST_HEAD(&card->widgets);
- INIT_LIST_HEAD(&card->paths);
- INIT_LIST_HEAD(&card->dapm_list);
- INIT_LIST_HEAD(&card->aux_comp_list);
- INIT_LIST_HEAD(&card->component_dev_list);
- INIT_LIST_HEAD(&card->list);
-}
-
static inline bool snd_soc_volsw_is_stereo(struct soc_mixer_control *mc)
{
if (mc->reg == mc->rreg && mc->shift == mc->rshift)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 665223f..b631ab5 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -2389,15 +2389,18 @@ int snd_soc_register_card(struct snd_soc_card *card)
dev_set_drvdata(card->dev, card);
- snd_soc_initialize_card_lists(card);
-
+ INIT_LIST_HEAD(&card->widgets);
+ INIT_LIST_HEAD(&card->paths);
+ INIT_LIST_HEAD(&card->dapm_list);
+ INIT_LIST_HEAD(&card->aux_comp_list);
+ INIT_LIST_HEAD(&card->component_dev_list);
+ INIT_LIST_HEAD(&card->list);
INIT_LIST_HEAD(&card->dai_link_list);
-
INIT_LIST_HEAD(&card->rtd_list);
- card->num_rtd = 0;
-
INIT_LIST_HEAD(&card->dapm_dirty);
INIT_LIST_HEAD(&card->dobj_list);
+
+ card->num_rtd = 0;
card->instantiated = 0;
mutex_init(&card->mutex);
mutex_init(&card->dapm_mutex);
--
2.7.4
^ permalink raw reply related [flat|nested] 54+ messages in thread* [PATCH v2 17/25] ASoC: soc-core: remove unneeded dai_link check from snd_soc_remove_dai_link()
2019-08-07 1:29 [PATCH v2 00/25] ASoC: cleanup patches for soc-core Kuninori Morimoto
` (15 preceding siblings ...)
2019-08-07 1:31 ` [PATCH v2 16/25] ASoC: soc-core: merge snd_soc_initialize_card_lists() Kuninori Morimoto
@ 2019-08-07 1:31 ` Kuninori Morimoto
2019-08-07 1:31 ` [PATCH v2 18/25] ASoC: soc-core: add NOTE to snd_soc_rtdcom_lookup() Kuninori Morimoto
` (7 subsequent siblings)
24 siblings, 0 replies; 54+ messages in thread
From: Kuninori Morimoto @ 2019-08-07 1:31 UTC (permalink / raw)
To: Mark Brown; +Cc: Linux-ALSA
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
snd_soc_remove_dai_link() has card connected dai_link check. but
1) we need to call list_del() anyway,
because it is "remove" function,
2) It is doing many thing for this card / dai_link already
before checking dai_link.
This patch removes poinless dai_link check
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
v1 -> v2
- no change
sound/soc/soc-core.c | 9 +--------
1 file changed, 1 insertion(+), 8 deletions(-)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index b631ab5..421a908 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -1180,8 +1180,6 @@ EXPORT_SYMBOL_GPL(snd_soc_add_dai_link);
void snd_soc_remove_dai_link(struct snd_soc_card *card,
struct snd_soc_dai_link *dai_link)
{
- struct snd_soc_dai_link *link, *_link;
-
if (dai_link->dobj.type
&& dai_link->dobj.type != SND_SOC_DOBJ_DAI_LINK) {
dev_err(card->dev, "Invalid dai link type %d\n",
@@ -1197,12 +1195,7 @@ void snd_soc_remove_dai_link(struct snd_soc_card *card,
if (dai_link->dobj.type && card->remove_dai_link)
card->remove_dai_link(card, dai_link);
- for_each_card_links_safe(card, link, _link) {
- if (link == dai_link) {
- list_del(&link->list);
- return;
- }
- }
+ list_del(&dai_link->list);
}
EXPORT_SYMBOL_GPL(snd_soc_remove_dai_link);
--
2.7.4
^ permalink raw reply related [flat|nested] 54+ messages in thread* [PATCH v2 18/25] ASoC: soc-core: add NOTE to snd_soc_rtdcom_lookup()
2019-08-07 1:29 [PATCH v2 00/25] ASoC: cleanup patches for soc-core Kuninori Morimoto
` (16 preceding siblings ...)
2019-08-07 1:31 ` [PATCH v2 17/25] ASoC: soc-core: remove unneeded dai_link check from snd_soc_remove_dai_link() Kuninori Morimoto
@ 2019-08-07 1:31 ` Kuninori Morimoto
2019-08-07 1:31 ` [PATCH v2 19/25] ASoC: soc-core: don't call snd_soc_component_set_jack() Kuninori Morimoto
` (6 subsequent siblings)
24 siblings, 0 replies; 54+ messages in thread
From: Kuninori Morimoto @ 2019-08-07 1:31 UTC (permalink / raw)
To: Mark Brown; +Cc: Linux-ALSA
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
We can find specified name component via snd_soc_rtdcom_lookup().
But, it is not enough under multi CPU/Codec/Platform, because many
components which have same driver name might be connected to same rtd.
Not using this function as much as possible is best solution,
but some drivers are already deeply depended to it.
We can expand this function, for example having "num" which specifies
found order at parameter, etc (In such case, it need to have fixed
probing order).
Or, use different driver name in such component, etc.
We will have such issue if multi CPU/Codec/Platform were supported.
To indicate it, this patch adds NOTE to this function.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
v1 -> v2
- no change
sound/soc/soc-core.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 421a908..80703618 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -313,6 +313,14 @@ struct snd_soc_component *snd_soc_rtdcom_lookup(struct snd_soc_pcm_runtime *rtd,
if (!driver_name)
return NULL;
+ /*
+ * NOTE
+ *
+ * snd_soc_rtdcom_lookup() will find component from rtd by using
+ * specified driver name.
+ * But, if many components which have same driver name are connected
+ * to 1 rtd, this function will return 1st found component.
+ */
for_each_rtdcom(rtd, rtdcom) {
const char *component_name = rtdcom->component->driver->name;
--
2.7.4
^ permalink raw reply related [flat|nested] 54+ messages in thread* [PATCH v2 19/25] ASoC: soc-core: don't call snd_soc_component_set_jack()
2019-08-07 1:29 [PATCH v2 00/25] ASoC: cleanup patches for soc-core Kuninori Morimoto
` (17 preceding siblings ...)
2019-08-07 1:31 ` [PATCH v2 18/25] ASoC: soc-core: add NOTE to snd_soc_rtdcom_lookup() Kuninori Morimoto
@ 2019-08-07 1:31 ` Kuninori Morimoto
2019-08-07 18:49 ` Cezary Rojewski
2019-08-07 1:31 ` [PATCH v2 20/25] ASoC: soc-core: don't alloc memory carelessly when creating debugfs Kuninori Morimoto
` (5 subsequent siblings)
24 siblings, 1 reply; 54+ messages in thread
From: Kuninori Morimoto @ 2019-08-07 1:31 UTC (permalink / raw)
To: Mark Brown; +Cc: Linux-ALSA
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
snd_soc_component_set_jack() is used for both setting/clearing.
Setting purpose is used under each driver.
Hence, clearing purpose should be used under each driver, not soc-core.
soc-core shouldn't touch it even though its purpose was for clearing,
otherwise, code becomes very confusable.
This patch removes snd_soc_component_set_jack() from soc-core.c
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
v1 -> v2
- no change
sound/soc/soc-core.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 80703618..e708095 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -938,7 +938,6 @@ static int soc_bind_dai_link(struct snd_soc_card *card,
static void soc_cleanup_component(struct snd_soc_component *component)
{
- snd_soc_component_set_jack(component, NULL, NULL);
list_del(&component->card_list);
snd_soc_dapm_free(snd_soc_component_get_dapm(component));
soc_cleanup_component_debugfs(component);
--
2.7.4
^ permalink raw reply related [flat|nested] 54+ messages in thread* Re: [PATCH v2 19/25] ASoC: soc-core: don't call snd_soc_component_set_jack()
2019-08-07 1:31 ` [PATCH v2 19/25] ASoC: soc-core: don't call snd_soc_component_set_jack() Kuninori Morimoto
@ 2019-08-07 18:49 ` Cezary Rojewski
2019-08-08 9:14 ` Amadeusz Sławiński
0 siblings, 1 reply; 54+ messages in thread
From: Cezary Rojewski @ 2019-08-07 18:49 UTC (permalink / raw)
To: Kuninori Morimoto, Amadeusz Sławiński; +Cc: Linux-ALSA, Mark Brown
On 2019-08-07 03:31, Kuninori Morimoto wrote:
> From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
>
> snd_soc_component_set_jack() is used for both setting/clearing.
> Setting purpose is used under each driver.
> Hence, clearing purpose should be used under each driver, not soc-core.
>
> soc-core shouldn't touch it even though its purpose was for clearing,
> otherwise, code becomes very confusable.
> This patch removes snd_soc_component_set_jack() from soc-core.c
>
> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> ---
> v1 -> v2
>
> - no change
>
> sound/soc/soc-core.c | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
> index 80703618..e708095 100644
> --- a/sound/soc/soc-core.c
> +++ b/sound/soc/soc-core.c
> @@ -938,7 +938,6 @@ static int soc_bind_dai_link(struct snd_soc_card *card,
>
> static void soc_cleanup_component(struct snd_soc_component *component)
> {
> - snd_soc_component_set_jack(component, NULL, NULL);
> list_del(&component->card_list);
> snd_soc_dapm_free(snd_soc_component_get_dapm(component));
> soc_cleanup_component_debugfs(component);
>
This has been added lately for a reason - reload/ unload series.
Amadeusz, could you comment on this change?
^ permalink raw reply [flat|nested] 54+ messages in thread* Re: [PATCH v2 19/25] ASoC: soc-core: don't call snd_soc_component_set_jack()
2019-08-07 18:49 ` Cezary Rojewski
@ 2019-08-08 9:14 ` Amadeusz Sławiński
2019-08-20 4:24 ` Kuninori Morimoto
0 siblings, 1 reply; 54+ messages in thread
From: Amadeusz Sławiński @ 2019-08-08 9:14 UTC (permalink / raw)
To: Cezary Rojewski; +Cc: Linux-ALSA, Mark Brown, Kuninori Morimoto
On Wed, 7 Aug 2019 20:49:09 +0200
Cezary Rojewski <cezary.rojewski@intel.com> wrote:
> On 2019-08-07 03:31, Kuninori Morimoto wrote:
> > From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> >
> > snd_soc_component_set_jack() is used for both setting/clearing.
> > Setting purpose is used under each driver.
> > Hence, clearing purpose should be used under each driver, not
> > soc-core.
> >
> > soc-core shouldn't touch it even though its purpose was for
> > clearing, otherwise, code becomes very confusable.
> > This patch removes snd_soc_component_set_jack() from soc-core.c
> >
> > Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> > ---
> > v1 -> v2
> >
> > - no change
> >
> > sound/soc/soc-core.c | 1 -
> > 1 file changed, 1 deletion(-)
> >
> > diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
> > index 80703618..e708095 100644
> > --- a/sound/soc/soc-core.c
> > +++ b/sound/soc/soc-core.c
> > @@ -938,7 +938,6 @@ static int soc_bind_dai_link(struct
> > snd_soc_card *card,
> > static void soc_cleanup_component(struct snd_soc_component
> > *component) {
> > - snd_soc_component_set_jack(component, NULL, NULL);
> > list_del(&component->card_list);
> > snd_soc_dapm_free(snd_soc_component_get_dapm(component));
> > soc_cleanup_component_debugfs(component);
> >
>
> This has been added lately for a reason - reload/ unload series.
> Amadeusz, could you comment on this change?
This was done on assumption that we want to always make sure that it is
cleaned up, independent of if driver author accidentally forgets to do
this.
We can of course add handler to our driver to do this, first version of
patch actually did this, before we decided on global option.
Amadeusz
^ permalink raw reply [flat|nested] 54+ messages in thread* Re: [PATCH v2 19/25] ASoC: soc-core: don't call snd_soc_component_set_jack()
2019-08-08 9:14 ` Amadeusz Sławiński
@ 2019-08-20 4:24 ` Kuninori Morimoto
2019-08-28 12:06 ` Mark Brown
0 siblings, 1 reply; 54+ messages in thread
From: Kuninori Morimoto @ 2019-08-20 4:24 UTC (permalink / raw)
To: Amadeusz Sławiński; +Cc: Cezary Rojewski, Mark Brown, Linux-ALSA
Hi
> > > From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> > >
> > > snd_soc_component_set_jack() is used for both setting/clearing.
> > > Setting purpose is used under each driver.
> > > Hence, clearing purpose should be used under each driver, not
> > > soc-core.
> > >
> > > soc-core shouldn't touch it even though its purpose was for
> > > clearing, otherwise, code becomes very confusable.
> > > This patch removes snd_soc_component_set_jack() from soc-core.c
> > >
> > > Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> > > ---
> > > v1 -> v2
> > >
> > > - no change
> > >
> > > sound/soc/soc-core.c | 1 -
> > > 1 file changed, 1 deletion(-)
> > >
> > > diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
> > > index 80703618..e708095 100644
> > > --- a/sound/soc/soc-core.c
> > > +++ b/sound/soc/soc-core.c
> > > @@ -938,7 +938,6 @@ static int soc_bind_dai_link(struct
> > > snd_soc_card *card,
> > > static void soc_cleanup_component(struct snd_soc_component
> > > *component) {
> > > - snd_soc_component_set_jack(component, NULL, NULL);
> > > list_del(&component->card_list);
> > > snd_soc_dapm_free(snd_soc_component_get_dapm(component));
> > > soc_cleanup_component_debugfs(component);
> > >
> >
> > This has been added lately for a reason - reload/ unload series.
> > Amadeusz, could you comment on this change?
>
> This was done on assumption that we want to always make sure that it is
> cleaned up, independent of if driver author accidentally forgets to do
> this.
>
> We can of course add handler to our driver to do this, first version of
> patch actually did this, before we decided on global option.
I double-checked framework.
*All* drivers which are using snd_soc_component_set_jack()
doesn't care reset jack.
I think it should be done under driver, not framework,
but this patch seems have big effect.
OK, let's skip it.
Thank you for your help !!
Best regards
---
Kuninori Morimoto
^ permalink raw reply [flat|nested] 54+ messages in thread* Re: [PATCH v2 19/25] ASoC: soc-core: don't call snd_soc_component_set_jack()
2019-08-20 4:24 ` Kuninori Morimoto
@ 2019-08-28 12:06 ` Mark Brown
2019-08-29 0:16 ` Kuninori Morimoto
0 siblings, 1 reply; 54+ messages in thread
From: Mark Brown @ 2019-08-28 12:06 UTC (permalink / raw)
To: Kuninori Morimoto
Cc: Cezary Rojewski, Linux-ALSA, Amadeusz Sławiński
[-- Attachment #1.1: Type: text/plain, Size: 662 bytes --]
On Tue, Aug 20, 2019 at 01:24:11PM +0900, Kuninori Morimoto wrote:
> > We can of course add handler to our driver to do this, first version of
> > patch actually did this, before we decided on global option.
> I double-checked framework.
> *All* drivers which are using snd_soc_component_set_jack()
> doesn't care reset jack.
> I think it should be done under driver, not framework,
> but this patch seems have big effect.
> OK, let's skip it.
Yes, I think the current code is better for robustness - we've got a few
things like this where the core will do cleanup even if it's neater to
do it in the driver since it makes it harder for there to be mistakes.
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
[-- Attachment #2: Type: text/plain, Size: 0 bytes --]
^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v2 19/25] ASoC: soc-core: don't call snd_soc_component_set_jack()
2019-08-28 12:06 ` Mark Brown
@ 2019-08-29 0:16 ` Kuninori Morimoto
2019-08-29 9:58 ` Mark Brown
0 siblings, 1 reply; 54+ messages in thread
From: Kuninori Morimoto @ 2019-08-29 0:16 UTC (permalink / raw)
To: Mark Brown; +Cc: Cezary Rojewski, Linux-ALSA, Amadeusz Sławiński
Hi Mark
> > I double-checked framework.
> > *All* drivers which are using snd_soc_component_set_jack()
> > doesn't care reset jack.
> > I think it should be done under driver, not framework,
> > but this patch seems have big effect.
> > OK, let's skip it.
>
> Yes, I think the current code is better for robustness - we've got a few
> things like this where the core will do cleanup even if it's neater to
> do it in the driver since it makes it harder for there to be mistakes.
I agree we want to have robustness.
To make clear that it is for robustness,
I think it is better to have such message/comment on code :)
Thank you for your help !!
Best regards
---
Kuninori Morimoto
^ permalink raw reply [flat|nested] 54+ messages in thread
* Re: [PATCH v2 19/25] ASoC: soc-core: don't call snd_soc_component_set_jack()
2019-08-29 0:16 ` Kuninori Morimoto
@ 2019-08-29 9:58 ` Mark Brown
0 siblings, 0 replies; 54+ messages in thread
From: Mark Brown @ 2019-08-29 9:58 UTC (permalink / raw)
To: Kuninori Morimoto
Cc: Cezary Rojewski, Linux-ALSA, Amadeusz Sławiński
[-- Attachment #1.1: Type: text/plain, Size: 241 bytes --]
On Thu, Aug 29, 2019 at 09:16:08AM +0900, Kuninori Morimoto wrote:
> I agree we want to have robustness.
> To make clear that it is for robustness,
> I think it is better to have such message/comment on code :)
Sure, that sounds sensible.
[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
[-- Attachment #2: Type: text/plain, Size: 0 bytes --]
^ permalink raw reply [flat|nested] 54+ messages in thread
* [PATCH v2 20/25] ASoC: soc-core: don't alloc memory carelessly when creating debugfs
2019-08-07 1:29 [PATCH v2 00/25] ASoC: cleanup patches for soc-core Kuninori Morimoto
` (18 preceding siblings ...)
2019-08-07 1:31 ` [PATCH v2 19/25] ASoC: soc-core: don't call snd_soc_component_set_jack() Kuninori Morimoto
@ 2019-08-07 1:31 ` Kuninori Morimoto
2019-08-07 1:32 ` [PATCH v2 21/25] ASoC: soc-core: soc_cleanup_card_resources() become void Kuninori Morimoto
` (4 subsequent siblings)
24 siblings, 0 replies; 54+ messages in thread
From: Kuninori Morimoto @ 2019-08-07 1:31 UTC (permalink / raw)
To: Mark Brown; +Cc: Linux-ALSA
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Current ALSA SoC might allocate debugfs name memory via kasprintf(),
but, it is unnecessary and the code becoming very complex.
Using local variable with appropriate size is enough.
This patch uses 64byte local variable for it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
v1 -> v2
- fixup typo at git-log
sound/soc/soc-core.c | 22 +++++++++-------------
1 file changed, 9 insertions(+), 13 deletions(-)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index e708095..203e7cf 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -147,23 +147,19 @@ static const struct attribute_group *soc_dev_attr_groups[] = {
#ifdef CONFIG_DEBUG_FS
static void soc_init_component_debugfs(struct snd_soc_component *component)
{
+ char name[64];
+
if (!component->card->debugfs_card_root)
return;
- if (component->debugfs_prefix) {
- char *name;
-
- name = kasprintf(GFP_KERNEL, "%s:%s",
+ if (component->debugfs_prefix)
+ snprintf(name, ARRAY_SIZE(name), "%s:%s",
component->debugfs_prefix, component->name);
- if (name) {
- component->debugfs_root = debugfs_create_dir(name,
- component->card->debugfs_card_root);
- kfree(name);
- }
- } else {
- component->debugfs_root = debugfs_create_dir(component->name,
- component->card->debugfs_card_root);
- }
+ else
+ snprintf(name, ARRAY_SIZE(name), "%s", component->name);
+
+ component->debugfs_root = debugfs_create_dir(name,
+ component->card->debugfs_card_root);
snd_soc_dapm_debugfs_init(snd_soc_component_get_dapm(component),
component->debugfs_root);
--
2.7.4
^ permalink raw reply related [flat|nested] 54+ messages in thread* [PATCH v2 21/25] ASoC: soc-core: soc_cleanup_card_resources() become void
2019-08-07 1:29 [PATCH v2 00/25] ASoC: cleanup patches for soc-core Kuninori Morimoto
` (19 preceding siblings ...)
2019-08-07 1:31 ` [PATCH v2 20/25] ASoC: soc-core: don't alloc memory carelessly when creating debugfs Kuninori Morimoto
@ 2019-08-07 1:32 ` Kuninori Morimoto
2019-08-07 1:32 ` [PATCH v2 22/25] ASoC: soc-core: initialize component list Kuninori Morimoto
` (3 subsequent siblings)
24 siblings, 0 replies; 54+ messages in thread
From: Kuninori Morimoto @ 2019-08-07 1:32 UTC (permalink / raw)
To: Mark Brown; +Cc: Linux-ALSA
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
There is no need to check return value for
soc_cleanup_card_resources(). Let't makes it as void.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
v1 -> v2
- no change
sound/soc/soc-core.c | 4 +---
1 file changed, 1 insertion(+), 3 deletions(-)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 203e7cf..cf8763e 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -1901,7 +1901,7 @@ static void soc_check_tplg_fes(struct snd_soc_card *card)
}
}
-static int soc_cleanup_card_resources(struct snd_soc_card *card)
+static void soc_cleanup_card_resources(struct snd_soc_card *card)
{
/* free the ALSA card at first; this syncs with pending operations */
if (card->snd_card) {
@@ -1922,8 +1922,6 @@ static int soc_cleanup_card_resources(struct snd_soc_card *card)
/* remove the card */
if (card->remove)
card->remove(card);
-
- return 0;
}
static int snd_soc_instantiate_card(struct snd_soc_card *card)
--
2.7.4
^ permalink raw reply related [flat|nested] 54+ messages in thread* [PATCH v2 22/25] ASoC: soc-core: initialize component list
2019-08-07 1:29 [PATCH v2 00/25] ASoC: cleanup patches for soc-core Kuninori Morimoto
` (20 preceding siblings ...)
2019-08-07 1:32 ` [PATCH v2 21/25] ASoC: soc-core: soc_cleanup_card_resources() become void Kuninori Morimoto
@ 2019-08-07 1:32 ` Kuninori Morimoto
2019-08-07 1:32 ` [PATCH v2 23/25] ASoC: soc-core: initialize list at one place Kuninori Morimoto
` (2 subsequent siblings)
24 siblings, 0 replies; 54+ messages in thread
From: Kuninori Morimoto @ 2019-08-07 1:32 UTC (permalink / raw)
To: Mark Brown; +Cc: Linux-ALSA
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
It might return without initializing in error case.
In such case, uninitialized variable might be used at error handler.
This patch initializes all necessary variable before return.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
v1 -> v2
- fixup typo at git-log
- removed unneeded component->list initialize
sound/soc/soc-core.c | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index cf8763e..41f7976 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -2661,6 +2661,9 @@ static int snd_soc_component_initialize(struct snd_soc_component *component,
{
struct snd_soc_dapm_context *dapm;
+ INIT_LIST_HEAD(&component->dai_list);
+ mutex_init(&component->io_mutex);
+
component->name = fmt_single_name(dev, &component->id);
if (!component->name) {
dev_err(dev, "ASoC: Failed to allocate name\n");
@@ -2677,9 +2680,6 @@ static int snd_soc_component_initialize(struct snd_soc_component *component,
dapm->idle_bias_off = !driver->idle_bias_on;
dapm->suspend_bias_off = driver->suspend_bias_off;
- INIT_LIST_HEAD(&component->dai_list);
- mutex_init(&component->io_mutex);
-
return 0;
}
--
2.7.4
^ permalink raw reply related [flat|nested] 54+ messages in thread* [PATCH v2 23/25] ASoC: soc-core: initialize list at one place
2019-08-07 1:29 [PATCH v2 00/25] ASoC: cleanup patches for soc-core Kuninori Morimoto
` (21 preceding siblings ...)
2019-08-07 1:32 ` [PATCH v2 22/25] ASoC: soc-core: initialize component list Kuninori Morimoto
@ 2019-08-07 1:32 ` Kuninori Morimoto
2019-08-07 1:32 ` [PATCH v2 24/25] ASoC: soc-dai: use bit field for bus_control Kuninori Morimoto
2019-08-07 1:32 ` [PATCH v2 25/25] ASoC: soc-topology: use for_each_component_dais() at remove_dai() Kuninori Morimoto
24 siblings, 0 replies; 54+ messages in thread
From: Kuninori Morimoto @ 2019-08-07 1:32 UTC (permalink / raw)
To: Mark Brown; +Cc: Linux-ALSA
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
Initialize component related list at random place is very difficult
to read. This patch initialize it at snd_soc_component_initialize().
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
v1 -> v2
- no change
sound/soc/soc-core.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c
index 41f7976..e0d427a 100644
--- a/sound/soc/soc-core.c
+++ b/sound/soc/soc-core.c
@@ -1265,7 +1265,6 @@ static int soc_probe_component(struct snd_soc_card *card,
component->card = card;
dapm->card = card;
- INIT_LIST_HEAD(&component->card_list);
INIT_LIST_HEAD(&dapm->list);
soc_set_name_prefix(card, component);
@@ -2662,6 +2661,8 @@ static int snd_soc_component_initialize(struct snd_soc_component *component,
struct snd_soc_dapm_context *dapm;
INIT_LIST_HEAD(&component->dai_list);
+ INIT_LIST_HEAD(&component->dobj_list);
+ INIT_LIST_HEAD(&component->card_list);
mutex_init(&component->io_mutex);
component->name = fmt_single_name(dev, &component->id);
@@ -2747,7 +2748,6 @@ static void snd_soc_component_add(struct snd_soc_component *component)
/* see for_each_component */
list_add(&component->list, &component_list);
- INIT_LIST_HEAD(&component->dobj_list);
mutex_unlock(&client_mutex);
}
--
2.7.4
^ permalink raw reply related [flat|nested] 54+ messages in thread* [PATCH v2 24/25] ASoC: soc-dai: use bit field for bus_control
2019-08-07 1:29 [PATCH v2 00/25] ASoC: cleanup patches for soc-core Kuninori Morimoto
` (22 preceding siblings ...)
2019-08-07 1:32 ` [PATCH v2 23/25] ASoC: soc-core: initialize list at one place Kuninori Morimoto
@ 2019-08-07 1:32 ` Kuninori Morimoto
2019-08-07 1:32 ` [PATCH v2 25/25] ASoC: soc-topology: use for_each_component_dais() at remove_dai() Kuninori Morimoto
24 siblings, 0 replies; 54+ messages in thread
From: Kuninori Morimoto @ 2019-08-07 1:32 UTC (permalink / raw)
To: Mark Brown; +Cc: Linux-ALSA
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
.bus_control can be bit field.
this patch do it.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
v1 -> v2
- no change
include/sound/soc-dai.h | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/include/sound/soc-dai.h b/include/sound/soc-dai.h
index dc48fe0..939c73d 100644
--- a/include/sound/soc-dai.h
+++ b/include/sound/soc-dai.h
@@ -293,8 +293,6 @@ struct snd_soc_dai_driver {
/* Optional Callback used at pcm creation*/
int (*pcm_new)(struct snd_soc_pcm_runtime *rtd,
struct snd_soc_dai *dai);
- /* DAI is also used for the control bus */
- bool bus_control;
/* ops */
const struct snd_soc_dai_ops *ops;
@@ -306,6 +304,7 @@ struct snd_soc_dai_driver {
unsigned int symmetric_rates:1;
unsigned int symmetric_channels:1;
unsigned int symmetric_samplebits:1;
+ unsigned int bus_control:1; /* DAI is also used for the control bus */
/* probe ordering - for components with runtime dependencies */
int probe_order;
--
2.7.4
^ permalink raw reply related [flat|nested] 54+ messages in thread* [PATCH v2 25/25] ASoC: soc-topology: use for_each_component_dais() at remove_dai()
2019-08-07 1:29 [PATCH v2 00/25] ASoC: cleanup patches for soc-core Kuninori Morimoto
` (23 preceding siblings ...)
2019-08-07 1:32 ` [PATCH v2 24/25] ASoC: soc-dai: use bit field for bus_control Kuninori Morimoto
@ 2019-08-07 1:32 ` Kuninori Morimoto
2019-08-07 3:20 ` Sridharan, Ranjani
24 siblings, 1 reply; 54+ messages in thread
From: Kuninori Morimoto @ 2019-08-07 1:32 UTC (permalink / raw)
To: Mark Brown; +Cc: Linux-ALSA
From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
commit 52abe6cc1866a ("ASoC: topology: fix oops/use-after-free case
with dai driver") fixups remove_dai() error, but it is using
list_for_each_entry() for component->dai_list.
We already have for_each_component_dais() macro for it.
Let's use exising method.
Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
---
v1 -> v2
- no change
sound/soc/soc-topology.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sound/soc/soc-topology.c b/sound/soc/soc-topology.c
index dc463f1..b869071 100644
--- a/sound/soc/soc-topology.c
+++ b/sound/soc/soc-topology.c
@@ -530,7 +530,7 @@ static void remove_dai(struct snd_soc_component *comp,
if (dobj->ops && dobj->ops->dai_unload)
dobj->ops->dai_unload(comp, dobj);
- list_for_each_entry(dai, &comp->dai_list, list)
+ for_each_component_dais(comp, dai)
if (dai->driver == dai_drv)
dai->driver = NULL;
--
2.7.4
^ permalink raw reply related [flat|nested] 54+ messages in thread* Re: [PATCH v2 25/25] ASoC: soc-topology: use for_each_component_dais() at remove_dai()
2019-08-07 1:32 ` [PATCH v2 25/25] ASoC: soc-topology: use for_each_component_dais() at remove_dai() Kuninori Morimoto
@ 2019-08-07 3:20 ` Sridharan, Ranjani
0 siblings, 0 replies; 54+ messages in thread
From: Sridharan, Ranjani @ 2019-08-07 3:20 UTC (permalink / raw)
To: Kuninori Morimoto; +Cc: Linux-ALSA, Mark Brown
On Tue, Aug 6, 2019 at 6:48 PM Kuninori Morimoto <
kuninori.morimoto.gx@renesas.com> wrote:
> From: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
>
> commit 52abe6cc1866a ("ASoC: topology: fix oops/use-after-free case
> with dai driver") fixups remove_dai() error, but it is using
> list_for_each_entry() for component->dai_list.
>
> We already have for_each_component_dais() macro for it.
> Let's use exising method.
>
The series looks good now. Thanks for the quick turnaround, Morimoto-san.
Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
>
> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>
> ---
> v1 -> v2
>
> - no change
>
> sound/soc/soc-topology.c | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/sound/soc/soc-topology.c b/sound/soc/soc-topology.c
> index dc463f1..b869071 100644
> --- a/sound/soc/soc-topology.c
> +++ b/sound/soc/soc-topology.c
> @@ -530,7 +530,7 @@ static void remove_dai(struct snd_soc_component *comp,
> if (dobj->ops && dobj->ops->dai_unload)
> dobj->ops->dai_unload(comp, dobj);
>
> - list_for_each_entry(dai, &comp->dai_list, list)
> + for_each_component_dais(comp, dai)
> if (dai->driver == dai_drv)
> dai->driver = NULL;
>
> --
> 2.7.4
>
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@alsa-project.org
> https://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>
^ permalink raw reply [flat|nested] 54+ messages in thread