1941 |
spin_unlock_irqrestore(&card->lock, flags); |
spin_unlock_irqrestore(&card->lock, flags); |
1942 |
|
|
1943 |
/* verify that the write succeeded */ |
/* verify that the write succeeded */ |
1944 |
if (vortex_codec_read(codec, addr) != data) { |
/* This isn't too happy... |
1945 |
printk(KERN_ERR "vortex: ac97 codec write failed\n"); |
if (vortex_codec_read(codec, addr) != data) |
1946 |
|
printk(KERN_ERR "vortex: ac97 codec write failed %x - %x\n", vortex_codec_read(codec, addr), data); |
1947 |
|
*/ |
1948 |
|
|
1949 |
|
vortex_codec_read(codec, addr); |
1950 |
} |
} |
1951 |
|
|
1952 |
unsigned short vortex_codec_read(ac97_t *codec, unsigned short addr) { |
unsigned short vortex_codec_read(ac97_t *codec, unsigned short addr) { |
1970 |
|
|
1971 |
/* set up read address */ |
/* set up read address */ |
1972 |
read_addr = ((addr << VORTEX_CODEC_ADDSHIFT) & VORTEX_CODEC_ADDMASK); |
read_addr = ((addr << VORTEX_CODEC_ADDSHIFT) & VORTEX_CODEC_ADDMASK); |
1973 |
hwwrite(card->mmio, VORTEX_CODEC_IO, reader); |
hwwrite(card->mmio, VORTEX_CODEC_IO, read_addr); |
1974 |
|
|
1975 |
/* wait for address */ |
/* wait for address */ |
1976 |
lifeboat = 0; |
lifeboat = 0; |
1977 |
while ((hwread(card->mmio, VORTEX_CODEC_IO) & VORTEX_CODEC_ADDMASK) != (addr << VORTEX_CODEC_ADDSHIFT)) |
while ((hwread(card->mmio, VORTEX_CODEC_IO) & VORTEX_CODEC_ADDMASK) != (addr << VORTEX_CODEC_ADDSHIFT)) { |
1978 |
udelay(100); |
udelay(100); |
1979 |
if (lifeboat++ > POLL_COUNT) { |
if (lifeboat++ > POLL_COUNT) { |
1980 |
printk(KERN_ERR "vortex: ac97 address never arrived\n"); |
printk(KERN_ERR "vortex: ac97 address never arrived\n"); |