uftdi_reg.h revision 4634c44f9aff3ceaf027e46cee4258d7ab23b40f
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * CDDL HEADER START
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * The contents of this file are subject to the terms of the
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * Common Development and Distribution License (the "License").
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * You may not use this file except in compliance with the License.
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * See the License for the specific language governing permissions
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * and limitations under the License.
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * When distributing Covered Code, include this CDDL HEADER in each
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * If applicable, add the following below this CDDL HEADER, with the
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * fields enclosed by brackets "[]" replaced with your own identifying
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * information: Portions Copyright [yyyy] [name of copyright owner]
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * CDDL HEADER END
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * Use is subject to license terms.
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * $NetBSD: uftdireg.h,v 1.6 2002/07/11 21:14:28 augustss Exp $
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * $FreeBSD: src/sys/dev/usb/uftdireg.h,v 1.2 2004/07/01 17:16:20 brooks Exp $
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * Definitions for the FTDI USB Single Port Serial Converter -
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * known as FTDI_SIO (Serial Input/Output application of the chipset)
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * Thanx to FTDI (http://www.ftdi.co.uk) for so kindly providing details
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * of the protocol required to talk to the device and ongoing assistence
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * during development.
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * Bill Ryder - bryder@sgi.com of Silicon Graphics, Inc. is the original
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * author of this file.
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland/* Modified by Lennart Augustsson */
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland/* Vendor Request Interface */
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland#define FTDI_SIO_MODEM_CTRL 1 /* Set the modem control register */
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland#define FTDI_SIO_SET_FLOW_CTRL 2 /* Set flow control register */
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland#define FTDI_SIO_SET_BAUD_RATE 3 /* Set baud rate */
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland#define FTDI_SIO_SET_DATA 4 /* Set the data characteristics of the port */
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland#define FTDI_SIO_GET_STATUS 5 /* Retrieve current value of status reg */
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland#define FTDI_SIO_SET_EVENT_CHAR 6 /* Set the event character */
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland#define FTDI_SIO_SET_ERROR_CHAR 7 /* Set the error character */
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland/* Port Identifier Table */
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * BmRequestType: 0100 0000B
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * bRequest: FTDI_SIO_RESET
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * wValue: Control Value
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * 0 = Reset SIO
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * 1 = Purge RX buffer
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * 2 = Purge TX buffer
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * wIndex: Port
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * wLength: 0
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * Data: None
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * The Reset SIO command has this effect:
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * Sets flow control set to 'none'
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * Event char = 0x0d
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * Event trigger = disabled
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * Purge RX buffer
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * Purge TX buffer
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * baud and data format not reset
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * The Purge RX and TX buffer commands affect nothing except the buffers
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland/* FTDI_SIO_RESET */
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * BmRequestType: 0100 0000B
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * bRequest: FTDI_SIO_SET_BAUDRATE
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * wValue: BaudRate value - see below
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * wIndex: Port
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * wLength: 0
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * Data: None
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland/* FTDI_SIO_SET_BAUDRATE */
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland ftdi_8u232am_b2000000 = 0x0001, /* special case for 2M baud */
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland ftdi_8u232am_b3000000 = 0x0000, /* special case for 3M baud */
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * BmRequestType: 0100 0000B
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * bRequest: FTDI_SIO_SET_DATA
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * wValue: Data characteristics (see below)
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * wIndex: Port
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * wLength: 0
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * Data characteristics
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * B0..7 Number of data bits
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * B8..10 Parity
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * B11..13 Stop Bits
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * B14..15 Reserved
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland/* FTDI_SIO_SET_DATA */
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland#define FTDI_SIO_SET_DATA_PARITY_NONE (0x0 << 8)
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland#define FTDI_SIO_SET_DATA_PARITY_EVEN (0x2 << 8)
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland#define FTDI_SIO_SET_DATA_PARITY_MARK (0x3 << 8)
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland#define FTDI_SIO_SET_DATA_PARITY_SPACE (0x4 << 8)
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland#define FTDI_SIO_SET_DATA_STOP_BITS_1 (0x0 << 11)
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland#define FTDI_SIO_SET_DATA_STOP_BITS_15 (0x1 << 11)
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland#define FTDI_SIO_SET_DATA_STOP_BITS_2 (0x2 << 11)
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * BmRequestType: 0100 0000B
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * bRequest: FTDI_SIO_MODEM_CTRL
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * wValue: ControlValue (see below)
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * wIndex: Port
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * wLength: 0
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * Data: None
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * NOTE: If the device is in RTS/CTS flow control, the RTS set by this
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * command will be IGNORED without an error being returned
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * Also - you can not set DTR and RTS with one control message
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * ControlValue
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * B0 DTR state
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * B1 RTS state
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * B2..7 Reserved
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * B8 DTR state enable
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * 0 = ignore
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * 1 = use DTR state
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * B9 RTS state enable
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * 0 = ignore
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * 1 = use RTS state
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * B10..15 Reserved
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland/* FTDI_SIO_MODEM_CTRL */
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland#define FTDI_SIO_SET_DTR_HIGH (1 | (FTDI_SIO_SET_DTR_MASK << 8))
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland#define FTDI_SIO_SET_DTR_LOW (0 | (FTDI_SIO_SET_DTR_MASK << 8))
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland#define FTDI_SIO_SET_RTS_HIGH (2 | (FTDI_SIO_SET_RTS_MASK << 8))
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland#define FTDI_SIO_SET_RTS_LOW (0 | (FTDI_SIO_SET_RTS_MASK << 8))
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * BmRequestType: 0100 0000b
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * bRequest: FTDI_SIO_SET_FLOW_CTRL
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * wIndex: Protocol/Port - hIndex is protocl / lIndex is port
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * wLength: 0
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * Data: None
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * hIndex protocol is:
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * B0 Output handshaking using RTS/CTS
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * 0 = disabled
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * 1 = enabled
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * B1 Output handshaking using DTR/DSR
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * 0 = disabled
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * 1 = enabled
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * B2 Xon/Xoff handshaking
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * 0 = disabled
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * 1 = enabled
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * A value of zero in the hIndex field disables handshaking
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * If Xon/Xoff handshaking is specified, the hValue field should contain the
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * XOFF character and the lValue field contains the XON character.
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland/* FTDI_SIO_SET_FLOW_CTRL */
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * BmRequestType: 0100 0000b
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * bRequest: FTDI_SIO_SET_EVENT_CHAR
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * wValue: Event Char
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * wIndex: Port
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * wLength: 0
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * Data: None
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * B0..7 Event Character
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * B8 Event Character Processing
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * 0 = disabled
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * 1 = enabled
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * B9..15 Reserved
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * FTDI_SIO_SET_EVENT_CHAR
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * Set the special event character for the specified communications port.
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * If the device sees this character it will immediately return the
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * data read so far - rather than wait 40ms or until 62 bytes are read
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * which is what normally happens.
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * BmRequestType: 0100 0000b
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * bRequest: FTDI_SIO_SET_ERROR_CHAR
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * wValue: Error Char
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * wIndex: Port
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * wLength: 0
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * Data: None
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * Error Char
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * B0..7 Error Character
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * B8 Error Character Processing
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * 0 = disabled
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * 1 = enabled
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * B9..15 Reserved
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * FTDI_SIO_SET_ERROR_CHAR
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * Set the parity error replacement character for the specified communications
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * BmRequestType: 1100 0000b
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * bRequest: FTDI_SIO_GET_MODEM_STATUS
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * wValue: zero
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * wIndex: Port
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * wLength: 1
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * Data: Status
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * One byte of data is returned
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * 0 = inactive
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * 1 = active
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * 0 = inactive
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * 1 = active
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * B6 Ring Indicator (RI)
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * 0 = inactive
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * 1 = active
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * B7 Receive Line Signal Detect (RLSD)
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * 0 = inactive
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * 1 = active
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * FTDI_SIO_GET_MODEM_STATUS
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * Retrieve the current value of the modem status register.
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * DATA FORMAT
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * IN Endpoint
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * The device reserves the first two bytes of data on this endpoint to contain
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * the current values of the modem and line status registers. In the absence of
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * data, the device generates a message consisting of these two status bytes
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * every 40 ms.
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * Byte 0: Modem Status
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * NOTE: 4 upper bits have same layout as the MSR register in a 16550
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * Offset Description
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * B0..3 Port
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * B4 Clear to Send (CTS)
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * B5 Data Set Ready (DSR)
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * B6 Ring Indicator (RI)
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * B7 Receive Line Signal Detect (RLSD)
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * Byte 1: Line Status
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * NOTE: same layout as the LSR register in a 16550
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * Offset Description
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * B0 Data Ready (DR)
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * B1 Overrun Error (OE)
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * B2 Parity Error (PE)
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * B3 Framing Error (FE)
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * B4 Break Interrupt (BI)
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * B5 Transmitter Holding Register (THRE)
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * B6 Transmitter Empty (TEMT)
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * B7 Error in RCVR FIFO
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * OUT Endpoint
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * This device reserves the first bytes of data on this endpoint contain the
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * length and port identifier of the message. For the FTDI USB Serial converter
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * the port identifier is always 1.
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * Byte 0: Port & length
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * Offset Description
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * B0..1 Port
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland * B2..7 Length of message - (not including Byte 0)
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland#define FTDI_GET_MSR(p) (((p)[0]) & FTDI_MSR_MASK)
4634c44f9aff3ceaf027e46cee4258d7ab23b40fTim Marsland#define FTDI_LSR_MASK (~0x60) /* interesting rx bits */
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland#define FTDI_MSR_STATUS_RLSD 0x80 /* aka Carrier Detect */
4634c44f9aff3ceaf027e46cee4258d7ab23b40fTim Marsland#define FTDI_LSR_STATUS_THRE 0x20 /* tx hold register is now empty */
4634c44f9aff3ceaf027e46cee4258d7ab23b40fTim Marsland#define FTDI_LSR_STATUS_TEMT 0x40 /* tx shift register is now empty */
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland#define FTDI_OUT_TAG(len, port) (((len) << 2) | (port))
de81e71e031139a0a7f13b7bf64152c3faa76698Tim Marsland#endif /* _USBSER_USBFTDI_UFTDI_REG_H */