All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] ASoC updates
@ 2008-12-05 16:53 Mark Brown
  2008-12-05 16:54 ` [PATCH 1/2] ASoC: Add support for OMAP3 Pandora Mark Brown
  2008-12-05 17:09 ` [PATCH 0/2] ASoC updates Takashi Iwai
  0 siblings, 2 replies; 21+ messages in thread
From: Mark Brown @ 2008-12-05 16:53 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel

The following changes since commit 32c8dabc97d436582298ebd0e33af041c69f5a4b:
  Mark Brown (1):
        ASoC: Remove obsolete declaration of struct snd_soc_clock_info

are available in the git repository at:

  git://opensource.wolfsonmicro.com/linux-2.6-asoc for-tiwai

Daniel Mack (1):
      ASoC: tlv320aic3x: control additions and cleanups

Grazvydas Ignotas (1):
      ASoC: Add support for OMAP3 Pandora

 sound/soc/codecs/tlv320aic3x.c |   18 ++-
 sound/soc/omap/Kconfig         |    8 +
 sound/soc/omap/Makefile        |    2 +
 sound/soc/omap/omap3pandora.c  |  311 ++++++++++++++++++++++++++++++++++++++++
 4 files changed, 334 insertions(+), 5 deletions(-)
 create mode 100644 sound/soc/omap/omap3pandora.c

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

* [PATCH 1/2] ASoC: Add support for OMAP3 Pandora
  2008-12-05 16:53 [PATCH 0/2] ASoC updates Mark Brown
@ 2008-12-05 16:54 ` Mark Brown
  2008-12-05 16:54   ` [PATCH 2/2] ASoC: tlv320aic3x: control additions and cleanups Mark Brown
  2008-12-05 17:03   ` question on hardware mixing Harsha, Priya
  2008-12-05 17:09 ` [PATCH 0/2] ASoC updates Takashi Iwai
  1 sibling, 2 replies; 21+ messages in thread
From: Mark Brown @ 2008-12-05 16:54 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel, Mark Brown, Grazvydas Ignotas

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 10678 bytes --]

From: Grazvydas Ignotas <notasas@gmail.com>

This patch adds basic support for OMAP3 Pandora.

Signed-off-by: Grazvydas Ignotas <notasas@gmail.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
 sound/soc/omap/Kconfig        |    8 +
 sound/soc/omap/Makefile       |    2 +
 sound/soc/omap/omap3pandora.c |  311 +++++++++++++++++++++++++++++++++++++++++
 3 files changed, 321 insertions(+), 0 deletions(-)
 create mode 100644 sound/soc/omap/omap3pandora.c

diff --git a/sound/soc/omap/Kconfig b/sound/soc/omap/Kconfig
index da39f27..a7b1d77 100644
--- a/sound/soc/omap/Kconfig
+++ b/sound/soc/omap/Kconfig
@@ -46,3 +46,11 @@ config SND_OMAP_SOC_SDP3430
 	help
 	  Say Y if you want to add support for SoC audio on Texas Instruments
 	  SDP3430.
+
+config SND_OMAP_SOC_OMAP3_PANDORA
+	tristate "SoC Audio support for OMAP3 Pandora"
+	depends on TWL4030_CORE && SND_OMAP_SOC && MACH_OMAP3_PANDORA
+	select SND_OMAP_SOC_MCBSP
+	select SND_SOC_TWL4030
+	help
+	  Say Y if you want to add support for SoC audio on the OMAP3 Pandora.
diff --git a/sound/soc/omap/Makefile b/sound/soc/omap/Makefile
index 29cf3a8..76fedd9 100644
--- a/sound/soc/omap/Makefile
+++ b/sound/soc/omap/Makefile
@@ -11,9 +11,11 @@ snd-soc-osk5912-objs := osk5912.o
 snd-soc-overo-objs := overo.o
 snd-soc-omap2evm-objs := omap2evm.o
 snd-soc-sdp3430-objs := sdp3430.o
+snd-soc-omap3pandora-objs := omap3pandora.o
 
 obj-$(CONFIG_SND_OMAP_SOC_N810) += snd-soc-n810.o
 obj-$(CONFIG_SND_OMAP_SOC_OSK5912) += snd-soc-osk5912.o
 obj-$(CONFIG_SND_OMAP_SOC_OVERO) += snd-soc-overo.o
 obj-$(CONFIG_MACH_OMAP2EVM) += snd-soc-omap2evm.o
 obj-$(CONFIG_SND_OMAP_SOC_SDP3430) += snd-soc-sdp3430.o
