[alsa-devel] Tegra driver silent running on linux-next

Stephen Warren swarren at nvidia.com
Wed Dec 22 06:57:58 CET 2010


I've made the Tegra audio driver compile against ALSA's -next, and it seems
like it's working; the files in /sys/kernel/debug/asoc contain everything
I'd expect, aplay -[lL] list what I'd expect, aplay runs without errors
and completes after the expected about of time, same for speaker-test.

However, the headphones are completely silent.

Note that all I've done is take the patchset I posted here, and make it
compile against ALSA -next. I haven't yet fixed any of the feedback you

I wondered if that was due to missing DAPM/routing information in harmony.c,
so I added what I think is the minimum to get things working:

static const struct snd_soc_dapm_widget harmony_dapm_widgets[] = {
	SND_SOC_DAPM_HP("Headphone Jack", NULL),

static const struct snd_soc_dapm_route audio_map[] = {
	{ "Headphone Jack", NULL, "HPOUTL" },
	{ "Headphone Jack", NULL, "HPOUTR" },

static int harmony_asoc_init(struct snd_soc_pcm_runtime *rtd)
	struct snd_soc_codec *codec = rtd->codec;
	struct snd_soc_dapm_context *dapm = &codec->dapm;

	snd_soc_dapm_new_controls(dapm, harmony_dapm_widgets,

	snd_soc_dapm_add_routes(dapm, audio_map, ARRAY_SIZE(audio_map));

     // Not sure if these should be there; existing drivers seem to
     // do things in different ways...
	snd_soc_dapm_enable_pin(dapm, "Headphone Jack");

	return 0;

static struct snd_soc_dai_link harmony_wm8903_dai = {
	.init = harmony_asoc_init,

However, still silence. I dumped the wm8903 debug files and again they
seem reasonable; see below.

Do you have any ideas what might be wrong; is there a requirement to
call extra APIs from the machine driver now to set things up, or
did the call order of some ops change? I don't see anything like that
when diffing other drivers.

Thanks for any pointers.

localhost dapm # cat HPOUTL
HPOUTL: On  in 1 out 1 - R0(0x0) bit 0
 in  static Left Headphone Output PGA
 out static Headphone Jack
localhost dapm # cat Left\ Headphone\ Output\ PGA 
Left Headphone Output PGA: On  in 1 out 1 - R14(0xe) bit 1
 in  static Charge Pump
 in  static Left Output Mixer
 out static HPOUTL
localhost dapm # cat Charge\ Pump 
Charge Pump: On  in 0 out 0 - R98(0x62) bit 0
 out static Right Line Output PGA
 out static Left Line Output PGA
 out static Right Headphone Output PGA
 out static Left Headphone Output PGA
localhost dapm # cat Left\ Output\ Mixer 
Left Output Mixer: On  in 1 out 2 - R13(0xd) bit 1
 in  DACL Switch DACL
 out static Left Headphone Output PGA
 out static Left Line Output PGA
localhost dapm # cat DACL
DACL: On  in 1 out 2 - R18(0x12) bit 3
 stream Left Playback inactive
 in  static CLK_DSP
 in  static DACL Sidetone
 out DACL Switch Left Output Mixer
localhost dapm # cat CLK_DSP 
CLK_DSP: On  in 0 out 0 - R22(0x16) bit 1
 out static DACR
 out static DACL
 out static ADCR
 out static ADCL
localhost dapm # cat DACL\ Sidetone 
DACL Sidetone: On  in 1 out 2
 in  Left ADCL
 out static DACL


More information about the Alsa-devel mailing list