diff --git a/src/drivers/bus/eisa.c b/src/drivers/bus/eisa.c index 2ec86a2e..bb8df661 100644 --- a/src/drivers/bus/eisa.c +++ b/src/drivers/bus/eisa.c @@ -155,10 +155,10 @@ void eisa_fill_nic ( struct nic *nic, struct eisa_device *eisa ) { } /* - * Reset and enable an EISA device + * Reset and enable/disable an EISA device * */ -void enable_eisa_device ( struct eisa_device *eisa ) { +void eisa_device_enabled ( struct eisa_device *eisa, int enabled ) { /* Set reset line high for 1000 µs. Spec says 500 µs, but * this doesn't work for all cards, so we are conservative. */ @@ -168,6 +168,7 @@ void enable_eisa_device ( struct eisa_device *eisa ) { /* Set reset low and write a 1 to ENABLE. Delay again, in * case the card takes a while to wake up. */ - outb ( EISA_CMD_ENABLE, eisa->ioaddr + EISA_GLOBAL_CONFIG ); + outb ( enabled ? EISA_CMD_ENABLE : 0, + eisa->ioaddr + EISA_GLOBAL_CONFIG ); udelay ( 1000 ); /* Must wait 800 */ } diff --git a/src/drivers/bus/isapnp.c b/src/drivers/bus/isapnp.c index 9157f0be..61ee6843 100644 --- a/src/drivers/bus/isapnp.c +++ b/src/drivers/bus/isapnp.c @@ -607,8 +607,8 @@ struct bus_driver isapnp_driver __bus_driver = { * arbitration. * */ -void activate_isapnp_device ( struct isapnp_device *isapnp, - int activate ) { +void isapnp_device_activation ( struct isapnp_device *isapnp, + int activation ) { /* Wake the card and select the logical device */ isapnp_wait_for_key (); isapnp_send_key (); @@ -616,7 +616,7 @@ void activate_isapnp_device ( struct isapnp_device *isapnp, isapnp_logicaldevice ( isapnp->logdev ); /* Activate/deactivate the logical device */ - isapnp_activate ( activate ); + isapnp_activate ( activation ); isapnp_delay(); /* Return all cards to Wait for Key state */ diff --git a/src/include/eisa.h b/src/include/eisa.h index 42999e7d..686c231a 100644 --- a/src/include/eisa.h +++ b/src/include/eisa.h @@ -75,9 +75,16 @@ struct eisa_driver { * Functions in eisa.c * */ -extern void enable_eisa_device ( struct eisa_device *eisa ); +extern void eisa_device_enabled ( struct eisa_device *eisa, int enabled ); extern void fill_eisa_nic ( struct nic *nic, struct eisa_device *eisa ); +static inline void enable_eisa_device ( struct eisa_device *eisa ) { + eisa_device_enabled ( eisa, 1 ); +} +static inline void disable_eisa_device ( struct eisa_device *eisa ) { + eisa_device_enabled ( eisa, 0 ); +} + /* * EISA bus global definition * diff --git a/src/include/isapnp.h b/src/include/isapnp.h index 58bb71e0..ec0b8fc9 100644 --- a/src/include/isapnp.h +++ b/src/include/isapnp.h @@ -209,10 +209,17 @@ struct isapnp_driver { * Functions in isapnp.c * */ -extern void activate_isapnp_device ( struct isapnp_device *isapnp, - int active ); +extern void isapnp_device_activation ( struct isapnp_device *isapnp, + int activation ); extern void isapnp_fill_nic ( struct nic *nic, struct isapnp_device *isapnp ); +static inline void activate_isapnp_device ( struct isapnp_device *isapnp ) { + isapnp_device_activation ( isapnp, 1 ); +} +static inline void deactivate_isapnp_device ( struct isapnp_device *isapnp ) { + isapnp_device_activation ( isapnp, 0 ); +} + /* * ISAPnP bus global definition *