linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH 1/3] ASoC: doc: simple-card: Add pin-switches property
@ 2019-04-20 10:45 Paul Cercueil
  2019-04-20 10:45 ` [PATCH 2/3] ASoC: simple-card-utils: add asoc_simple_card_of_parse_pin_switches() Paul Cercueil
                   ` (3 more replies)
  0 siblings, 4 replies; 6+ messages in thread
From: Paul Cercueil @ 2019-04-20 10:45 UTC (permalink / raw)
  To: Liam Girdwood, Mark Brown, Rob Herring, Mark Rutland
  Cc: Kuninori Morimoto, alsa-devel, devicetree, linux-kernel, od,
	Paul Cercueil

The simple-audio-card,pin-switches property can contain the list of
widget names for which pin switches must be created.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
---
 Documentation/devicetree/bindings/sound/simple-card.txt | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/Documentation/devicetree/bindings/sound/simple-card.txt b/Documentation/devicetree/bindings/sound/simple-card.txt
index 4629c8f8a6b6..79954cd6e37b 100644
--- a/Documentation/devicetree/bindings/sound/simple-card.txt
+++ b/Documentation/devicetree/bindings/sound/simple-card.txt
@@ -24,6 +24,8 @@ Optional properties:
 					  a microphone is attached.
 - simple-audio-card,aux-devs		: List of phandles pointing to auxiliary devices, such
 					  as amplifiers, to be added to the sound card.
+- simple-audio-card,pin-switches	: List of strings containing the widget names for
+					  which pin switches must be created.
 
 Optional subnodes:
 
-- 
2.21.0.593.g511ec345e18


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 2/3] ASoC: simple-card-utils: add asoc_simple_card_of_parse_pin_switches()
  2019-04-20 10:45 [PATCH 1/3] ASoC: doc: simple-card: Add pin-switches property Paul Cercueil
@ 2019-04-20 10:45 ` Paul Cercueil
  2019-04-25 18:49   ` Mark Brown
  2019-04-20 10:45 ` [PATCH 3/3] ASoC: simple-card: Read pin switches conf from devicetree Paul Cercueil
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 6+ messages in thread
From: Paul Cercueil @ 2019-04-20 10:45 UTC (permalink / raw)
  To: Liam Girdwood, Mark Brown, Rob Herring, Mark Rutland
  Cc: Kuninori Morimoto, alsa-devel, devicetree, linux-kernel, od,
	Paul Cercueil

This function is a helper that permits to create pin switch controls for
a list of widgets whose names are listed in the PREFIX "pin-switches"
devicetree property.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
---
 include/sound/simple_card_utils.h     |  2 +
 sound/soc/generic/simple-card-utils.c | 57 +++++++++++++++++++++++++++
 2 files changed, 59 insertions(+)

diff --git a/include/sound/simple_card_utils.h b/include/sound/simple_card_utils.h
index 7afe45389972..8a56c1713952 100644
--- a/include/sound/simple_card_utils.h
+++ b/include/sound/simple_card_utils.h
@@ -124,6 +124,8 @@ int asoc_simple_card_of_parse_routing(struct snd_soc_card *card,
 				      char *prefix);
 int asoc_simple_card_of_parse_widgets(struct snd_soc_card *card,
 				      char *prefix);
+int asoc_simple_card_of_parse_pin_switches(struct snd_soc_card *card,
+					   char *prefix);
 
 int asoc_simple_card_init_jack(struct snd_soc_card *card,
 			       struct asoc_simple_jack *sjack,
diff --git a/sound/soc/generic/simple-card-utils.c b/sound/soc/generic/simple-card-utils.c
index 5c1424f03620..431002e3e63f 100644
--- a/sound/soc/generic/simple-card-utils.c
+++ b/sound/soc/generic/simple-card-utils.c
@@ -469,6 +469,63 @@ int asoc_simple_card_of_parse_widgets(struct snd_soc_card *card,
 }
 EXPORT_SYMBOL_GPL(asoc_simple_card_of_parse_widgets);
 
+int asoc_simple_card_of_parse_pin_switches(struct snd_soc_card *card,
+					   char *prefix)
+{
+	const unsigned int nb_controls_max = 16;
+	const char **strings, *control_name;
+	struct snd_kcontrol_new *controls;
+	struct device *dev = card->dev;
+	unsigned int i, nb_controls;
+	char prop[128];
+	int ret;
+
+	if (!prefix)
+		prefix = "";
+
+	snprintf(prop, sizeof(prop), "%s%s", prefix, "pin-switches");
+
+	if (!of_property_read_bool(dev->of_node, prop))
+		return 0;
+
+	strings = devm_kcalloc(dev, nb_controls_max,
+			       sizeof(*strings), GFP_KERNEL);
+	if (!strings)
+		return -ENOMEM;
+
+	ret = of_property_read_string_array(dev->of_node, prop,
+					    strings, nb_controls_max);
+	if (ret < 0)
+		return ret;
+
+	nb_controls = (unsigned int)ret;
+
+	controls = devm_kcalloc(dev, nb_controls,
+				sizeof(*controls), GFP_KERNEL);
+	if (!controls)
+		return -ENOMEM;
+
+	for (i = 0; i < nb_controls; i++) {
+		control_name = devm_kasprintf(dev, GFP_KERNEL,
+					      "%s Switch", strings[i]);
+		if (!control_name)
+			return -ENOMEM;
+
+		controls[i].iface = SNDRV_CTL_ELEM_IFACE_MIXER;
+		controls[i].name = control_name;
+		controls[i].info = snd_soc_dapm_info_pin_switch;
+		controls[i].get = snd_soc_dapm_get_pin_switch;
+		controls[i].put = snd_soc_dapm_put_pin_switch;
+		controls[i].private_value = (unsigned long)strings[i];
+	}
+
+	card->controls = controls;
+	card->num_controls = nb_controls;
+
+	return 0;
+}
+EXPORT_SYMBOL_GPL(asoc_simple_card_of_parse_pin_switches);
+
 int asoc_simple_card_init_jack(struct snd_soc_card *card,
 			       struct asoc_simple_jack *sjack,
 			       int is_hp, char *prefix)
-- 
2.21.0.593.g511ec345e18


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* [PATCH 3/3] ASoC: simple-card: Read pin switches conf from devicetree
  2019-04-20 10:45 [PATCH 1/3] ASoC: doc: simple-card: Add pin-switches property Paul Cercueil
  2019-04-20 10:45 ` [PATCH 2/3] ASoC: simple-card-utils: add asoc_simple_card_of_parse_pin_switches() Paul Cercueil