+obj-$(CONFIG_SND_OMAP_SOC_OMAP3_PANDORA) += snd-soc-omap3pandora.o
diff --git a/sound/soc/omap/omap3pandora.c b/sound/soc/omap/omap3pandora.c
new file mode 100644
index 0000000..bd91594
--- /dev/null
+++ b/sound/soc/omap/omap3pandora.c
@@ -0,0 +1,311 @@
+/*
+ * omap3pandora.c  --  SoC audio for Pandora Handheld Console
+ *
+ * Author: Gražvydas Ignotas <notasas@gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * version 2 as published by the Free Software Foundation.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA
+ *
+ */
+
+#include <linux/clk.h>
+#include <linux/platform_device.h>
+#include <linux/gpio.h>
+#include <linux/delay.h>
+
+#include <sound/core.h>
+#include <sound/pcm.h>
+#include <sound/soc.h>
+#include <sound/soc-dapm.h>
+
+#include <asm/mach-types.h>
+
+#include "omap-mcbsp.h"
+#include "omap-pcm.h"
+#include "../codecs/twl4030.h"
+
+#define OMAP3_PANDORA_DAC_POWER_GPIO	118
+#define OMAP3_PANDORA_AMP_POWER_GPIO	14
+
+#define PREFIX "ASoC omap3pandora: "
+
+static int omap3pandora_cmn_hw_params(struct snd_soc_dai *codec_dai,
+	struct snd_soc_dai *cpu_dai, unsigned int fmt)
+{
+	int ret;
+
+	/* Set codec DAI configuration */
+	ret = snd_soc_dai_set_fmt(codec_dai, fmt);
+	if (ret < 0) {
+		pr_err(PREFIX "can't set codec DAI configuration\n");
+		return ret;
+	}
+
+	/* Set cpu DAI configuration */
+	ret = snd_soc_dai_set_fmt(cpu_dai, fmt);
+	if (ret < 0) {
+		pr_err(PREFIX "can't set cpu DAI configuration\n");
+		return ret;
+	}
+
+	/* Set the codec system clock for DAC and ADC */
+	ret = snd_soc_dai_set_sysclk(codec_dai, 0, 26000000,
+					    SND_SOC_CLOCK_IN);
+	if (ret < 0) {
+		pr_err(PREFIX "can't set codec system clock\n");
+		return ret;
+	}
+
+	/* Set McBSP clock to external */
+	ret = snd_soc_dai_set_sysclk(cpu_dai, OMAP_MCBSP_SYSCLK_CLKS_EXT, 0,
+					    SND_SOC_CLOCK_IN);
+	if (ret < 0) {
+		pr_err(PREFIX "can't set cpu system clock\n");
+		return ret;
+	}
+
+	ret = snd_soc_dai_set_clkdiv(cpu_dai, OMAP_MCBSP_CLKGDV, 8);
+	if (ret < 0) {
+		pr_err(PREFIX "can't set SRG clock divider\n");
+		return ret;
+	}
+
+	return 0;
+}
+
+static int omap3pandora_out_hw_params(struct snd_pcm_substream *substream,
+	struct snd_pcm_hw_params *params)
+{
+	struct snd_soc_pcm_runtime *rtd = substream->private_data;
+	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+
+	return omap3pandora_cmn_hw_params(codec_dai, cpu_dai,
+					  SND_SOC_DAIFMT_I2S |
+					  SND_SOC_DAIFMT_IB_NF |
+					  SND_SOC_DAIFMT_CBS_CFS);
+}
+
+static int omap3pandora_in_hw_params(struct snd_pcm_substream *substream,
+	struct snd_pcm_hw_params *params)
+{
+	struct snd_soc_pcm_runtime *rtd = substream->private_data;
+	struct snd_soc_dai *codec_dai = rtd->dai->codec_dai;
+	struct snd_soc_dai *cpu_dai = rtd->dai->cpu_dai;
+
+	return omap3pandora_cmn_hw_params(codec_dai, cpu_dai,
+					  SND_SOC_DAIFMT_I2S |
+					  SND_SOC_DAIFMT_NB_NF |
+					  SND_SOC_DAIFMT_CBS_CFS);
+}
+
+static int omap3pandora_hp_event(struct snd_soc_dapm_widget *w,
+	struct snd_kcontrol *k, int event)
+{
+	if (SND_SOC_DAPM_EVENT_ON(event)) {
+		gpio_set_value(OMAP3_PANDORA_DAC_POWER_GPIO, 1);
+		gpio_set_value(OMAP3_PANDORA_AMP_POWER_GPIO, 1);
+	} else {
+		gpio_set_value(OMAP3_PANDORA_AMP_POWER_GPIO, 0);
+		mdelay(1);
+		gpio_set_value(OMAP3_PANDORA_DAC_POWER_GPIO, 0);
+	}
+
+	return 0;
+}
+
+/*
+ * Audio paths on Pandora board:
+ *
+ *  |O| ---> PCM DAC +-> AMP -> Headphone Jack
+ *  |M|         A    +--------> Line Out
+ *  |A| <~~clk~~+
+ *  |P| <--- TWL4030 <--------- Line In and MICs
+ */
+static const struct snd_soc_dapm_widget omap3pandora_out_dapm_widgets[] = {
+	SND_SOC_DAPM_DAC("PCM DAC", "Playback", SND_SOC_NOPM, 0, 0),
+	SND_SOC_DAPM_PGA_E("Headphone Amplifier", SND_SOC_NOPM,
+			   0, 0, NULL, 0, omap3pandora_hp_event,
+			   SND_SOC_DAPM_POST_PMU | SND_SOC_DAPM_PRE_PMD),
+	SND_SOC_DAPM_HP("Headphone Jack", NULL),
+	SND_SOC_DAPM_LINE("Line Out", NULL),
+};
+
+static const struct snd_soc_dapm_widget omap3pandora_in_dapm_widgets[] = {
+	SND_SOC_DAPM_MIC("Mic (Internal)", NULL),
+	SND_SOC_DAPM_MIC("Mic (external)", NULL),
+	SND_SOC_DAPM_LINE("Line In", NULL),
+};
+
+static const struct snd_soc_dapm_route omap3pandora_out_map[] = {
+	{"Headphone Amplifier", NULL, "PCM DAC"},
+	{"Line Out", NULL, "PCM DAC"},
+	{"Headphone Jack", NULL, "Headphone Amplifier"},
+};
+
+static const struct snd_soc_dapm_route omap3pandora_in_map[] = {
+	{"INL", NULL, "Line In"},
+	{"INR", NULL, "Line In"},
+	{"INL", NULL, "Mic (Internal)"},
+	{"INR", NULL, "Mic (external)"},
+};
+
+static int omap3pandora_out_init(struct snd_soc_codec *codec)
+{
+	int ret;
+
+	ret = snd_soc_dapm_new_controls(codec, omap3pandora_out_dapm_widgets,
+				ARRAY_SIZE(omap3pandora_out_dapm_widgets));
+	if (ret < 0)
+		return ret;
+
+	snd_soc_dapm_add_routes(codec, omap3pandora_out_map,
+		ARRAY_SIZE(omap3pandora_out_map));
+
+	return snd_soc_dapm_sync(codec);
+}
+
+static int omap3pandora_in_init(struct snd_soc_codec *codec)
+{
+	int ret;
+
+	ret = snd_soc_dapm_new_controls(codec, omap3pandora_in_dapm_widgets,
+				ARRAY_SIZE(omap3pandora_in_dapm_widgets));
+	if (ret < 0)
+		return ret;
+
+	snd_soc_dapm_add_routes(codec, omap3pandora_in_map,
+		ARRAY_SIZE(omap3pandora_in_map));
+
+	return snd_soc_dapm_sync(codec);
+}
+
+static struct snd_soc_ops omap3pandora_out_ops = {
+	.hw_params = omap3pandora_out_hw_params,
+};
+
+static struct snd_soc_ops omap3pandora_in_ops = {
+	.hw_params = omap3pandora_in_hw_params,
+};
+
+/* Digital audio interface glue - connects codec <--> CPU */
+static struct snd_soc_dai_link omap3pandora_dai[] = {
+	{
+		.name = "PCM1773",
+		.stream_name = "HiFi Out",
+		.cpu_dai = &omap_mcbsp_dai[0],
+		.codec_dai = &twl4030_dai,
+		.ops = &omap3pandora_out_ops,
+		.init = omap3pandora_out_init,
+	}, {
+		.name = "TWL4030",
+		.stream_name = "Line/Mic In",
+		.cpu_dai = &omap_mcbsp_dai[1],
+		.codec_dai = &twl4030_dai,
+		.ops = &omap3pandora_in_ops,
+		.init = omap3pandora_in_init,
+	}
+};
+
+/* SoC card */
+static struct snd_soc_card snd_soc_card_omap3pandora = {
+	.name = "omap3pandora",
+	.platform = &omap_soc_platform,
+	.dai_link = omap3pandora_dai,
+	.num_links = ARRAY_SIZE(omap3pandora_dai),
+};
+
+/* Audio subsystem */
+static struct snd_soc_device omap3pandora_snd_data = {
+	.card = &snd_soc_card_omap3pandora,
+	.codec_dev = &soc_codec_dev_twl4030,
+};
+
+static struct platform_device *omap3pandora_snd_device;
+
+static int __init omap3pandora_soc_init(void)
+{
+	int ret;
+
+	if (!machine_is_omap3_pandora()) {
+		pr_debug(PREFIX "Not OMAP3 Pandora\n");
+		return -ENODEV;
+	}
+	pr_info("OMAP3 Pandora SoC init\n");
+
+	ret = gpio_request(OMAP3_PANDORA_DAC_POWER_GPIO, "dac_power");
+	if (ret) {
+		pr_err(PREFIX "Failed to get DAC power GPIO\n");
+		return ret;
+	}
+
+	ret = gpio_direction_output(OMAP3_PANDORA_DAC_POWER_GPIO, 0);
+	if (ret) {
+		pr_err(PREFIX "Failed to set DAC power GPIO direction\n");
+		goto fail0;
+	}
+
+	ret = gpio_request(OMAP3_PANDORA_AMP_POWER_GPIO, "amp_power");
+	if (ret) {
+		pr_err(PREFIX "Failed to get amp power GPIO\n");
+		goto fail0;
+	}
+
+	ret = gpio_direction_output(OMAP3_PANDORA_AMP_POWER_GPIO, 0);
+	if (ret) {
+		pr_err(PREFIX "Failed to set amp power GPIO direction\n");
+		goto fail1;
+	}
+
+	omap3pandora_snd_device = platform_device_alloc("soc-audio", -1);
+	if (omap3pandora_snd_device == NULL) {
+		pr_err(PREFIX "Platform device allocation failed\n");
+		ret = -ENOMEM;
+		goto fail1;
+	}
+
+	platform_set_drvdata(omap3pandora_snd_device, &omap3pandora_snd_data);
+	omap3pandora_snd_data.dev = &omap3pandora_snd_device->dev;
+	*(unsigned int *)omap_mcbsp_dai[0].private_data = 1; /* McBSP2 */
+	*(unsigned int *)omap_mcbsp_dai[1].private_data = 3; /* McBSP4 */
+
+	ret = platform_device_add(omap3pandora_snd_device);
+	if (ret) {
+		pr_err(PREFIX "Unable to add platform device\n");
+		goto fail2;
+	}
+
+	return 0;
+
+fail2:
+	platform_device_put(omap3pandora_snd_device);
+fail1:
+	gpio_free(OMAP3_PANDORA_AMP_POWER_GPIO);
+fail0:
+	gpio_free(OMAP3_PANDORA_DAC_POWER_GPIO);
+	return ret;
+}
+module_init(omap3pandora_soc_init);
+
+static void __exit omap3pandora_soc_exit(void)
+{
+	platform_device_unregister(omap3pandora_snd_device);
+	gpio_free(OMAP3_PANDORA_AMP_POWER_GPIO);
+	gpio_free(OMAP3_PANDORA_DAC_POWER_GPIO);
+}
+module_exit(omap3pandora_soc_exit);
+
+MODULE_AUTHOR("Grazvydas Ignotas <notasas@gmail.com>");
+MODULE_DESCRIPTION("ALSA SoC OMAP3 Pandora");
+MODULE_LICENSE("GPL");
-- 
1.5.6.5


