1948 |
|
|
1949 |
/* write register */ |
/* write register */ |
1950 |
hwwrite(card->mmio, VORTEX_CODEC_IO, ((addr << VORTEX_CODEC_ADDSHIFT) & VORTEX_CODEC_ADDMASK) | |
hwwrite(card->mmio, VORTEX_CODEC_IO, ((addr << VORTEX_CODEC_ADDSHIFT) & VORTEX_CODEC_ADDMASK) | |
1951 |
((data << VORTEX_CODEC_DATSHIFT) & VORTEX_CODEC_DATMASK) | |
((data << VORTEX_CODEC_DATSHIFT) & VORTEX_CODEC_DATMASK) | VORTEX_CODEC_WRITE); |
|
VORTEX_CODEC_WRITE); |
|
1952 |
|
|
1953 |
/* this is necessary to flush the write */ |
/* this is necessary to flush the write */ |
1954 |
|
lifeboat = 0; |
1955 |
while (!(hwread(card->mmio, VORTEX_CODEC_CTRL) & 0x100)) { |
while (!(hwread(card->mmio, VORTEX_CODEC_CTRL) & 0x100)) { |
1956 |
udelay(100); |
udelay(100); |
1957 |
if (lifeboat++ > POLL_COUNT) { |
if (lifeboat++ > POLL_COUNT) { |
1960 |
return; |
return; |
1961 |
} |
} |
1962 |
} |
} |
1963 |
|
|
1964 |
read_addr = ((addr << VORTEX_CODEC_ADDSHIFT) & VORTEX_CODEC_ADDMASK); |
read_addr = ((addr << VORTEX_CODEC_ADDSHIFT) & VORTEX_CODEC_ADDMASK); |
1965 |
hwwrite(card->mmio, VORTEX_CODEC_IO, read_addr); |
hwwrite(card->mmio, VORTEX_CODEC_IO, read_addr); |
|
|
|
1966 |
spin_unlock_irqrestore(&card->lock, flags); |
spin_unlock_irqrestore(&card->lock, flags); |
1967 |
} |
} |
1968 |
|
|
2003 |
|
|
2004 |
/* read codec */ |
/* read codec */ |
2005 |
x = hwread(card->mmio, VORTEX_CODEC_IO) & VORTEX_CODEC_DATMASK; |
x = hwread(card->mmio, VORTEX_CODEC_IO) & VORTEX_CODEC_DATMASK; |
|
|
|
2006 |
spin_unlock_irqrestore(&card->lock, flags); |
spin_unlock_irqrestore(&card->lock, flags); |
2007 |
|
|
2008 |
return x; |
return x; |
2009 |
} |
} |
2010 |
|
|