At Wed, 28 Sep 2011 14:51:26 +0200, Abdelghani Ouchabane wrote:
Takashi Iwai wrote:
At Wed, 28 Sep 2011 14:22:02 +0200, Abdelghani Ouchabane wrote:
OK, it's good to hear. So 3.1 kernel is fine as is. Only 3.0 and earlier can get Oops with buggy BIOS setups.
I can easily fix it up, but maybe better first stabilize 3.1 and make similar 3.0 stable patch.
thanks,
Takashi
Do I need to contact the manufacturer of my board to fix the BIOS as well, or it can be fixed by a patch?
The easiest way is to create a file and feed via "patch" option of snd-hda-intel module as Clemens suggested.
I have three systems with the same hardware and software,
in /proc/asound/card0/codec#2
system 1 : Subsystem Id: 0x7fafffdd system 2 : Subsystem Id: 0xffffffff system 3 : Subsystem Id: 0xff7f7fa3
Why the "Subsystem Id" is different between the three systems?
Don't know. All look very broken. Are the machines really OK?
Is there a way to don't use it in :
[codec] vendor-id subsystem-id address
If I set the right subsystem-id in /lib/firmware/forgotten-ezono-hda-settings, the kernel doesn't crash and the sound works perfectly.
I need one /lib/firmware/forgotten-ezono-hda-settings for all systems and I can not get "Subsystem Id" before loading snd_hda_intel successfully
Any idea please?
You could apply the patch like below, and pass 0 or -1 to vendor and subsystem ids.
Takashi
--- diff --git a/sound/pci/hda/hda_hwdep.c b/sound/pci/hda/hda_hwdep.c index bf3ced5..c074ed2 100644 --- a/sound/pci/hda/hda_hwdep.c +++ b/sound/pci/hda/hda_hwdep.c @@ -649,8 +649,8 @@ static void parse_codec_mode(char *buf, struct hda_bus *bus, *codecp = NULL; if (sscanf(buf, "%i %i %i", &vendorid, &subid, &caddr) == 3) { list_for_each_entry(codec, &bus->codec_list, list) { - if (codec->vendor_id == vendorid && - codec->subsystem_id == subid && + if ((vendor <= 0 || codec->vendor_id == vendorid) && + (subid <= 0 || codec->subsystem_id == subid) && codec->addr == caddr) { *codecp = codec; break;