[alsa-devel] [PATCH] ALSA: hda - print power state for AFG node in proc file

Takashi Iwai tiwai at suse.de
Tue Jan 8 15:37:18 CET 2013


At Tue, 08 Jan 2013 15:26:03 +0100,
David Henningsson wrote:
> 
> On 01/08/2013 03:11 PM, Takashi Iwai wrote:
> > At Tue,  8 Jan 2013 15:01:18 +0100,
> > David Henningsson wrote:
> >>
> >> It seems useful, and power states are required for AFG nodes,
> >> so I see no reason not to print it.
> >
> > Hmm...  when the codec proc file is output, the codec gets awake.
> > So it should print only D0 there.  Or did you get other power state?
> 
> I added it to debug something, to verify that I actually did get D0. And 
> yes, I did get D0.
> 
> But there is a possibility not to get D0; I mean, we try ten times to 
> set it (and wait 500 ms for each try!) and maybe, some codecs might need 
> it to be set eleven times...or something.

No chance, because the codec is always woken up by reading a value :)
The driver does explicit power up while accessing the codec via
snd_hda_codec_read/write().

> And it also prints out available power states, e g whether the AFG 
> supports EPSS etc.

Yes, it's a good point.

> Do you think it would be more useful to move it above snd_hda_power_up?

It doesn't help, because the call of snd_hda_codec_read() or
snd_hda_parm_read() itself wakes up the codec.

In anyway I'm going to apply your patch as is.


thanks,

Takashi


> >> As a bonus, also print the
> >> AFG nid.
> >
> > Yeah, this is a good thing.
> >
> >
> > thanks,
> >
> > Takashi
> >
> >> Signed-off-by: David Henningsson <david.henningsson at canonical.com>
> >> ---
> >>   sound/pci/hda/hda_proc.c |    2 ++
> >>   1 file changed, 2 insertions(+)
> >>
> >> (Feel free to rephrase "State of AFG node 0x%02x:\n" if you like.)
> >>
> >> diff --git a/sound/pci/hda/hda_proc.c b/sound/pci/hda/hda_proc.c
> >> index 045e5d3..d6c8416 100644
> >> --- a/sound/pci/hda/hda_proc.c
> >> +++ b/sound/pci/hda/hda_proc.c
> >> @@ -603,6 +603,8 @@ static void print_codec_info(struct snd_info_entry *entry,
> >>   	print_amp_caps(buffer, codec, codec->afg, HDA_INPUT);
> >>   	snd_iprintf(buffer, "Default Amp-Out caps: ");
> >>   	print_amp_caps(buffer, codec, codec->afg, HDA_OUTPUT);
> >> +	snd_iprintf(buffer, "State of AFG node 0x%02x:\n", codec->afg);
> >> +	print_power_state(buffer, codec, codec->afg);
> >>
> >>   	nodes = snd_hda_get_sub_nodes(codec, codec->afg, &nid);
> >>   	if (! nid || nodes < 0) {
> >> --
> >> 1.7.9.5
> >>
> >
> 
> 
> 
> -- 
> David Henningsson, Canonical Ltd.
> https://launchpad.net/~diwic
> 


More information about the Alsa-devel mailing list