summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sys/dev/dc/if_dc.c11
-rw-r--r--sys/pci/if_dc.c11
2 files changed, 22 insertions, 0 deletions
diff --git a/sys/dev/dc/if_dc.c b/sys/dev/dc/if_dc.c
index f0f1608b00f6..659fa87a13fc 100644
--- a/sys/dev/dc/if_dc.c
+++ b/sys/dev/dc/if_dc.c
@@ -2726,6 +2726,17 @@ static void dc_init(xsc)
DC_SETBIT(sc, DC_NETCFG, DC_NETCFG_TX_ON);
/*
+ * If this is an Intel 21143 and we're not using the
+ * MII port, program the LED control pins so we get
+ * link and activity indications.
+ */
+ if (DC_IS_INTEL(sc) && sc->dc_pmode == DC_PMODE_SYM) {
+ CSR_WRITE_4(sc, DC_WATCHDOG,
+ DC_WDOG_CTLWREN|DC_WDOG_LINK|DC_WDOG_ACTIVITY);
+ CSR_WRITE_4(sc, DC_WATCHDOG, DC_WDOG_LINK|DC_WDOG_ACTIVITY);
+ }
+
+ /*
* Load the RX/multicast filter. We do this sort of late
* because the filter programming scheme on the 21143 and
* some clones requires DMAing a setup frame via the TX
diff --git a/sys/pci/if_dc.c b/sys/pci/if_dc.c
index f0f1608b00f6..659fa87a13fc 100644
--- a/sys/pci/if_dc.c
+++ b/sys/pci/if_dc.c
@@ -2726,6 +2726,17 @@ static void dc_init(xsc)
DC_SETBIT(sc, DC_NETCFG, DC_NETCFG_TX_ON);
/*
+ * If this is an Intel 21143 and we're not using the
+ * MII port, program the LED control pins so we get
+ * link and activity indications.
+ */
+ if (DC_IS_INTEL(sc) && sc->dc_pmode == DC_PMODE_SYM) {
+ CSR_WRITE_4(sc, DC_WATCHDOG,
+ DC_WDOG_CTLWREN|DC_WDOG_LINK|DC_WDOG_ACTIVITY);
+ CSR_WRITE_4(sc, DC_WATCHDOG, DC_WDOG_LINK|DC_WDOG_ACTIVITY);
+ }
+
+ /*
* Load the RX/multicast filter. We do this sort of late
* because the filter programming scheme on the 21143 and
* some clones requires DMAing a setup frame via the TX