1*79be21c5SSascha Wildner /* $FreeBSD: head/sys/dev/usb/net/if_iphethvar.h 213805 2010-10-13 21:36:42Z hselasky $ */ 212bd3c8bSSascha Wildner /*- 312bd3c8bSSascha Wildner * Copyright (c) 2010 Hans Petter Selasky. All rights reserved. 412bd3c8bSSascha Wildner * Copyright (c) 2009 Diego Giagio. All rights reserved. 512bd3c8bSSascha Wildner * 612bd3c8bSSascha Wildner * Redistribution and use in source and binary forms, with or without 712bd3c8bSSascha Wildner * modification, are permitted provided that the following conditions 812bd3c8bSSascha Wildner * are met: 912bd3c8bSSascha Wildner * 1. Redistributions of source code must retain the above copyright 1012bd3c8bSSascha Wildner * notice, this list of conditions and the following disclaimer. 1112bd3c8bSSascha Wildner * 2. Redistributions in binary form must reproduce the above copyright 1212bd3c8bSSascha Wildner * notice, this list of conditions and the following disclaimer in the 1312bd3c8bSSascha Wildner * documentation and/or other materials provided with the distribution. 1412bd3c8bSSascha Wildner * 1512bd3c8bSSascha Wildner * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 1612bd3c8bSSascha Wildner * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 1712bd3c8bSSascha Wildner * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 1812bd3c8bSSascha Wildner * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 1912bd3c8bSSascha Wildner * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 2012bd3c8bSSascha Wildner * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 2112bd3c8bSSascha Wildner * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 2212bd3c8bSSascha Wildner * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 2312bd3c8bSSascha Wildner * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 2412bd3c8bSSascha Wildner * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 2512bd3c8bSSascha Wildner * SUCH DAMAGE. 2612bd3c8bSSascha Wildner */ 2712bd3c8bSSascha Wildner 2812bd3c8bSSascha Wildner /* 2912bd3c8bSSascha Wildner * Thanks to Diego Giagio for figuring out the programming details for 3012bd3c8bSSascha Wildner * the Apple iPhone Ethernet driver. 3112bd3c8bSSascha Wildner */ 3212bd3c8bSSascha Wildner 3312bd3c8bSSascha Wildner #ifndef _IF_IPHETHVAR_H_ 3412bd3c8bSSascha Wildner #define _IF_IPHETHVAR_H_ 3512bd3c8bSSascha Wildner 3612bd3c8bSSascha Wildner #define IPHETH_USBINTF_CLASS 255 3712bd3c8bSSascha Wildner #define IPHETH_USBINTF_SUBCLASS 253 3812bd3c8bSSascha Wildner #define IPHETH_USBINTF_PROTO 1 3912bd3c8bSSascha Wildner 4012bd3c8bSSascha Wildner #define IPHETH_BUF_SIZE 1516 4112bd3c8bSSascha Wildner #define IPHETH_TX_TIMEOUT 5000 /* ms */ 4212bd3c8bSSascha Wildner 4312bd3c8bSSascha Wildner #define IPHETH_RX_FRAMES_MAX 1 4412bd3c8bSSascha Wildner #define IPHETH_TX_FRAMES_MAX 8 4512bd3c8bSSascha Wildner 4612bd3c8bSSascha Wildner #define IPHETH_RX_ADJ 2 4712bd3c8bSSascha Wildner 4812bd3c8bSSascha Wildner #define IPHETH_CFG_INDEX 0 4912bd3c8bSSascha Wildner #define IPHETH_IF_INDEX 2 5012bd3c8bSSascha Wildner #define IPHETH_ALT_INTFNUM 1 5112bd3c8bSSascha Wildner 5212bd3c8bSSascha Wildner #define IPHETH_CTRL_ENDP 0x00 5312bd3c8bSSascha Wildner #define IPHETH_CTRL_BUF_SIZE 0x40 5412bd3c8bSSascha Wildner #define IPHETH_CTRL_TIMEOUT 5000 /* ms */ 5512bd3c8bSSascha Wildner 5612bd3c8bSSascha Wildner #define IPHETH_CMD_GET_MACADDR 0x00 5712bd3c8bSSascha Wildner #define IPHETH_CMD_CARRIER_CHECK 0x45 5812bd3c8bSSascha Wildner 5912bd3c8bSSascha Wildner #define IPHETH_CARRIER_ON 0x04 6012bd3c8bSSascha Wildner 6112bd3c8bSSascha Wildner enum { 6212bd3c8bSSascha Wildner IPHETH_BULK_TX, 6312bd3c8bSSascha Wildner IPHETH_BULK_RX, 6412bd3c8bSSascha Wildner IPHETH_N_TRANSFER, 6512bd3c8bSSascha Wildner }; 6612bd3c8bSSascha Wildner 6712bd3c8bSSascha Wildner struct ipheth_softc { 6812bd3c8bSSascha Wildner struct usb_ether sc_ue; 69*79be21c5SSascha Wildner struct lock sc_lock; 7012bd3c8bSSascha Wildner 7112bd3c8bSSascha Wildner struct usb_xfer *sc_xfer[IPHETH_N_TRANSFER]; 7212bd3c8bSSascha Wildner struct mbuf *sc_rx_buf[IPHETH_RX_FRAMES_MAX]; 7312bd3c8bSSascha Wildner struct mbuf *sc_tx_buf[IPHETH_TX_FRAMES_MAX]; 7412bd3c8bSSascha Wildner 7512bd3c8bSSascha Wildner uint8_t sc_data[IPHETH_CTRL_BUF_SIZE]; 7612bd3c8bSSascha Wildner uint8_t sc_iface_no; 7712bd3c8bSSascha Wildner uint8_t sc_carrier_on; 7812bd3c8bSSascha Wildner }; 7912bd3c8bSSascha Wildner 80*79be21c5SSascha Wildner #define IPHETH_LOCK(_sc) lockmgr(&(_sc)->sc_lock, LK_EXCLUSIVE) 81*79be21c5SSascha Wildner #define IPHETH_UNLOCK(_sc) lockmgr(&(_sc)->sc_lock, LK_RELEASE) 82*79be21c5SSascha Wildner #define IPHETH_LOCK_ASSERT(_sc) KKASSERT(lockowned(&(_sc)->sc_lock)) 8312bd3c8bSSascha Wildner 8412bd3c8bSSascha Wildner #endif /* _IF_IPHETHVAR_H_ */ 85