Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
[sundance] Add reset completion check
Following the example of the Linux driver, we add a check and delay to
make sure that the NIC has finished resetting before the driver issues
any additional commands.

Signed-off-by: Marty Connor <mdc@etherboot.org>
  • Loading branch information
thomil authored and Marty Connor committed Feb 27, 2009
1 parent b9d791f commit afe59d4
Showing 1 changed file with 16 additions and 0 deletions.
16 changes: 16 additions & 0 deletions src/drivers/net/sundance.c
Expand Up @@ -691,6 +691,22 @@ static int sundance_probe ( struct nic *nic, struct pci_device *pci ) {
/* Reset the chip to erase previous misconfiguration */
DBG ( "ASIC Control is %#x\n", inl(BASE + ASICCtrl) );
outw(0x007f, BASE + ASICCtrl + 2);

/*
* wait for reset to complete
* this is heavily inspired by the linux sundance driver
* according to the linux driver it can take up to 1ms for the reset
* to complete
*/
i = 0;
while(inl(BASE + ASICCtrl) & (ResetBusy << 16)) {
if(i++ >= 10) {
DBG("sundance: NIC reset did not complete.\n");
break;
}
udelay(100);
}

DBG ( "ASIC Control is now %#x.\n", inl(BASE + ASICCtrl) );

sundance_reset(nic);
Expand Down

0 comments on commit afe59d4

Please sign in to comment.