Alsa-Devel Archive on lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 1/3] soc - S3C2410 pcm - Update for changed s3c2410 DMA API change
@ 2008-05-05 12:13 Mark Brown
  2008-05-05 12:13 ` [PATCH 2/3] soc - S3C2410 i2s - Add support for master and left justified modes Mark Brown
  0 siblings, 1 reply; 4+ messages in thread
From: Mark Brown @ 2008-05-05 12:13 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel, Mark Brown, ing. Davide Rizzo

From: ing. Davide Rizzo <davide@elpa.it>

S3C2410 pcm doesn't work.
s3c2410_dma_request() now returns the channel number and not 0 if OK.
Davide

This patch to update to a s3c2410_dma_request return value change

Signed-off-by: Davide Rizzo <davide@elpa.it>
Acked-by: Liam Girdwood <lg@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
 sound/soc/s3c24xx/s3c24xx-pcm.c |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/sound/soc/s3c24xx/s3c24xx-pcm.c b/sound/soc/s3c24xx/s3c24xx-pcm.c
index 6c70a81..7806ae6 100644
--- a/sound/soc/s3c24xx/s3c24xx-pcm.c
+++ b/sound/soc/s3c24xx/s3c24xx-pcm.c
@@ -171,7 +171,7 @@ static int s3c24xx_pcm_hw_params(struct snd_pcm_substream *substream,
 		ret = s3c2410_dma_request(prtd->params->channel,
 					  prtd->params->client, NULL);
 
-		if (ret) {
+		if (ret < 0) {
 			DBG(KERN_ERR "failed to get dma channel\n");
 			return ret;
 		}
-- 
1.5.5.1

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

* [PATCH 2/3] soc - S3C2410 i2s - Add support for master and left justified modes
  2008-05-05 12:13 [PATCH 1/3] soc - S3C2410 pcm - Update for changed s3c2410 DMA API change Mark Brown
@ 2008-05-05 12:13 ` Mark Brown
  2008-05-05 12:14   ` [PATCH 3/3] soc - Patch to add debug messages to the neo1973_wm8753 (GTA01) sound driver Mark Brown
  0 siblings, 1 reply; 4+ messages in thread
From: Mark Brown @ 2008-05-05 12:13 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel, Mark Brown, ing. Davide Rizzo

From: ing. Davide Rizzo <davide@elpa.it>

S3C2410 i2s driver currently manages only i2s protocol (and not left
justified one) and slave mode.
With this small patch, other modes are possible.

This patch to correctly manage codecs in slave mode and left-justified format

Signed-off-by: Davide Rizzo <davide@elpa.it>
Acked-by: Liam Girdwood <lg@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
 sound/soc/s3c24xx/s3c24xx-i2s.c |    2 ++
 1 files changed, 2 insertions(+), 0 deletions(-)

diff --git a/sound/soc/s3c24xx/s3c24xx-i2s.c b/sound/soc/s3c24xx/s3c24xx-i2s.c
index 4ebcd6a..1ed6afd 100644
--- a/sound/soc/s3c24xx/s3c24xx-i2s.c
+++ b/sound/soc/s3c24xx/s3c24xx-i2s.c
@@ -224,6 +224,7 @@ static int s3c24xx_i2s_set_fmt(struct snd_soc_cpu_dai *cpu_dai,
 		iismod |= S3C2410_IISMOD_SLAVE;
 		break;
 	case SND_SOC_DAIFMT_CBS_CFS:
+		iismod &= ~S3C2410_IISMOD_SLAVE;
 		break;
 	default:
 		return -EINVAL;
@@ -234,6 +235,7 @@ static int s3c24xx_i2s_set_fmt(struct snd_soc_cpu_dai *cpu_dai,
 		iismod |= S3C2410_IISMOD_MSB;
 		break;
 	case SND_SOC_DAIFMT_I2S:
+		iismod &= ~S3C2410_IISMOD_MSB;
 		break;
 	default:
 		return -EINVAL;
-- 
1.5.5.1

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

* [PATCH 3/3] soc - Patch to add debug messages to the neo1973_wm8753 (GTA01) sound driver
  2008-05-05 12:13 ` [PATCH 2/3] soc - S3C2410 i2s - Add support for master and left justified modes Mark Brown
@ 2008-05-05 12:14   ` Mark Brown
  2008-05-05 12:18     ` Takashi Iwai
  0 siblings, 1 reply; 4+ messages in thread
From: Mark Brown @ 2008-05-05 12:14 UTC (permalink / raw)
  To: Takashi Iwai; +Cc: alsa-devel, Mark Brown, Tim Niemeyer

