summaryrefslogtreecommitdiffstats
path: root/sys/dev/fxp
diff options
context:
space:
mode:
authordg <dg@FreeBSD.org>1997-02-04 10:53:12 +0000
committerdg <dg@FreeBSD.org>1997-02-04 10:53:12 +0000
commit57ba1e051150cbd7fb35f1274d0b6e7aefb4d359 (patch)
tree4c47fcca4628c56c40be99afa94d085884ee8df0 /sys/dev/fxp
parentcc86e3701137c7a8df45e4acb91e18250c018e2a (diff)
downloadFreeBSD-src-57ba1e051150cbd7fb35f1274d0b6e7aefb4d359.zip
FreeBSD-src-57ba1e051150cbd7fb35f1274d0b6e7aefb4d359.tar.gz
Do "selective" reset rather than full reset...the manual specifically
says not to do the full reset because it can lock up the PCI bus if the chip is active. Added various PORT command definitions to facilitate this.
Diffstat (limited to 'sys/dev/fxp')
-rw-r--r--sys/dev/fxp/if_fxp.c6
-rw-r--r--sys/dev/fxp/if_fxpreg.h5
2 files changed, 8 insertions, 3 deletions
diff --git a/sys/dev/fxp/if_fxp.c b/sys/dev/fxp/if_fxp.c
index 1565213..257c3ef 100644
--- a/sys/dev/fxp/if_fxp.c
+++ b/sys/dev/fxp/if_fxp.c
@@ -243,9 +243,9 @@ fxp_attach(config_id, unit)
}
/*
- * Issue a software reset.
+ * Reset to a stable state.
*/
- sc->csr->port = 0;
+ sc->csr->port = FXP_PORT_SELECTIVE_RESET;
DELAY(10);
/*
@@ -739,7 +739,7 @@ fxp_stop(sc)
/*
* Issue software reset
*/
- sc->csr->port = 0;
+ sc->csr->port = FXP_PORT_SELECTIVE_RESET;
DELAY(10);
/*
diff --git a/sys/dev/fxp/if_fxpreg.h b/sys/dev/fxp/if_fxpreg.h
index 5a3e812..7e78c41 100644
--- a/sys/dev/fxp/if_fxpreg.h
+++ b/sys/dev/fxp/if_fxpreg.h
@@ -47,6 +47,11 @@ struct fxp_csr {
volatile u_int32_t mdi_control;
};
+#define FXP_PORT_SOFTWARE_RESET 0
+#define FXP_PORT_SELFTEST 1
+#define FXP_PORT_SELECTIVE_RESET 2
+#define FXP_PORT_DUMP 3
+
#define FXP_SCB_RUS_IDLE 0
#define FXP_SCB_RUS_SUSPENDED 1
#define FXP_SCB_RUS_NORESOURCES 2
OpenPOWER on IntegriCloud