diff options
author | Oliver Endriss <devnull@localhost> | 2004-11-16 17:18:45 +0000 |
---|---|---|
committer | Oliver Endriss <devnull@localhost> | 2004-11-16 17:18:45 +0000 |
commit | 688a80606f162b07f7806e0b065da6bea044520e (patch) | |
tree | 664e22d34ab1641d3ae398cf820b2c31f7df9004 /linux/drivers | |
parent | 070620158ef9755801329fc9b567070b8b19da38 (diff) | |
download | mediapointer-dvb-s2-688a80606f162b07f7806e0b065da6bea044520e.tar.gz mediapointer-dvb-s2-688a80606f162b07f7806e0b065da6bea044520e.tar.bz2 |
Fixed race condition between driver and av7110 while accessing
the COMMAND register in DPRAM.
See http://www.linuxtv.org/mailinglists/vdr/2004/01-2004/msg00331.html
Special thanks to Dr. Werner Fink for debugging the other (ARM) side.
Diffstat (limited to 'linux/drivers')
-rw-r--r-- | linux/drivers/media/dvb/ttpci/av7110_hw.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/linux/drivers/media/dvb/ttpci/av7110_hw.c b/linux/drivers/media/dvb/ttpci/av7110_hw.c index 707c2f4d7..f47b6d42c 100644 --- a/linux/drivers/media/dvb/ttpci/av7110_hw.c +++ b/linux/drivers/media/dvb/ttpci/av7110_hw.c @@ -317,6 +317,8 @@ int __av7110_send_fw_cmd(struct av7110 *av7110, u16* buf, int length) } } + wdebi(av7110, DEBINOSWAP, COM_IF_LOCK, 0xffff, 2); + #ifndef _NOHANDSHAKE start = jiffies; while (rdebi(av7110, DEBINOSWAP, HANDSHAKE_REG, 0, 2 )) { @@ -346,6 +348,8 @@ int __av7110_send_fw_cmd(struct av7110 *av7110, u16* buf, int length) wdebi(av7110, DEBINOSWAP, COMMAND, (u32) buf[0], 2); + wdebi(av7110, DEBINOSWAP, COM_IF_LOCK, 0x0000, 2); + #ifdef COM_DEBUG start = jiffies; while (rdebi(av7110, DEBINOSWAP, COMMAND, 0, 2 )) { |