/* . Function: smc_halt . Purpose: closes down the SMC91xxx chip. . Method: . 1. zero the interrupt mask . 2. clear the enable receive flag . 3. clear the enable xmit flags . . TODO: . (1) maybe utilize power down mode. . Why not yet? Because while the chip will go into power down mode, . the manual says that it will wake up in response to any I/O requests . in the register space. Empirical results do not show this working. */ static void smc_halt(struct eth_device *dev) { PRINTK2("%s: smc_halt\n", SMC_DEV_NAME); /* no more interrupts for me */ SMC_SELECT_BANK( dev, 2 ); SMC_outb( dev, 0, IM_REG ); /* and tell the card to stay away from that nasty outside world */ SMC_SELECT_BANK( dev, 0 ); SMC_outb( dev, RCR_CLEAR, RCR_REG ); SMC_outb( dev, TCR_CLEAR, TCR_REG ); swap_to(FLASH); }
/* . Function: smc_shutdown . Purpose: closes down the SMC91xxx chip. . Method: . 1. zero the interrupt mask . 2. clear the enable receive flag . 3. clear the enable xmit flags . . TODO: . (1) maybe utilize power down mode. . Why not yet? Because while the chip will go into power down mode, . the manual says that it will wake up in response to any I/O requests . in the register space. Empirical results do not show this working. */ static void smc_shutdown() { PRINTK2(CARDNAME ": smc_shutdown\n"); /* no more interrupts for me */ SMC_SELECT_BANK( 2 ); SMC_outb( 0, IM_REG ); /* and tell the card to stay away from that nasty outside world */ SMC_SELECT_BANK( 0 ); SMC_outb( RCR_CLEAR, RCR_REG ); SMC_outb( TCR_CLEAR, TCR_REG ); #ifdef SHARED_RESOURCES swap_to(FLASH); #endif }