@ 2019-04-20 10:45 ` Paul Cercueil
  2019-04-25 19:24 ` Applied "ASoC: doc: simple-card: Add pin-switches property" to the asoc tree Mark Brown
  2019-04-25 19:26 ` Mark Brown
  3 siblings, 0 replies; 6+ messages in thread
From: Paul Cercueil @ 2019-04-20 10:45 UTC (permalink / raw)
  To: Liam Girdwood, Mark Brown, Rob Herring, Mark Rutland
  Cc: Kuninori Morimoto, alsa-devel, devicetree, linux-kernel, od,
	Paul Cercueil

When the routing path between a widget (e.g. "Speaker") and the codec
goes through an external amplifier, having a pin switch for this widget
allows the amplifier to be disabled when the widget is not to be used
(e.g. when using headphones).

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
---
 sound/soc/generic/simple-card.c | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/sound/soc/generic/simple-card.c b/sound/soc/generic/simple-card.c
index 34de32efc4c4..d34adb1518e7 100644
--- a/sound/soc/generic/simple-card.c
+++ b/sound/soc/generic/simple-card.c
@@ -556,6 +556,10 @@ static int simple_parse_of(struct simple_priv *priv)
 	if (ret < 0)
 		return ret;
 
+	ret = asoc_simple_card_of_parse_pin_switches(card, PREFIX);
+	if (ret < 0)
+		return ret;
+
 	/* Single/Muti DAI link(s) & New style of DT node */
 	memset(&li, 0, sizeof(li));
 	for (li.cpu = 1; li.cpu >= 0; li.cpu--) {
-- 
2.21.0.593.g511ec345e18


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Re: [PATCH 2/3] ASoC: simple-card-utils: add asoc_simple_card_of_parse_pin_switches()
  2019-04-20 10:45 ` [PATCH 2/3] ASoC: simple-card-utils: add asoc_simple_card_of_parse_pin_switches() Paul Cercueil
