|  | // SPDX-License-Identifier: GPL-2.0 | 
|  | /* | 
|  | * Xsens MT USB driver | 
|  | * | 
|  | * Copyright (C) 2013 Xsens <[email protected]> | 
|  | */ | 
|  |  | 
|  | #include <linux/kernel.h> | 
|  | #include <linux/tty.h> | 
|  | #include <linux/module.h> | 
|  | #include <linux/usb.h> | 
|  | #include <linux/usb/serial.h> | 
|  | #include <linux/uaccess.h> | 
|  |  | 
|  | #define XSENS_VID 0x2639 | 
|  |  | 
|  | #define MTi_10_IMU_PID		0x0001 | 
|  | #define MTi_20_VRU_PID		0x0002 | 
|  | #define MTi_30_AHRS_PID		0x0003 | 
|  |  | 
|  | #define MTi_100_IMU_PID		0x0011 | 
|  | #define MTi_200_VRU_PID		0x0012 | 
|  | #define MTi_300_AHRS_PID	0x0013 | 
|  |  | 
|  | #define MTi_G_700_GPS_INS_PID	0x0017 | 
|  |  | 
|  | static const struct usb_device_id id_table[] = { | 
|  | { USB_DEVICE(XSENS_VID, MTi_10_IMU_PID) }, | 
|  | { USB_DEVICE(XSENS_VID, MTi_20_VRU_PID) }, | 
|  | { USB_DEVICE(XSENS_VID, MTi_30_AHRS_PID) }, | 
|  |  | 
|  | { USB_DEVICE(XSENS_VID, MTi_100_IMU_PID) }, | 
|  | { USB_DEVICE(XSENS_VID, MTi_200_VRU_PID) }, | 
|  | { USB_DEVICE(XSENS_VID, MTi_300_AHRS_PID) }, | 
|  |  | 
|  | { USB_DEVICE(XSENS_VID, MTi_G_700_GPS_INS_PID) }, | 
|  | { }, | 
|  | }; | 
|  | MODULE_DEVICE_TABLE(usb, id_table); | 
|  |  | 
|  | static int xsens_mt_probe(struct usb_serial *serial, | 
|  | const struct usb_device_id *id) | 
|  | { | 
|  | if (serial->interface->cur_altsetting->desc.bInterfaceNumber == 1) | 
|  | return 0; | 
|  |  | 
|  | return -ENODEV; | 
|  | } | 
|  |  | 
|  | static struct usb_serial_driver xsens_mt_device = { | 
|  | .driver = { | 
|  | .owner = THIS_MODULE, | 
|  | .name = "xsens_mt", | 
|  | }, | 
|  | .id_table = id_table, | 
|  | .num_ports = 1, | 
|  |  | 
|  | .probe = xsens_mt_probe, | 
|  | }; | 
|  |  | 
|  | static struct usb_serial_driver * const serial_drivers[] = { | 
|  | &xsens_mt_device, NULL | 
|  | }; | 
|  |  | 
|  | module_usb_serial_driver(serial_drivers, id_table); | 
|  |  | 
|  | MODULE_AUTHOR("Frans Klaver <[email protected]>"); | 
|  | MODULE_DESCRIPTION("USB-serial driver for Xsens motion trackers"); | 
|  | MODULE_LICENSE("GPL v2"); |