diff options
author | Thomas Miletich <thomas.miletich@gmail.com> | 2009-09-08 19:35:55 +0200 |
---|---|---|
committer | Marty Connor <mdc@etherboot.org> | 2009-10-15 15:32:51 -0400 |
commit | d07f79de359f834468ff9f86beb71d53413ff2d7 (patch) | |
tree | 319b24b39bd0ead01d96a3bfd2e9805c3abd6cd7 | |
parent | 0ea6e5c221a463ef5d62e00703e0d5595cc4d169 (diff) | |
download | ipxe-d07f79de359f834468ff9f86beb71d53413ff2d7.tar.gz |
[sis900] Enable interrupts to allow UNDI to work
Enable interrupts in sis900_irq(). Doing so allows some programs using
gPXE's UNDI interface to work properly, including Symantec Ghost.
Tested-by: Hubert Mercier <hubert.mercier@unilim.fr>
Signed-off-by: Marty Connor <mdc@etherboot.org>
-rw-r--r-- | src/drivers/net/sis900.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/src/drivers/net/sis900.c b/src/drivers/net/sis900.c index 177cd6572..da14a091c 100644 --- a/src/drivers/net/sis900.c +++ b/src/drivers/net/sis900.c @@ -1183,8 +1183,12 @@ static int sis900_poll(struct nic *nic, int retrieve) { u32 rx_status = rxd[cur_rx].cmdsts; + u32 intr_status; int retstat = 0; + /* acknowledge interrupts by reading interrupt status register */ + intr_status = inl(ioaddr + isr); + if (sis900_debug > 2) printf("sis900_poll: cur_rx:%d, status:%X\n", cur_rx, (unsigned int) rx_status); @@ -1264,8 +1268,10 @@ sis900_irq(struct nic *nic __unused, irq_action_t action __unused) { switch ( action ) { case DISABLE : + outl(0, ioaddr + imr); break; case ENABLE : + outl((RxSOVR|RxORN|RxERR|RxOK|TxURN|TxERR|TxIDLE), ioaddr + imr); break; case FORCE : break; |