diff options
author | Miod Vallat <miod@cvs.openbsd.org> | 2014-07-28 18:31:40 +0000 |
---|---|---|
committer | Miod Vallat <miod@cvs.openbsd.org> | 2014-07-28 18:31:40 +0000 |
commit | b57fb5f84ced9975f5181a6b19deacd0e209c1c2 (patch) | |
tree | 0418191b7f04a32f16618feb28269fa4265723de /sys | |
parent | f134c1c80c92a897244eb2217c714134ada6489f (diff) |
On SPARCbook systems, the ledma device node has a `cable-selection' property
specifying which media the on-board interface uses. We already query it to
set up proper register values; extend this to be able to pass a default
media to the le(4) child.
This makes SPARCbook system default to AUI without needing for a manual media
change.
tested by sebastia@
Diffstat (limited to 'sys')
-rw-r--r-- | sys/arch/sparc/dev/dma.c | 9 | ||||
-rw-r--r-- | sys/arch/sparc/dev/dmavar.h | 5 | ||||
-rw-r--r-- | sys/arch/sparc/dev/if_le.c | 6 |
3 files changed, 15 insertions, 5 deletions
diff --git a/sys/arch/sparc/dev/dma.c b/sys/arch/sparc/dev/dma.c index e9805a250aa..351b4b7a5d6 100644 --- a/sys/arch/sparc/dev/dma.c +++ b/sys/arch/sparc/dev/dma.c @@ -1,4 +1,4 @@ -/* $OpenBSD: dma.c,v 1.29 2014/05/09 20:15:06 miod Exp $ */ +/* $OpenBSD: dma.c,v 1.30 2014/07/28 18:31:39 miod Exp $ */ /* $NetBSD: dma.c,v 1.46 1997/08/27 11:24:16 bouyer Exp $ */ /* @@ -32,6 +32,7 @@ #include <sys/kernel.h> #include <sys/errno.h> #include <sys/ioctl.h> +#include <sys/socket.h> #include <sys/device.h> #include <sys/malloc.h> #include <sys/buf.h> @@ -42,6 +43,9 @@ #include <sparc/sparc/cpuvar.h> +#include <net/if.h> +#include <net/if_media.h> + #include <scsi/scsi_all.h> #include <scsi/scsiconf.h> @@ -157,11 +161,14 @@ dmaattach(parent, self, aux) char *cabletype = getpropstring(devnode, "cable-selection"); if (strcmp(cabletype, "tpe") == 0) { sc->sc_regs->csr |= E_TP_AUI; + sc->sc_defaultmedia = IFM_ETHER | IFM_10_T; } else if (strcmp(cabletype, "aui") == 0) { sc->sc_regs->csr &= ~E_TP_AUI; + sc->sc_defaultmedia = IFM_ETHER | IFM_10_5; } else { /* assume TP if nothing there */ sc->sc_regs->csr |= E_TP_AUI; + sc->sc_defaultmedia = IFM_ETHER | IFM_AUTO; } delay(20000); /* manual says we need 20ms delay */ } diff --git a/sys/arch/sparc/dev/dmavar.h b/sys/arch/sparc/dev/dmavar.h index 7056b5ae908..7807272c329 100644 --- a/sys/arch/sparc/dev/dmavar.h +++ b/sys/arch/sparc/dev/dmavar.h @@ -1,4 +1,4 @@ -/* $OpenBSD: dmavar.h,v 1.7 2006/06/02 20:00:54 miod Exp $ */ +/* $OpenBSD: dmavar.h,v 1.8 2014/07/28 18:31:39 miod Exp $ */ /* $NetBSD: dmavar.h,v 1.11 1996/11/27 21:49:53 pk Exp $ */ /* @@ -27,7 +27,7 @@ struct dma_softc { struct device sc_dev; /* us as a device */ struct esp_softc *sc_esp; /* my scsi */ - struct le_softc *sc_le; /* my ethernet */ + struct le_softc *sc_le; /* my Ethernet */ struct dma_regs *sc_regs; /* the registers */ int sc_active; /* DMA active ? */ u_int sc_rev; /* revision */ @@ -44,6 +44,7 @@ struct dma_softc { int (*setup)(struct dma_softc *, caddr_t *, size_t *, int, size_t *); void (*go)(struct dma_softc *); u_int sc_dmactl; + int sc_defaultmedia; /* default Ethernet media */ }; #define DMACSR(sc) (sc->sc_regs->csr) diff --git a/sys/arch/sparc/dev/if_le.c b/sys/arch/sparc/dev/if_le.c index 0a9a891aa3e..a310c3cc52f 100644 --- a/sys/arch/sparc/dev/if_le.c +++ b/sys/arch/sparc/dev/if_le.c @@ -1,4 +1,4 @@ -/* $OpenBSD: if_le.c,v 1.34 2013/09/24 20:10:49 miod Exp $ */ +/* $OpenBSD: if_le.c,v 1.35 2014/07/28 18:31:39 miod Exp $ */ /* $NetBSD: if_le.c,v 1.50 1997/09/09 20:54:48 pk Exp $ */ /*- @@ -583,19 +583,21 @@ leattach(struct device *parent, struct device *self, void *aux) if (lebufchild) { sc->sc_supmedia = lebufmedia; sc->sc_nsupmedia = nitems(lebufmedia); + sc->sc_defaultmedia = sc->sc_supmedia[sc->sc_nsupmedia - 1]; } else #endif #if defined(SUN4M) if (CPU_ISSUN4M && lesc->sc_dma) { sc->sc_supmedia = ledmamedia; sc->sc_nsupmedia = nitems(ledmamedia); + sc->sc_defaultmedia = lesc->sc_dma->sc_defaultmedia; } else #endif { sc->sc_supmedia = lebaremedia; sc->sc_nsupmedia = nitems(lebaremedia); + sc->sc_defaultmedia = sc->sc_supmedia[sc->sc_nsupmedia - 1]; } - sc->sc_defaultmedia = sc->sc_supmedia[sc->sc_nsupmedia - 1]; am7990_config(&lesc->sc_am7990); |