@ 2019-04-25 18:49   ` Mark Brown
  0 siblings, 0 replies; 6+ messages in thread
From: Mark Brown @ 2019-04-25 18:49 UTC (permalink / raw)
  To: Paul Cercueil
  Cc: Liam Girdwood, Rob Herring, Mark Rutland, Kuninori Morimoto,
	alsa-devel, devicetree, linux-kernel, od

[-- Attachment #1: Type: text/plain, Size: 300 bytes --]

On Sat, Apr 20, 2019 at 12:45:52PM +0200, Paul Cercueil wrote:
> This function is a helper that permits to create pin switch controls for
> a list of widgets whose names are listed in the PREFIX "pin-switches"
> devicetree property.

This doesn't apply against current code, please check and resend.

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Applied "ASoC: doc: simple-card: Add pin-switches property" to the asoc tree
  2019-04-20 10:45 [PATCH 1/3] ASoC: doc: simple-card: Add pin-switches property Paul Cercueil
  2019-04-20 10:45 ` [PATCH 2/3] ASoC: simple-card-utils: add asoc_simple_card_of_parse_pin_switches() Paul Cercueil
  2019-04-20 10:45 ` [PATCH 3/3] ASoC: simple-card: Read pin switches conf from devicetree Paul Cercueil
@ 2019-04-25 19:24 ` Mark Brown
  2019-04-25 19:26 ` Mark Brown
  3 siblings, 0 replies; 6+ messages in thread
From: Mark Brown @ 2019-04-25 19:24 UTC (permalink / raw)
  To: Paul Cercueil
  Cc: alsa-devel, devicetree, Kuninori Morimoto, Liam Girdwood,
	linux-kernel, Mark Brown, Mark Rutland, od, Rob Herring

The patch

   ASoC: doc: simple-card: Add pin-switches property

has been applied to the asoc tree at

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

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 6b903f9bdd98093a2c1ea79df07e86decfda3b04 Mon Sep 17 00:00:00 2001
From: Paul Cercueil <paul@crapouillou.net>
Date: Sat, 20 Apr 2019 12:45:51 +0200
Subject: [PATCH] ASoC: doc: simple-card: Add pin-switches property

The simple-audio-card,pin-switches property can contain the list of
widget names for which pin switches must be created.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Signed-off-by: Mark Brown <broonie@kernel.org>
---
 Documentation/devicetree/bindings/sound/simple-card.txt | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/Documentation/devicetree/bindings/sound/simple-card.txt b/Documentation/devicetree/bindings/sound/simple-card.txt
index 4629c8f8a6b6..79954cd6e37b 100644
--- a/Documentation/devicetree/bindings/sound/simple-card.txt
+++ b/Documentation/devicetree/bindings/sound/simple-card.txt
@@ -24,6 +24,8 @@ Optional properties:
 					  a microphone is attached.
 - simple-audio-card,aux-devs		: List of phandles pointing to auxiliary devices, such
 					  as amplifiers, to be added to the sound card.
+- simple-audio-card,pin-switches	: List of strings containing the widget names for
+					  which pin switches must be created.
 
 Optional subnodes:
 
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

* Applied "ASoC: doc: simple-card: Add pin-switches property" to the asoc tree
  2019-04-20 10:45 [PATCH 1/3] ASoC: doc: simple-card: Add pin-switches property Paul Cercueil
                   ` (2 preceding siblings ...)
  2019-04-25 19:24 ` Applied "ASoC: doc: simple-card: Add pin-switches property" to the asoc tree Mark Brown
@ 2019-04-25 19:26 ` Mark Brown
  3 siblings, 0 replies; 6+ messages in thread
From: Mark Brown @ 2019-04-25 19:26 UTC (permalink / raw)
  To: Paul Cercueil
  Cc: alsa-devel, devicetree, Kuninori Morimoto, Liam Girdwood,
	linux-kernel, Mark Brown, Mark Rutland, od, Rob Herring

The patch

   ASoC: doc: simple-card: Add pin-switches property

has been applied to the asoc tree at

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

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 6b903f9bdd98093a2c1ea79df07e86decfda3b04 Mon Sep 17 00:00:00 2001
From: Paul Cercueil <paul@crapouillou.net>
Date: Sat, 20 Apr 2019 12:45:51 +0200
Subject: [PATCH] ASoC: doc: simple-card: Add pin-switches property

The simple-audio-card,pin-switches property can contain the list of
widget names for which pin switches must be created.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Signed-off-by: Mark Brown <broonie@kernel.org>
---
 Documentation/devicetree/bindings/sound/simple-card.txt | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/Documentation/devicetree/bindings/sound/simple-card.txt b/Documentation/devicetree/bindings/sound/simple-card.txt
index 4629c8f8a6b6..79954cd6e37b 100644
--- a/Documentation/devicetree/bindings/sound/simple-card.txt
+++ b/Documentation/devicetree/bindings/sound/simple-card.txt
@@ -24,6 +24,8 @@ Optional properties:
 					  a microphone is attached.
 - simple-audio-card,aux-devs		: List of phandles pointing to auxiliary devices, such
 					  as amplifiers, to be added to the sound card.
+- simple-audio-card,pin-switches	: List of strings containing the widget names for
+					  which pin switches must be created.
 
 Optional subnodes:
 
-- 
2.20.1


^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2019-04-25 19:27 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-04-20 10:45 [PATCH 1/3] ASoC: doc: simple-card: Add pin-switches property Paul Cercueil
2019-04-20 10:45 ` [PATCH 2/3] ASoC: simple-card-utils: add asoc_simple_card_of_parse_pin_switches() Paul Cercueil
2019-04-25 18:49   ` Mark Brown
2019-04-20 10:45 ` [PATCH 3/3] ASoC: simple-card: Read pin switches conf from devicetree Paul Cercueil
2019-04-25 19:24 ` Applied "ASoC: doc: simple-card: Add pin-switches property" to the asoc tree Mark Brown
2019-04-25 19:26 ` Mark Brown

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).