uipaq.c revision 190734
1184610Salfred/* $NetBSD: uipaq.c,v 1.4 2006/11/16 01:33:27 christos Exp $ */ 2184610Salfred/* $OpenBSD: uipaq.c,v 1.1 2005/06/17 23:50:33 deraadt Exp $ */ 3184610Salfred 4184610Salfred/* 5184610Salfred * Copyright (c) 2000-2005 The NetBSD Foundation, Inc. 6184610Salfred * All rights reserved. 7184610Salfred * 8184610Salfred * This code is derived from software contributed to The NetBSD Foundation 9184610Salfred * by Lennart Augustsson (lennart@augustsson.net) at 10184610Salfred * Carlstedt Research & Technology. 11184610Salfred * 12184610Salfred * Redistribution and use in source and binary forms, with or without 13184610Salfred * modification, are permitted provided that the following conditions 14184610Salfred * are met: 15184610Salfred * 1. Redistributions of source code must retain the above copyright 16184610Salfred * notice, this list of conditions and the following disclaimer. 17184610Salfred * 2. Redistributions in binary form must reproduce the above copyright 18184610Salfred * notice, this list of conditions and the following disclaimer in the 19184610Salfred * documentation and/or other materials provided with the distribution. 20184610Salfred * 3. All advertising materials mentioning features or use of this software 21184610Salfred * must display the following acknowledgement: 22184610Salfred * This product includes software developed by the NetBSD 23184610Salfred * Foundation, Inc. and its contributors. 24184610Salfred * 4. Neither the name of The NetBSD Foundation nor the names of its 25184610Salfred * contributors may be used to endorse or promote products derived 26184610Salfred * from this software without specific prior written permission. 27184610Salfred * 28184610Salfred * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 29184610Salfred * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 30184610Salfred * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 31184610Salfred * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 32184610Salfred * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 33184610Salfred * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 34184610Salfred * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 35184610Salfred * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 36184610Salfred * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 37184610Salfred * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 38184610Salfred * POSSIBILITY OF SUCH DAMAGE. 39184610Salfred */ 40184610Salfred 41184610Salfred/* 42184610Salfred * iPAQ driver 43184610Salfred * 44184610Salfred * 19 July 2003: Incorporated changes suggested by Sam Lawrance from 45184610Salfred * the uppc module 46184610Salfred * 47184610Salfred * 48184610Salfred * Contact isis@cs.umd.edu if you have any questions/comments about this driver 49184610Salfred */ 50184610Salfred 51184610Salfred#include <sys/cdefs.h> 52184610Salfred__FBSDID("$FreeBSD: head/sys/dev/usb/serial/uipaq.c 190734 2009-04-05 18:20:38Z thompsa $"); 53184610Salfred 54188746Sthompsa#include "usbdevs.h" 55188942Sthompsa#include <dev/usb/usb.h> 56188942Sthompsa#include <dev/usb/usb_mfunc.h> 57188942Sthompsa#include <dev/usb/usb_error.h> 58188942Sthompsa#include <dev/usb/usb_cdc.h> 59184610Salfred 60184610Salfred#define USB_DEBUG_VAR usb2_debug 61184610Salfred 62188942Sthompsa#include <dev/usb/usb_core.h> 63188942Sthompsa#include <dev/usb/usb_debug.h> 64188942Sthompsa#include <dev/usb/usb_process.h> 65188942Sthompsa#include <dev/usb/usb_request.h> 66188942Sthompsa#include <dev/usb/usb_lookup.h> 67188942Sthompsa#include <dev/usb/usb_util.h> 68188942Sthompsa#include <dev/usb/usb_busdma.h> 69184610Salfred 70188942Sthompsa#include <dev/usb/serial/usb_serial.h> 71184610Salfred 72184610Salfred#define UIPAQ_CONFIG_INDEX 0 /* config number 1 */ 73184610Salfred#define UIPAQ_IFACE_INDEX 0 74184610Salfred 75184610Salfred#define UIPAQ_BUF_SIZE 1024 76184610Salfred 77187259Sthompsaenum { 78187259Sthompsa UIPAQ_BULK_DT_WR, 79187259Sthompsa UIPAQ_BULK_DT_RD, 80188413Sthompsa UIPAQ_N_TRANSFER, 81187259Sthompsa}; 82187259Sthompsa 83184610Salfredstruct uipaq_softc { 84184610Salfred struct usb2_com_super_softc sc_super_ucom; 85184610Salfred struct usb2_com_softc sc_ucom; 86184610Salfred 87187259Sthompsa struct usb2_xfer *sc_xfer[UIPAQ_N_TRANSFER]; 88184610Salfred struct usb2_device *sc_udev; 89189265Sthompsa struct mtx sc_mtx; 90184610Salfred 91184610Salfred uint16_t sc_line; 92184610Salfred 93184610Salfred uint8_t sc_lsr; /* local status register */ 94184610Salfred uint8_t sc_msr; /* modem status register */ 95184610Salfred}; 96184610Salfred 97184610Salfredstatic device_probe_t uipaq_probe; 98184610Salfredstatic device_attach_t uipaq_attach; 99184610Salfredstatic device_detach_t uipaq_detach; 100184610Salfred 101184610Salfredstatic usb2_callback_t uipaq_write_callback; 102184610Salfredstatic usb2_callback_t uipaq_read_callback; 103184610Salfred 104185948Sthompsastatic void uipaq_start_read(struct usb2_com_softc *); 105185948Sthompsastatic void uipaq_stop_read(struct usb2_com_softc *); 106185948Sthompsastatic void uipaq_start_write(struct usb2_com_softc *); 107185948Sthompsastatic void uipaq_stop_write(struct usb2_com_softc *); 108185948Sthompsastatic void uipaq_cfg_set_dtr(struct usb2_com_softc *, uint8_t); 109185948Sthompsastatic void uipaq_cfg_set_rts(struct usb2_com_softc *, uint8_t); 110185948Sthompsastatic void uipaq_cfg_set_break(struct usb2_com_softc *, uint8_t); 111184610Salfred 112187259Sthompsastatic const struct usb2_config uipaq_config_data[UIPAQ_N_TRANSFER] = { 113184610Salfred 114187259Sthompsa [UIPAQ_BULK_DT_WR] = { 115184610Salfred .type = UE_BULK, 116184610Salfred .endpoint = UE_ADDR_ANY, 117184610Salfred .direction = UE_DIR_OUT, 118190734Sthompsa .bufsize = UIPAQ_BUF_SIZE, 119190734Sthompsa .flags = {.pipe_bof = 1,.force_short_xfer = 1,}, 120190734Sthompsa .callback = &uipaq_write_callback, 121184610Salfred }, 122184610Salfred 123187259Sthompsa [UIPAQ_BULK_DT_RD] = { 124184610Salfred .type = UE_BULK, 125184610Salfred .endpoint = UE_ADDR_ANY, 126184610Salfred .direction = UE_DIR_IN, 127190734Sthompsa .bufsize = UIPAQ_BUF_SIZE, 128190734Sthompsa .flags = {.pipe_bof = 1,.short_xfer_ok = 1,}, 129190734Sthompsa .callback = &uipaq_read_callback, 130184610Salfred }, 131184610Salfred}; 132184610Salfred 133184610Salfredstatic const struct usb2_com_callback uipaq_callback = { 134184610Salfred .usb2_com_cfg_set_dtr = &uipaq_cfg_set_dtr, 135184610Salfred .usb2_com_cfg_set_rts = &uipaq_cfg_set_rts, 136184610Salfred .usb2_com_cfg_set_break = &uipaq_cfg_set_break, 137184610Salfred .usb2_com_start_read = &uipaq_start_read, 138184610Salfred .usb2_com_stop_read = &uipaq_stop_read, 139184610Salfred .usb2_com_start_write = &uipaq_start_write, 140184610Salfred .usb2_com_stop_write = &uipaq_stop_write, 141184610Salfred}; 142184610Salfred 143184610Salfred/* 144184610Salfred * Much of this list is generated from lists of other drivers that 145184610Salfred * support the same hardware. Numeric values are used where no usbdevs 146184610Salfred * entries exist. 147184610Salfred */ 148184610Salfredstatic const struct usb2_device_id uipaq_devs[] = { 149184610Salfred /* Socket USB Sync */ 150184610Salfred {USB_VPI(0x0104, 0x00be, 0)}, 151184610Salfred /* USB Sync 0301 */ 152184610Salfred {USB_VPI(0x04ad, 0x0301, 0)}, 153184610Salfred /* USB Sync 0302 */ 154184610Salfred {USB_VPI(0x04ad, 0x0302, 0)}, 155184610Salfred /* USB Sync 0303 */ 156184610Salfred {USB_VPI(0x04ad, 0x0303, 0)}, 157184610Salfred /* GPS Pocket PC USB Sync */ 158184610Salfred {USB_VPI(0x04ad, 0x0306, 0)}, 159184610Salfred /* HHP PDT */ 160184610Salfred {USB_VPI(0x0536, 0x01a0, 0)}, 161184610Salfred /* Intermec Mobile Computer */ 162184610Salfred {USB_VPI(0x067e, 0x1001, 0)}, 163184610Salfred /* Linkup Systems USB Sync */ 164184610Salfred {USB_VPI(0x094b, 0x0001, 0)}, 165184610Salfred /* BCOM USB Sync 0065 */ 166184610Salfred {USB_VPI(0x0960, 0x0065, 0)}, 167184610Salfred /* BCOM USB Sync 0066 */ 168184610Salfred {USB_VPI(0x0960, 0x0066, 0)}, 169184610Salfred /* BCOM USB Sync 0067 */ 170184610Salfred {USB_VPI(0x0960, 0x0067, 0)}, 171184610Salfred /* Portatec USB Sync */ 172184610Salfred {USB_VPI(0x0961, 0x0010, 0)}, 173184610Salfred /* Trimble GeoExplorer */ 174184610Salfred {USB_VPI(0x099e, 0x0052, 0)}, 175184610Salfred /* TDS Data Collector */ 176184610Salfred {USB_VPI(0x099e, 0x4000, 0)}, 177184610Salfred /* Motorola iDEN Smartphone */ 178184610Salfred {USB_VPI(0x0c44, 0x03a2, 0)}, 179184610Salfred /* Cesscom Luxian Series */ 180184610Salfred {USB_VPI(0x0c8e, 0x6000, 0)}, 181184610Salfred /* Motorola PowerPad Pocket PCDevice */ 182184610Salfred {USB_VPI(0x0cad, 0x9001, 0)}, 183184610Salfred /* Freedom Scientific USB Sync */ 184184610Salfred {USB_VPI(0x0f4e, 0x0200, 0)}, 185184610Salfred /* Cyberbank USB Sync */ 186184610Salfred {USB_VPI(0x0f98, 0x0201, 0)}, 187184610Salfred /* Wistron USB Sync */ 188184610Salfred {USB_VPI(0x0fb8, 0x3001, 0)}, 189184610Salfred /* Wistron USB Sync */ 190184610Salfred {USB_VPI(0x0fb8, 0x3002, 0)}, 191184610Salfred /* Wistron USB Sync */ 192184610Salfred {USB_VPI(0x0fb8, 0x3003, 0)}, 193184610Salfred /* Wistron USB Sync */ 194184610Salfred {USB_VPI(0x0fb8, 0x4001, 0)}, 195184610Salfred /* E-TEN USB Sync */ 196184610Salfred {USB_VPI(0x1066, 0x00ce, 0)}, 197184610Salfred /* E-TEN P3XX Pocket PC */ 198184610Salfred {USB_VPI(0x1066, 0x0300, 0)}, 199184610Salfred /* E-TEN P5XX Pocket PC */ 200184610Salfred {USB_VPI(0x1066, 0x0500, 0)}, 201184610Salfred /* E-TEN P6XX Pocket PC */ 202184610Salfred {USB_VPI(0x1066, 0x0600, 0)}, 203184610Salfred /* E-TEN P7XX Pocket PC */ 204184610Salfred {USB_VPI(0x1066, 0x0700, 0)}, 205184610Salfred /* Psion Teklogix Sync 753x */ 206184610Salfred {USB_VPI(0x1114, 0x0001, 0)}, 207184610Salfred /* Psion Teklogix Sync netBookPro */ 208184610Salfred {USB_VPI(0x1114, 0x0004, 0)}, 209184610Salfred /* Psion Teklogix Sync 7525 */ 210184610Salfred {USB_VPI(0x1114, 0x0006, 0)}, 211184610Salfred /* VES USB Sync */ 212184610Salfred {USB_VPI(0x1182, 0x1388, 0)}, 213184610Salfred /* Rugged Pocket PC 2003 */ 214184610Salfred {USB_VPI(0x11d9, 0x1002, 0)}, 215184610Salfred /* Rugged Pocket PC 2003 */ 216184610Salfred {USB_VPI(0x11d9, 0x1003, 0)}, 217184610Salfred /* USB Sync 03 */ 218184610Salfred {USB_VPI(0x1231, 0xce01, 0)}, 219184610Salfred /* USB Sync 03 */ 220184610Salfred {USB_VPI(0x1231, 0xce02, 0)}, 221184610Salfred /* Mio DigiWalker PPC StrongARM */ 222184610Salfred {USB_VPI(0x3340, 0x011c, 0)}, 223184610Salfred /* Mio DigiWalker 338 */ 224184610Salfred {USB_VPI(0x3340, 0x0326, 0)}, 225184610Salfred /* Mio DigiWalker 338 */ 226184610Salfred {USB_VPI(0x3340, 0x0426, 0)}, 227184610Salfred /* Mio DigiWalker USB Sync */ 228184610Salfred {USB_VPI(0x3340, 0x043a, 0)}, 229184610Salfred /* MiTAC USB Sync 528 */ 230184610Salfred {USB_VPI(0x3340, 0x051c, 0)}, 231184610Salfred /* Mio DigiWalker SmartPhone USB Sync */ 232184610Salfred {USB_VPI(0x3340, 0x053a, 0)}, 233184610Salfred /* MiTAC USB Sync */ 234184610Salfred {USB_VPI(0x3340, 0x071c, 0)}, 235184610Salfred /* Generic PPC StrongARM */ 236184610Salfred {USB_VPI(0x3340, 0x0b1c, 0)}, 237184610Salfred /* Generic PPC USB Sync */ 238184610Salfred {USB_VPI(0x3340, 0x0e3a, 0)}, 239184610Salfred /* Itautec USB Sync */ 240184610Salfred {USB_VPI(0x3340, 0x0f1c, 0)}, 241184610Salfred /* Generic SmartPhone USB Sync */ 242184610Salfred {USB_VPI(0x3340, 0x0f3a, 0)}, 243184610Salfred /* Itautec USB Sync */ 244184610Salfred {USB_VPI(0x3340, 0x1326, 0)}, 245184610Salfred /* YAKUMO USB Sync */ 246184610Salfred {USB_VPI(0x3340, 0x191c, 0)}, 247184610Salfred /* Vobis USB Sync */ 248184610Salfred {USB_VPI(0x3340, 0x2326, 0)}, 249184610Salfred /* MEDION Winodws Moble USB Sync */ 250184610Salfred {USB_VPI(0x3340, 0x3326, 0)}, 251184610Salfred /* Legend USB Sync */ 252184610Salfred {USB_VPI(0x3708, 0x20ce, 0)}, 253184610Salfred /* Lenovo USB Sync */ 254184610Salfred {USB_VPI(0x3708, 0x21ce, 0)}, 255184610Salfred /* Mobile Media Technology USB Sync */ 256184610Salfred {USB_VPI(0x4113, 0x0210, 0)}, 257184610Salfred /* Mobile Media Technology USB Sync */ 258184610Salfred {USB_VPI(0x4113, 0x0211, 0)}, 259184610Salfred /* Mobile Media Technology USB Sync */ 260184610Salfred {USB_VPI(0x4113, 0x0400, 0)}, 261184610Salfred /* Mobile Media Technology USB Sync */ 262184610Salfred {USB_VPI(0x4113, 0x0410, 0)}, 263184610Salfred /* Smartphone */ 264184610Salfred {USB_VPI(0x4505, 0x0010, 0)}, 265184610Salfred /* SAGEM Wireless Assistant */ 266184610Salfred {USB_VPI(0x5e04, 0xce00, 0)}, 267184610Salfred /* c10 Series */ 268184610Salfred {USB_VPI(USB_VENDOR_ACER, 0x1631, 0)}, 269184610Salfred /* c20 Series */ 270184610Salfred {USB_VPI(USB_VENDOR_ACER, 0x1632, 0)}, 271184610Salfred /* Acer n10 Handheld USB Sync */ 272184610Salfred {USB_VPI(USB_VENDOR_ACER, 0x16e1, 0)}, 273184610Salfred /* Acer n20 Handheld USB Sync */ 274184610Salfred {USB_VPI(USB_VENDOR_ACER, 0x16e2, 0)}, 275184610Salfred /* Acer n30 Handheld USB Sync */ 276184610Salfred {USB_VPI(USB_VENDOR_ACER, 0x16e3, 0)}, 277184610Salfred /* ASUS USB Sync */ 278184610Salfred {USB_VPI(USB_VENDOR_ASUS, 0x4200, 0)}, 279184610Salfred /* ASUS USB Sync */ 280184610Salfred {USB_VPI(USB_VENDOR_ASUS, 0x4201, 0)}, 281184610Salfred /* ASUS USB Sync */ 282184610Salfred {USB_VPI(USB_VENDOR_ASUS, 0x4202, 0)}, 283184610Salfred /* ASUS USB Sync */ 284184610Salfred {USB_VPI(USB_VENDOR_ASUS, 0x9200, 0)}, 285184610Salfred /* ASUS USB Sync */ 286184610Salfred {USB_VPI(USB_VENDOR_ASUS, 0x9202, 0)}, 287184610Salfred /**/ 288184610Salfred {USB_VPI(USB_VENDOR_ASUS, USB_PRODUCT_ASUS_P535, 0)}, 289184610Salfred /* CASIO USB Sync 2001 */ 290184610Salfred {USB_VPI(USB_VENDOR_CASIO, 0x2001, 0)}, 291184610Salfred /* CASIO USB Sync 2003 */ 292184610Salfred {USB_VPI(USB_VENDOR_CASIO, 0x2003, 0)}, 293184610Salfred /**/ 294184610Salfred {USB_VPI(USB_VENDOR_CASIO, USB_PRODUCT_CASIO_BE300, 0)}, 295184610Salfred /* MyGuide 7000 XL USB Sync */ 296184610Salfred {USB_VPI(USB_VENDOR_COMPAL, 0x0531, 0)}, 297184610Salfred /* Compaq iPAQ USB Sync */ 298184610Salfred {USB_VPI(USB_VENDOR_COMPAQ, 0x0032, 0)}, 299184610Salfred /**/ 300184610Salfred {USB_VPI(USB_VENDOR_COMPAQ, USB_PRODUCT_COMPAQ_IPAQPOCKETPC, 0)}, 301184610Salfred /* Dell Axim USB Sync */ 302184610Salfred {USB_VPI(USB_VENDOR_DELL, 0x4001, 0)}, 303184610Salfred /* Dell Axim USB Sync */ 304184610Salfred {USB_VPI(USB_VENDOR_DELL, 0x4002, 0)}, 305184610Salfred /* Dell Axim USB Sync */ 306184610Salfred {USB_VPI(USB_VENDOR_DELL, 0x4003, 0)}, 307184610Salfred /* Dell Axim USB Sync */ 308184610Salfred {USB_VPI(USB_VENDOR_DELL, 0x4004, 0)}, 309184610Salfred /* Dell Axim USB Sync */ 310184610Salfred {USB_VPI(USB_VENDOR_DELL, 0x4005, 0)}, 311184610Salfred /* Dell Axim USB Sync */ 312184610Salfred {USB_VPI(USB_VENDOR_DELL, 0x4006, 0)}, 313184610Salfred /* Dell Axim USB Sync */ 314184610Salfred {USB_VPI(USB_VENDOR_DELL, 0x4007, 0)}, 315184610Salfred /* Dell Axim USB Sync */ 316184610Salfred {USB_VPI(USB_VENDOR_DELL, 0x4008, 0)}, 317184610Salfred /* Dell Axim USB Sync */ 318184610Salfred {USB_VPI(USB_VENDOR_DELL, 0x4009, 0)}, 319184610Salfred /* Fujitsu Siemens Computers USB Sync */ 320184610Salfred {USB_VPI(USB_VENDOR_FSC, 0x1001, 0)}, 321184610Salfred /* FUJITSU USB Sync */ 322184610Salfred {USB_VPI(USB_VENDOR_FUJITSU, 0x1058, 0)}, 323184610Salfred /* FUJITSU USB Sync */ 324184610Salfred {USB_VPI(USB_VENDOR_FUJITSU, 0x1079, 0)}, 325184610Salfred /* Askey USB Sync */ 326184610Salfred {USB_VPI(USB_VENDOR_GIGASET, 0x0601, 0)}, 327184610Salfred /* Hitachi USB Sync */ 328184610Salfred {USB_VPI(USB_VENDOR_HITACHI, 0x0014, 0)}, 329184610Salfred /* HP USB Sync 1612 */ 330184610Salfred {USB_VPI(USB_VENDOR_HP, 0x1216, 0)}, 331184610Salfred /* HP USB Sync 1620 */ 332184610Salfred {USB_VPI(USB_VENDOR_HP, 0x2016, 0)}, 333184610Salfred /* HP USB Sync 1621 */ 334184610Salfred {USB_VPI(USB_VENDOR_HP, 0x2116, 0)}, 335184610Salfred /* HP USB Sync 1622 */ 336184610Salfred {USB_VPI(USB_VENDOR_HP, 0x2216, 0)}, 337184610Salfred /* HP USB Sync 1630 */ 338184610Salfred {USB_VPI(USB_VENDOR_HP, 0x3016, 0)}, 339184610Salfred /* HP USB Sync 1631 */ 340184610Salfred {USB_VPI(USB_VENDOR_HP, 0x3116, 0)}, 341184610Salfred /* HP USB Sync 1632 */ 342184610Salfred {USB_VPI(USB_VENDOR_HP, 0x3216, 0)}, 343184610Salfred /* HP USB Sync 1640 */ 344184610Salfred {USB_VPI(USB_VENDOR_HP, 0x4016, 0)}, 345184610Salfred /* HP USB Sync 1641 */ 346184610Salfred {USB_VPI(USB_VENDOR_HP, 0x4116, 0)}, 347184610Salfred /* HP USB Sync 1642 */ 348184610Salfred {USB_VPI(USB_VENDOR_HP, 0x4216, 0)}, 349184610Salfred /* HP USB Sync 1650 */ 350184610Salfred {USB_VPI(USB_VENDOR_HP, 0x5016, 0)}, 351184610Salfred /* HP USB Sync 1651 */ 352184610Salfred {USB_VPI(USB_VENDOR_HP, 0x5116, 0)}, 353184610Salfred /* HP USB Sync 1652 */ 354184610Salfred {USB_VPI(USB_VENDOR_HP, 0x5216, 0)}, 355184610Salfred /**/ 356184610Salfred {USB_VPI(USB_VENDOR_HP, USB_PRODUCT_HP_2215, 0)}, 357184610Salfred /**/ 358184610Salfred {USB_VPI(USB_VENDOR_HP, USB_PRODUCT_HP_568J, 0)}, 359184610Salfred /* HTC USB Modem */ 360184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x00cf, 0)}, 361184610Salfred /* PocketPC USB Sync */ 362184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a01, 0)}, 363184610Salfred /* PocketPC USB Sync */ 364184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a02, 0)}, 365184610Salfred /* PocketPC USB Sync */ 366184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a03, 0)}, 367184610Salfred /* PocketPC USB Sync */ 368184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a04, 0)}, 369184610Salfred /* PocketPC USB Sync */ 370184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a05, 0)}, 371184610Salfred /* PocketPC USB Sync */ 372184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a06, 0)}, 373184610Salfred /* PocketPC USB Sync */ 374184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a07, 0)}, 375184610Salfred /* PocketPC USB Sync */ 376184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a08, 0)}, 377184610Salfred /* PocketPC USB Sync */ 378184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a09, 0)}, 379184610Salfred /* PocketPC USB Sync */ 380184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a0a, 0)}, 381184610Salfred /* PocketPC USB Sync */ 382184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a0b, 0)}, 383184610Salfred /* PocketPC USB Sync */ 384184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a0c, 0)}, 385184610Salfred /* PocketPC USB Sync */ 386184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a0d, 0)}, 387184610Salfred /* PocketPC USB Sync */ 388184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a0e, 0)}, 389184610Salfred /* PocketPC USB Sync */ 390184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a0f, 0)}, 391184610Salfred /* PocketPC USB Sync */ 392184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a10, 0)}, 393184610Salfred /* PocketPC USB Sync */ 394184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a11, 0)}, 395184610Salfred /* PocketPC USB Sync */ 396184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a12, 0)}, 397184610Salfred /* PocketPC USB Sync */ 398184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a13, 0)}, 399184610Salfred /* PocketPC USB Sync */ 400184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a14, 0)}, 401184610Salfred /* PocketPC USB Sync */ 402184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a15, 0)}, 403184610Salfred /* PocketPC USB Sync */ 404184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a16, 0)}, 405184610Salfred /* PocketPC USB Sync */ 406184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a17, 0)}, 407184610Salfred /* PocketPC USB Sync */ 408184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a18, 0)}, 409184610Salfred /* PocketPC USB Sync */ 410184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a19, 0)}, 411184610Salfred /* PocketPC USB Sync */ 412184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a1a, 0)}, 413184610Salfred /* PocketPC USB Sync */ 414184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a1b, 0)}, 415184610Salfred /* PocketPC USB Sync */ 416184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a1c, 0)}, 417184610Salfred /* PocketPC USB Sync */ 418184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a1d, 0)}, 419184610Salfred /* PocketPC USB Sync */ 420184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a1e, 0)}, 421184610Salfred /* PocketPC USB Sync */ 422184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a1f, 0)}, 423184610Salfred /* PocketPC USB Sync */ 424184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a20, 0)}, 425184610Salfred /* PocketPC USB Sync */ 426184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a21, 0)}, 427184610Salfred /* PocketPC USB Sync */ 428184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a22, 0)}, 429184610Salfred /* PocketPC USB Sync */ 430184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a23, 0)}, 431184610Salfred /* PocketPC USB Sync */ 432184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a24, 0)}, 433184610Salfred /* PocketPC USB Sync */ 434184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a25, 0)}, 435184610Salfred /* PocketPC USB Sync */ 436184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a26, 0)}, 437184610Salfred /* PocketPC USB Sync */ 438184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a27, 0)}, 439184610Salfred /* PocketPC USB Sync */ 440184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a28, 0)}, 441184610Salfred /* PocketPC USB Sync */ 442184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a29, 0)}, 443184610Salfred /* PocketPC USB Sync */ 444184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a2a, 0)}, 445184610Salfred /* PocketPC USB Sync */ 446184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a2b, 0)}, 447184610Salfred /* PocketPC USB Sync */ 448184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a2c, 0)}, 449184610Salfred /* PocketPC USB Sync */ 450184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a2d, 0)}, 451184610Salfred /* PocketPC USB Sync */ 452184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a2e, 0)}, 453184610Salfred /* PocketPC USB Sync */ 454184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a2f, 0)}, 455184610Salfred /* PocketPC USB Sync */ 456184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a30, 0)}, 457184610Salfred /* PocketPC USB Sync */ 458184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a31, 0)}, 459184610Salfred /* PocketPC USB Sync */ 460184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a32, 0)}, 461184610Salfred /* PocketPC USB Sync */ 462184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a33, 0)}, 463184610Salfred /* PocketPC USB Sync */ 464184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a34, 0)}, 465184610Salfred /* PocketPC USB Sync */ 466184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a35, 0)}, 467184610Salfred /* PocketPC USB Sync */ 468184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a36, 0)}, 469184610Salfred /* PocketPC USB Sync */ 470184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a37, 0)}, 471184610Salfred /* PocketPC USB Sync */ 472184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a38, 0)}, 473184610Salfred /* PocketPC USB Sync */ 474184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a39, 0)}, 475184610Salfred /* PocketPC USB Sync */ 476184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a3a, 0)}, 477184610Salfred /* PocketPC USB Sync */ 478184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a3b, 0)}, 479184610Salfred /* PocketPC USB Sync */ 480184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a3c, 0)}, 481184610Salfred /* PocketPC USB Sync */ 482184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a3d, 0)}, 483184610Salfred /* PocketPC USB Sync */ 484184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a3e, 0)}, 485184610Salfred /* PocketPC USB Sync */ 486184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a3f, 0)}, 487184610Salfred /* PocketPC USB Sync */ 488184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a40, 0)}, 489184610Salfred /* PocketPC USB Sync */ 490184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a41, 0)}, 491184610Salfred /* PocketPC USB Sync */ 492184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a42, 0)}, 493184610Salfred /* PocketPC USB Sync */ 494184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a43, 0)}, 495184610Salfred /* PocketPC USB Sync */ 496184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a44, 0)}, 497184610Salfred /* PocketPC USB Sync */ 498184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a45, 0)}, 499184610Salfred /* PocketPC USB Sync */ 500184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a46, 0)}, 501184610Salfred /* PocketPC USB Sync */ 502184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a47, 0)}, 503184610Salfred /* PocketPC USB Sync */ 504184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a48, 0)}, 505184610Salfred /* PocketPC USB Sync */ 506184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a49, 0)}, 507184610Salfred /* PocketPC USB Sync */ 508184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a4a, 0)}, 509184610Salfred /* PocketPC USB Sync */ 510184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a4b, 0)}, 511184610Salfred /* PocketPC USB Sync */ 512184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a4c, 0)}, 513184610Salfred /* PocketPC USB Sync */ 514184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a4d, 0)}, 515184610Salfred /* PocketPC USB Sync */ 516184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a4e, 0)}, 517184610Salfred /* PocketPC USB Sync */ 518184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a4f, 0)}, 519184610Salfred /* HTC SmartPhone USB Sync */ 520184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a50, 0)}, 521184610Salfred /* SmartPhone USB Sync */ 522184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a52, 0)}, 523184610Salfred /* SmartPhone USB Sync */ 524184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a53, 0)}, 525184610Salfred /* SmartPhone USB Sync */ 526184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a54, 0)}, 527184610Salfred /* SmartPhone USB Sync */ 528184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a55, 0)}, 529184610Salfred /* SmartPhone USB Sync */ 530184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a56, 0)}, 531184610Salfred /* SmartPhone USB Sync */ 532184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a57, 0)}, 533184610Salfred /* SmartPhone USB Sync */ 534184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a58, 0)}, 535184610Salfred /* SmartPhone USB Sync */ 536184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a59, 0)}, 537184610Salfred /* SmartPhone USB Sync */ 538184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a5a, 0)}, 539184610Salfred /* SmartPhone USB Sync */ 540184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a5b, 0)}, 541184610Salfred /* SmartPhone USB Sync */ 542184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a5c, 0)}, 543184610Salfred /* SmartPhone USB Sync */ 544184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a5d, 0)}, 545184610Salfred /* SmartPhone USB Sync */ 546184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a5e, 0)}, 547184610Salfred /* SmartPhone USB Sync */ 548184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a5f, 0)}, 549184610Salfred /* SmartPhone USB Sync */ 550184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a60, 0)}, 551184610Salfred /* SmartPhone USB Sync */ 552184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a61, 0)}, 553184610Salfred /* SmartPhone USB Sync */ 554184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a62, 0)}, 555184610Salfred /* SmartPhone USB Sync */ 556184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a63, 0)}, 557184610Salfred /* SmartPhone USB Sync */ 558184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a64, 0)}, 559184610Salfred /* SmartPhone USB Sync */ 560184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a65, 0)}, 561184610Salfred /* SmartPhone USB Sync */ 562184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a66, 0)}, 563184610Salfred /* SmartPhone USB Sync */ 564184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a67, 0)}, 565184610Salfred /* SmartPhone USB Sync */ 566184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a68, 0)}, 567184610Salfred /* SmartPhone USB Sync */ 568184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a69, 0)}, 569184610Salfred /* SmartPhone USB Sync */ 570184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a6a, 0)}, 571184610Salfred /* SmartPhone USB Sync */ 572184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a6b, 0)}, 573184610Salfred /* SmartPhone USB Sync */ 574184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a6c, 0)}, 575184610Salfred /* SmartPhone USB Sync */ 576184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a6d, 0)}, 577184610Salfred /* SmartPhone USB Sync */ 578184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a6e, 0)}, 579184610Salfred /* SmartPhone USB Sync */ 580184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a6f, 0)}, 581184610Salfred /* SmartPhone USB Sync */ 582184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a70, 0)}, 583184610Salfred /* SmartPhone USB Sync */ 584184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a71, 0)}, 585184610Salfred /* SmartPhone USB Sync */ 586184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a72, 0)}, 587184610Salfred /* SmartPhone USB Sync */ 588184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a73, 0)}, 589184610Salfred /* SmartPhone USB Sync */ 590184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a74, 0)}, 591184610Salfred /* SmartPhone USB Sync */ 592184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a75, 0)}, 593184610Salfred /* SmartPhone USB Sync */ 594184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a76, 0)}, 595184610Salfred /* SmartPhone USB Sync */ 596184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a77, 0)}, 597184610Salfred /* SmartPhone USB Sync */ 598184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a78, 0)}, 599184610Salfred /* SmartPhone USB Sync */ 600184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a79, 0)}, 601184610Salfred /* SmartPhone USB Sync */ 602184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a7a, 0)}, 603184610Salfred /* SmartPhone USB Sync */ 604184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a7b, 0)}, 605184610Salfred /* SmartPhone USB Sync */ 606184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a7c, 0)}, 607184610Salfred /* SmartPhone USB Sync */ 608184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a7d, 0)}, 609184610Salfred /* SmartPhone USB Sync */ 610184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a7e, 0)}, 611184610Salfred /* SmartPhone USB Sync */ 612184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a7f, 0)}, 613184610Salfred /* SmartPhone USB Sync */ 614184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a80, 0)}, 615184610Salfred /* SmartPhone USB Sync */ 616184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a81, 0)}, 617184610Salfred /* SmartPhone USB Sync */ 618184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a82, 0)}, 619184610Salfred /* SmartPhone USB Sync */ 620184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a83, 0)}, 621184610Salfred /* SmartPhone USB Sync */ 622184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a84, 0)}, 623184610Salfred /* SmartPhone USB Sync */ 624184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a85, 0)}, 625184610Salfred /* SmartPhone USB Sync */ 626184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a86, 0)}, 627184610Salfred /* SmartPhone USB Sync */ 628184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a87, 0)}, 629184610Salfred /* SmartPhone USB Sync */ 630184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a88, 0)}, 631184610Salfred /* SmartPhone USB Sync */ 632184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a89, 0)}, 633184610Salfred /* SmartPhone USB Sync */ 634184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a8a, 0)}, 635184610Salfred /* SmartPhone USB Sync */ 636184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a8b, 0)}, 637184610Salfred /* SmartPhone USB Sync */ 638184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a8c, 0)}, 639184610Salfred /* SmartPhone USB Sync */ 640184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a8d, 0)}, 641184610Salfred /* SmartPhone USB Sync */ 642184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a8e, 0)}, 643184610Salfred /* SmartPhone USB Sync */ 644184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a8f, 0)}, 645184610Salfred /* SmartPhone USB Sync */ 646184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a90, 0)}, 647184610Salfred /* SmartPhone USB Sync */ 648184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a91, 0)}, 649184610Salfred /* SmartPhone USB Sync */ 650184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a92, 0)}, 651184610Salfred /* SmartPhone USB Sync */ 652184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a93, 0)}, 653184610Salfred /* SmartPhone USB Sync */ 654184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a94, 0)}, 655184610Salfred /* SmartPhone USB Sync */ 656184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a95, 0)}, 657184610Salfred /* SmartPhone USB Sync */ 658184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a96, 0)}, 659184610Salfred /* SmartPhone USB Sync */ 660184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a97, 0)}, 661184610Salfred /* SmartPhone USB Sync */ 662184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a98, 0)}, 663184610Salfred /* SmartPhone USB Sync */ 664184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a99, 0)}, 665184610Salfred /* SmartPhone USB Sync */ 666184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a9a, 0)}, 667184610Salfred /* SmartPhone USB Sync */ 668184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a9b, 0)}, 669184610Salfred /* SmartPhone USB Sync */ 670184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a9c, 0)}, 671184610Salfred /* SmartPhone USB Sync */ 672184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a9d, 0)}, 673184610Salfred /* SmartPhone USB Sync */ 674184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a9e, 0)}, 675184610Salfred /* SmartPhone USB Sync */ 676184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0a9f, 0)}, 677184610Salfred /* "High Tech Computer Corp" */ 678184610Salfred {USB_VPI(USB_VENDOR_HTC, 0x0bce, 0)}, 679184610Salfred /**/ 680184610Salfred {USB_VPI(USB_VENDOR_HTC, USB_PRODUCT_HTC_PPC6700MODEM, 0)}, 681184610Salfred /**/ 682184610Salfred {USB_VPI(USB_VENDOR_HTC, USB_PRODUCT_HTC_SMARTPHONE, 0)}, 683184610Salfred /**/ 684184610Salfred {USB_VPI(USB_VENDOR_HTC, USB_PRODUCT_HTC_WINMOBILE, 0)}, 685184610Salfred /* JVC USB Sync */ 686184610Salfred {USB_VPI(USB_VENDOR_JVC, 0x3011, 0)}, 687184610Salfred /* JVC USB Sync */ 688184610Salfred {USB_VPI(USB_VENDOR_JVC, 0x3012, 0)}, 689184610Salfred /* LGE USB Sync */ 690184610Salfred {USB_VPI(USB_VENDOR_LG, 0x9c01, 0)}, 691184610Salfred /* Microsoft USB Sync */ 692184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x00ce, 0)}, 693184610Salfred /* Windows Pocket PC 2002 */ 694184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0400, 0)}, 695184610Salfred /* Windows Pocket PC 2002 */ 696184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0401, 0)}, 697184610Salfred /* Windows Pocket PC 2002 */ 698184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0402, 0)}, 699184610Salfred /* Windows Pocket PC 2002 */ 700184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0403, 0)}, 701184610Salfred /* Windows Pocket PC 2002 */ 702184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0404, 0)}, 703184610Salfred /* Windows Pocket PC 2002 */ 704184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0405, 0)}, 705184610Salfred /* Windows Pocket PC 2002 */ 706184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0406, 0)}, 707184610Salfred /* Windows Pocket PC 2002 */ 708184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0407, 0)}, 709184610Salfred /* Windows Pocket PC 2002 */ 710184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0408, 0)}, 711184610Salfred /* Windows Pocket PC 2002 */ 712184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0409, 0)}, 713184610Salfred /* Windows Pocket PC 2002 */ 714184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x040a, 0)}, 715184610Salfred /* Windows Pocket PC 2002 */ 716184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x040b, 0)}, 717184610Salfred /* Windows Pocket PC 2002 */ 718184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x040c, 0)}, 719184610Salfred /* Windows Pocket PC 2002 */ 720184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x040d, 0)}, 721184610Salfred /* Windows Pocket PC 2002 */ 722184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x040e, 0)}, 723184610Salfred /* Windows Pocket PC 2002 */ 724184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x040f, 0)}, 725184610Salfred /* Windows Pocket PC 2002 */ 726184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0410, 0)}, 727184610Salfred /* Windows Pocket PC 2002 */ 728184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0411, 0)}, 729184610Salfred /* Windows Pocket PC 2002 */ 730184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0412, 0)}, 731184610Salfred /* Windows Pocket PC 2002 */ 732184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0413, 0)}, 733184610Salfred /* Windows Pocket PC 2002 */ 734184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0414, 0)}, 735184610Salfred /* Windows Pocket PC 2002 */ 736184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0415, 0)}, 737184610Salfred /* Windows Pocket PC 2002 */ 738184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0416, 0)}, 739184610Salfred /* Windows Pocket PC 2002 */ 740184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0417, 0)}, 741184610Salfred /* Windows Pocket PC 2003 */ 742184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0432, 0)}, 743184610Salfred /* Windows Pocket PC 2003 */ 744184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0433, 0)}, 745184610Salfred /* Windows Pocket PC 2003 */ 746184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0434, 0)}, 747184610Salfred /* Windows Pocket PC 2003 */ 748184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0435, 0)}, 749184610Salfred /* Windows Pocket PC 2003 */ 750184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0436, 0)}, 751184610Salfred /* Windows Pocket PC 2003 */ 752184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0437, 0)}, 753184610Salfred /* Windows Pocket PC 2003 */ 754184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0438, 0)}, 755184610Salfred /* Windows Pocket PC 2003 */ 756184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0439, 0)}, 757184610Salfred /* Windows Pocket PC 2003 */ 758184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x043a, 0)}, 759184610Salfred /* Windows Pocket PC 2003 */ 760184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x043b, 0)}, 761184610Salfred /* Windows Pocket PC 2003 */ 762184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x043c, 0)}, 763184610Salfred /* Windows Pocket PC 2003 */ 764184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x043d, 0)}, 765184610Salfred /* Windows Pocket PC 2003 */ 766184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x043e, 0)}, 767184610Salfred /* Windows Pocket PC 2003 */ 768184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x043f, 0)}, 769184610Salfred /* Windows Pocket PC 2003 */ 770184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0440, 0)}, 771184610Salfred /* Windows Pocket PC 2003 */ 772184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0441, 0)}, 773184610Salfred /* Windows Pocket PC 2003 */ 774184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0442, 0)}, 775184610Salfred /* Windows Pocket PC 2003 */ 776184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0443, 0)}, 777184610Salfred /* Windows Pocket PC 2003 */ 778184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0444, 0)}, 779184610Salfred /* Windows Pocket PC 2003 */ 780184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0445, 0)}, 781184610Salfred /* Windows Pocket PC 2003 */ 782184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0446, 0)}, 783184610Salfred /* Windows Pocket PC 2003 */ 784184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0447, 0)}, 785184610Salfred /* Windows Pocket PC 2003 */ 786184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0448, 0)}, 787184610Salfred /* Windows Pocket PC 2003 */ 788184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0449, 0)}, 789184610Salfred /* Windows Pocket PC 2003 */ 790184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x044a, 0)}, 791184610Salfred /* Windows Pocket PC 2003 */ 792184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x044b, 0)}, 793184610Salfred /* Windows Pocket PC 2003 */ 794184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x044c, 0)}, 795184610Salfred /* Windows Pocket PC 2003 */ 796184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x044d, 0)}, 797184610Salfred /* Windows Pocket PC 2003 */ 798184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x044e, 0)}, 799184610Salfred /* Windows Pocket PC 2003 */ 800184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x044f, 0)}, 801184610Salfred /* Windows Pocket PC 2003 */ 802184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0450, 0)}, 803184610Salfred /* Windows Pocket PC 2003 */ 804184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0451, 0)}, 805184610Salfred /* Windows Pocket PC 2003 */ 806184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0452, 0)}, 807184610Salfred /* Windows Pocket PC 2003 */ 808184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0453, 0)}, 809184610Salfred /* Windows Pocket PC 2003 */ 810184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0454, 0)}, 811184610Salfred /* Windows Pocket PC 2003 */ 812184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0455, 0)}, 813184610Salfred /* Windows Pocket PC 2003 */ 814184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0456, 0)}, 815184610Salfred /* Windows Pocket PC 2003 */ 816184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0457, 0)}, 817184610Salfred /* Windows Pocket PC 2003 */ 818184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0458, 0)}, 819184610Salfred /* Windows Pocket PC 2003 */ 820184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0459, 0)}, 821184610Salfred /* Windows Pocket PC 2003 */ 822184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x045a, 0)}, 823184610Salfred /* Windows Pocket PC 2003 */ 824184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x045b, 0)}, 825184610Salfred /* Windows Pocket PC 2003 */ 826184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x045c, 0)}, 827184610Salfred /* Windows Pocket PC 2003 */ 828184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x045d, 0)}, 829184610Salfred /* Windows Pocket PC 2003 */ 830184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x045e, 0)}, 831184610Salfred /* Windows Pocket PC 2003 */ 832184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x045f, 0)}, 833184610Salfred /* Windows Pocket PC 2003 */ 834184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0460, 0)}, 835184610Salfred /* Windows Pocket PC 2003 */ 836184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0461, 0)}, 837184610Salfred /* Windows Pocket PC 2003 */ 838184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0462, 0)}, 839184610Salfred /* Windows Pocket PC 2003 */ 840184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0463, 0)}, 841184610Salfred /* Windows Pocket PC 2003 */ 842184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0464, 0)}, 843184610Salfred /* Windows Pocket PC 2003 */ 844184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0465, 0)}, 845184610Salfred /* Windows Pocket PC 2003 */ 846184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0466, 0)}, 847184610Salfred /* Windows Pocket PC 2003 */ 848184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0467, 0)}, 849184610Salfred /* Windows Pocket PC 2003 */ 850184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0468, 0)}, 851184610Salfred /* Windows Pocket PC 2003 */ 852184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0469, 0)}, 853184610Salfred /* Windows Pocket PC 2003 */ 854184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x046a, 0)}, 855184610Salfred /* Windows Pocket PC 2003 */ 856184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x046b, 0)}, 857184610Salfred /* Windows Pocket PC 2003 */ 858184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x046c, 0)}, 859184610Salfred /* Windows Pocket PC 2003 */ 860184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x046d, 0)}, 861184610Salfred /* Windows Pocket PC 2003 */ 862184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x046e, 0)}, 863184610Salfred /* Windows Pocket PC 2003 */ 864184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x046f, 0)}, 865184610Salfred /* Windows Pocket PC 2003 */ 866184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0470, 0)}, 867184610Salfred /* Windows Pocket PC 2003 */ 868184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0471, 0)}, 869184610Salfred /* Windows Pocket PC 2003 */ 870184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0472, 0)}, 871184610Salfred /* Windows Pocket PC 2003 */ 872184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0473, 0)}, 873184610Salfred /* Windows Pocket PC 2003 */ 874184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0474, 0)}, 875184610Salfred /* Windows Pocket PC 2003 */ 876184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0475, 0)}, 877184610Salfred /* Windows Pocket PC 2003 */ 878184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0476, 0)}, 879184610Salfred /* Windows Pocket PC 2003 */ 880184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0477, 0)}, 881184610Salfred /* Windows Pocket PC 2003 */ 882184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0478, 0)}, 883184610Salfred /* Windows Pocket PC 2003 */ 884184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x0479, 0)}, 885184610Salfred /* Windows Pocket PC 2003 */ 886184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x047a, 0)}, 887184610Salfred /* Windows Pocket PC 2003 */ 888184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x047b, 0)}, 889184610Salfred /* Windows Smartphone 2002 */ 890184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x04c8, 0)}, 891184610Salfred /* Windows Smartphone 2002 */ 892184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x04c9, 0)}, 893184610Salfred /* Windows Smartphone 2002 */ 894184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x04ca, 0)}, 895184610Salfred /* Windows Smartphone 2002 */ 896184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x04cb, 0)}, 897184610Salfred /* Windows Smartphone 2002 */ 898184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x04cc, 0)}, 899184610Salfred /* Windows Smartphone 2002 */ 900184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x04cd, 0)}, 901184610Salfred /* Windows Smartphone 2002 */ 902184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x04ce, 0)}, 903184610Salfred /* Windows Smartphone 2003 */ 904184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x04d7, 0)}, 905184610Salfred /* Windows Smartphone 2003 */ 906184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x04d8, 0)}, 907184610Salfred /* Windows Smartphone 2003 */ 908184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x04d9, 0)}, 909184610Salfred /* Windows Smartphone 2003 */ 910184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x04da, 0)}, 911184610Salfred /* Windows Smartphone 2003 */ 912184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x04db, 0)}, 913184610Salfred /* Windows Smartphone 2003 */ 914184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x04dc, 0)}, 915184610Salfred /* Windows Smartphone 2003 */ 916184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x04dd, 0)}, 917184610Salfred /* Windows Smartphone 2003 */ 918184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x04de, 0)}, 919184610Salfred /* Windows Smartphone 2003 */ 920184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x04df, 0)}, 921184610Salfred /* Windows Smartphone 2003 */ 922184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x04e0, 0)}, 923184610Salfred /* Windows Smartphone 2003 */ 924184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x04e1, 0)}, 925184610Salfred /* Windows Smartphone 2003 */ 926184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x04e2, 0)}, 927184610Salfred /* Windows Smartphone 2003 */ 928184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x04e3, 0)}, 929184610Salfred /* Windows Smartphone 2003 */ 930184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x04e4, 0)}, 931184610Salfred /* Windows Smartphone 2003 */ 932184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x04e5, 0)}, 933184610Salfred /* Windows Smartphone 2003 */ 934184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x04e6, 0)}, 935184610Salfred /* Windows Smartphone 2003 */ 936184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x04e7, 0)}, 937184610Salfred /* Windows Smartphone 2003 */ 938184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x04e8, 0)}, 939184610Salfred /* Windows Smartphone 2003 */ 940184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x04e9, 0)}, 941184610Salfred /* Windows Smartphone 2003 */ 942184610Salfred {USB_VPI(USB_VENDOR_MICROSOFT, 0x04ea, 0)}, 943184610Salfred /* Motorola MPx200 Smartphone */ 944184610Salfred {USB_VPI(USB_VENDOR_MOTOROLA2, 0x4204, 0)}, 945184610Salfred /* Motorola MPc GSM */ 946184610Salfred {USB_VPI(USB_VENDOR_MOTOROLA2, 0x4214, 0)}, 947184610Salfred /* Motorola MPx220 Smartphone */ 948184610Salfred {USB_VPI(USB_VENDOR_MOTOROLA2, 0x4224, 0)}, 949184610Salfred /* Motorola MPc CDMA */ 950184610Salfred {USB_VPI(USB_VENDOR_MOTOROLA2, 0x4234, 0)}, 951184610Salfred /* Motorola MPx100 Smartphone */ 952184610Salfred {USB_VPI(USB_VENDOR_MOTOROLA2, 0x4244, 0)}, 953184610Salfred /* NEC USB Sync */ 954184610Salfred {USB_VPI(USB_VENDOR_NEC, 0x00d5, 0)}, 955184610Salfred /* NEC USB Sync */ 956184610Salfred {USB_VPI(USB_VENDOR_NEC, 0x00d6, 0)}, 957184610Salfred /* NEC USB Sync */ 958184610Salfred {USB_VPI(USB_VENDOR_NEC, 0x00d7, 0)}, 959184610Salfred /* NEC USB Sync */ 960184610Salfred {USB_VPI(USB_VENDOR_NEC, 0x8024, 0)}, 961184610Salfred /* NEC USB Sync */ 962184610Salfred {USB_VPI(USB_VENDOR_NEC, 0x8025, 0)}, 963184610Salfred /* Panasonic USB Sync */ 964184610Salfred {USB_VPI(USB_VENDOR_PANASONIC, 0x2500, 0)}, 965184610Salfred /* Samsung NEXiO USB Sync */ 966184610Salfred {USB_VPI(USB_VENDOR_SAMSUNG, 0x5f00, 0)}, 967184610Salfred /* Samsung NEXiO USB Sync */ 968184610Salfred {USB_VPI(USB_VENDOR_SAMSUNG, 0x5f01, 0)}, 969184610Salfred /* Samsung NEXiO USB Sync */ 970184610Salfred {USB_VPI(USB_VENDOR_SAMSUNG, 0x5f02, 0)}, 971184610Salfred /* Samsung NEXiO USB Sync */ 972184610Salfred {USB_VPI(USB_VENDOR_SAMSUNG, 0x5f03, 0)}, 973184610Salfred /* Samsung NEXiO USB Sync */ 974184610Salfred {USB_VPI(USB_VENDOR_SAMSUNG, 0x5f04, 0)}, 975184610Salfred /* Samsung MITs USB Sync */ 976184610Salfred {USB_VPI(USB_VENDOR_SAMSUNG, 0x6611, 0)}, 977184610Salfred /* Samsung MITs USB Sync */ 978184610Salfred {USB_VPI(USB_VENDOR_SAMSUNG, 0x6613, 0)}, 979184610Salfred /* Samsung MITs USB Sync */ 980184610Salfred {USB_VPI(USB_VENDOR_SAMSUNG, 0x6615, 0)}, 981184610Salfred /* Samsung MITs USB Sync */ 982184610Salfred {USB_VPI(USB_VENDOR_SAMSUNG, 0x6617, 0)}, 983184610Salfred /* Samsung MITs USB Sync */ 984184610Salfred {USB_VPI(USB_VENDOR_SAMSUNG, 0x6619, 0)}, 985184610Salfred /* Samsung MITs USB Sync */ 986184610Salfred {USB_VPI(USB_VENDOR_SAMSUNG, 0x661b, 0)}, 987184610Salfred /* Samsung MITs USB Sync */ 988184610Salfred {USB_VPI(USB_VENDOR_SAMSUNG, 0x662e, 0)}, 989184610Salfred /* Samsung MITs USB Sync */ 990184610Salfred {USB_VPI(USB_VENDOR_SAMSUNG, 0x6630, 0)}, 991184610Salfred /* Samsung MITs USB Sync */ 992184610Salfred {USB_VPI(USB_VENDOR_SAMSUNG, 0x6632, 0)}, 993184610Salfred /* SHARP WS003SH USB Modem */ 994184610Salfred {USB_VPI(USB_VENDOR_SHARP, 0x9102, 0)}, 995184610Salfred /* SHARP WS004SH USB Modem */ 996184610Salfred {USB_VPI(USB_VENDOR_SHARP, 0x9121, 0)}, 997184610Salfred /* SHARP S01SH USB Modem */ 998184610Salfred {USB_VPI(USB_VENDOR_SHARP, 0x9151, 0)}, 999184610Salfred/**/ 1000184610Salfred {USB_VPI(USB_VENDOR_SHARP, USB_PRODUCT_SHARP_WZERO3ES, 0)}, 1001184610Salfred /* Symbol USB Sync */ 1002184610Salfred {USB_VPI(USB_VENDOR_SYMBOL, 0x2000, 0)}, 1003184610Salfred /* Symbol USB Sync 0x2001 */ 1004184610Salfred {USB_VPI(USB_VENDOR_SYMBOL, 0x2001, 0)}, 1005184610Salfred /* Symbol USB Sync 0x2002 */ 1006184610Salfred {USB_VPI(USB_VENDOR_SYMBOL, 0x2002, 0)}, 1007184610Salfred /* Symbol USB Sync 0x2003 */ 1008184610Salfred {USB_VPI(USB_VENDOR_SYMBOL, 0x2003, 0)}, 1009184610Salfred /* Symbol USB Sync 0x2004 */ 1010184610Salfred {USB_VPI(USB_VENDOR_SYMBOL, 0x2004, 0)}, 1011184610Salfred /* Symbol USB Sync 0x2005 */ 1012184610Salfred {USB_VPI(USB_VENDOR_SYMBOL, 0x2005, 0)}, 1013184610Salfred /* Symbol USB Sync 0x2006 */ 1014184610Salfred {USB_VPI(USB_VENDOR_SYMBOL, 0x2006, 0)}, 1015184610Salfred /* Symbol USB Sync 0x2007 */ 1016184610Salfred {USB_VPI(USB_VENDOR_SYMBOL, 0x2007, 0)}, 1017184610Salfred /* Symbol USB Sync 0x2008 */ 1018184610Salfred {USB_VPI(USB_VENDOR_SYMBOL, 0x2008, 0)}, 1019184610Salfred /* Symbol USB Sync 0x2009 */ 1020184610Salfred {USB_VPI(USB_VENDOR_SYMBOL, 0x2009, 0)}, 1021184610Salfred /* Symbol USB Sync 0x200a */ 1022184610Salfred {USB_VPI(USB_VENDOR_SYMBOL, 0x200a, 0)}, 1023184610Salfred /* TOSHIBA USB Sync 0700 */ 1024184610Salfred {USB_VPI(USB_VENDOR_TOSHIBA, 0x0700, 0)}, 1025184610Salfred /* TOSHIBA Pocket PC e310 */ 1026184610Salfred {USB_VPI(USB_VENDOR_TOSHIBA, 0x0705, 0)}, 1027184610Salfred /* TOSHIBA Pocket PC e330 Series */ 1028184610Salfred {USB_VPI(USB_VENDOR_TOSHIBA, 0x0707, 0)}, 1029184610Salfred /* TOSHIBA Pocket PC e350Series */ 1030184610Salfred {USB_VPI(USB_VENDOR_TOSHIBA, 0x0708, 0)}, 1031184610Salfred /* TOSHIBA Pocket PC e750 Series */ 1032184610Salfred {USB_VPI(USB_VENDOR_TOSHIBA, 0x0709, 0)}, 1033184610Salfred /* TOSHIBA Pocket PC e400 Series */ 1034184610Salfred {USB_VPI(USB_VENDOR_TOSHIBA, 0x070a, 0)}, 1035184610Salfred /* TOSHIBA Pocket PC e800 Series */ 1036184610Salfred {USB_VPI(USB_VENDOR_TOSHIBA, 0x070b, 0)}, 1037184610Salfred /* TOSHIBA Pocket PC e740 */ 1038184610Salfred {USB_VPI(USB_VENDOR_TOSHIBA, USB_PRODUCT_TOSHIBA_POCKETPC_E740, 0)}, 1039184610Salfred /* ViewSonic Color Pocket PC V35 */ 1040184610Salfred {USB_VPI(USB_VENDOR_VIEWSONIC, 0x0ed9, 0)}, 1041184610Salfred /* ViewSonic Color Pocket PC V36 */ 1042184610Salfred {USB_VPI(USB_VENDOR_VIEWSONIC, 0x1527, 0)}, 1043184610Salfred /* ViewSonic Color Pocket PC V37 */ 1044184610Salfred {USB_VPI(USB_VENDOR_VIEWSONIC, 0x1529, 0)}, 1045184610Salfred /* ViewSonic Color Pocket PC V38 */ 1046184610Salfred {USB_VPI(USB_VENDOR_VIEWSONIC, 0x152b, 0)}, 1047184610Salfred /* ViewSonic Pocket PC */ 1048184610Salfred {USB_VPI(USB_VENDOR_VIEWSONIC, 0x152e, 0)}, 1049184610Salfred /* ViewSonic Communicator Pocket PC */ 1050184610Salfred {USB_VPI(USB_VENDOR_VIEWSONIC, 0x1921, 0)}, 1051184610Salfred /* ViewSonic Smartphone */ 1052184610Salfred {USB_VPI(USB_VENDOR_VIEWSONIC, 0x1922, 0)}, 1053184610Salfred /* ViewSonic Pocket PC V30 */ 1054184610Salfred {USB_VPI(USB_VENDOR_VIEWSONIC, 0x1923, 0)}, 1055184610Salfred}; 1056184610Salfred 1057184610Salfredstatic device_method_t uipaq_methods[] = { 1058184610Salfred DEVMETHOD(device_probe, uipaq_probe), 1059184610Salfred DEVMETHOD(device_attach, uipaq_attach), 1060184610Salfred DEVMETHOD(device_detach, uipaq_detach), 1061184610Salfred {0, 0} 1062184610Salfred}; 1063184610Salfred 1064184610Salfredstatic devclass_t uipaq_devclass; 1065184610Salfred 1066184610Salfredstatic driver_t uipaq_driver = { 1067184610Salfred .name = "uipaq", 1068184610Salfred .methods = uipaq_methods, 1069184610Salfred .size = sizeof(struct uipaq_softc), 1070184610Salfred}; 1071184610Salfred 1072189275SthompsaDRIVER_MODULE(uipaq, uhub, uipaq_driver, uipaq_devclass, NULL, 0); 1073188942SthompsaMODULE_DEPEND(uipaq, ucom, 1, 1, 1); 1074188942SthompsaMODULE_DEPEND(uipaq, usb, 1, 1, 1); 1075184610Salfred 1076184610Salfredstatic int 1077184610Salfreduipaq_probe(device_t dev) 1078184610Salfred{ 1079184610Salfred struct usb2_attach_arg *uaa = device_get_ivars(dev); 1080184610Salfred 1081184610Salfred if (uaa->usb2_mode != USB_MODE_HOST) { 1082184610Salfred return (ENXIO); 1083184610Salfred } 1084184610Salfred if (uaa->info.bConfigIndex != UIPAQ_CONFIG_INDEX) { 1085184610Salfred return (ENXIO); 1086184610Salfred } 1087184610Salfred if (uaa->info.bIfaceIndex != UIPAQ_IFACE_INDEX) { 1088184610Salfred return (ENXIO); 1089184610Salfred } 1090184610Salfred return (usb2_lookup_id_by_uaa(uipaq_devs, sizeof(uipaq_devs), uaa)); 1091184610Salfred} 1092184610Salfred 1093184610Salfredstatic int 1094184610Salfreduipaq_attach(device_t dev) 1095184610Salfred{ 1096184610Salfred struct usb2_device_request req; 1097184610Salfred struct usb2_attach_arg *uaa = device_get_ivars(dev); 1098184610Salfred struct uipaq_softc *sc = device_get_softc(dev); 1099184610Salfred int error; 1100184610Salfred uint8_t iface_index; 1101184610Salfred uint8_t i; 1102184610Salfred 1103184610Salfred sc->sc_udev = uaa->device; 1104184610Salfred 1105184610Salfred device_set_usb2_desc(dev); 1106189265Sthompsa mtx_init(&sc->sc_mtx, "uipaq", NULL, MTX_DEF); 1107184610Salfred 1108184610Salfred /* 1109184610Salfred * Send magic bytes, cribbed from Linux ipaq driver that 1110184610Salfred * claims to have sniffed them from Win98. Wait for driver to 1111184610Salfred * become ready on device side? 1112184610Salfred */ 1113184610Salfred req.bmRequestType = UT_WRITE_CLASS_INTERFACE; 1114184610Salfred req.bRequest = UCDC_SET_CONTROL_LINE_STATE; 1115184610Salfred USETW(req.wValue, UCDC_LINE_DTR); 1116184610Salfred USETW(req.wIndex, 0x0); 1117184610Salfred USETW(req.wLength, 0); 1118184610Salfred for (i = 0; i != 64; i++) { 1119184610Salfred error = 1120184610Salfred usb2_do_request_flags(uaa->device, NULL, &req, 1121184610Salfred NULL, 0, NULL, 100); 1122184610Salfred if (error == 0) 1123184610Salfred break; 1124188413Sthompsa usb2_pause_mtx(NULL, hz / 10); 1125184610Salfred } 1126184610Salfred 1127184610Salfred iface_index = UIPAQ_IFACE_INDEX; 1128184610Salfred error = usb2_transfer_setup(uaa->device, &iface_index, 1129187259Sthompsa sc->sc_xfer, uipaq_config_data, 1130189265Sthompsa UIPAQ_N_TRANSFER, sc, &sc->sc_mtx); 1131184610Salfred 1132184610Salfred if (error) { 1133184610Salfred goto detach; 1134184610Salfred } 1135184610Salfred /* clear stall at first run */ 1136189265Sthompsa mtx_lock(&sc->sc_mtx); 1137188413Sthompsa usb2_transfer_set_stall(sc->sc_xfer[UIPAQ_BULK_DT_WR]); 1138188413Sthompsa usb2_transfer_set_stall(sc->sc_xfer[UIPAQ_BULK_DT_RD]); 1139189265Sthompsa mtx_unlock(&sc->sc_mtx); 1140184610Salfred 1141184610Salfred error = usb2_com_attach(&sc->sc_super_ucom, &sc->sc_ucom, 1, sc, 1142189265Sthompsa &uipaq_callback, &sc->sc_mtx); 1143184610Salfred if (error) { 1144184610Salfred goto detach; 1145184610Salfred } 1146184610Salfred return (0); 1147184610Salfred 1148184610Salfreddetach: 1149184610Salfred uipaq_detach(dev); 1150184610Salfred return (ENXIO); 1151184610Salfred} 1152184610Salfred 1153184610Salfredint 1154184610Salfreduipaq_detach(device_t dev) 1155184610Salfred{ 1156184610Salfred struct uipaq_softc *sc = device_get_softc(dev); 1157184610Salfred 1158184610Salfred usb2_com_detach(&sc->sc_super_ucom, &sc->sc_ucom, 1); 1159187259Sthompsa usb2_transfer_unsetup(sc->sc_xfer, UIPAQ_N_TRANSFER); 1160189265Sthompsa mtx_destroy(&sc->sc_mtx); 1161184610Salfred 1162184610Salfred return (0); 1163184610Salfred} 1164184610Salfred 1165184610Salfredstatic void 1166184610Salfreduipaq_start_read(struct usb2_com_softc *ucom) 1167184610Salfred{ 1168184610Salfred struct uipaq_softc *sc = ucom->sc_parent; 1169184610Salfred 1170184610Salfred /* start read endpoint */ 1171187259Sthompsa usb2_transfer_start(sc->sc_xfer[UIPAQ_BULK_DT_RD]); 1172184610Salfred} 1173184610Salfred 1174184610Salfredstatic void 1175184610Salfreduipaq_stop_read(struct usb2_com_softc *ucom) 1176184610Salfred{ 1177184610Salfred struct uipaq_softc *sc = ucom->sc_parent; 1178184610Salfred 1179184610Salfred /* stop read endpoint */ 1180187259Sthompsa usb2_transfer_stop(sc->sc_xfer[UIPAQ_BULK_DT_RD]); 1181184610Salfred} 1182184610Salfred 1183184610Salfredstatic void 1184184610Salfreduipaq_start_write(struct usb2_com_softc *ucom) 1185184610Salfred{ 1186184610Salfred struct uipaq_softc *sc = ucom->sc_parent; 1187184610Salfred 1188187259Sthompsa usb2_transfer_start(sc->sc_xfer[UIPAQ_BULK_DT_WR]); 1189184610Salfred} 1190184610Salfred 1191184610Salfredstatic void 1192184610Salfreduipaq_stop_write(struct usb2_com_softc *ucom) 1193184610Salfred{ 1194184610Salfred struct uipaq_softc *sc = ucom->sc_parent; 1195184610Salfred 1196187259Sthompsa usb2_transfer_stop(sc->sc_xfer[UIPAQ_BULK_DT_WR]); 1197184610Salfred} 1198184610Salfred 1199184610Salfredstatic void 1200184610Salfreduipaq_cfg_set_dtr(struct usb2_com_softc *ucom, uint8_t onoff) 1201184610Salfred{ 1202184610Salfred struct uipaq_softc *sc = ucom->sc_parent; 1203184610Salfred struct usb2_device_request req; 1204184610Salfred 1205184610Salfred DPRINTF("onoff=%d\n", onoff); 1206184610Salfred 1207184610Salfred if (onoff) 1208184610Salfred sc->sc_line |= UCDC_LINE_DTR; 1209184610Salfred else 1210184610Salfred sc->sc_line &= ~UCDC_LINE_DTR; 1211184610Salfred 1212184610Salfred req.bmRequestType = UT_WRITE_CLASS_INTERFACE; 1213184610Salfred req.bRequest = UCDC_SET_CONTROL_LINE_STATE; 1214184610Salfred USETW(req.wValue, sc->sc_line); 1215184610Salfred req.wIndex[0] = UIPAQ_IFACE_INDEX; 1216184610Salfred req.wIndex[1] = 0; 1217184610Salfred USETW(req.wLength, 0); 1218184610Salfred 1219188413Sthompsa usb2_com_cfg_do_request(sc->sc_udev, &sc->sc_ucom, 1220188413Sthompsa &req, NULL, 0, 1000); 1221184610Salfred} 1222184610Salfred 1223184610Salfredstatic void 1224184610Salfreduipaq_cfg_set_rts(struct usb2_com_softc *ucom, uint8_t onoff) 1225184610Salfred{ 1226184610Salfred struct uipaq_softc *sc = ucom->sc_parent; 1227184610Salfred struct usb2_device_request req; 1228184610Salfred 1229184610Salfred DPRINTF("onoff=%d\n", onoff); 1230184610Salfred 1231184610Salfred if (onoff) 1232184610Salfred sc->sc_line |= UCDC_LINE_RTS; 1233184610Salfred else 1234184610Salfred sc->sc_line &= ~UCDC_LINE_RTS; 1235184610Salfred 1236184610Salfred req.bmRequestType = UT_WRITE_CLASS_INTERFACE; 1237184610Salfred req.bRequest = UCDC_SET_CONTROL_LINE_STATE; 1238184610Salfred USETW(req.wValue, sc->sc_line); 1239184610Salfred req.wIndex[0] = UIPAQ_IFACE_INDEX; 1240184610Salfred req.wIndex[1] = 0; 1241184610Salfred USETW(req.wLength, 0); 1242184610Salfred 1243188413Sthompsa usb2_com_cfg_do_request(sc->sc_udev, &sc->sc_ucom, 1244188413Sthompsa &req, NULL, 0, 1000); 1245184610Salfred} 1246184610Salfred 1247184610Salfredstatic void 1248184610Salfreduipaq_cfg_set_break(struct usb2_com_softc *ucom, uint8_t onoff) 1249184610Salfred{ 1250184610Salfred struct uipaq_softc *sc = ucom->sc_parent; 1251184610Salfred struct usb2_device_request req; 1252184610Salfred uint16_t temp; 1253184610Salfred 1254184610Salfred temp = onoff ? UCDC_BREAK_ON : UCDC_BREAK_OFF; 1255184610Salfred 1256184610Salfred req.bmRequestType = UT_WRITE_CLASS_INTERFACE; 1257184610Salfred req.bRequest = UCDC_SEND_BREAK; 1258184610Salfred USETW(req.wValue, temp); 1259184610Salfred req.wIndex[0] = UIPAQ_IFACE_INDEX; 1260184610Salfred req.wIndex[1] = 0; 1261184610Salfred USETW(req.wLength, 0); 1262184610Salfred 1263188413Sthompsa usb2_com_cfg_do_request(sc->sc_udev, &sc->sc_ucom, 1264188413Sthompsa &req, NULL, 0, 1000); 1265184610Salfred} 1266184610Salfred 1267184610Salfredstatic void 1268184610Salfreduipaq_write_callback(struct usb2_xfer *xfer) 1269184610Salfred{ 1270184610Salfred struct uipaq_softc *sc = xfer->priv_sc; 1271184610Salfred uint32_t actlen; 1272184610Salfred 1273184610Salfred switch (USB_GET_STATE(xfer)) { 1274184610Salfred case USB_ST_SETUP: 1275184610Salfred case USB_ST_TRANSFERRED: 1276188413Sthompsatr_setup: 1277184610Salfred if (usb2_com_get_data(&sc->sc_ucom, xfer->frbuffers, 0, 1278184610Salfred UIPAQ_BUF_SIZE, &actlen)) { 1279184610Salfred xfer->frlengths[0] = actlen; 1280184610Salfred usb2_start_hardware(xfer); 1281184610Salfred } 1282184610Salfred return; 1283184610Salfred 1284184610Salfred default: /* Error */ 1285184610Salfred if (xfer->error != USB_ERR_CANCELLED) { 1286188413Sthompsa /* try to clear stall first */ 1287188413Sthompsa xfer->flags.stall_pipe = 1; 1288188413Sthompsa goto tr_setup; 1289184610Salfred } 1290184610Salfred return; 1291184610Salfred } 1292184610Salfred} 1293184610Salfred 1294184610Salfredstatic void 1295184610Salfreduipaq_read_callback(struct usb2_xfer *xfer) 1296184610Salfred{ 1297184610Salfred struct uipaq_softc *sc = xfer->priv_sc; 1298184610Salfred 1299184610Salfred switch (USB_GET_STATE(xfer)) { 1300184610Salfred case USB_ST_TRANSFERRED: 1301184610Salfred usb2_com_put_data(&sc->sc_ucom, xfer->frbuffers, 0, 1302184610Salfred xfer->actlen); 1303184610Salfred 1304184610Salfred case USB_ST_SETUP: 1305188413Sthompsatr_setup: 1306188413Sthompsa xfer->frlengths[0] = xfer->max_data_length; 1307188413Sthompsa usb2_start_hardware(xfer); 1308184610Salfred return; 1309184610Salfred 1310184610Salfred default: /* Error */ 1311184610Salfred if (xfer->error != USB_ERR_CANCELLED) { 1312188413Sthompsa /* try to clear stall first */ 1313188413Sthompsa xfer->flags.stall_pipe = 1; 1314188413Sthompsa goto tr_setup; 1315184610Salfred } 1316184610Salfred return; 1317184610Salfred } 1318184610Salfred} 1319