summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Brown2005-04-22 04:43:24 +0200
committerMichael Brown2005-04-22 04:43:24 +0200
commit97346a75f7f60e502d0485ead4500c4590fa30b0 (patch)
tree36aa4861e530ddd4870b0a18bc245d9e1235d76b
parentUpdated all common buses to new API. (diff)
downloadipxe-97346a75f7f60e502d0485ead4500c4590fa30b0.tar.gz
ipxe-97346a75f7f60e502d0485ead4500c4590fa30b0.tar.xz
ipxe-97346a75f7f60e502d0485ead4500c4590fa30b0.zip
Added friendly enable/disable functions
-rw-r--r--src/drivers/bus/eisa.c7
-rw-r--r--src/drivers/bus/isapnp.c6
-rw-r--r--src/include/eisa.h9
-rw-r--r--src/include/isapnp.h11
4 files changed, 24 insertions, 9 deletions
diff --git a/src/drivers/bus/eisa.c b/src/drivers/bus/eisa.c
index 2ec86a2e7..bb8df6617 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 9157f0bee..61ee6843c 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 42999e7d5..686c231ad 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 58bb71e0d..ec0b8fc9b 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
*