--- linux-2.6.6/sound/pci/au88x0/au88x0.h 2004-05-18 14:49:49.000000000 -0400 +++ linux-2.6.6_aureal/sound/pci/au88x0/au88x0.h 2004-06-03 10:48:11.000000000 -0400 @@ -94,7 +94,8 @@ #define VORTEX_RESOURCE_LAST 0x00000005 /* Check for SDAC bit in "Extended audio ID" AC97 register */ -#define VORTEX_IS_QUAD(x) ((x->codec == NULL) ? 0 : (x->codec->ext_id&0x80)) +//#define VORTEX_IS_QUAD(x) (((x)->codec == NULL) ? 0 : ((x)->codec->ext_id&0x80)) +#define VORTEX_IS_QUAD(x) ((x)->isquad) /* Check if chip has bug. */ #define IS_BAD_CHIP(x) (\ (x->rev == 0xfe && x->device == PCI_DEVICE_ID_AUREAL_VORTEX2) || \ @@ -178,6 +179,8 @@ int xt_mode; /* 1: speakers, 0:headphones. */ #endif + int isquad; /* cache of extended ID codec flag. */ + /* Gameport stuff. */ struct gameport *gameport; --- linux-2.6.6/sound/pci/au88x0/au88x0_mixer.c 2004-05-18 14:49:49.000000000 -0400 +++ linux-2.6.6_aureal/sound/pci/au88x0/au88x0_mixer.c 2004-06-03 10:46:45.000000000 -0400 @@ -25,5 +25,7 @@ memset(&ac97, 0, sizeof(ac97)); // Intialize AC97 codec stuff. ac97.private_data = vortex; - return snd_ac97_mixer(pbus, &ac97, &vortex->codec); + err = snd_ac97_mixer(pbus, &ac97, &vortex->codec); + vortex->isquad = ((vortex->codec == NULL) ? 0 : (vortex->codec->ext_id&0x80)); + return err; }