diff options
-rw-r--r-- | wcte12xp/base.c | 6 |
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; |