Annotation of sys/dev/usb/ueaglereg.h, Revision 1.1
1.1 ! nbrk 1: /* $OpenBSD: ueaglereg.h,v 1.3 2007/06/09 11:06:53 mbalmer Exp $ */
! 2:
! 3: /*-
! 4: * Copyright (c) 2003-2005
! 5: * Damien Bergamini <damien.bergamini@free.fr>
! 6: *
! 7: * Permission to use, copy, modify, and distribute this software for any
! 8: * purpose with or without fee is hereby granted, provided that the above
! 9: * copyright notice and this permission notice appear in all copies.
! 10: *
! 11: * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
! 12: * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
! 13: * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
! 14: * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
! 15: * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
! 16: * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
! 17: * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
! 18: */
! 19:
! 20: /* OPTN: default values from analog devices */
! 21: #ifndef UEAGLE_OPTN0
! 22: #define UEAGLE_OPTN0 0x80020066
! 23: #endif
! 24: #ifndef UEAGLE_OPTN2
! 25: #define UEAGLE_OPTN2 0x23700000
! 26: #endif
! 27: #ifndef UEAGLE_OPTN7
! 28: #define UEAGLE_OPTN7 0x02cd8044
! 29: #endif
! 30:
! 31: #define UEAGLE_CONFIG_NO 1
! 32:
! 33: #define UEAGLE_INTR_IFACE_NO 0
! 34: #define UEAGLE_US_IFACE_NO 1
! 35: #define UEAGLE_DS_IFACE_NO 2
! 36:
! 37: #define UEAGLE_ESISTR 4
! 38:
! 39: #define UEAGLE_TX_PIPE 0x02
! 40: #define UEAGLE_IDMA_PIPE 0x04
! 41: #define UEAGLE_INTR_PIPE 0x84
! 42: #define UEAGLE_RX_PIPE 0x88
! 43:
! 44: #define UEAGLE_REQUEST 0
! 45:
! 46: #define UEAGLE_SETBLOCK 0x0001
! 47: #define UEAGLE_SETMODE 0x0003
! 48: #define UEAGLE_SET2183DATA 0x0004
! 49:
! 50: #define UEAGLE_LOOPBACKOFF 0x0002
! 51: #define UEAGLE_LOOPBACKON 0x0003
! 52: #define UEAGLE_BOOTIDMA 0x0006
! 53: #define UEAGLE_STARTRESET 0x0007
! 54: #define UEAGLE_ENDRESET 0x0008
! 55: #define UEAGLE_SWAPMAILBOX 0x7fcd
! 56: #define UEAGLE_MPTXSTART 0x7fce
! 57: #define UEAGLE_MPTXMAILBOX 0x7fd6
! 58: #define UEAGLE_MPRXMAILBOX 0x7fdf
! 59:
! 60: /* block within a firmware page */
! 61: struct ueagle_block_info {
! 62: uWord wHdr;
! 63: #define UEAGLE_BLOCK_INFO_HDR 0xabcd
! 64:
! 65: uWord wAddress;
! 66: uWord wSize;
! 67: uWord wOvlOffset;
! 68: uWord wOvl; /* overlay */
! 69: uWord wLast;
! 70: } __packed;
! 71:
! 72: /* CMV (Configuration and Management Variable) */
! 73: struct ueagle_cmv {
! 74: uWord wPreamble;
! 75: #define UEAGLE_CMV_PREAMBLE 0x535c
! 76:
! 77: uByte bDst;
! 78: #define UEAGLE_HOST 0x01
! 79: #define UEAGLE_MODEM 0x10
! 80:
! 81: uByte bFunction;
! 82: #define UEAGLE_CR 0x10
! 83: #define UEAGLE_CW 0x11
! 84: #define UEAGLE_CR_ACK 0x12
! 85: #define UEAGLE_CW_ACK 0x13
! 86: #define UEAGLE_MODEMREADY 0x71
! 87:
! 88: uWord wIndex;
! 89: uDWord dwSymbolicAddress;
! 90: #define UEAGLE_MAKESA(a, b, c, d) ((c) << 24 | (d) << 16 | (a) << 8 | (b))
! 91: #define UEAGLE_CMV_CNTL UEAGLE_MAKESA('C', 'N', 'T', 'L')
! 92: #define UEAGLE_CMV_DIAG UEAGLE_MAKESA('D', 'I', 'A', 'G')
! 93: #define UEAGLE_CMV_INFO UEAGLE_MAKESA('I', 'N', 'F', 'O')
! 94: #define UEAGLE_CMV_OPTN UEAGLE_MAKESA('O', 'P', 'T', 'N')
! 95: #define UEAGLE_CMV_RATE UEAGLE_MAKESA('R', 'A', 'T', 'E')
! 96: #define UEAGLE_CMV_STAT UEAGLE_MAKESA('S', 'T', 'A', 'T')
! 97:
! 98: uWord wOffsetAddress;
! 99: uDWord dwData;
! 100: #define UGETDATA(w) ((w)[2] | (w)[3] << 8 | (w)[0] << 16 | (w)[1] << 24)
! 101: #define USETDATA(w, v) \
! 102: ((w)[2] = (uint8_t)(v), \
! 103: (w)[3] = (uint8_t)((v) >> 8), \
! 104: (w)[0] = (uint8_t)((v) >> 16), \
! 105: (w)[1] = (uint8_t)((v) >> 24))
! 106: } __packed;
! 107:
! 108: struct ueagle_swap {
! 109: uByte bPageNo;
! 110: uByte bOvl; /* overlay */
! 111: } __packed;
! 112:
! 113: struct ueagle_intr {
! 114: uByte bType;
! 115: uByte bNotification;
! 116: uWord wValue;
! 117: uWord wIndex;
! 118: uWord wLength;
! 119: uWord wInterrupt;
! 120: #define UEAGLE_INTR_SWAP 1
! 121: #define UEAGLE_INTR_CMV 2
! 122: } __packed;
! 123:
! 124: #define UEAGLE_INTR_MAXSIZE 28
CVSweb