diff -rpu au88x0_orig/au88x0.h au88x0/au88x0.h --- au88x0_orig/au88x0.h 2005-09-14 20:52:57.000000000 +0300 +++ au88x0/au88x0.h 2005-09-14 20:54:47.000000000 +0300 @@ -79,6 +79,9 @@ #define VORTEX_RESOURCE_A3D 0x00000004 #define VORTEX_RESOURCE_LAST 0x00000005 +/* codec io related */ +#define VORTEX_CODEC_ID_SHIFT 30 /* unknown: may be 24-31 (or irrelevat) */ + /* 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)->isquad) diff -rpu au88x0_orig/au88x0_core.c au88x0/au88x0_core.c --- au88x0_orig/au88x0_core.c 2005-09-13 20:00:50.000000000 +0300 +++ au88x0/au88x0_core.c 2005-09-14 20:51:03.000000000 +0300 @@ -2537,7 +2537,8 @@ vortex_codec_write(ac97_t * codec, unsig hwwrite(card->mmio, VORTEX_CODEC_IO, ((addr << VORTEX_CODEC_ADDSHIFT) & VORTEX_CODEC_ADDMASK) | ((data << VORTEX_CODEC_DATSHIFT) & VORTEX_CODEC_DATMASK) | - VORTEX_CODEC_WRITE); + VORTEX_CODEC_WRITE | + (codec->num << VORTEX_CODEC_ID_SHIFT) ); /* Flush Caches. */ hwread(card->mmio, VORTEX_CODEC_IO); @@ -2559,7 +2560,8 @@ static unsigned short vortex_codec_read( } } /* set up read address */ - read_addr = ((addr << VORTEX_CODEC_ADDSHIFT) & VORTEX_CODEC_ADDMASK); + read_addr = ((addr << VORTEX_CODEC_ADDSHIFT) & VORTEX_CODEC_ADDMASK) | + (codec->num << VORTEX_CODEC_ID_SHIFT) ; hwwrite(card->mmio, VORTEX_CODEC_IO, read_addr); /* wait for address */