162306a36Sopenharmony_ci/* SPDX-License-Identifier: GPL-2.0+ */ 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * Definitions for Belkin USB Serial Adapter Driver 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (C) 2000 662306a36Sopenharmony_ci * William Greathouse (wgreathouse@smva.com) 762306a36Sopenharmony_ci * 862306a36Sopenharmony_ci * This program is largely derived from work by the linux-usb group 962306a36Sopenharmony_ci * and associated source files. Please see the usb/serial files for 1062306a36Sopenharmony_ci * individual credits and copyrights. 1162306a36Sopenharmony_ci * 1262306a36Sopenharmony_ci * See Documentation/usb/usb-serial.rst for more information on using this 1362306a36Sopenharmony_ci * driver 1462306a36Sopenharmony_ci * 1562306a36Sopenharmony_ci * 12-Mar-2001 gkh 1662306a36Sopenharmony_ci * Added GoHubs GO-COM232 device id. 1762306a36Sopenharmony_ci * 1862306a36Sopenharmony_ci * 06-Nov-2000 gkh 1962306a36Sopenharmony_ci * Added old Belkin and Peracom device ids, which this driver supports 2062306a36Sopenharmony_ci * 2162306a36Sopenharmony_ci * 12-Oct-2000 William Greathouse 2262306a36Sopenharmony_ci * First cut at supporting Belkin USB Serial Adapter F5U103 2362306a36Sopenharmony_ci * I did not have a copy of the original work to support this 2462306a36Sopenharmony_ci * adapter, so pardon any stupid mistakes. All of the information 2562306a36Sopenharmony_ci * I am using to write this driver was acquired by using a modified 2662306a36Sopenharmony_ci * UsbSnoop on Windows2000. 2762306a36Sopenharmony_ci * 2862306a36Sopenharmony_ci */ 2962306a36Sopenharmony_ci 3062306a36Sopenharmony_ci#ifndef __LINUX_USB_SERIAL_BSA_H 3162306a36Sopenharmony_ci#define __LINUX_USB_SERIAL_BSA_H 3262306a36Sopenharmony_ci 3362306a36Sopenharmony_ci#define BELKIN_DOCKSTATION_VID 0x050d /* Vendor Id */ 3462306a36Sopenharmony_ci#define BELKIN_DOCKSTATION_PID 0x1203 /* Product Id */ 3562306a36Sopenharmony_ci 3662306a36Sopenharmony_ci#define BELKIN_SA_VID 0x050d /* Vendor Id */ 3762306a36Sopenharmony_ci#define BELKIN_SA_PID 0x0103 /* Product Id */ 3862306a36Sopenharmony_ci 3962306a36Sopenharmony_ci#define BELKIN_OLD_VID 0x056c /* Belkin's "old" vendor id */ 4062306a36Sopenharmony_ci#define BELKIN_OLD_PID 0x8007 /* Belkin's "old" single port serial converter's id */ 4162306a36Sopenharmony_ci 4262306a36Sopenharmony_ci#define PERACOM_VID 0x0565 /* Peracom's vendor id */ 4362306a36Sopenharmony_ci#define PERACOM_PID 0x0001 /* Peracom's single port serial converter's id */ 4462306a36Sopenharmony_ci 4562306a36Sopenharmony_ci#define GOHUBS_VID 0x0921 /* GoHubs vendor id */ 4662306a36Sopenharmony_ci#define GOHUBS_PID 0x1000 /* GoHubs single port serial converter's id (identical to the Peracom device) */ 4762306a36Sopenharmony_ci#define HANDYLINK_PID 0x1200 /* HandyLink USB's id (identical to the Peracom device) */ 4862306a36Sopenharmony_ci 4962306a36Sopenharmony_ci/* Vendor Request Interface */ 5062306a36Sopenharmony_ci#define BELKIN_SA_SET_BAUDRATE_REQUEST 0 /* Set baud rate */ 5162306a36Sopenharmony_ci#define BELKIN_SA_SET_STOP_BITS_REQUEST 1 /* Set stop bits (1,2) */ 5262306a36Sopenharmony_ci#define BELKIN_SA_SET_DATA_BITS_REQUEST 2 /* Set data bits (5,6,7,8) */ 5362306a36Sopenharmony_ci#define BELKIN_SA_SET_PARITY_REQUEST 3 /* Set parity (None, Even, Odd) */ 5462306a36Sopenharmony_ci 5562306a36Sopenharmony_ci#define BELKIN_SA_SET_DTR_REQUEST 10 /* Set DTR state */ 5662306a36Sopenharmony_ci#define BELKIN_SA_SET_RTS_REQUEST 11 /* Set RTS state */ 5762306a36Sopenharmony_ci#define BELKIN_SA_SET_BREAK_REQUEST 12 /* Set BREAK state */ 5862306a36Sopenharmony_ci 5962306a36Sopenharmony_ci#define BELKIN_SA_SET_FLOW_CTRL_REQUEST 16 /* Set flow control mode */ 6062306a36Sopenharmony_ci 6162306a36Sopenharmony_ci 6262306a36Sopenharmony_ci#ifdef WHEN_I_LEARN_THIS 6362306a36Sopenharmony_ci#define BELKIN_SA_SET_MAGIC_REQUEST 17 /* I don't know, possibly flush */ 6462306a36Sopenharmony_ci /* (always in Wininit sequence before flow control) */ 6562306a36Sopenharmony_ci#define BELKIN_SA_RESET xx /* Reset the port */ 6662306a36Sopenharmony_ci#define BELKIN_SA_GET_MODEM_STATUS xx /* Force return of modem status register */ 6762306a36Sopenharmony_ci#endif 6862306a36Sopenharmony_ci 6962306a36Sopenharmony_ci#define BELKIN_SA_SET_REQUEST_TYPE 0x40 7062306a36Sopenharmony_ci 7162306a36Sopenharmony_ci#define BELKIN_SA_BAUD(b) (230400/b) 7262306a36Sopenharmony_ci 7362306a36Sopenharmony_ci#define BELKIN_SA_STOP_BITS(b) (b-1) 7462306a36Sopenharmony_ci 7562306a36Sopenharmony_ci#define BELKIN_SA_DATA_BITS(b) (b-5) 7662306a36Sopenharmony_ci 7762306a36Sopenharmony_ci#define BELKIN_SA_PARITY_NONE 0 7862306a36Sopenharmony_ci#define BELKIN_SA_PARITY_EVEN 1 7962306a36Sopenharmony_ci#define BELKIN_SA_PARITY_ODD 2 8062306a36Sopenharmony_ci#define BELKIN_SA_PARITY_MARK 3 8162306a36Sopenharmony_ci#define BELKIN_SA_PARITY_SPACE 4 8262306a36Sopenharmony_ci 8362306a36Sopenharmony_ci#define BELKIN_SA_FLOW_NONE 0x0000 /* No flow control */ 8462306a36Sopenharmony_ci#define BELKIN_SA_FLOW_OCTS 0x0001 /* use CTS input to throttle output */ 8562306a36Sopenharmony_ci#define BELKIN_SA_FLOW_ODSR 0x0002 /* use DSR input to throttle output */ 8662306a36Sopenharmony_ci#define BELKIN_SA_FLOW_IDSR 0x0004 /* use DSR input to enable receive */ 8762306a36Sopenharmony_ci#define BELKIN_SA_FLOW_IDTR 0x0008 /* use DTR output for input flow control */ 8862306a36Sopenharmony_ci#define BELKIN_SA_FLOW_IRTS 0x0010 /* use RTS output for input flow control */ 8962306a36Sopenharmony_ci#define BELKIN_SA_FLOW_ORTS 0x0020 /* use RTS to indicate data available to send */ 9062306a36Sopenharmony_ci#define BELKIN_SA_FLOW_ERRSUB 0x0040 /* ???? guess ???? substitute inline errors */ 9162306a36Sopenharmony_ci#define BELKIN_SA_FLOW_OXON 0x0080 /* use XON/XOFF for output flow control */ 9262306a36Sopenharmony_ci#define BELKIN_SA_FLOW_IXON 0x0100 /* use XON/XOFF for input flow control */ 9362306a36Sopenharmony_ci 9462306a36Sopenharmony_ci/* 9562306a36Sopenharmony_ci * It seems that the interrupt pipe is closely modelled after the 9662306a36Sopenharmony_ci * 16550 register layout. This is probably because the adapter can 9762306a36Sopenharmony_ci * be used in a "DOS" environment to simulate a standard hardware port. 9862306a36Sopenharmony_ci */ 9962306a36Sopenharmony_ci#define BELKIN_SA_LSR_INDEX 2 /* Line Status Register */ 10062306a36Sopenharmony_ci#define BELKIN_SA_LSR_RDR 0x01 /* receive data ready */ 10162306a36Sopenharmony_ci#define BELKIN_SA_LSR_OE 0x02 /* overrun error */ 10262306a36Sopenharmony_ci#define BELKIN_SA_LSR_PE 0x04 /* parity error */ 10362306a36Sopenharmony_ci#define BELKIN_SA_LSR_FE 0x08 /* framing error */ 10462306a36Sopenharmony_ci#define BELKIN_SA_LSR_BI 0x10 /* break indicator */ 10562306a36Sopenharmony_ci#define BELKIN_SA_LSR_THE 0x20 /* tx holding register empty */ 10662306a36Sopenharmony_ci#define BELKIN_SA_LSR_TE 0x40 /* transmit register empty */ 10762306a36Sopenharmony_ci#define BELKIN_SA_LSR_ERR 0x80 /* OE | PE | FE | BI */ 10862306a36Sopenharmony_ci 10962306a36Sopenharmony_ci#define BELKIN_SA_MSR_INDEX 3 /* Modem Status Register */ 11062306a36Sopenharmony_ci#define BELKIN_SA_MSR_DCTS 0x01 /* Delta CTS */ 11162306a36Sopenharmony_ci#define BELKIN_SA_MSR_DDSR 0x02 /* Delta DSR */ 11262306a36Sopenharmony_ci#define BELKIN_SA_MSR_DRI 0x04 /* Delta RI */ 11362306a36Sopenharmony_ci#define BELKIN_SA_MSR_DCD 0x08 /* Delta CD */ 11462306a36Sopenharmony_ci#define BELKIN_SA_MSR_CTS 0x10 /* Current CTS */ 11562306a36Sopenharmony_ci#define BELKIN_SA_MSR_DSR 0x20 /* Current DSR */ 11662306a36Sopenharmony_ci#define BELKIN_SA_MSR_RI 0x40 /* Current RI */ 11762306a36Sopenharmony_ci#define BELKIN_SA_MSR_CD 0x80 /* Current CD */ 11862306a36Sopenharmony_ci 11962306a36Sopenharmony_ci#endif /* __LINUX_USB_SERIAL_BSA_H */ 12062306a36Sopenharmony_ci 121