[-- Attachment #2: Type: text/plain, Size: 160 bytes --]

_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

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

* [PATCH 2/2] ASoC: tlv320aic3x: control additions and cleanups
  2008-12-05 16:54 ` [PATCH 1/2] ASoC: Add support for OMAP3 Pandora Mark Brown
@ 2008-12-05 16:54   ` Mark Brown
  2008-12-05 17:03   ` question on hardware mixing Harsha, Priya
  1 sibling, 0 replies; 21+ messages in thread
From: Mark Brown @ 2008-12-05 16:54 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel, Mark Brown, Daniel Mack

From: Daniel Mack <daniel@caiaq.org>

- split "Line Playback Switch" into "LineL Playback Switch" and "LineR
  Playback Switch"
- split "Line PGA Bypass Playback Volume" into "LineL Left PGA Bypass
  Playback Volume" and "LineR Right PGA Bypass Playback Volume"
- split "Line Line2 Bypass Playback Volume" into "LineL Line2 Bypass
  Playback Volume" and "LineR Line2 Bypass Playback Volume"
- Added "HP Right PGA Bypass Playback Volume"

Signed-off-by: Daniel Mack <daniel@caiaq.de>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
 sound/soc/codecs/tlv320aic3x.c |   18 +++++++++++++-----
 1 files changed, 13 insertions(+), 5 deletions(-)

diff --git a/sound/soc/codecs/tlv320aic3x.c b/sound/soc/codecs/tlv320aic3x.c
index 341e1ad..6a05829 100644
--- a/sound/soc/codecs/tlv320aic3x.c
+++ b/sound/soc/codecs/tlv320aic3x.c
@@ -253,11 +253,17 @@ static const struct snd_kcontrol_new aic3x_snd_controls[] = {
 
 	SOC_DOUBLE_R("Line DAC Playback Volume", DACL1_2_LLOPM_VOL,
 		     DACR1_2_RLOPM_VOL, 0, 0x7f, 1),
-	SOC_DOUBLE_R("Line DAC Playback Switch", LLOPM_CTRL, RLOPM_CTRL, 3,
-		     0x01, 0),
-	SOC_DOUBLE_R("Line PGA Bypass Playback Volume", PGAL_2_LLOPM_VOL,
-		     PGAR_2_RLOPM_VOL, 0, 0x7f, 1),
-	SOC_DOUBLE_R("Line Line2 Bypass Playback Volume", LINE2L_2_LLOPM_VOL,
+	SOC_SINGLE("LineL Playback Switch", LLOPM_CTRL, 3, 0x01, 0),
+	SOC_SINGLE("LineR Playback Switch", RLOPM_CTRL, 3, 0x01, 0),
+	SOC_DOUBLE_R("LineL DAC Playback Volume", DACL1_2_LLOPM_VOL,
+		     DACR1_2_LLOPM_VOL, 0, 0x7f, 1),
+	SOC_SINGLE("LineL Left PGA Bypass Playback Volume", PGAL_2_LLOPM_VOL,
+		     0, 0x7f, 1),
+	SOC_SINGLE("LineR Right PGA Bypass Playback Volume", PGAR_2_RLOPM_VOL,
+		     0, 0x7f, 1),
+	SOC_DOUBLE_R("LineL Line2 Bypass Playback Volume", LINE2L_2_LLOPM_VOL,
+		     LINE2R_2_LLOPM_VOL, 0, 0x7f, 1),
+	SOC_DOUBLE_R("LineR Line2 Bypass Playback Volume", LINE2L_2_RLOPM_VOL,
 		     LINE2R_2_RLOPM_VOL, 0, 0x7f, 1),
 
 	SOC_DOUBLE_R("Mono DAC Playback Volume", DACL1_2_MONOLOPM_VOL,
@@ -272,6 +278,8 @@ static const struct snd_kcontrol_new aic3x_snd_controls[] = {
 		     DACR1_2_HPROUT_VOL, 0, 0x7f, 1),
 	SOC_DOUBLE_R("HP DAC Playback Switch", HPLOUT_CTRL, HPROUT_CTRL, 3,
 		     0x01, 0),
+	SOC_DOUBLE_R("HP Right PGA Bypass Playback Volume", PGAR_2_HPLOUT_VOL,
+		     PGAR_2_HPROUT_VOL, 0, 0x7f, 1),
 	SOC_SINGLE("HPL PGA Bypass Playback Volume", PGAL_2_HPLOUT_VOL,
 		     0, 0x7f, 1),
 	SOC_SINGLE("HPR PGA Bypass Playback Volume", PGAL_2_HPROUT_VOL,
-- 
1.5.6.5

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

* question on hardware mixing
  2008-12-05 16:54 ` [PATCH 1/2] ASoC: Add support for OMAP3 Pandora Mark Brown
  2008-12-05 16:54   ` [PATCH 2/2] ASoC: tlv320aic3x: control additions and cleanups Mark Brown
@ 2008-12-05 17:03   ` Harsha, Priya
  2008-12-05 17:12     ` Vedran Miletić
  2008-12-06  4:58     ` Lee Revell
  1 sibling, 2 replies; 21+ messages in thread
From: Harsha, Priya @ 2008-12-05 17:03 UTC (permalink / raw)
  To: alsa-devel@alsa-project.org

Hi,

If my sound card supports hardware mixing, how do I need to code my sound card driver such that I can send multiple streams through ALSA to the sound card driver at the same time?

Thanks,
Harsha

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

* Re: [PATCH 0/2] ASoC updates
  2008-12-05 16:53 [PATCH 0/2] ASoC updates Mark Brown
  2008-12-05 16:54 ` [PATCH 1/2] ASoC: Add support for OMAP3 Pandora Mark Brown
@ 2008-12-05 17:09 ` Takashi Iwai
  1 sibling, 0 replies; 21+ messages in thread
From: Takashi Iwai @ 2008-12-05 17:09 UTC (permalink / raw)
  To: Mark Brown; +Cc: alsa-devel

At Fri, 5 Dec 2008 16:53:42 +0000,
Mark Brown wrote:
> 
> The following changes since commit 32c8dabc97d436582298ebd0e33af041c69f5a4b:
>   Mark Brown (1):
>         ASoC: Remove obsolete declaration of struct snd_soc_clock_info
> 
> are available in the git repository at:
> 
>   git://opensource.wolfsonmicro.com/linux-2.6-asoc for-tiwai

Thanks, pulled now.


Takashi

> 
> Daniel Mack (1):
>       ASoC: tlv320aic3x: control additions and cleanups
> 
> Grazvydas Ignotas (1):
>       ASoC: Add support for OMAP3 Pandora
> 
>  sound/soc/codecs/tlv320aic3x.c |   18 ++-
>  sound/soc/omap/Kconfig         |    8 +
>  sound/soc/omap/Makefile        |    2 +
>  sound/soc/omap/omap3pandora.c  |  311 ++++++++++++++++++++++++++++++++++++++++
>  4 files changed, 334 insertions(+), 5 deletions(-)
>  create mode 100644 sound/soc/omap/omap3pandora.c
> 

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

* Re: question on hardware mixing
  2008-12-05 17:03   ` question on hardware mixing Harsha, Priya
@ 2008-12-05 17:12     ` Vedran Miletić
  2008-12-05 17:26       ` Harsha, Priya
  2008-12-06  4:58     ` Lee Revell
  1 sibling, 1 reply; 21+ messages in thread
From: Vedran Miletić @ 2008-12-05 17:12 UTC (permalink / raw)
  To: Harsha, Priya; +Cc: alsa-devel@alsa-project.org

It does that by default. Just run multiple applications.

2008/12/5 Harsha, Priya <priya.harsha@intel.com>:
> Hi,
>
> If my sound card supports hardware mixing, how do I need to code my sound card driver such that I can send multiple streams through ALSA to the sound card driver at the same time?
>
> Thanks,
> Harsha
>
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>



-- 
Vedran Miletić
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

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

* Re: question on hardware mixing
  2008-12-05 17:12     ` Vedran Miletić
@ 2008-12-05 17:26       ` Harsha, Priya
  0 siblings, 0 replies; 21+ messages in thread
From: Harsha, Priya @ 2008-12-05 17:26 UTC (permalink / raw)
  To: Vedran Miletić; +Cc: alsa-devel@alsa-project.org

Thanks.

If I need to send a voice stream and an audio stream to the hardware as two separate streams... I just need to open 2 ALSA device from user space and send it right?

If I want to send some private data for each stream (say I want to differentiate that it's a voice/music...for which I did not find any provision) how do I do that?

-----Original Message-----
From: Vedran Miletić [mailto:rivanvx@gmail.com] 
Sent: Friday, December 05, 2008 10:42 PM
To: Harsha, Priya
Cc: alsa-devel@alsa-project.org
Subject: Re: [alsa-devel] question on hardware mixing

It does that by default. Just run multiple applications.

2008/12/5 Harsha, Priya <priya.harsha@intel.com>:
> Hi,
>
> If my sound card supports hardware mixing, how do I need to code my sound card driver such that I can send multiple streams through ALSA to the sound card driver at the same time?
>
> Thanks,
> Harsha
>
> _______________________________________________
> Alsa-devel mailing list
> Alsa-devel@alsa-project.org
> http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
>



-- 
Vedran Miletić

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

* Re: question on hardware mixing
  2008-12-05 17:03   ` question on hardware mixing Harsha, Priya
  2008-12-05 17:12     ` Vedran Miletić
@ 2008-12-06  4:58     ` Lee Revell
  2008-12-06  6:56       ` Harsha, Priya
  1 sibling, 1 reply; 21+ messages in thread
From: Lee Revell @ 2008-12-06  4:58 UTC (permalink / raw)
  To: Harsha, Priya; +Cc: alsa-devel@alsa-project.org

On Fri, Dec 5, 2008 at 12:03 PM, Harsha, Priya <priya.harsha@intel.com> wrote:
> Hi,
>
> If my sound card supports hardware mixing, how do I need to code my sound card driver such that I can send multiple streams through ALSA to the sound card driver at the same time?
>

Check out the emu10k1 driver.  You need something like the voice
allocator in that driver that assigns a hardware mixing channel or
channels when ALSA asks the driver for a new PCM stream.

User space would open the same device multiple times (up to the
hardware voice limit) and the driver manages the allocations.  From
userspace POV a hardware mixing device looks just like a single stream
device, but it doesn't return -EBUSY when you open it multiple times.

Lee

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

* Re: question on hardware mixing
  2008-12-06  4:58     ` Lee Revell
@ 2008-12-06  6:56       ` Harsha, Priya
  2008-12-09  3:15         ` Lee Revell
  2008-12-09  8:52         ` Clemens Ladisch
  0 siblings, 2 replies; 21+ messages in thread
From: Harsha, Priya @ 2008-12-06  6:56 UTC (permalink / raw)
  To: Lee Revell; +Cc: alsa-devel@alsa-project.org

Hi,

Thanks.

A quick follow up question. In the trigger function - I see that from substream->runtime->private_data, voice specific parameters are extracted. How and can somehow user space fill in some private data to the driver so that driver can process voice in a different way and music in a different way?

Thanks,
Harsha


-----Original Message-----
From: rlrevell@gmail.com [mailto:rlrevell@gmail.com] On Behalf Of Lee Revell
Sent: Saturday, December 06, 2008 10:29 AM
To: Harsha, Priya
Cc: alsa-devel@alsa-project.org
Subject: Re: [alsa-devel] question on hardware mixing

On Fri, Dec 5, 2008 at 12:03 PM, Harsha, Priya <priya.harsha@intel.com> wrote:
> Hi,
>
> If my sound card supports hardware mixing, how do I need to code my sound card driver such that I can send multiple streams through ALSA to the sound card driver at the same time?
>

Check out the emu10k1 driver.  You need something like the voice
allocator in that driver that assigns a hardware mixing channel or
channels when ALSA asks the driver for a new PCM stream.

User space would open the same device multiple times (up to the
hardware voice limit) and the driver manages the allocations.  From
userspace POV a hardware mixing device looks just like a single stream
device, but it doesn't return -EBUSY when you open it multiple times.

Lee

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

* Re: question on hardware mixing
  2008-12-06  6:56       ` Harsha, Priya
@ 2008-12-09  3:15         ` Lee Revell
  2008-12-09  3:24           ` Harsha, Priya
  2008-12-09  3:26           ` Harsha, Priya
  2008-12-09  8:52         ` Clemens Ladisch
  1 sibling, 2 replies; 21+ messages in thread
From: Lee Revell @ 2008-12-09  3:15 UTC (permalink / raw)
  To: Harsha, Priya; +Cc: alsa-devel@alsa-project.org

On Sat, Dec 6, 2008 at 1:56 AM, Harsha, Priya <priya.harsha@intel.com> wrote:
> Hi,
>
> Thanks.
>
> A quick follow up question. In the trigger function - I see that from substream->runtime->private_data, voice specific parameters are extracted. How and can somehow user space fill in some private data to the driver so that driver can process voice in a different way and music in a different way?
>

What exactly do you want to do differently?

Lee

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

* Re: question on hardware mixing
  2008-12-09  3:15         ` Lee Revell
@ 2008-12-09  3:24           ` Harsha, Priya
  2008-12-09  3:26           ` Harsha, Priya
  1 sibling, 0 replies; 21+ messages in thread
From: Harsha, Priya @ 2008-12-09  3:24 UTC (permalink / raw)
  To: Lee Revell; +Cc: alsa-devel@alsa-project.org

I have a DSP engine with FW. I need to pass this information to the FW which does some processing for voice and music differently.

Thanks,
Harsha


-----Original Message-----
From: rlrevell@gmail.com [mailto:rlrevell@gmail.com] On Behalf Of Lee Revell
Sent: Tuesday, December 09, 2008 8:46 AM
To: Harsha, Priya
Cc: alsa-devel@alsa-project.org
Subject: Re: [alsa-devel] question on hardware mixing

On Sat, Dec 6, 2008 at 1:56 AM, Harsha, Priya <priya.harsha@intel.com> wrote:
> Hi,
>
> Thanks.
>
> A quick follow up question. In the trigger function - I see that from substream->runtime->private_data, voice specific parameters are extracted. How and can somehow user space fill in some private data to the driver so that driver can process voice in a different way and music in a different way?
>

What exactly do you want to do differently?

Lee

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

* Re: question on hardware mixing
  2008-12-09  3:15         ` Lee Revell
  2008-12-09  3:24           ` Harsha, Priya
@ 2008-12-09  3:26           ` Harsha, Priya
  1 sibling, 0 replies; 21+ messages in thread
From: Harsha, Priya @ 2008-12-09  3:26 UTC (permalink / raw)
  To: Lee Revell; +Cc: alsa-devel@alsa-project.org

I was thinking to pass this information from snd_pcm_t->private_data. This gets copied to substream->private_data internally which would reach the driver. Am I right here?

-----Original Message-----
From: Harsha, Priya 
Sent: Tuesday, December 09, 2008 8:54 AM
To: 'Lee Revell'
Cc: alsa-devel@alsa-project.org
Subject: RE: [alsa-devel] question on hardware mixing

I have a DSP engine with FW. I need to pass this information to the FW which does some processing for voice and music differently.

Thanks,
Harsha


-----Original Message-----
From: rlrevell@gmail.com [mailto:rlrevell@gmail.com] On Behalf Of Lee Revell
Sent: Tuesday, December 09, 2008 8:46 AM
To: Harsha, Priya
Cc: alsa-devel@alsa-project.org
Subject: Re: [alsa-devel] question on hardware mixing

On Sat, Dec 6, 2008 at 1:56 AM, Harsha, Priya <priya.harsha@intel.com> wrote:
> Hi,
>
> Thanks.
>
> A quick follow up question. In the trigger function - I see that from substream->runtime->private_data, voice specific parameters are extracted. How and can somehow user space fill in some private data to the driver so that driver can process voice in a different way and music in a different way?
>

What exactly do you want to do differently?

Lee

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

* Re: question on hardware mixing
  2008-12-06  6:56       ` Harsha, Priya
  2008-12-09  3:15         ` Lee Revell
@ 2008-12-09  8:52         ` Clemens Ladisch
  2008-12-09  8:55           ` Harsha, Priya
  1 sibling, 1 reply; 21+ messages in thread
From: Clemens Ladisch @ 2008-12-09  8:52 UTC (permalink / raw)
  To: Harsha, Priya; +Cc: alsa-devel@alsa-project.org, Lee Revell

Harsha, Priya wrote:
> In the trigger function - I see that from substream->runtime->private_data,
> voice specific parameters are extracted. How and can somehow user space
> fill in some private data to the driver so that driver can process voice
> in a different way and music in a different way?

On the Emu10k1 chip, the hardware voices are used for both PCM playback
and wavetable (MIDI) playback.  Voice-specific parameters are set for
MIDI data; the parameters come from the soundfont that was loaded to
specify how the instruments sound.  (Here, the term "voice" has no
relation to the sound of a human voice.)

As far as PCM playback is concerned, ALSA does not have any predefined
mechanism to differentiate between voice and music audio streams.  It
would be possible to define mixer controls to switch between these
settings for each substream.


HTH
Clemens

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

* Re: question on hardware mixing
  2008-12-09  8:52         ` Clemens Ladisch
@ 2008-12-09  8:55           ` Harsha, Priya
  2008-12-09 12:44             ` David Dillow
  2008-12-09 14:06             ` question on hardware mixing Clemens Ladisch
  0 siblings, 2 replies; 21+ messages in thread
From: Harsha, Priya @ 2008-12-09  8:55 UTC (permalink / raw)
  To: Clemens Ladisch; +Cc: alsa-devel@alsa-project.org, Lee Revell

If I define mixer controls to switch between each substream, I would not be able to handle multiple streams at time.... 
I had asked this in my earlier follow up email as well - can I use snd_pcm_t->private_data to communicate if it's a voice or audio 
I understand this private_data gets copied to substream->private data which will reach the driver...
Am I right here?

-----Original Message-----
From: Clemens Ladisch [mailto:clemens@ladisch.de] 
Sent: Tuesday, December 09, 2008 2:23 PM
To: Harsha, Priya
Cc: Lee Revell; alsa-devel@alsa-project.org
Subject: Re: [alsa-devel] question on hardware mixing

Harsha, Priya wrote:
> In the trigger function - I see that from substream->runtime->private_data,
> voice specific parameters are extracted. How and can somehow user space
> fill in some private data to the driver so that driver can process voice
> in a different way and music in a different way?

On the Emu10k1 chip, the hardware voices are used for both PCM playback
and wavetable (MIDI) playback.  Voice-specific parameters are set for
MIDI data; the parameters come from the soundfont that was loaded to
specify how the instruments sound.  (Here, the term "voice" has no
relation to the sound of a human voice.)

As far as PCM playback is concerned, ALSA does not have any predefined
mechanism to differentiate between voice and music audio streams.  It
would be possible to define mixer controls to switch between these
settings for each substream.


HTH
Clemens

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

* Re: question on hardware mixing
  2008-12-09  8:55           ` Harsha, Priya
@ 2008-12-09 12:44             ` David Dillow
  2009-04-09  7:36               ` question on hardware Harsha, Priya
  2008-12-09 14:06             ` question on hardware mixing Clemens Ladisch
  1 sibling, 1 reply; 21+ messages in thread
From: David Dillow @ 2008-12-09 12:44 UTC (permalink / raw)
  To: Harsha, Priya; +Cc: alsa-devel@alsa-project.org, Lee Revell, Clemens Ladisch

On Tue, 2008-12-09 at 14:25 +0530, Harsha, Priya wrote:
> If I define mixer controls to switch between each substream, I would
> not be able to handle multiple streams at time....

Check into the ALSA configuration file syntax -- there are number of
things you can do there, like define a 'voice' device that uses hooks to
set a control setting (snd_kcontrol) when you open a PCM. You can use
that control setting to let your driver know if the PCM channel is being
used for voice or audio traffic.

Look at how the EMU10K1 handles surround sound audio
in /etc/alsa/cards/EMU10K1.conf

I started to do some similar things for sis7019 surround sound, but
they've never made it out of my office due to lack of time/testing HW.

> I had asked this in my earlier follow up email as well - can I use
> snd_pcm_t->private_data to communicate if it's a voice or audio 
> I understand this private_data gets copied to substream->private data
> which will reach the driver...
> Am I right here?

I can't answer this specifically, but I believe the answer is in the
name -- 'private'. This is for the ALSA system to use, you can hang your
own data off a substream using snd_pcm_substream_chip(). Besides, how do
you plan on setting it in the snd_pcm_t type?

I think that if you set up some controls, use the config file language,
and have your audio apps open a 'voice' device, you can get where you
want. 

Dave

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

* Re: question on hardware mixing
  2008-12-09  8:55           ` Harsha, Priya
  2008-12-09 12:44             ` David Dillow
@ 2008-12-09 14:06             ` Clemens Ladisch
  2008-12-09 17:04               ` Harsha, Priya
  2009-05-07 14:35               ` Harsha, Priya
  1 sibling, 2 replies; 21+ messages in thread
From: Clemens Ladisch @ 2008-12-09 14:06 UTC (permalink / raw)
  To: Harsha, Priya; +Cc: alsa-devel@alsa-project.org, Lee Revell

Harsha, Priya wrote:
> If I define mixer controls to switch between each substream,

I wrote "mixer controls to switch between these settings for each
substream", i.e., each substream would have its own flag.

> can I use snd_pcm_t->private_data to communicate if it's a voice or
> audio

ALSA does not have a predefined mechanism to set it from userspace.
Your driver can initialize it when it is probed, or it can change it
when opening the substream.


HTH
Clemens

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

* Re: question on hardware mixing
  2008-12-09 14:06             ` question on hardware mixing Clemens Ladisch
@ 2008-12-09 17:04               ` Harsha, Priya
  2009-05-07 14:35               ` Harsha, Priya
  1 sibling, 0 replies; 21+ messages in thread
From: Harsha, Priya @ 2008-12-09 17:04 UTC (permalink / raw)
  To: Clemens Ladisch; +Cc: alsa-devel@alsa-project.org, Lee Revell


-----Original Message-----
From: alsa-devel-bounces@alsa-project.org [mailto:alsa-devel-bounces@alsa-project.org] On Behalf Of Clemens Ladisch
Sent: Tuesday, December 09, 2008 7:36 PM
To: Harsha, Priya
Cc: alsa-devel@alsa-project.org; Lee Revell
Subject: Re: [alsa-devel] question on hardware mixing

Harsha, Priya wrote:
> If I define mixer controls to switch between each substream,

I wrote "mixer controls to switch between these settings for each
substream", i.e., each substream would have its own flag.
[Harsha] I am still not comfortable how to do this... I guess EMU10K1 handle this kind of mixer controls for switching... I shall look into this driver to learn more

> can I use snd_pcm_t->private_data to communicate if it's a voice or
> audio

ALSA does not have a predefined mechanism to set it from userspace.
Your driver can initialize it when it is probed, or it can change it
when opening the substream.
[Harsha] Thanks.... so can I assume that when I open a substream, I can set a private_data to communicate to the driver if its voice/music?

HTH
Clemens
_______________________________________________
Alsa-devel mailing list
Alsa-devel@alsa-project.org
http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

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

* Re: question on hardware
  2008-12-09 12:44             ` David Dillow
@ 2009-04-09  7:36               ` Harsha, Priya
  2009-04-09  7:56                 ` Harsha, Priya
  0 siblings, 1 reply; 21+ messages in thread
From: Harsha, Priya @ 2009-04-09  7:36 UTC (permalink / raw)
  To: alsa-devel@alsa-project.org
  Cc: Takashi Iwai, David Dillow, Lee Revell, Clemens Ladisch

Hi ,

I need more help here. I tried looking at the .conf file but I have another requirement here. 

Let me put my requirements here. Please suggest me ways to get this done

1. When I get a .prepare call in my driver, I need to know the stream type
2. When I return from that call, I need to send to the user the locally allocated stream id

This is specific to the sound card/ DSP I am developing the driver for. The application is also proprietary.  Is this possible at all? Please suggest me ways to do the same.

Thanks,
Harsha

>-----Original Message-----
>From: David Dillow [mailto:dave@thedillows.org]
>Sent: Tuesday, December 09, 2008 6:14 PM
>To: Harsha, Priya
>Cc: Clemens Ladisch; alsa-devel@alsa-project.org; Lee Revell
>Subject: Re: [alsa-devel] question on hardware mixing
>
>On Tue, 2008-12-09 at 14:25 +0530, Harsha, Priya wrote:
>> If I define mixer controls to switch between each substream, I would
>> not be able to handle multiple streams at time....
>
>Check into the ALSA configuration file syntax -- there are number of
>things you can do there, like define a 'voice' device that uses hooks to
>set a control setting (snd_kcontrol) when you open a PCM. You can use
>that control setting to let your driver know if the PCM channel is being
>used for voice or audio traffic.
>
>Look at how the EMU10K1 handles surround sound audio
>in /etc/alsa/cards/EMU10K1.conf
>
>I started to do some similar things for sis7019 surround sound, but
>they've never made it out of my office due to lack of time/testing HW.
>
>> I had asked this in my earlier follow up email as well - can I use
>> snd_pcm_t->private_data to communicate if it's a voice or audio
>> I understand this private_data gets copied to substream->private data
>> which will reach the driver...
>> Am I right here?
>
>I can't answer this specifically, but I believe the answer is in the
>name -- 'private'. This is for the ALSA system to use, you can hang your
>own data off a substream using snd_pcm_substream_chip(). Besides, how do
>you plan on setting it in the snd_pcm_t type?
>
>I think that if you set up some controls, use the config file language,
>and have your audio apps open a 'voice' device, you can get where you
>want.
>
>Dave

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

* Re: question on hardware
  2009-04-09  7:36               ` question on hardware Harsha, Priya
@ 2009-04-09  7:56                 ` Harsha, Priya
  2009-04-17 13:36                   ` Takashi Iwai
  0 siblings, 1 reply; 21+ messages in thread
From: Harsha, Priya @ 2009-04-09  7:56 UTC (permalink / raw)
  To: alsa-devel@alsa-project.org
  Cc: Takashi Iwai, Clemens Ladisch, Revell, David Dillow, Lee

The issue that I am facing with creating a snd_kcontrol is that I am not able to bind that value to a stream. Say I start the application and set the type of that control to voice and open another instance of that application and set the type to audio. There might be a clash and I might get the wrong stream type to the driver. Also, the stream ids passed cannot also be guaranteed to reach the right stream.


>-----Original Message-----
>From: alsa-devel-bounces@alsa-project.org [mailto:alsa-devel-bounces@alsa-project.org] On Behalf Of Harsha,
>Priya
>Sent: Thursday, April 09, 2009 1:07 PM
>To: alsa-devel@alsa-project.org
>Cc: Takashi Iwai; David Dillow; Lee Revell; Clemens Ladisch
>Subject: Re: [alsa-devel] question on hardware
>
>Hi ,
>
>I need more help here. I tried looking at the .conf file but I have another requirement here.
>
>Let me put my requirements here. Please suggest me ways to get this done
>
>1. When I get a .prepare call in my driver, I need to know the stream type
>2. When I return from that call, I need to send to the user the locally allocated stream id
>
>This is specific to the sound card/ DSP I am developing the driver for. The application is also proprietary.  Is this
>possible at all? Please suggest me ways to do the same.
>
>Thanks,
>Harsha
>
>>-----Original Message-----
>>From: David Dillow [mailto:dave@thedillows.org]
>>Sent: Tuesday, December 09, 2008 6:14 PM
>>To: Harsha, Priya
>>Cc: Clemens Ladisch; alsa-devel@alsa-project.org; Lee Revell
>>Subject: Re: [alsa-devel] question on hardware mixing
>>
>>On Tue, 2008-12-09 at 14:25 +0530, Harsha, Priya wrote:
>>> If I define mixer controls to switch between each substream, I would
>>> not be able to handle multiple streams at time....
>>
>>Check into the ALSA configuration file syntax -- there are number of
>>things you can do there, like define a 'voice' device that uses hooks to
>>set a control setting (snd_kcontrol) when you open a PCM. You can use
>>that control setting to let your driver know if the PCM channel is being
>>used for voice or audio traffic.
>>
>>Look at how the EMU10K1 handles surround sound audio
>>in /etc/alsa/cards/EMU10K1.conf
>>
>>I started to do some similar things for sis7019 surround sound, but
>>they've never made it out of my office due to lack of time/testing HW.
>>
>>> I had asked this in my earlier follow up email as well - can I use
>>> snd_pcm_t->private_data to communicate if it's a voice or audio
>>> I understand this private_data gets copied to substream->private data
>>> which will reach the driver...
>>> Am I right here?
>>
>>I can't answer this specifically, but I believe the answer is in the
>>name -- 'private'. This is for the ALSA system to use, you can hang your
>>own data off a substream using snd_pcm_substream_chip(). Besides, how do
>>you plan on setting it in the snd_pcm_t type?
>>
>>I think that if you set up some controls, use the config file language,
>>and have your audio apps open a 'voice' device, you can get where you
>>want.
>>
>>Dave
>
>_______________________________________________
>Alsa-devel mailing list
>Alsa-devel@alsa-project.org
>http://mailman.alsa-project.org/mailman/listinfo/alsa-devel

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

* Re: question on hardware
  2009-04-09  7:56                 ` Harsha, Priya
@ 2009-04-17 13:36                   ` Takashi Iwai
  0 siblings, 0 replies; 21+ messages in thread
From: Takashi Iwai @ 2009-04-17 13:36 UTC (permalink / raw)
  To: Harsha, Priya
  Cc: Clemens Ladisch, alsa-devel@alsa-project.org, Lee Revell,
	David Dillow

At Thu, 9 Apr 2009 13:26:50 +0530,
Harsha, Priya wrote:
> 
> The issue that I am facing with creating a snd_kcontrol is that I am
> not able to bind that value to a stream.

Why?

> Say I start the application
> and set the type of that control to voice and open another instance
> of that application and set the type to audio.

Another instance must have a different stream, right?  Then it must
have a different substream number.  In the scenario a la emu10k1,
you'll have a control per each substream.  So this won't conflict.

> There might be a
> clash and I might get the wrong stream type to the driver. Also, the
> stream ids passed cannot also be guaranteed to reach the right
> stream. 

The "stream id" you are referring to might be different from what I'm
thinking of.  Please elaborate your terminology before further
questions.  It's a bit hard to illustrate your use-case from your
descriptions, so far...


thanks,

Takashi

> 
> 
> >-----Original Message-----
> >From: alsa-devel-bounces@alsa-project.org [mailto:alsa-devel-bounces@alsa-project.org] On Behalf Of Harsha,
> >Priya
> >Sent: Thursday, April 09, 2009 1:07 PM
> >To: alsa-devel@alsa-project.org
> >Cc: Takashi Iwai; David Dillow; Lee Revell; Clemens Ladisch
> >Subject: Re: [alsa-devel] question on hardware
> >
> >Hi ,
> >
> >I need more help here. I tried looking at the .conf file but I have another requirement here.
> >
> >Let me put my requirements here. Please suggest me ways to get this done
> >
> >1. When I get a .prepare call in my driver, I need to know the stream type
> >2. When I return from that call, I need to send to the user the locally allocated stream id
> >
> >This is specific to the sound card/ DSP I am developing the driver for. The application is also proprietary.  Is this
> >possible at all? Please suggest me ways to do the same.
> >
> >Thanks,
> >Harsha
> >
> >>-----Original Message-----
> >>From: David Dillow [mailto:dave@thedillows.org]
> >>Sent: Tuesday, December 09, 2008 6:14 PM
> >>To: Harsha, Priya
> >>Cc: Clemens Ladisch; alsa-devel@alsa-project.org; Lee Revell
> >>Subject: Re: [alsa-devel] question on hardware mixing
> >>
> >>On Tue, 2008-12-09 at 14:25 +0530, Harsha, Priya wrote:
> >>> If I define mixer controls to switch between each substream, I would
> >>> not be able to handle multiple streams at time....
> >>
> >>Check into the ALSA configuration file syntax -- there are number of
> >>things you can do there, like define a 'voice' device that uses hooks to
> >>set a control setting (snd_kcontrol) when you open a PCM. You can use
> >>that control setting to let your driver know if the PCM channel is being
> >>used for voice or audio traffic.
> >>
> >>Look at how the EMU10K1 handles surround sound audio
> >>in /etc/alsa/cards/EMU10K1.conf
> >>
> >>I started to do some similar things for sis7019 surround sound, but
> >>they've never made it out of my office due to lack of time/testing HW.
> >>
> >>> I had asked this in my earlier follow up email as well - can I use
> >>> snd_pcm_t->private_data to communicate if it's a voice or audio
> >>> I understand this private_data gets copied to substream->private data
> >>> which will reach the driver...
> >>> Am I right here?
> >>
> >>I can't answer this specifically, but I believe the answer is in the
> >>name -- 'private'. This is for the ALSA system to use, you can hang your
> >>own data off a substream using snd_pcm_substream_chip(). Besides, how do
> >>you plan on setting it in the snd_pcm_t type?
> >>
> >>I think that if you set up some controls, use the config file language,
> >>and have your audio apps open a 'voice' device, you can get where you
> >>want.
> >>
> >>Dave
> >
> >_______________________________________________
> >Alsa-devel mailing list
> >Alsa-devel@alsa-project.org
> >http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
> 

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

* Re: question on hardware mixing
  2008-12-09 14:06             ` question on hardware mixing Clemens Ladisch
  2008-12-09 17:04               ` Harsha, Priya
@ 2009-05-07 14:35               ` Harsha, Priya
  1 sibling, 0 replies; 21+ messages in thread
From: Harsha, Priya @ 2009-05-07 14:35 UTC (permalink / raw)
  To: Clemens Ladisch; +Cc: alsa-devel@alsa-project.org, Lee Revell

>I wrote "mixer controls to switch between these settings for each
>substream", i.e., each substream would have its own flag.

If I create a mixer control using snd_kcontrol. When two applications in parallel try to create a stream and change the snd_kcontrol, can you help me understand how I would get the stream type stored in each substream as a flag?

Also, when I get a snd_kcontrol's .set function call, I am not sure how to get the substream specific data in that call?

Thanks,
Harsha

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

end of thread, other threads:[~2009-05-07 14:36 UTC | newest]

Thread overview: 21+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-12-05 16:53 [PATCH 0/2] ASoC updates Mark Brown
2008-12-05 16:54 ` [PATCH 1/2] ASoC: Add support for OMAP3 Pandora Mark Brown
2008-12-05 16:54   ` [PATCH 2/2] ASoC: tlv320aic3x: control additions and cleanups Mark Brown
2008-12-05 17:03   ` question on hardware mixing Harsha, Priya
2008-12-05 17:12     ` Vedran Miletić
2008-12-05 17:26       ` Harsha, Priya
2008-12-06  4:58     ` Lee Revell
2008-12-06  6:56       ` Harsha, Priya
2008-12-09  3:15         ` Lee Revell
2008-12-09  3:24           ` Harsha, Priya
2008-12-09  3:26           ` Harsha, Priya
2008-12-09  8:52         ` Clemens Ladisch
2008-12-09  8:55           ` Harsha, Priya
2008-12-09 12:44             ` David Dillow
2009-04-09  7:36               ` question on hardware Harsha, Priya
2009-04-09  7:56                 ` Harsha, Priya
2009-04-17 13:36                   ` Takashi Iwai
2008-12-09 14:06             ` question on hardware mixing Clemens Ladisch
2008-12-09 17:04               ` Harsha, Priya
2009-05-07 14:35               ` Harsha, Priya
2008-12-05 17:09 ` [PATCH 0/2] ASoC updates Takashi Iwai

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.