1 /* $OpenBSD: if_cdcereg.h,v 1.9 2024/01/04 08:41:59 kevlo Exp $ */ 2 3 /* 4 * Copyright (c) 1997, 1998, 1999, 2000-2003 Bill Paul <wpaul@windriver.com> 5 * Copyright (c) 2003 Craig Boston 6 * Copyright (c) 2004 Daniel Hartmeier 7 * All rights reserved. 8 * 9 * Redistribution and use in source and binary forms, with or without 10 * modification, are permitted provided that the following conditions 11 * are met: 12 * 1. Redistributions of source code must retain the above copyright 13 * notice, this list of conditions and the following disclaimer. 14 * 2. Redistributions in binary form must reproduce the above copyright 15 * notice, this list of conditions and the following disclaimer in the 16 * documentation and/or other materials provided with the distribution. 17 * 3. All advertising materials mentioning features or use of this software 18 * must display the following acknowledgement: 19 * This product includes software developed by Bill Paul. 20 * 4. Neither the name of the author nor the names of any co-contributors 21 * may be used to endorse or promote products derived from this software 22 * without specific prior written permission. 23 * 24 * THIS SOFTWARE IS PROVIDED BY Bill Paul AND CONTRIBUTORS ``AS IS'' AND 25 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 26 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 27 * ARE DISCLAIMED. IN NO EVENT SHALL Bill Paul, THE VOICES IN HIS HEAD OR 28 * THE CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 29 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 30 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; 31 * OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 32 * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 33 * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 34 * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 35 */ 36 37 #define CDCE_RX_LIST_CNT 1 38 #define CDCE_TX_LIST_CNT 1 39 #define CDCE_BUFSZ 1542 40 41 struct cdce_type { 42 struct usb_devno cdce_dev; 43 u_int16_t cdce_flags; 44 #define CDCE_CRC32 1 45 #define CDCE_SWAPUNION 2 46 }; 47 48 struct cdce_softc; 49 50 struct cdce_chain { 51 struct cdce_softc *cdce_sc; 52 struct usbd_xfer *cdce_xfer; 53 char *cdce_buf; 54 struct mbuf *cdce_mbuf; 55 int cdce_accum; 56 int cdce_idx; 57 }; 58 59 struct cdce_cdata { 60 struct cdce_chain cdce_rx_chain[CDCE_RX_LIST_CNT]; 61 struct cdce_chain cdce_tx_chain[CDCE_TX_LIST_CNT]; 62 int cdce_tx_prod; 63 int cdce_tx_cons; 64 int cdce_tx_cnt; 65 int cdce_rx_prod; 66 }; 67 68 struct cdce_softc { 69 struct device cdce_dev; 70 struct arpcom cdce_arpcom; 71 #define GET_IFP(sc) (&(sc)->cdce_arpcom.ac_if) 72 struct usbd_device *cdce_udev; 73 struct usbd_interface *cdce_ctl_iface; 74 int cdce_intr_no; 75 struct usbd_pipe *cdce_intr_pipe; 76 struct usb_cdc_notification cdce_intr_buf; 77 int cdce_intr_size; 78 struct usbd_interface *cdce_data_iface; 79 int cdce_bulkin_no; 80 struct usbd_pipe *cdce_bulkin_pipe; 81 int cdce_bulkout_no; 82 struct usbd_pipe *cdce_bulkout_pipe; 83 struct cdce_cdata cdce_cdata; 84 int cdce_rxeof_errors; 85 u_int16_t cdce_flags; 86 char cdce_attached; 87 }; 88