From: Tim Niemeyer <reddog@mastersword.de>

Signed-off-by: Tim Niemeyer <reddog@mastersword.de>
Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
---
 sound/soc/s3c24xx/neo1973_wm8753.c |   46 ++++++++++++++++++++++++++++++++++++
 1 files changed, 46 insertions(+), 0 deletions(-)

diff --git a/sound/soc/s3c24xx/neo1973_wm8753.c b/sound/soc/s3c24xx/neo1973_wm8753.c
index 0e9d1c5..e469186 100644
--- a/sound/soc/s3c24xx/neo1973_wm8753.c
+++ b/sound/soc/s3c24xx/neo1973_wm8753.c
@@ -43,6 +43,14 @@
 #include "s3c24xx-pcm.h"
 #include "s3c24xx-i2s.h"
 
+/* Debugging stuff */
+#define S3C24XX_SOC_NEO1973_WM8753_DEBUG 0
+#if S3C24XX_SOC_NEO1973_WM8753_DEBUG
+#define DBG(x...) printk(KERN_DEBUG "s3c24xx-soc-neo1973-wm8753: " x)
+#else
+#define DBG(x...)
+#endif
+
 /* define the scenarios */
 #define NEO_AUDIO_OFF			0
 #define NEO_GSM_CALL_AUDIO_HANDSET	1
