summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--wcte12xp/base.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/wcte12xp/base.c b/wcte12xp/base.c
index 5791a6c..bdf9b9b 100644
--- a/wcte12xp/base.c
+++ b/wcte12xp/base.c
@@ -379,7 +379,8 @@ static inline int t1_setreg_full(struct t1 *wc, int addr, int val, int inisr, in
do {
- spin_lock_irqsave(&wc->reglock, flags);
+ if (!inisr)
+ spin_lock_irqsave(&wc->reglock, flags);
hit = empty_slot(wc);
if (hit > -1) {
wc->cmdq.cmds[hit].address = addr;
@@ -390,9 +391,10 @@ static inline int t1_setreg_full(struct t1 *wc, int addr, int val, int inisr, in
wc->cmdq.cmds[hit].vpm_num = vpm_num;
}
}
- spin_unlock_irqrestore(&wc->reglock, flags);
if (inisr)
break;
+ else
+ spin_unlock_irqrestore(&wc->reglock, flags);
if (hit < 0) {
if ((ret = schluffen(&wc->regq)))
return ret;