[alsa-devel] Cirrus CS4207 not working on 4.14.24

Takashi Iwai tiwai at suse.de
Fri Mar 9 10:11:16 CET 2018


On Fri, 09 Mar 2018 08:56:08 +0100,
Jorge Fernandez Monteagudo wrote:
> 
> Hi all!
> 
> 
> I've updated my system from a 3.16.7 kernel to a 4.14.24 kernel and sound stops working.
> 
> I have a Cirrus logic CS4207 codec. I've tracked down the problem using the '/proc/asound/card0/codec\#0'
> 
> info. With the 3.16.7 kernel all nodes power states are:
> 
> 
> Node 0x03: Power: setting=D0, actual=D0
> Node 0x0a: Power: setting=D0, actual=D0
> 
> and with 4.14.24 they are on
> 
> 
> Node 0x03: Power: setting=D0, actual=D3
> Node 0x0a: Power: setting=D3, actual=D3

And what nodes are these?
At best, please give alsa-info.sh output.


> Once in this situation I'm able to go to D0 again and make the sound works. I've used
> hda-verb 0.4 to SET_POWER_STATE to 0 with no luck. Finally, I've patched the 4.14.24
> to avoid changing to D3 and now the sound is working again. I know it's not the way to go
> but I need the sound...

It's the feature of power-saving, and can be turned off by passing the
hint via "patch" firmware.  If you can compile, the easiest way would
be the oneliner like:

--- a/sound/pci/hda/patch_cirrus.c
+++ b/sound/pci/hda/patch_cirrus.c
@@ -589,7 +589,7 @@ static struct cs_spec *cs_alloc_spec(struct hda_codec *codec, int vendor_nid)
 		return NULL;
 	codec->spec = spec;
 	spec->vendor_nid = vendor_nid;
-	codec->power_save_node = 1;
+	// codec->power_save_node = 1;
 	snd_hda_gen_spec_init(&spec->gen);
 
 	return spec;

If the widgets 0x03 and/or 0x0a have to be always turned on, we can
keep them on.  There are several ways to do that.


Takashi


More information about the Alsa-devel mailing list