@@ -67,6 +75,8 @@ static int neo1973_hifi_hw_params(struct snd_pcm_substream *substream,
 	int ret = 0;
 	unsigned long iis_clkrate;
 
+	DBG("Entered %s\n", __func__);
+
 	iis_clkrate = s3c24xx_i2s_get_clockrate();
 
 	switch (params_rate(params)) {
@@ -151,6 +161,8 @@ static int neo1973_hifi_hw_free(struct snd_pcm_substream *substream)
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
 	struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai;
 
+	DBG("Entered %s\n", __func__);
+
 	/* disable the PLL */
 	return codec_dai->dai_ops.set_pll(codec_dai, WM8753_PLL1, 0, 0);
 }
@@ -172,6 +184,8 @@ static int neo1973_voice_hw_params(struct snd_pcm_substream *substream,
 	int ret = 0;
 	unsigned long iis_clkrate;
 
+	DBG("Entered %s\n", __func__);
+
 	iis_clkrate = s3c24xx_i2s_get_clockrate();
 
 	if (params_rate(params) != 8000)
@@ -213,6 +227,8 @@ static int neo1973_voice_hw_free(struct snd_pcm_substream *substream)
 	struct snd_soc_pcm_runtime *rtd = substream->private_data;
 	struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai;
 
+	DBG("Entered %s\n", __func__);
+
 	/* disable the PLL */
 	return codec_dai->dai_ops.set_pll(codec_dai, WM8753_PLL2, 0, 0);
 }
@@ -233,6 +249,8 @@ static int neo1973_get_scenario(struct snd_kcontrol *kcontrol,
 
 static int set_scenario_endpoints(struct snd_soc_codec *codec, int scenario)
 {
+	DBG("Entered %s\n", __func__);
+
 	switch (neo1973_scenario) {
 	case NEO_AUDIO_OFF:
 		snd_soc_dapm_set_endpoint(codec, "Audio Out",    0);
@@ -315,6 +333,8 @@ static int neo1973_set_scenario(struct snd_kcontrol *kcontrol,
 {
 	struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
 
+	DBG("Entered %s\n", __func__);
+
 	if (neo1973_scenario == ucontrol->value.integer.value[0])
 		return 0;
 
@@ -327,6 +347,8 @@ static u8 lm4857_regs[4] = {0x00, 0x40, 0x80, 0xC0};
 
 static void lm4857_write_regs(void)
 {
+	DBG("Entered %s\n", __func__);
+
 	if (i2c_master_send(i2c, lm4857_regs, 4) != 4)
 		printk(KERN_ERR "lm4857: i2c write failed\n");
 }
@@ -338,6 +360,8 @@ static int lm4857_get_reg(struct snd_kcontrol *kcontrol,
 	int shift = (kcontrol->private_value >> 8) & 0x0F;
 	int mask = (kcontrol->private_value >> 16) & 0xFF;
 
+	DBG("Entered %s\n", __func__);
+
 	ucontrol->value.integer.value[0] = (lm4857_regs[reg] >> shift) & mask;
 	return 0;
 }
@@ -364,6 +388,8 @@ static int lm4857_get_mode(struct snd_kcontrol *kcontrol,
 {
 	u8 value = lm4857_regs[LM4857_CTRL] & 0x0F;
 
+	DBG("Entered %s\n", __func__);
+
 	if (value)
 		value -= 5;
 
@@ -376,6 +402,8 @@ static int lm4857_set_mode(struct snd_kcontrol *kcontrol,
 {
 	u8 value = ucontrol->value.integer.value[0];
 
+	DBG("Entered %s\n", __func__);
+
 	if (value)
 		value += 5;
 
@@ -483,6 +511,8 @@ static int neo1973_wm8753_init(struct snd_soc_codec *codec)
 {
 	int i, err;
 
+	DBG("Entered %s\n", __func__);
+
 	/* set up NC codec pins */
 	snd_soc_dapm_set_endpoint(codec, "LOUT2", 0);
 	snd_soc_dapm_set_endpoint(codec, "ROUT2", 0);
@@ -583,6 +613,8 @@ static int lm4857_amp_probe(struct i2c_adapter *adap, int addr, int kind)
 {
 	int ret;
 
+	DBG("Entered %s\n", __func__);
+
 	client_template.adapter = adap;
 	client_template.addr = addr;
 
@@ -606,6 +638,8 @@ exit_err:
 
 static int lm4857_i2c_detach(struct i2c_client *client)
 {
+	DBG("Entered %s\n", __func__);
+
 	i2c_detach_client(client);
 	kfree(client);
 	return 0;
@@ -613,6 +647,8 @@ static int lm4857_i2c_detach(struct i2c_client *client)
 
 static int lm4857_i2c_attach(struct i2c_adapter *adap)
 {
+	DBG("Entered %s\n", __func__);
+
 	return i2c_probe(adap, &addr_data, lm4857_amp_probe);
 }
 
@@ -620,6 +656,8 @@ static u8 lm4857_state;
 
 static int lm4857_suspend(struct i2c_client *dev, pm_message_t state)
 {
+	DBG("Entered %s\n", __func__);
+
 	dev_dbg(&dev->dev, "lm4857_suspend\n");
 	lm4857_state = lm4857_regs[LM4857_CTRL] & 0xf;
 	if (lm4857_state) {
@@ -631,6 +669,8 @@ static int lm4857_suspend(struct i2c_client *dev, pm_message_t state)
 
 static int lm4857_resume(struct i2c_client *dev)
 {
+	DBG("Entered %s\n", __func__);
+
 	if (lm4857_state) {
 		lm4857_regs[LM4857_CTRL] |= (lm4857_state & 0x0f);
 		lm4857_write_regs();
@@ -640,6 +680,8 @@ static int lm4857_resume(struct i2c_client *dev)
 
 static void lm4857_shutdown(struct i2c_client *dev)
 {
+	DBG("Entered %s\n", __func__);
+
 	dev_dbg(&dev->dev, "lm4857_shutdown\n");
 	lm4857_regs[LM4857_CTRL] &= 0xf0;
 	lm4857_write_regs();
@@ -671,6 +713,8 @@ static int __init neo1973_init(void)
 {
 	int ret;
 
+	DBG("Entered %s\n", __func__);
+
 	neo1973_snd_device = platform_device_alloc("soc-audio", -1);
 	if (!neo1973_snd_device)
 		return -ENOMEM;
@@ -691,6 +735,8 @@ static int __init neo1973_init(void)
 
 static void __exit neo1973_exit(void)
 {
+	DBG("Entered %s\n", __func__);
+
 	i2c_del_driver(&lm4857_i2c_driver);
 	platform_device_unregister(neo1973_snd_device);
 }
-- 
1.5.5.1

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

* Re: [PATCH 3/3] soc - Patch to add debug messages to the neo1973_wm8753 (GTA01) sound driver
  2008-05-05 12:14   ` [PATCH 3/3] soc - Patch to add debug messages to the neo1973_wm8753 (GTA01) sound driver Mark Brown
@ 2008-05-05 12:18     ` Takashi Iwai
  0 siblings, 0 replies; 4+ messages in thread
From: Takashi Iwai @ 2008-05-05 12:18 UTC (permalink / raw)
  To: Mark Brown; +Cc: alsa-devel, Tim Niemeyer

At Mon,  5 May 2008 13:14:00 +0100,
Mark Brown wrote:
> 
> From: Tim Niemeyer <reddog@mastersword.de>
> 
> Signed-off-by: Tim Niemeyer <reddog@mastersword.de>
> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>

Thanks, applied to ALSA tree now.  The others were already applied.


Takashi

> ---
>  sound/soc/s3c24xx/neo1973_wm8753.c |   46 ++++++++++++++++++++++++++++++++++++
>  1 files changed, 46 insertions(+), 0 deletions(-)
> 
> diff --git a/sound/soc/s3c24xx/neo1973_wm8753.c b/sound/soc/s3c24xx/neo1973_wm8753.c
> index 0e9d1c5..e469186 100644
> --- a/sound/soc/s3c24xx/neo1973_wm8753.c
> +++ b/sound/soc/s3c24xx/neo1973_wm8753.c
> @@ -43,6 +43,14 @@
>  #include "s3c24xx-pcm.h"
>  #include "s3c24xx-i2s.h"
>  
> +/* Debugging stuff */
> +#define S3C24XX_SOC_NEO1973_WM8753_DEBUG 0
> +#if S3C24XX_SOC_NEO1973_WM8753_DEBUG
> +#define DBG(x...) printk(KERN_DEBUG "s3c24xx-soc-neo1973-wm8753: " x)
> +#else
> +#define DBG(x...)
> +#endif
> +
>  /* define the scenarios */
>  #define NEO_AUDIO_OFF			0
>  #define NEO_GSM_CALL_AUDIO_HANDSET	1
> @@ -67,6 +75,8 @@ static int neo1973_hifi_hw_params(struct snd_pcm_substream *substream,
>  	int ret = 0;
>  	unsigned long iis_clkrate;
>  
> +	DBG("Entered %s\n", __func__);
> +
>  	iis_clkrate = s3c24xx_i2s_get_clockrate();
>  
>  	switch (params_rate(params)) {
> @@ -151,6 +161,8 @@ static int neo1973_hifi_hw_free(struct snd_pcm_substream *substream)
>  	struct snd_soc_pcm_runtime *rtd = substream->private_data;
>  	struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai;
>  
> +	DBG("Entered %s\n", __func__);
> +
>  	/* disable the PLL */
>  	return codec_dai->dai_ops.set_pll(codec_dai, WM8753_PLL1, 0, 0);
>  }
> @@ -172,6 +184,8 @@ static int neo1973_voice_hw_params(struct snd_pcm_substream *substream,
>  	int ret = 0;
>  	unsigned long iis_clkrate;
>  
> +	DBG("Entered %s\n", __func__);
> +
>  	iis_clkrate = s3c24xx_i2s_get_clockrate();
>  
>  	if (params_rate(params) != 8000)
> @@ -213,6 +227,8 @@ static int neo1973_voice_hw_free(struct snd_pcm_substream *substream)
>  	struct snd_soc_pcm_runtime *rtd = substream->private_data;
>  	struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai;
>  
> +	DBG("Entered %s\n", __func__);
> +
>  	/* disable the PLL */
>  	return codec_dai->dai_ops.set_pll(codec_dai, WM8753_PLL2, 0, 0);
>  }
> @@ -233,6 +249,8 @@ static int neo1973_get_scenario(struct snd_kcontrol *kcontrol,
>  
>  static int set_scenario_endpoints(struct snd_soc_codec *codec, int scenario)
>  {
> +	DBG("Entered %s\n", __func__);
> +
>  	switch (neo1973_scenario) {
>  	case NEO_AUDIO_OFF:
>  		snd_soc_dapm_set_endpoint(codec, "Audio Out",    0);
> @@ -315,6 +333,8 @@ static int neo1973_set_scenario(struct snd_kcontrol *kcontrol,
>  {
>  	struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
>  
> +	DBG("Entered %s\n", __func__);
> +
>  	if (neo1973_scenario == ucontrol->value.integer.value[0])
>  		return 0;
>  
> @@ -327,6 +347,8 @@ static u8 lm4857_regs[4] = {0x00, 0x40, 0x80, 0xC0};
>  
>  static void lm4857_write_regs(void)
>  {
> +	DBG("Entered %s\n", __func__);
> +
>  	if (i2c_master_send(i2c, lm4857_regs, 4) != 4)
>  		printk(KERN_ERR "lm4857: i2c write failed\n");
>  }
> @@ -338,6 +360,8 @@ static int lm4857_get_reg(struct snd_kcontrol *kcontrol,
>  	int shift = (kcontrol->private_value >> 8) & 0x0F;
>  	int mask = (kcontrol->private_value >> 16) & 0xFF;
>  
> +	DBG("Entered %s\n", __func__);
> +
>  	ucontrol->value.integer.value[0] = (lm4857_regs[reg] >> shift) & mask;
>  	return 0;
>  }
> @@ -364,6 +388,8 @@ static int lm4857_get_mode(struct snd_kcontrol *kcontrol,
>  {
>  	u8 value = lm4857_regs[LM4857_CTRL] & 0x0F;
>  
> +	DBG("Entered %s\n", __func__);
> +
>  	if (value)
>  		value -= 5;
>  
> @@ -376,6 +402,8 @@ static int lm4857_set_mode(struct snd_kcontrol *kcontrol,
>  {
>  	u8 value = ucontrol->value.integer.value[0];
>  
> +	DBG("Entered %s\n", __func__);
> +
>  	if (value)
>  		value += 5;
>  
> @@ -483,6 +511,8 @@ static int neo1973_wm8753_init(struct snd_soc_codec *codec)
>  {
>  	int i, err;
>  
> +	DBG("Entered %s\n", __func__);
> +
>  	/* set up NC codec pins */
>  	snd_soc_dapm_set_endpoint(codec, "LOUT2", 0);
>  	snd_soc_dapm_set_endpoint(codec, "ROUT2", 0);
> @@ -583,6 +613,8 @@ static int lm4857_amp_probe(struct i2c_adapter *adap, int addr, int kind)
>  {
>  	int ret;
>  
> +	DBG("Entered %s\n", __func__);
> +
>  	client_template.adapter = adap;
>  	client_template.addr = addr;
>  
> @@ -606,6 +638,8 @@ exit_err:
>  
>  static int lm4857_i2c_detach(struct i2c_client *client)
>  {
> +	DBG("Entered %s\n", __func__);
> +
>  	i2c_detach_client(client);
>  	kfree(client);
>  	return 0;
> @@ -613,6 +647,8 @@ static int lm4857_i2c_detach(struct i2c_client *client)
>  
>  static int lm4857_i2c_attach(struct i2c_adapter *adap)
>  {
> +	DBG("Entered %s\n", __func__);
> +
>  	return i2c_probe(adap, &addr_data, lm4857_amp_probe);
>  }
>  
> @@ -620,6 +656,8 @@ static u8 lm4857_state;
>  
>  static int lm4857_suspend(struct i2c_client *dev, pm_message_t state)
>  {
> +	DBG("Entered %s\n", __func__);
> +
>  	dev_dbg(&dev->dev, "lm4857_suspend\n");
>  	lm4857_state = lm4857_regs[LM4857_CTRL] & 0xf;
>  	if (lm4857_state) {
> @@ -631,6 +669,8 @@ static int lm4857_suspend(struct i2c_client *dev, pm_message_t state)
>  
>  static int lm4857_resume(struct i2c_client *dev)
>  {
> +	DBG("Entered %s\n", __func__);
> +
>  	if (lm4857_state) {
>  		lm4857_regs[LM4857_CTRL] |= (lm4857_state & 0x0f);
>  		lm4857_write_regs();
> @@ -640,6 +680,8 @@ static int lm4857_resume(struct i2c_client *dev)
>  
>  static void lm4857_shutdown(struct i2c_client *dev)
>  {
> +	DBG("Entered %s\n", __func__);
> +
>  	dev_dbg(&dev->dev, "lm4857_shutdown\n");
>  	lm4857_regs[LM4857_CTRL] &= 0xf0;
>  	lm4857_write_regs();
> @@ -671,6 +713,8 @@ static int __init neo1973_init(void)
>  {
>  	int ret;
>  
> +	DBG("Entered %s\n", __func__);
> +
>  	neo1973_snd_device = platform_device_alloc("soc-audio", -1);
>  	if (!neo1973_snd_device)
>  		return -ENOMEM;
> @@ -691,6 +735,8 @@ static int __init neo1973_init(void)
>  
>  static void __exit neo1973_exit(void)
>  {
> +	DBG("Entered %s\n", __func__);
> +
>  	i2c_del_driver(&lm4857_i2c_driver);
>  	platform_device_unregister(neo1973_snd_device);
>  }
> -- 
> 1.5.5.1
> 

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

end of thread, other threads:[~2008-05-05 12:18 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-05-05 12:13 [PATCH 1/3] soc - S3C2410 pcm - Update for changed s3c2410 DMA API change Mark Brown
2008-05-05 12:13 ` [PATCH 2/3] soc - S3C2410 i2s - Add support for master and left justified modes Mark Brown
2008-05-05 12:14   ` [PATCH 3/3] soc - Patch to add debug messages to the neo1973_wm8753 (GTA01) sound driver Mark Brown
2008-05-05 12:18     ` Takashi Iwai

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox