For level triggered interrupts clear the PIC IRR bit when the interrupt pin
is deasserted. Prior to this change each assertion on a level triggered irq pin resulted in two interrupts being delivered to the CPU. Differential Revision: https://reviews.freebsd.org/D1310 Reviewed by: tychon MFC after: 1 week
This commit is contained in:
parent
e01343ccd7
commit
09eced2549
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=275817
@ -388,6 +388,8 @@ vatpic_set_pinstate(struct vatpic *vatpic, int pin, bool newstate)
|
||||
} else if (oldcnt == 1 && newcnt == 0) {
|
||||
/* falling edge */
|
||||
VATPIC_CTR1(vatpic, "atpic pin%d: deasserted", pin);
|
||||
if (level)
|
||||
atpic->request &= ~(1 << (pin & 0x7));
|
||||
} else {
|
||||
VATPIC_CTR3(vatpic, "atpic pin%d: %s, ignored, acnt %d",
|
||||
pin, newstate ? "asserted" : "deasserted", newcnt);
|
||||
|
Loading…
Reference in New Issue
Block a user