read_addr = ((addr << VORTEX_CODEC_ADDSHIFT) & VORTEX_CODEC_ADDMASK); 
read_addr = ((addr << VORTEX_CODEC_ADDSHIFT) & VORTEX_CODEC_ADDMASK) | (codec->num << VORTEX_CODEC_ID_SHIFT) ; 
static unsigned short vortex_codec_read(ac97_t * codec, unsigned short addr){	vortex_t *card = (vortex_t *) codec->private_data;	u32 read_addr, data;	unsigned lifeboat = 0;	/* wait for transactions to clear */	while (!(hwread(card->mmio, VORTEX_CODEC_CTRL) & 0x100)) {		udelay(100);		if (lifeboat++ > POLL_COUNT) {			printk(KERN_ERR "vortex: ac97 codec stuck busy\n");			return 0xffff;		}	}	/* set up read address */	read_addr = ((addr << VORTEX_CODEC_ADDSHIFT) & VORTEX_CODEC_ADDMASK);	hwwrite(card->mmio, VORTEX_CODEC_IO, read_addr);	/* wait for address */	do {		udelay(100);		data = hwread(card->mmio, VORTEX_CODEC_IO);		if (lifeboat++ > POLL_COUNT) {			printk(KERN_ERR "vortex: ac97 address never arrived\n");			return 0xffff;		}	} while ((data & VORTEX_CODEC_ADDMASK) !=		 (addr << VORTEX_CODEC_ADDSHIFT));	/* return data. */	return (u16) (data & VORTEX_CODEC_DATMASK);}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/f2b31737e509a70952421e7cca488a2001a3b087/au88x0_core.c/buggy/sound/pci/au88x0/au88x0_core.c