summaryrefslogtreecommitdiff
path: root/linux/drivers
diff options
context:
space:
mode:
authorOliver Endriss <devnull@localhost>2004-11-16 17:18:45 +0000
committerOliver Endriss <devnull@localhost>2004-11-16 17:18:45 +0000
commit688a80606f162b07f7806e0b065da6bea044520e (patch)
tree664e22d34ab1641d3ae398cf820b2c31f7df9004 /linux/drivers
parent070620158ef9755801329fc9b567070b8b19da38 (diff)
downloadmediapointer-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.c4
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 )) {