if_mosreg.h revision 285830
1132718Skan/* $FreeBSD: releng/10.2/sys/dev/usb/net/if_mosreg.h 232257 2012-02-28 15:45:42Z kevlo $ */ 2169689Skan/*- 390075Sobrien * Copyright (c) 2010, 2011 Rick van der Zwet <info@rickvanderzwet.nl> 4132718Skan * 590075Sobrien * Permission to use, copy, modify, and distribute this software for any 690075Sobrien * purpose with or without fee is hereby granted, provided that the above 7132718Skan * copyright notice and this permission notice appear in all copies. 8132718Skan * 990075Sobrien * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 10132718Skan * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 11132718Skan * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 12132718Skan * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 13132718Skan * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 14132718Skan * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 15132718Skan * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 16132718Skan */ 17132718Skan 1890075Sobrien/*- 19132718Skan * Copyright (c) 2008 Johann Christian Rode <jcrode@gmx.net> 20132718Skan * 21132718Skan * Permission to use, copy, modify, and distribute this software for any 22132718Skan * purpose with or without fee is hereby granted, provided that the above 2390075Sobrien * copyright notice and this permission notice appear in all copies. 24132718Skan * 25132718Skan * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 26132718Skan * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 27132718Skan * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 28132718Skan * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 2990075Sobrien * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 30132718Skan * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 31132718Skan * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 32132718Skan */ 33132718Skan 3490075Sobrien/*- 35132718Skan * Copyright (c) 1997, 1998, 1999, 2000-2003 36132718Skan * Bill Paul <wpaul@windriver.com>. All rights reserved. 37132718Skan * 38132718Skan * Redistribution and use in source and binary forms, with or without 3990075Sobrien * modification, are permitted provided that the following conditions 40132718Skan * are met: 41132718Skan * 1. Redistributions of source code must retain the above copyright 42132718Skan * notice, this list of conditions and the following disclaimer. 43132718Skan * 2. Redistributions in binary form must reproduce the above copyright 4490075Sobrien * notice, this list of conditions and the following disclaimer in the 45161651Skan * documentation and/or other materials provided with the distribution. 46161651Skan * 3. All advertising materials mentioning features or use of this software 47161651Skan * must display the following acknowledgement: 48161651Skan * This product includes software developed by Ravikanth. 49161651Skan * 4. Neither the name of the author nor the names of any co-contributors 50161651Skan * may be used to endorse or promote products derived from this software 51161651Skan * without specific prior written permission. 52132718Skan * 53132718Skan * THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND 54161651Skan * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 55161651Skan * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 56161651Skan * ARE DISCLAIMED. IN NO EVENT SHALL Bill Paul, THE VOICES IN HIS HEAD OR 57161651Skan * THE CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 58161651Skan * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 59161651Skan * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 60161651Skan * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 61161651Skan * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 62132718Skan * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 63161651Skan * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 64161651Skan * 65161651Skan */ 66161651Skan 67132718Skan/* 68132718Skan * Register definitions for the Moschip MCS7x30 ethernet controller. 69161651Skan */ 70132718Skan#define MOS_MCAST_TABLE 0x00 71132718Skan#define MOS_IPG0 0x08 72132718Skan#define MOS_IPG1 0x09 73132718Skan#define MOS_PHY_DATA0 0x0a 74169689Skan#define MOS_PHY_DATA1 0x0b 75169689Skan#define MOS_PHY_CTL 0x0c 76169689Skan#define MOS_PHY_STS 0x0d 77169689Skan#define MOS_PHY_DATA MOS_PHY_DATA0 78169689Skan#define MOS_CTL 0x0e 79169689Skan#define MOS_MAC0 0x0f 80169689Skan#define MOS_MAC1 0x10 81132718Skan#define MOS_MAC2 0x11 82132718Skan#define MOS_MAC3 0x12 83132718Skan#define MOS_MAC4 0x13 84132718Skan#define MOS_MAC5 0x14 85132718Skan#define MOS_MAC MOS_MAC0 86132718Skan/* apparently only available on hardware rev. C */ 87132718Skan#define MOS_FRAME_DROP_CNT 0x15 88132718Skan#define MOS_PAUSE_TRHD 0x16 89132718Skan 90132718Skan#define MOS_PHYCTL_PHYADDR 0x1f 91132718Skan#define MOS_PHYCTL_WRITE 0x20 9290075Sobrien#define MOS_PHYCTL_READ 0x40 93132718Skan 94132718Skan#define MOS_PHYSTS_PHYREG 0x1f 95132718Skan#define MOS_PHYSTS_READY 0x40 96132718Skan#define MOS_PHYSTS_PENDING 0x80 97132718Skan 9890075Sobrien#define MOS_CTL_RX_PROMISC 0x01 9990075Sobrien#define MOS_CTL_ALLMULTI 0x02 10090075Sobrien#define MOS_CTL_SLEEP 0x04 10190075Sobrien#define MOS_CTL_TX_ENB 0x08 102132718Skan/* 103132718Skan * The documentation calls this bit 'reserved', but in the FreeBSD driver 104132718Skan * provided by the vendor, this enables the receiver. 105132718Skan */ 10690075Sobrien#define MOS_CTL_RX_ENB 0x10 107132718Skan#define MOS_CTL_FDX_ENB 0x20 108132718Skan/* 0 = 10 Mbps, 1 = 100 Mbps */ 109132718Skan#define MOS_CTL_SPEEDSEL 0x40 110132718Skan/* 0 = PHY controls speed/duplex mode, 1 = bridge controls speed/duplex mode */ 111132718Skan#define MOS_CTL_BS_ENB 0x80 112132718Skan 113132718Skan#define MOS_RXSTS_SHORT_FRAME 0x01 114132718Skan#define MOS_RXSTS_LENGTH_ERROR 0x02 115132718Skan#define MOS_RXSTS_ALIGN_ERROR 0x04 116132718Skan#define MOS_RXSTS_CRC_ERROR 0x08 117132718Skan#define MOS_RXSTS_LARGE_FRAME 0x10 118132718Skan#define MOS_RXSTS_VALID 0x20 119132718Skan/* 120132718Skan * The EtherType field of an Ethernet frame can contain values other than 12190075Sobrien * the frame length, hence length errors are ignored. 12290075Sobrien */ 12390075Sobrien#define MOS_RXSTS_MASK 0x3d 12490075Sobrien 12590075Sobrien#define MOS_PAUSE_TRHD_DEFAULT 0 12690075Sobrien#define MOS_PAUSE_REWRITES 3 12790075Sobrien 12890075Sobrien#define MOS_TIMEOUT 1000 12990075Sobrien 13090075Sobrien#define MOS_RX_LIST_CNT 1 13190075Sobrien#define MOS_TX_LIST_CNT 1 13290075Sobrien 13390075Sobrien/* Maximum size of a fast ethernet frame plus one byte for the status */ 13490075Sobrien#define MOS_BUFSZ (ETHER_MAX_LEN+1) 13590075Sobrien 13690075Sobrien/* 13790075Sobrien * USB endpoints. 13890075Sobrien */ 13990075Sobrien#define MOS_ENDPT_RX 0 14090075Sobrien#define MOS_ENDPT_TX 1 14190075Sobrien#define MOS_ENDPT_INTR 2 14290075Sobrien#define MOS_ENDPT_MAX 3 14390075Sobrien 14490075Sobrien/* 14590075Sobrien * USB vendor requests. 14690075Sobrien */ 14790075Sobrien#define MOS_UR_READREG 0x0e 14890075Sobrien#define MOS_UR_WRITEREG 0x0d 14990075Sobrien 15090075Sobrien#define MOS_CONFIG_IDX 0 15190075Sobrien#define MOS_IFACE_IDX 0 15290075Sobrien 153169689Skan#define MCS7730 0x0001 15490075Sobrien#define MCS7830 0x0002 15590075Sobrien#define MCS7832 0x0004 15690075Sobrien 157169689Skan#define MOS_INC(x, y) (x) = (x + 1) % y 158169689Skan 159169689Skanstruct mos_softc { 160169689Skan struct usb_ether sc_ue; 161169689Skan struct ifnet ifp; 162169689Skan 163169689Skan struct mtx sc_mtx; 164169689Skan struct usb_xfer *sc_xfer[MOS_ENDPT_MAX]; 165169689Skan 166169689Skan uint16_t mos_flags; 167169689Skan 168169689Skan int mos_link; 169169689Skan unsigned char mos_ipgs[2]; 170132718Skan unsigned char mos_phyaddrs[2]; 17190075Sobrien}; 172132718Skan 173132718Skan#define GET_MII(sc) uether_getmii(&(sc)->sc_ue) 174132718Skan#define MOS_LOCK(_sc) mtx_lock(&(_sc)->sc_mtx) 175132718Skan#define MOS_UNLOCK(_sc) mtx_unlock(&(_sc)->sc_mtx) 176132718Skan#define MOS_LOCK_ASSERT(_sc, t) mtx_assert(&(_sc)->sc_mtx, t) 177132718Skan