if_mcreg.h revision 1.5
11.5Sandvar/*	$NetBSD: if_mcreg.h,v 1.5 2022/10/31 20:30:23 andvar Exp $	*/
21.2Sbriggs
31.1Sbriggs/*-
41.3Swiz * Copyright (c) 1997 David Huang <khym@azeotrope.org>
51.1Sbriggs * All rights reserved.
61.1Sbriggs *
71.1Sbriggs * Redistribution and use in source and binary forms, with or without
81.1Sbriggs * modification, are permitted provided that the following conditions
91.1Sbriggs * are met:
101.1Sbriggs * 1. Redistributions of source code must retain the above copyright
111.1Sbriggs *    notice, this list of conditions and the following disclaimer.
121.1Sbriggs * 2. The name of the author may not be used to endorse or promote products
131.1Sbriggs *    derived from this software without specific prior written permission
141.1Sbriggs *
151.1Sbriggs * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
161.1Sbriggs * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
171.1Sbriggs * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
181.1Sbriggs * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
191.1Sbriggs * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
201.1Sbriggs * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
211.1Sbriggs * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
221.1Sbriggs * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
231.1Sbriggs * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
241.1Sbriggs * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
251.1Sbriggs *
261.1Sbriggs */
271.1Sbriggs
281.1Sbriggs/*
291.1Sbriggs * AMD MACE (Am79C940) register definitions
301.1Sbriggs */
311.1Sbriggs#define	MACE_RCVFIFO	0   /* Receive FIFO [15-00] (read only) */
321.1Sbriggs#define	MACE_XMTFIFO	1   /* Transmit FIFO [15-00] (write only) */
331.1Sbriggs#define	MACE_XMTFC	2   /* Transmit Frame Control (read/write) */
341.1Sbriggs#define	MACE_XMTFS	3   /* Transmit Frame Status (read only) */
351.1Sbriggs#define	MACE_XMTRC	4   /* Transmit Retry Count (read only) */
361.1Sbriggs#define	MACE_RCVFC	5   /* Receive Frame Control (read/write) */
371.1Sbriggs#define	MACE_RCVFS	6   /* Receive Frame Status (4 bytes) (read only) */
381.1Sbriggs#define	MACE_FIFOFC	7   /* FIFO Frame Count (read only) */
391.1Sbriggs#define	MACE_IR		8   /* Interrupt Register (read only) */
401.1Sbriggs#define	MACE_IMR	9   /* Interrupt Mask Register (read/write) */
411.1Sbriggs#define	MACE_PR		10  /* Poll Register (read only) */
421.1Sbriggs#define	MACE_BIUCC	11  /* BIU Configuration Control (read/write) */
431.1Sbriggs#define	MACE_FIFOCC	12  /* FIFO Configuration Control (read/write) */
441.1Sbriggs#define	MACE_MACCC	13  /* MAC Configuration Control (read/write) */
451.1Sbriggs#define	MACE_PLSCC	14  /* PLS Configuration Control (read/write) */
461.1Sbriggs#define	MACE_PHYCC	15  /* PHY Confiuration Control (read/write) */
471.1Sbriggs#define	MACE_CHIPIDL	16  /* Chip ID Register [07-00] (read only) */
481.1Sbriggs#define	MACE_CHIPIDH	17  /* Chip ID Register [15-08] (read only) */
491.1Sbriggs#define	MACE_IAC	18  /* Internal Address Configuration (read/write) */
501.1Sbriggs/*	RESERVED	19     Reserved (read/write as 0) */
511.1Sbriggs#define	MACE_LADRF	20  /* Logical Address Filter (8 bytes) (read/write) */
521.1Sbriggs#define	MACE_PADR	21  /* Physical Address (6 bytes) (read/write) */
531.1Sbriggs/*	RESERVED	22     Reserved (read/write as 0) */
541.1Sbriggs/*	RESERVED	23     Reserved (read/write as 0) */
551.1Sbriggs#define	MACE_MPC	24  /* Missed Packet Count (read only) */
561.1Sbriggs/*	RESERVED	25     Reserved (read/write as 0) */
571.1Sbriggs#define	MACE_RNTPC	26  /* Runt Packet Count (read only) */
581.1Sbriggs#define	MACE_RCVCC	27  /* Receive Collision Count (read only) */
591.1Sbriggs/*	RESERVED	28     Reserved (read/write as 0) */
601.1Sbriggs#define	MACE_UTR	29  /* User Test Register (read/write) */
611.1Sbriggs#define	MACE_RTR1	30  /* Reserved Test Register 1 (read/write as 0) */
621.1Sbriggs#define	MACE_RTR2	31  /* Reserved Test Register 2 (read/write as 0) */
631.1Sbriggs
641.1Sbriggs#define	MACE_NREGS	32
651.1Sbriggs
661.1Sbriggs/* 2: Transmit Frame Control (XMTFC) */
671.1Sbriggs#define	DRTRY		0x80	/* Disable Retry */
681.1Sbriggs#define	DXMTFCS		0x08	/* Disable Transmit FCS */
691.1Sbriggs#define	APADXMT		0x01	/* Auto Pad Transmit */
701.1Sbriggs
711.1Sbriggs/* 3: Transmit Frame Status (XMTFS) */
721.1Sbriggs#define	XMTSV		0x80	/* Transmit Status Valid */
731.1Sbriggs#define	UFLO		0x40	/* Underflow */
741.1Sbriggs#define	LCOL		0x20	/* Late Collision */
751.1Sbriggs#define	MORE		0x10	/* More than one retry needed */
761.1Sbriggs#define	ONE		0x08	/* Exactly one retry needed */
771.1Sbriggs#define	DEFER		0x04	/* Transmission deferred */
781.1Sbriggs#define	LCAR		0x02	/* Loss of Carrier */
791.1Sbriggs#define	RTRY		0x01	/* Retry Error */
801.1Sbriggs
811.1Sbriggs/* 4: Transmit Retry Count (XMTRC) */
821.1Sbriggs#define	EXDEF		0x80	/* Excessive Defer */
831.1Sbriggs#define	XMTRC		0x0f	/* Transmit Retry Count */
841.1Sbriggs
851.1Sbriggs/* 5: Receive Frame Control (RCVFC) */
861.1Sbriggs#define	LLRCV		0x08	/* Low Latency Receive */
871.1Sbriggs#define	MR		0x04	/* Match/Reject */
881.1Sbriggs#define	ASTRPRCV	0x01	/* Auto Strip Receive */
891.1Sbriggs
901.1Sbriggs/* 6: Receive Frame Status (RCVFS) */
911.1Sbriggs/* 4 byte register; read 4 times to get all of the bytes */
921.1Sbriggs/* Read 1: RFS0 - Receive Message Byte Count [7-0] (RCVCNT) */
931.1Sbriggs
941.1Sbriggs/* Read 2: RFS1 - Receive Status (RCVSTS) */
951.1Sbriggs#define	OFLO		0x80	/* Overflow flag */
961.1Sbriggs#define	CLSN		0x40	/* Collision flag */
971.1Sbriggs#define	FRAM		0x20	/* Framing Error flag */
981.1Sbriggs#define	FCS		0x10	/* FCS Error flag */
991.1Sbriggs#define	RCVCNT		0x0f	/* Receive Message Byte Count [11-8] */
1001.1Sbriggs
1011.1Sbriggs/* Read 3: RFS2 - Runt Packet Count (RNTPC) [7-0] */
1021.1Sbriggs
1031.1Sbriggs/* Read 4: RFS3 - Receive Collision Count (RCVCC) [7-0] */
1041.1Sbriggs
1051.1Sbriggs/* 7: FIFO Frame Count (FIFOFC) */
1061.1Sbriggs#define	RCVFC		0xf0	/* Receive Frame Count */
1071.1Sbriggs#define	XMTFC		0x0f	/* Transmit Frame Count */
1081.1Sbriggs
1091.1Sbriggs/* 8: Interrupt Register (IR) */
1101.1Sbriggs#define	JAB		0x80	/* Jabber Error */
1111.1Sbriggs#define	BABL		0x40	/* Babble Error */
1121.1Sbriggs#define	CERR		0x20	/* Collision Error */
1131.1Sbriggs#define	RCVCCO		0x10	/* Receive Collision Count Overflow */
1141.1Sbriggs#define	RNTPCO		0x08	/* Runt Packet Count Overflow */
1151.1Sbriggs#define	MPCO		0x04	/* Missed Packet Count Overflow */
1161.1Sbriggs#define	RCVINT		0x02	/* Receive Interrupt */
1171.1Sbriggs#define	XMTINT		0x01	/* Transmit Interrupt */
1181.1Sbriggs
1191.5Sandvar/* 9: Interrupt Mask Register (IMR) */
1201.1Sbriggs#define	JABM		0x80	/* Jabber Error Mask */
1211.1Sbriggs#define	BABLM		0x40	/* Babble Error Mask */
1221.1Sbriggs#define	CERRM		0x20	/* Collision Error Mask */
1231.1Sbriggs#define	RCVCCOM		0x10	/* Receive Collision Count Overflow Mask */
1241.1Sbriggs#define	RNTPCOM		0x08	/* Runt Packet Count Overflow Mask */
1251.1Sbriggs#define	MPCOM		0x04	/* Missed Packet Count Overflow Mask */
1261.1Sbriggs#define	RCVINTM		0x02	/* Receive Interrupt Mask */
1271.1Sbriggs#define	XMTINTM		0x01	/* Transmit Interrupt Mask */
1281.1Sbriggs
1291.1Sbriggs/* 10: Poll Register (PR) */
1301.1Sbriggs#define	XMTSV		0x80	/* Transmit Status Valid */
1311.1Sbriggs#define	TDTREQ		0x40	/* Transmit Data Transfer Request */
1321.1Sbriggs#define	RDTREQ		0x20	/* Receive Data Transfer Request */
1331.1Sbriggs
1341.1Sbriggs/* 11: BIU Configuration Control (BIUCC) */
1351.1Sbriggs#define	BSWP		0x40	/* Byte Swap */
1361.1Sbriggs#define	XMTSP		0x30	/* Transmit Start Point */
1371.1Sbriggs#define	XMTSP_4		0x00	/* 4 bytes */
1381.1Sbriggs#define	XMTSP_16	0x10	/* 16 bytes */
1391.1Sbriggs#define	XMTSP_64	0x20	/* 64 bytes */
1401.1Sbriggs#define	XMTSP_112	0x30	/* 112 bytes */
1411.1Sbriggs#define	SWRST		0x01	/* Software Reset */
1421.1Sbriggs
1431.1Sbriggs/* 12: FIFO Configuration Control (FIFOCC) */
1441.1Sbriggs#define	XMTFW		0xc0	/* Transmit FIFO Watermark */
1451.1Sbriggs#define	XMTFW_8		0x00	/* 8 write cycles */
1461.1Sbriggs#define	XMTFW_16	0x40	/* 16 write cycles */
1471.1Sbriggs#define	XMTFW_32	0x80	/* 32 write cycles */
1481.1Sbriggs#define	RCVFW		0x30	/* Receive FIFO Watermark */
1491.1Sbriggs#define	RCVFW_16	0x00	/* 16 bytes */
1501.1Sbriggs#define	RCVFW_32	0x10	/* 32 bytes */
1511.1Sbriggs#define	RCVFW_64	0x20	/* 64 bytes */
1521.1Sbriggs#define	XMTFWU		0x08	/* Transmit FIFO Watermark Update */
1531.1Sbriggs#define	RCVFWU		0x04	/* Receive FIFO Watermark Update */
1541.1Sbriggs#define	XMTBRST		0x02	/* Transmit Burst */
1551.1Sbriggs#define	RCVBRST		0x01	/* Receive Burst */
1561.1Sbriggs
1571.1Sbriggs/* 13: MAC Configuration (MACCC) */
1581.1Sbriggs#define	PROM		0x80	/* Promiscuous */
1591.1Sbriggs#define	DXMT2PD		0x40	/* Disable Transmit Two Part Deferral */
1601.1Sbriggs#define	EMBA		0x20	/* Enable Modified Back-off Algorithm */
1611.1Sbriggs#define	DRCVPA		0x08	/* Disable Receive Physical Address */
1621.1Sbriggs#define	DRCVBC		0x04	/* Disable Receive Broadcast */
1631.1Sbriggs#define	ENXMT		0x02	/* Enable Transmit */
1641.1Sbriggs#define	ENRCV		0x01	/* Enable Receive */
1651.1Sbriggs
1661.1Sbriggs/* 14: PLS Configuration Control (PLSCC) */
1671.1Sbriggs#define	XMTSEL		0x08	/* Transmit Mode Select */
1681.1Sbriggs#define	PORTSEL		0x06	/* Port Select */
1691.1Sbriggs#define	PORTSEL_AUI	0x00	/* Select AUI */
1701.1Sbriggs#define	PORTSEL_10BT	0x02	/* Select 10BASE-T */
1711.1Sbriggs#define	PORTSEL_DAI	0x04	/* Select DAI port */
1721.1Sbriggs#define	PORTSEL_GPSI	0x06	/* Select GPSI */
1731.1Sbriggs#define	ENPLSIO		0x01	/* Enable PLS I/O */
1741.1Sbriggs
1751.1Sbriggs/* 15: PHY Configuration (PHYCC) */
1761.1Sbriggs#define	LNKFL		0x80	/* Link Fail */
1771.1Sbriggs#define	DLNKTST		0x40	/* Disable Link Test */
1781.1Sbriggs#define	REVPOL		0x20	/* Reversed Polarity */
1791.1Sbriggs#define	DAPC		0x10	/* Disable Auto Polarity Correction */
1801.1Sbriggs#define	LRT		0x08	/* Low Receive Threshold */
1811.1Sbriggs#define	ASEL		0x04	/* Auto Select */
1821.1Sbriggs#define	RWAKE		0x02	/* Remote Wake */
1831.1Sbriggs#define	AWAKE		0x01	/* Auto Wake */
1841.1Sbriggs
1851.1Sbriggs/* 18: Internal Address Configuration (IAC) */
1861.1Sbriggs#define	ADDRCHG		0x80	/* Address Change */
1871.1Sbriggs#define	PHYADDR		0x04	/* Physical Address Reset */
1881.1Sbriggs#define	LOGADDR		0x02	/* Logical Address Reset */
1891.1Sbriggs
1901.1Sbriggs/* 28: User Test Register (UTR) */
1911.1Sbriggs#define	RTRE		0x80	/* Reserved Test Register Enable */
1921.1Sbriggs#define	RTRD		0x40	/* Reserved Test Register Disable */
1931.1Sbriggs#define	RPA		0x20	/* Run Packet Accept */
1941.1Sbriggs#define	FCOLL		0x10	/* Force Collision */
1951.1Sbriggs#define	RCVFCSE		0x08	/* Receive FCS Enable */
1961.1Sbriggs#define	LOOP		0x06	/* Loopback Control */
1971.1Sbriggs#define	LOOP_NONE	0x00	/* No Loopback */
1981.1Sbriggs#define	LOOP_EXT	0x02	/* External Loopback */
1991.1Sbriggs#define	LOOP_INT	0x04	/* Internal Loopback, excludes MENDEC */
2001.1Sbriggs#define	LOOP_INT_MENDEC	0x06	/* Internal Loopback, includes MENDEC */
201