aboutsummaryrefslogtreecommitdiffstats
path: root/sound/soc/s3c24xx/neo1973_wm8753.c
diff options
context:
space:
mode:
authorTim Niemeyer <reddog@mastersword.de>2008-05-05 08:16:12 -0400
committerJaroslav Kysela <perex@perex.cz>2008-05-19 07:19:14 -0400
commit1894c59fdb63692f5ba2576875cc558b856935ca (patch)
tree3890a5a4d8f62c954fadea330905a8bbe02ee708 /sound/soc/s3c24xx/neo1973_wm8753.c
parent650f6b13318bce6a8d59bfa48fe15b5832623cbc (diff)
[ALSA] soc - Patch to add debug messages to the neo1973_wm8753 (GTA01) sound driver
Signed-off-by: Tim Niemeyer <reddog@mastersword.de> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> Signed-off-by: Takashi Iwai <tiwai@suse.de> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
Diffstat (limited to 'sound/soc/s3c24xx/neo1973_wm8753.c')
-rw-r--r--sound/soc/s3c24xx/neo1973_wm8753.c46
1 files changed, 46 insertions, 0 deletions
diff --git a/sound/soc/s3c24xx/neo1973_wm8753.c b/sound/soc/s3c24xx/neo1973_wm8753.c
index 0e9d1c5f2484..e469186a407d 100644
--- a/sound/soc/s3c24xx/neo1973_wm8753.c
+++ b/sound/soc/s3c24xx/neo1973_wm8753.c
@@ -43,6 +43,14 @@
43#include "s3c24xx-pcm.h" 43#include "s3c24xx-pcm.h"
44#include "s3c24xx-i2s.h" 44#include "s3c24xx-i2s.h"
45 45
46/* Debugging stuff */
47#define S3C24XX_SOC_NEO1973_WM8753_DEBUG 0
48#if S3C24XX_SOC_NEO1973_WM8753_DEBUG
49#define DBG(x...) printk(KERN_DEBUG "s3c24xx-soc-neo1973-wm8753: " x)
50#else
51#define DBG(x...)
52#endif
53
46/* define the scenarios */ 54/* define the scenarios */
47#define NEO_AUDIO_OFF 0 55#define NEO_AUDIO_OFF 0
48#define NEO_GSM_CALL_AUDIO_HANDSET 1 56#define NEO_GSM_CALL_AUDIO_HANDSET 1
@@ -67,6 +75,8 @@ static int neo1973_hifi_hw_params(struct snd_pcm_substream *substream,
67 int ret = 0; 75 int ret = 0;
68 unsigned long iis_clkrate; 76 unsigned long iis_clkrate;
69 77
78 DBG("Entered %s\n", __func__);
79
70 iis_clkrate = s3c24xx_i2s_get_clockrate(); 80 iis_clkrate = s3c24xx_i2s_get_clockrate();
71 81
72 switch (params_rate(params)) { 82 switch (params_rate(params)) {
@@ -151,6 +161,8 @@ static int neo1973_hifi_hw_free(struct snd_pcm_substream *substream)
151 struct snd_soc_pcm_runtime *rtd = substream->private_data; 161 struct snd_soc_pcm_runtime *rtd = substream->private_data;
152 struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai; 162 struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai;
153 163
164 DBG("Entered %s\n", __func__);
165
154 /* disable the PLL */ 166 /* disable the PLL */
155 return codec_dai->dai_ops.set_pll(codec_dai, WM8753_PLL1, 0, 0); 167 return codec_dai->dai_ops.set_pll(codec_dai, WM8753_PLL1, 0, 0);
156} 168}
@@ -172,6 +184,8 @@ static int neo1973_voice_hw_params(struct snd_pcm_substream *substream,
172 int ret = 0; 184 int ret = 0;
173 unsigned long iis_clkrate; 185 unsigned long iis_clkrate;
174 186
187 DBG("Entered %s\n", __func__);
188
175 iis_clkrate = s3c24xx_i2s_get_clockrate(); 189 iis_clkrate = s3c24xx_i2s_get_clockrate();
176 190
177 if (params_rate(params) != 8000) 191 if (params_rate(params) != 8000)
@@ -213,6 +227,8 @@ static int neo1973_voice_hw_free(struct snd_pcm_substream *substream)
213 struct snd_soc_pcm_runtime *rtd = substream->private_data; 227 struct snd_soc_pcm_runtime *rtd = substream->private_data;
214 struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai; 228 struct snd_soc_codec_dai *codec_dai = rtd->dai->codec_dai;
215 229
230 DBG("Entered %s\n", __func__);
231
216 /* disable the PLL */ 232 /* disable the PLL */
217 return codec_dai->dai_ops.set_pll(codec_dai, WM8753_PLL2, 0, 0); 233 return codec_dai->dai_ops.set_pll(codec_dai, WM8753_PLL2, 0, 0);
218} 234}
@@ -233,6 +249,8 @@ static int neo1973_get_scenario(struct snd_kcontrol *kcontrol,
233 249
234static int set_scenario_endpoints(struct snd_soc_codec *codec, int scenario) 250static int set_scenario_endpoints(struct snd_soc_codec *codec, int scenario)
235{ 251{
252 DBG("Entered %s\n", __func__);
253
236 switch (neo1973_scenario) { 254 switch (neo1973_scenario) {
237 case NEO_AUDIO_OFF: 255 case NEO_AUDIO_OFF:
238 snd_soc_dapm_set_endpoint(codec, "Audio Out", 0); 256 snd_soc_dapm_set_endpoint(codec, "Audio Out", 0);
@@ -315,6 +333,8 @@ static int neo1973_set_scenario(struct snd_kcontrol *kcontrol,
315{ 333{
316 struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol); 334 struct snd_soc_codec *codec = snd_kcontrol_chip(kcontrol);
317 335
336 DBG("Entered %s\n", __func__);
337
318 if (neo1973_scenario == ucontrol->value.integer.value[0]) 338 if (neo1973_scenario == ucontrol->value.integer.value[0])
319 return 0; 339 return 0;
320 340
@@ -327,6 +347,8 @@ static u8 lm4857_regs[4] = {0x00, 0x40, 0x80, 0xC0};
327 347
328static void lm4857_write_regs(void) 348static void lm4857_write_regs(void)
329{ 349{
350 DBG("Entered %s\n", __func__);
351
330 if (i2c_master_send(i2c, lm4857_regs, 4) != 4) 352 if (i2c_master_send(i2c, lm4857_regs, 4) != 4)
331 printk(KERN_ERR "lm4857: i2c write failed\n"); 353 printk(KERN_ERR "lm4857: i2c write failed\n");
332} 354}
@@ -338,6 +360,8 @@ static int lm4857_get_reg(struct snd_kcontrol *kcontrol,
338 int shift = (kcontrol->private_value >> 8) & 0x0F; 360 int shift = (kcontrol->private_value >> 8) & 0x0F;
339 int mask = (kcontrol->private_value >> 16) & 0xFF; 361 int mask = (kcontrol->private_value >> 16) & 0xFF;
340 362
363 DBG("Entered %s\n", __func__);
364
341 ucontrol->value.integer.value[0] = (lm4857_regs[reg] >> shift) & mask; 365 ucontrol->value.integer.value[0] = (lm4857_regs[reg] >> shift) & mask;
342 return 0; 366 return 0;
343} 367}
@@ -364,6 +388,8 @@ static int lm4857_get_mode(struct snd_kcontrol *kcontrol,
364{ 388{
365 u8 value = lm4857_regs[LM4857_CTRL] & 0x0F; 389 u8 value = lm4857_regs[LM4857_CTRL] & 0x0F;
366 390
391 DBG("Entered %s\n", __func__);
392
367 if (value) 393 if (value)
368 value -= 5; 394 value -= 5;
369 395
@@ -376,6 +402,8 @@ static int lm4857_set_mode(struct snd_kcontrol *kcontrol,
376{ 402{
377 u8 value = ucontrol->value.integer.value[0]; 403 u8 value = ucontrol->value.integer.value[0];
378 404
405 DBG("Entered %s\n", __func__);
406
379 if (value) 407 if (value)
380 value += 5; 408 value += 5;
381 409
@@ -483,6 +511,8 @@ static int neo1973_wm8753_init(struct snd_soc_codec *codec)
483{ 511{
484 int i, err; 512 int i, err;
485 513
514 DBG("Entered %s\n", __func__);
515
486 /* set up NC codec pins */ 516 /* set up NC codec pins */
487 snd_soc_dapm_set_endpoint(codec, "LOUT2", 0); 517 snd_soc_dapm_set_endpoint(codec, "LOUT2", 0);
488 snd_soc_dapm_set_endpoint(codec, "ROUT2", 0); 518 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)
583{ 613{
584 int ret; 614 int ret;
585 615
616 DBG("Entered %s\n", __func__);
617
586 client_template.adapter = adap; 618 client_template.adapter = adap;
587 client_template.addr = addr; 619 client_template.addr = addr;
588 620
@@ -606,6 +638,8 @@ exit_err:
606 638
607static int lm4857_i2c_detach(struct i2c_client *client) 639static int lm4857_i2c_detach(struct i2c_client *client)
608{ 640{
641 DBG("Entered %s\n", __func__);
642
609 i2c_detach_client(client); 643 i2c_detach_client(client);
610 kfree(client); 644 kfree(client);
611 return 0; 645 return 0;
@@ -613,6 +647,8 @@ static int lm4857_i2c_detach(struct i2c_client *client)
613 647
614static int lm4857_i2c_attach(struct i2c_adapter *adap) 648static int lm4857_i2c_attach(struct i2c_adapter *adap)
615{ 649{
650 DBG("Entered %s\n", __func__);
651
616 return i2c_probe(adap, &addr_data, lm4857_amp_probe); 652 return i2c_probe(adap, &addr_data, lm4857_amp_probe);
617} 653}
618 654
@@ -620,6 +656,8 @@ static u8 lm4857_state;
620 656
621static int lm4857_suspend(struct i2c_client *dev, pm_message_t state) 657static int lm4857_suspend(struct i2c_client *dev, pm_message_t state)
622{ 658{
659 DBG("Entered %s\n", __func__);
660
623 dev_dbg(&dev->dev, "lm4857_suspend\n"); 661 dev_dbg(&dev->dev, "lm4857_suspend\n");
624 lm4857_state = lm4857_regs[LM4857_CTRL] & 0xf; 662 lm4857_state = lm4857_regs[LM4857_CTRL] & 0xf;
625 if (lm4857_state) { 663 if (lm4857_state) {
@@ -631,6 +669,8 @@ static int lm4857_suspend(struct i2c_client *dev, pm_message_t state)
631 669
632static int lm4857_resume(struct i2c_client *dev) 670static int lm4857_resume(struct i2c_client *dev)
633{ 671{
672 DBG("Entered %s\n", __func__);
673
634 if (lm4857_state) { 674 if (lm4857_state) {
635 lm4857_regs[LM4857_CTRL] |= (lm4857_state & 0x0f); 675 lm4857_regs[LM4857_CTRL] |= (lm4857_state & 0x0f);
636 lm4857_write_regs(); 676 lm4857_write_regs();
@@ -640,6 +680,8 @@ static int lm4857_resume(struct i2c_client *dev)
640 680
641static void lm4857_shutdown(struct i2c_client *dev) 681static void lm4857_shutdown(struct i2c_client *dev)
642{ 682{
683 DBG("Entered %s\n", __func__);
684
643 dev_dbg(&dev->dev, "lm4857_shutdown\n"); 685 dev_dbg(&dev->dev, "lm4857_shutdown\n");
644 lm4857_regs[LM4857_CTRL] &= 0xf0; 686 lm4857_regs[LM4857_CTRL] &= 0xf0;
645 lm4857_write_regs(); 687 lm4857_write_regs();
@@ -671,6 +713,8 @@ static int __init neo1973_init(void)
671{ 713{
672 int ret; 714 int ret;
673 715
716 DBG("Entered %s\n", __func__);
717
674 neo1973_snd_device = platform_device_alloc("soc-audio", -1); 718 neo1973_snd_device = platform_device_alloc("soc-audio", -1);
675 if (!neo1973_snd_device) 719 if (!neo1973_snd_device)
676 return -ENOMEM; 720 return -ENOMEM;
@@ -691,6 +735,8 @@ static int __init neo1973_init(void)
691 735
692static void __exit neo1973_exit(void) 736static void __exit neo1973_exit(void)
693{ 737{
738 DBG("Entered %s\n", __func__);
739
694 i2c_del_driver(&lm4857_i2c_driver); 740 i2c_del_driver(&lm4857_i2c_driver);
695 platform_device_unregister(neo1973_snd_device); 741 platform_device_unregister(neo1973_snd_device);
696} 742}