#define                EN_SPDIF        0x000c0000
 
 #define VORTEX_CODEC_CHN       0x29080
-#define VORTEX_CODEC_WRITE     0x00800000
-#define VORTEX_CODEC_ADDSHIFT  16
-#define VORTEX_CODEC_ADDMASK   0x7f0000        /* 0x000f0000 */
-#define VORTEX_CODEC_DATSHIFT  0
-#define VORTEX_CODEC_DATMASK   0xffff
 #define VORTEX_CODEC_IO                0x29188
 
 /* SPDIF */
 
 #define                EN_SPORT        0x00030000
 #define                EN_SPDIF        0x000c0000
 #define VORTEX_CODEC_CHN 0x11880
-#define VORTEX_CODEC_WRITE 0x00800000
-#define VORTEX_CODEC_ADDSHIFT 16
-#define VORTEX_CODEC_ADDMASK 0x7f0000  /* 0x000f0000 */
-#define VORTEX_CODEC_DATSHIFT 0
-#define VORTEX_CODEC_DATMASK 0xffff
 #define VORTEX_CODEC_IO 0x11988
 
 #define VORTEX_SPDIF_FLAGS             0x1005c /* FIXME */
 
 
 #define VORTEX_CODEC_CTRL 0x29184
 #define VORTEX_CODEC_IO 0x29188
-#define        VORTEX_CODEC_WRITE 0x00800000
-#define        VORTEX_CODEC_ADDSHIFT 16
-#define        VORTEX_CODEC_ADDMASK 0x7f0000   /* 0x000f0000 */
-#define        VORTEX_CODEC_DATSHIFT 0
-#define        VORTEX_CODEC_DATMASK 0xffff
 
 #define VORTEX_CODEC_SPORTCTRL 0x2918c
 
 
 #define VORTEX_RESOURCE_A3D    0x00000004
 #define VORTEX_RESOURCE_LAST   0x00000005
 
+/* codec io: VORTEX_CODEC_IO bits */
+#define VORTEX_CODEC_ID_SHIFT  24
+#define VORTEX_CODEC_WRITE     0x00800000
+#define VORTEX_CODEC_ADDSHIFT  16
+#define VORTEX_CODEC_ADDMASK   0x7f0000
+#define VORTEX_CODEC_DATSHIFT  0
+#define VORTEX_CODEC_DATMASK   0xffff
+
 /* 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)
 
        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);
                }
        }
        /* 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 */