mos7840.c (597473720f4dc69749542bfcfed4a927a43d935e) mos7840.c (e696d00e65e81d46e911f24b12e441037bf11b38)
1// SPDX-License-Identifier: GPL-2.0+
2/*
3 * Clean ups from Moschip version and a few ioctl implementations by:
4 * Paul B Schroeder <pschroeder "at" uplogix "dot" com>
5 *
6 * Originally based on drivers/usb/serial/io_edgeport.c which is:
7 * Copyright (C) 2000 Inside Out Networks, All rights reserved.
8 * Copyright (C) 2001-2002 Greg Kroah-Hartman <greg@kroah.com>

--- 105 unchanged lines hidden (view full) ---

114#define BANDB_DEVICE_ID_USOPTL4_2P 0xBC02
115#define BANDB_DEVICE_ID_USOPTL4_4 0xAC44
116#define BANDB_DEVICE_ID_USOPTL4_4P 0xBC03
117#define BANDB_DEVICE_ID_USOPTL2_4 0xAC24
118
119/* This driver also supports
120 * ATEN UC2324 device using Moschip MCS7840
121 * ATEN UC2322 device using Moschip MCS7820
1// SPDX-License-Identifier: GPL-2.0+
2/*
3 * Clean ups from Moschip version and a few ioctl implementations by:
4 * Paul B Schroeder <pschroeder "at" uplogix "dot" com>
5 *
6 * Originally based on drivers/usb/serial/io_edgeport.c which is:
7 * Copyright (C) 2000 Inside Out Networks, All rights reserved.
8 * Copyright (C) 2001-2002 Greg Kroah-Hartman <greg@kroah.com>

--- 105 unchanged lines hidden (view full) ---

114#define BANDB_DEVICE_ID_USOPTL4_2P 0xBC02
115#define BANDB_DEVICE_ID_USOPTL4_4 0xAC44
116#define BANDB_DEVICE_ID_USOPTL4_4P 0xBC03
117#define BANDB_DEVICE_ID_USOPTL2_4 0xAC24
118
119/* This driver also supports
120 * ATEN UC2324 device using Moschip MCS7840
121 * ATEN UC2322 device using Moschip MCS7820
122 * MOXA UPort 2210 device using Moschip MCS7820
122 */
123#define USB_VENDOR_ID_ATENINTL 0x0557
124#define ATENINTL_DEVICE_ID_UC2324 0x2011
125#define ATENINTL_DEVICE_ID_UC2322 0x7820
126
123 */
124#define USB_VENDOR_ID_ATENINTL 0x0557
125#define ATENINTL_DEVICE_ID_UC2324 0x2011
126#define ATENINTL_DEVICE_ID_UC2322 0x7820
127
128#define USB_VENDOR_ID_MOXA 0x110a
129#define MOXA_DEVICE_ID_2210 0x2210
130
127/* Interrupt Routine Defines */
128
129#define SERIAL_IIR_RLS 0x06
130#define SERIAL_IIR_MS 0x00
131
132/*
133 * Emulation of the bit mask on the LINE STATUS REGISTER.
134 */

--- 55 unchanged lines hidden (view full) ---

190 {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USPTL4_4)},
191 {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL4_2)},
192 {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL4_2P)},
193 {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL4_4)},
194 {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL4_4P)},
195 {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL2_4)},
196 {USB_DEVICE(USB_VENDOR_ID_ATENINTL, ATENINTL_DEVICE_ID_UC2324)},
197 {USB_DEVICE(USB_VENDOR_ID_ATENINTL, ATENINTL_DEVICE_ID_UC2322)},
131/* Interrupt Routine Defines */
132
133#define SERIAL_IIR_RLS 0x06
134#define SERIAL_IIR_MS 0x00
135
136/*
137 * Emulation of the bit mask on the LINE STATUS REGISTER.
138 */

--- 55 unchanged lines hidden (view full) ---

194 {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USPTL4_4)},
195 {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL4_2)},
196 {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL4_2P)},
197 {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL4_4)},
198 {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL4_4P)},
199 {USB_DEVICE(USB_VENDOR_ID_BANDB, BANDB_DEVICE_ID_USOPTL2_4)},
200 {USB_DEVICE(USB_VENDOR_ID_ATENINTL, ATENINTL_DEVICE_ID_UC2324)},
201 {USB_DEVICE(USB_VENDOR_ID_ATENINTL, ATENINTL_DEVICE_ID_UC2322)},
202 {USB_DEVICE(USB_VENDOR_ID_MOXA, MOXA_DEVICE_ID_2210)},
198 {} /* terminating entry */
199};
200MODULE_DEVICE_TABLE(usb, id_table);
201
202/* This structure holds all of the local port information */
203
204struct moschip_port {
205 int port_num; /*Actual port number in the device(1,2,etc) */

--- 1809 unchanged lines hidden (view full) ---

2015
2016 return 0;
2017}
2018
2019static int mos7840_probe(struct usb_serial *serial,
2020 const struct usb_device_id *id)
2021{
2022 u16 product = le16_to_cpu(serial->dev->descriptor.idProduct);
203 {} /* terminating entry */
204};
205MODULE_DEVICE_TABLE(usb, id_table);
206
207/* This structure holds all of the local port information */
208
209struct moschip_port {
210 int port_num; /*Actual port number in the device(1,2,etc) */

--- 1809 unchanged lines hidden (view full) ---

2020
2021 return 0;
2022}
2023
2024static int mos7840_probe(struct usb_serial *serial,
2025 const struct usb_device_id *id)
2026{
2027 u16 product = le16_to_cpu(serial->dev->descriptor.idProduct);
2028 u16 vid = le16_to_cpu(serial->dev->descriptor.idVendor);
2023 u8 *buf;
2024 int device_type;
2025
2026 if (product == MOSCHIP_DEVICE_ID_7810 ||
2027 product == MOSCHIP_DEVICE_ID_7820 ||
2028 product == MOSCHIP_DEVICE_ID_7843) {
2029 device_type = product;
2030 goto out;
2031 }
2032
2029 u8 *buf;
2030 int device_type;
2031
2032 if (product == MOSCHIP_DEVICE_ID_7810 ||
2033 product == MOSCHIP_DEVICE_ID_7820 ||
2034 product == MOSCHIP_DEVICE_ID_7843) {
2035 device_type = product;
2036 goto out;
2037 }
2038
2039 if (vid == USB_VENDOR_ID_MOXA && product == MOXA_DEVICE_ID_2210) {
2040 device_type = MOSCHIP_DEVICE_ID_7820;
2041 goto out;
2042 }
2043
2033 buf = kzalloc(VENDOR_READ_LENGTH, GFP_KERNEL);
2034 if (!buf)
2035 return -ENOMEM;
2036
2037 usb_control_msg(serial->dev, usb_rcvctrlpipe(serial->dev, 0),
2038 MCS_RDREQ, MCS_RD_RTYPE, 0, GPIO_REGISTER, buf,
2039 VENDOR_READ_LENGTH, MOS_WDR_TIMEOUT);
2040

--- 324 unchanged lines hidden ---
2044 buf = kzalloc(VENDOR_READ_LENGTH, GFP_KERNEL);
2045 if (!buf)
2046 return -ENOMEM;
2047
2048 usb_control_msg(serial->dev, usb_rcvctrlpipe(serial->dev, 0),
2049 MCS_RDREQ, MCS_RD_RTYPE, 0, GPIO_REGISTER, buf,
2050 VENDOR_READ_LENGTH, MOS_WDR_TIMEOUT);
2051

--- 324 unchanged lines hidden ---