Date: Mon, 10 Jul 1995 17:38:26 -0700 From: Robert Minnear <minnear@Ipsilon.COM> To: hackers@freebsd.org Cc: rem@ginger.lcs.mit.edu Message-ID: <199507110038.RAA05068@servo.ipsilon.com>
next in thread | raw e-mail | index | archive | help
The following are diffs I needed to make to get a Znyx ZX342 10/100
board working under FreeBSD. The two orignal files /sys/pci/dc21040.h
and /sys/pci/if_de.c were taken from the 2.0.5 release. I hope
these or similar changes can be made to the driver as we would like
to be able to install FreeBSD with these cards. Which brings me to
one other question. How could I create a boot/installation floppy
(with for example with these driver changes) myself? Thanks.
Robert E. Minnear minnear@IPSILON.COM
Ipsilon Networks, Inc. (415) 528-4632
2465 Latham Street, Suite 100
Mountain View, CA 94040
fax: (415) 528-4653
*** /sys/pci/dc21040.h Fri May 5 13:09:48 1995
--- dc21040.h Mon Jul 10 17:20:15 1995
***************
*** 284,289 ****
--- 284,304 ----
#define TULIP_OUI_COGENT_1 0x00
#define TULIP_OUI_COGENT_2 0x94
#define TULIP_COGENT_EM100_ID 0x12
+
+
+ /*
+ * These are the defintitions used for the Znyx ZX342
+ * 10/100 board
+ */
+ #define TULIP_GP_ZX34X_PINS 0x0000011F /* General Purpose Pin directions */
+ #define TULIP_GP_ZX34X_OK10 0x00000080 /* 10 Mb/sec Signal Detect gep<7> */
+ #define TULIP_GP_ZX34X_OK100 0x00000040 /* 100 Mb/sec Signal Detect gep<6> */
+ #define TULIP_GP_ZX34X_INIT 0x00000009
+ #define TULIP_OUI_ZNYX_0 0x00
+ #define TULIP_OUI_ZNYX_1 0xC0
+ #define TULIP_OUI_ZNYX_2 0x95
+
+
/*
* SROM definitions for the DC21140 and DC21041.
*/
*** /sys/pci/if_de.c Fri Jun 2 03:44:24 1995
--- if_de.c Mon Jul 10 17:24:27 1995
***************
*** 207,213 ****
TULIP_DC21040_GENERIC,
TULIP_DC21140_DEC_EB,
TULIP_DC21140_DEC_DE500,
! TULIP_DC21140_COGENT_EM100
} tulip_board_t;
typedef struct _tulip_softc_t tulip_softc_t;
--- 207,214 ----
TULIP_DC21040_GENERIC,
TULIP_DC21140_DEC_EB,
TULIP_DC21140_DEC_DE500,
! TULIP_DC21140_COGENT_EM100,
! TULIP_DC21140_ZNYX_ZX34X
} tulip_board_t;
typedef struct _tulip_softc_t tulip_softc_t;
***************
*** 350,355 ****
--- 351,357 ----
tulip_dc21040_media_select
};
+
static int
tulip_dc21140_evalboard_media_probe(
tulip_softc_t * const sc)
***************
*** 436,441 ****
--- 438,493 ----
tulip_dc21140_cogent_em100_media_select
};
+
+ static int
+ tulip_dc21140_znyx_zx34x_media_probe(
+ tulip_softc_t * const sc)
+ {
+ TULIP_WRITE_CSR(sc, csr_gp, TULIP_GP_ZX34X_PINS);
+ TULIP_WRITE_CSR(sc, csr_gp, TULIP_GP_ZX34X_INIT);
+ TULIP_WRITE_CSR(sc, csr_command,
+ TULIP_READ_CSR(sc, csr_command) | TULIP_CMD_PORTSELECT |
+ TULIP_CMD_PCSFUNCTION | TULIP_CMD_SCRAMBLER | TULIP_CMD_MUSTBEONE);
+ TULIP_WRITE_CSR(sc, csr_command,
+ TULIP_READ_CSR(sc, csr_command) & ~TULIP_CMD_TXTHRSHLDCTL);
+ DELAY(1000000);
+
+ return (TULIP_READ_CSR(sc, csr_gp) & TULIP_GP_ZX34X_OK10);
+ }
+
+ static void
+ tulip_dc21140_znyx_zx34x_media_select(
+ tulip_softc_t * const sc)
+ {
+ sc->tulip_cmdmode |= TULIP_CMD_STOREFWD|TULIP_CMD_MUSTBEONE;
+ TULIP_WRITE_CSR(sc, csr_gp, TULIP_GP_ZX34X_PINS);
+ TULIP_WRITE_CSR(sc, csr_gp, TULIP_GP_ZX34X_INIT);
+ if (sc->tulip_if.if_flags & IFF_ALTPHYS) {
+ if ((sc->tulip_flags & TULIP_ALTPHYS) == 0)
+ printf("%s%d: enabling 100baseTX UTP port\n",
+ sc->tulip_if.if_name, sc->tulip_if.if_unit);
+ sc->tulip_cmdmode |= TULIP_CMD_PORTSELECT
+ |TULIP_CMD_PCSFUNCTION|TULIP_CMD_SCRAMBLER;
+ sc->tulip_cmdmode &= ~TULIP_CMD_TXTHRSHLDCTL;
+ sc->tulip_flags |= TULIP_ALTPHYS;
+ } else {
+ if (sc->tulip_flags & TULIP_ALTPHYS)
+ printf("%s%d: enabling 10baseT UTP port\n",
+ sc->tulip_if.if_name, sc->tulip_if.if_unit);
+ sc->tulip_cmdmode &= ~(TULIP_CMD_PORTSELECT
+ |TULIP_CMD_PCSFUNCTION|TULIP_CMD_SCRAMBLER);
+ sc->tulip_cmdmode |= TULIP_CMD_TXTHRSHLDCTL;
+ sc->tulip_flags &= ~TULIP_ALTPHYS;
+ }
+ }
+
+ static const tulip_boardsw_t tulip_dc21140_znyx_zx34x_boardsw = {
+ TULIP_DC21140_ZNYX_ZX34X,
+ "Znyx ZX34X ",
+ tulip_dc21140_znyx_zx34x_media_probe,
+ tulip_dc21140_znyx_zx34x_media_select
+ };
+
static int
tulip_dc21140_de500_media_probe(
tulip_softc_t * const sc)
***************
*** 1237,1242 ****
--- 1289,1300 ----
&& sc->tulip_hwaddr[2] == TULIP_OUI_COGENT_2) {
if (sc->tulip_rombuf[32] == TULIP_COGENT_EM100_ID)
sc->tulip_boardsw = &tulip_dc21140_cogent_em100_boardsw;
+ }
+ if (sc->tulip_hwaddr[0] == TULIP_OUI_ZNYX_0
+ && sc->tulip_hwaddr[1] == TULIP_OUI_ZNYX_1
+ && sc->tulip_hwaddr[2] == TULIP_OUI_ZNYX_2) {
+ /* this at least works for the zx342 from Znyx */
+ sc->tulip_boardsw = &tulip_dc21140_znyx_zx34x_boardsw;
}
}
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?199507110038.RAA05068>
