1*692d834dSPengcheng Chen - Sun Microsystems - Beijing China /* 2*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * Copyright 2010 Sun Microsystems, Inc. All rights reserved. 3*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * Use is subject to license terms. 4*692d834dSPengcheng Chen - Sun Microsystems - Beijing China */ 5*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 6*692d834dSPengcheng Chen - Sun Microsystems - Beijing China /* 7*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * Copyright (c) 2007, 2008 Bartosz Fabianowski <freebsd@chillt.de> 8*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * All rights reserved. 9*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * 10*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * Financed by the "Irish Research Council for Science, Engineering and 11*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * Technology: funded by the National Development Plan" 12*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * 13*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * Redistribution and use in source and binary forms, with or without 14*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * modification, are permitted provided that the following conditions 15*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * are met: 16*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * 1. Redistributions of source code must retain the above copyright 17*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * notice, this list of conditions, and the following disclaimer. 18*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * 2. Redistributions in binary form must reproduce the above copyright 19*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * notice, this list of conditions and the following disclaimer in the 20*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * documentation and/or other materials provided with the distribution. 21*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * 22*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 23*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 24*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 25*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE FOR 26*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 27*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 28*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 29*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 30*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 31*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 32*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * SUCH DAMAGE. 33*692d834dSPengcheng Chen - Sun Microsystems - Beijing China */ 34*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 35*692d834dSPengcheng Chen - Sun Microsystems - Beijing China /* 36*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * Copyright (c) 1998 The NetBSD Foundation, Inc. 37*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * All rights reserved. 38*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * 39*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * This code is derived from software contributed to The NetBSD Foundation 40*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * by Lennart Augustsson (lennart@augustsson.net) at 41*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * Carlstedt Research & Technology. 42*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * 43*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * Redistribution and use in source and binary forms, with or without 44*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * modification, are permitted provided that the following conditions 45*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * are met: 46*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * 1. Redistributions of source code must retain the above copyright 47*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * notice, this list of conditions and the following disclaimer. 48*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * 2. Redistributions in binary form must reproduce the above copyright 49*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * notice, this list of conditions and the following disclaimer in the 50*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * documentation and/or other materials provided with the distribution. 51*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * 3. All advertising materials mentioning features or use of this software 52*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * must display the following acknowledgement: 53*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * This product includes software developed by the NetBSD 54*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * Foundation, Inc. and its contributors. 55*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * 4. Neither the name of The NetBSD Foundation nor the names of its 56*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * contributors may be used to endorse or promote products derived 57*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * from this software without specific prior written permission. 58*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * 59*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS 60*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED 61*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 62*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS 63*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 64*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 65*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 66*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 67*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 68*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 69*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * POSSIBILITY OF SUCH DAMAGE. 70*692d834dSPengcheng Chen - Sun Microsystems - Beijing China */ 71*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 72*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #ifndef _SYS_USB_USBWCM_H 73*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define _SYS_USB_USBWCM_H 74*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 75*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #ifdef __cplusplus 76*692d834dSPengcheng Chen - Sun Microsystems - Beijing China extern "C" { 77*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #endif 78*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 79*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #include <sys/ioccom.h> 80*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #if defined(_LP64) || defined(_I32LPx) 81*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #include <sys/types32.h> 82*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #else 83*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #include <sys/types.h> 84*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #endif 85*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #include <sys/time.h> 86*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 87*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define EVTIOCGVERSION _IOR('E', 0x1, int) 88*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define EVTIOCGDEVID _IOR('E', 0x2, struct event_dev_id) 89*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define EVTIOCGBM(i, s) _IORN('E', 0x20 + (i), (s)) 90*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define EVTIOCGABS(i) _IOR('E', 0x40 + (i), struct event_abs_axis) 91*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define EVTIOC ('E' << 8) 92*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 93*692d834dSPengcheng Chen - Sun Microsystems - Beijing China struct event_dev_id { 94*692d834dSPengcheng Chen - Sun Microsystems - Beijing China uint16_t bus; 95*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define ID_BUS_USB 3 96*692d834dSPengcheng Chen - Sun Microsystems - Beijing China uint16_t vendor; 97*692d834dSPengcheng Chen - Sun Microsystems - Beijing China uint16_t product; 98*692d834dSPengcheng Chen - Sun Microsystems - Beijing China uint16_t version; 99*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }; 100*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 101*692d834dSPengcheng Chen - Sun Microsystems - Beijing China struct event_abs_axis { 102*692d834dSPengcheng Chen - Sun Microsystems - Beijing China int32_t value; 103*692d834dSPengcheng Chen - Sun Microsystems - Beijing China int32_t min; 104*692d834dSPengcheng Chen - Sun Microsystems - Beijing China int32_t max; 105*692d834dSPengcheng Chen - Sun Microsystems - Beijing China int32_t fuzz; 106*692d834dSPengcheng Chen - Sun Microsystems - Beijing China int32_t flat; 107*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }; 108*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 109*692d834dSPengcheng Chen - Sun Microsystems - Beijing China struct event_input { 110*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #if defined(_LP64) || defined(_I32LPx) 111*692d834dSPengcheng Chen - Sun Microsystems - Beijing China struct timeval32 time; 112*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #else 113*692d834dSPengcheng Chen - Sun Microsystems - Beijing China struct timeval time; 114*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #endif 115*692d834dSPengcheng Chen - Sun Microsystems - Beijing China uint16_t type; 116*692d834dSPengcheng Chen - Sun Microsystems - Beijing China uint16_t code; 117*692d834dSPengcheng Chen - Sun Microsystems - Beijing China int32_t value; 118*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }; 119*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 120*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define EVT_SYN 0x0000 121*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define EVT_BTN 0x0001 122*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define EVT_REL 0x0002 123*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define EVT_ABS 0x0003 124*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define EVT_MSC 0x0004 125*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define EVT_USED 0x0005 126*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define EVT_MAX 0x001f 127*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 128*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define SYN_REPORT 0x0000 129*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 130*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define BTN_MISC_0 0x0100 131*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define BTN_MISC_1 0x0101 132*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define BTN_MISC_2 0x0102 133*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define BTN_MISC_3 0x0103 134*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define BTN_MISC_4 0x0104 135*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define BTN_MISC_5 0x0105 136*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define BTN_MISC_6 0x0106 137*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define BTN_MISC_7 0x0107 138*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define BTN_MISC_8 0x0108 139*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 140*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define BTN_LEFT 0x0110 141*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define BTN_RIGHT 0x0111 142*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define BTN_MIDDLE 0x0112 143*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define BTN_SIDE 0x0113 144*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define BTN_EXTRA 0x0114 145*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define BTN_TOOL_PEN 0x0140 146*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define BTN_TOOL_ERASER 0x0141 147*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define BTN_TOOL_PAD 0x0145 148*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define BTN_TOOL_MOUSE 0x0146 149*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define BTN_TIP 0x014a 150*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define BTN_STYLUS_1 0x014b 151*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define BTN_STYLUS_2 0x014c 152*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define BTN_USED 0x014d 153*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define BTN_MISC_UND 0x01ff 154*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define BTN_MAX 0x01ff 155*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 156*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define REL_WHEEL 0x0008 157*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define REL_MAX 0x000f 158*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 159*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define ABS_X 0x0000 160*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define ABS_Y 0x0001 161*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define ABS_Z 0x0002 162*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define ABS_RX 0x0003 163*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define ABS_RY 0x0004 164*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define ABS_RZ 0x0005 165*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 166*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define ABS_WHEEL 0x0008 167*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define ABS_PRESSURE 0x0018 168*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define ABS_DISTANCE 0x0019 169*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define ABS_TILT_X 0x001a 170*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define ABS_TILT_Y 0x001b 171*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define ABS_MISC 0x0028 172*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define ABS_USED 0x0029 173*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define ABS_MAX 0x003f 174*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 175*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define MSC_SERIAL 0x0000 176*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define MSC_MAX 0x0007 177*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 178*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #ifdef _KERNEL 179*692d834dSPengcheng Chen - Sun Microsystems - Beijing China /* USB IDs */ 180*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define USB_VENDOR_WACOM 0x056a 181*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 182*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define USB_PRODUCT_WACOM_GRAPHIRE 0x0010 183*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define USB_PRODUCT_WACOM_GRAPHIRE2_4X5 0x0011 184*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define USB_PRODUCT_WACOM_GRAPHIRE2_5X7 0x0012 185*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define USB_PRODUCT_WACOM_GRAPHIRE3_4X5 0x0013 186*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define USB_PRODUCT_WACOM_GRAPHIRE3_6X8 0x0014 187*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define USB_PRODUCT_WACOM_GRAPHIRE4_4X5 0x0015 188*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define USB_PRODUCT_WACOM_GRAPHIRE4_6X8 0x0016 189*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define USB_PRODUCT_WACOM_BAMBOO_FUN_4X5 0x0017 190*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define USB_PRODUCT_WACOM_BAMBOO_FUN_6X8 0x0018 191*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define USB_PRODUCT_WACOM_BAMBOO_ONE_6X8 0x0019 192*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define USB_PRODUCT_WACOM_CINTIQ_21UX 0x003f 193*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define USB_PRODUCT_WACOM_VOLITO 0x0060 194*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define USB_PRODUCT_WACOM_PENSTATION2 0x0061 195*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define USB_PRODUCT_WACOM_VOLITO2_4X5 0x0062 196*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define USB_PRODUCT_WACOM_VOLITO2_2X3 0x0063 197*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define USB_PRODUCT_WACOM_PENPARTNER2 0x0064 198*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define USB_PRODUCT_WACOM_BAMBOO 0x0065 199*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define USB_PRODUCT_WACOM_BAMBOO_ONE_4X5 0x0069 200*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define USB_PRODUCT_WACOM_INTUOS3_4X5 0x00b0 201*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define USB_PRODUCT_WACOM_INTUOS3_6X8 0x00b1 202*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define USB_PRODUCT_WACOM_INTUOS3_9X12 0x00b2 203*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define USB_PRODUCT_WACOM_INTUOS3_12X12 0x00b3 204*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define USB_PRODUCT_WACOM_INTUOS3_12X19 0x00b4 205*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define USB_PRODUCT_WACOM_INTUOS3_6X11 0x00b5 206*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define USB_PRODUCT_WACOM_INTUOS3_4X6 0x00b7 207*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 208*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define USB_PRODUCT_WACOM_INTUOS4_4X6 0x00b8 209*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define USB_PRODUCT_WACOM_INTUOS4_6X9 0x00b9 210*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define USB_PRODUCT_WACOM_INTUOS4_8X13 0x00ba 211*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define USB_PRODUCT_WACOM_INTUOS4_12X19 0x00bb 212*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 213*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define TOOL_ID_PEN 0x0002 214*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define TOOL_ID_MOUSE 0x0006 215*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define TOOL_ID_ERASER 0x000a 216*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define TOOL_ID_PAD 0x000f 217*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 218*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define SERIAL_PAD_INTUOS 0xffffffff 219*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define SERIAL_PAD_GRAPHIRE4 0x000000f0 220*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 221*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define EUWACOMGETVERSION 0x01 222*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define EUWACOMGETID 0x02 223*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define EUWACOMGETBM 0x20 224*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define EUWACOMGETABS 0x40 225*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 226*692d834dSPengcheng Chen - Sun Microsystems - Beijing China /* Protocols */ 227*692d834dSPengcheng Chen - Sun Microsystems - Beijing China struct uwacom_protocol_type { 228*692d834dSPengcheng Chen - Sun Microsystems - Beijing China int packet_size; 229*692d834dSPengcheng Chen - Sun Microsystems - Beijing China int distance_max; 230*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }; 231*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 232*692d834dSPengcheng Chen - Sun Microsystems - Beijing China enum uwacom_protocol { 233*692d834dSPengcheng Chen - Sun Microsystems - Beijing China /* Graphire family */ 234*692d834dSPengcheng Chen - Sun Microsystems - Beijing China GRAPHIRE = 0, 235*692d834dSPengcheng Chen - Sun Microsystems - Beijing China GRAPHIRE4, 236*692d834dSPengcheng Chen - Sun Microsystems - Beijing China MYOFFICE, 237*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 238*692d834dSPengcheng Chen - Sun Microsystems - Beijing China /* Intuos family */ 239*692d834dSPengcheng Chen - Sun Microsystems - Beijing China INTUOS3S, 240*692d834dSPengcheng Chen - Sun Microsystems - Beijing China INTUOS3L, 241*692d834dSPengcheng Chen - Sun Microsystems - Beijing China INTUOS4S, 242*692d834dSPengcheng Chen - Sun Microsystems - Beijing China INTUOS4L, 243*692d834dSPengcheng Chen - Sun Microsystems - Beijing China CINTIQ 244*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }; 245*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 246*692d834dSPengcheng Chen - Sun Microsystems - Beijing China struct uwacom_id { 247*692d834dSPengcheng Chen - Sun Microsystems - Beijing China uint16_t vid; 248*692d834dSPengcheng Chen - Sun Microsystems - Beijing China uint16_t pid; 249*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }; 250*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 251*692d834dSPengcheng Chen - Sun Microsystems - Beijing China /* Models */ 252*692d834dSPengcheng Chen - Sun Microsystems - Beijing China struct uwacom_type { 253*692d834dSPengcheng Chen - Sun Microsystems - Beijing China struct uwacom_id devno; 254*692d834dSPengcheng Chen - Sun Microsystems - Beijing China enum uwacom_protocol protocol; 255*692d834dSPengcheng Chen - Sun Microsystems - Beijing China int x_max; 256*692d834dSPengcheng Chen - Sun Microsystems - Beijing China int y_max; 257*692d834dSPengcheng Chen - Sun Microsystems - Beijing China int pressure_max; 258*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }; 259*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 260*692d834dSPengcheng Chen - Sun Microsystems - Beijing China static const struct uwacom_protocol_type uwacom_protocols[] = { 261*692d834dSPengcheng Chen - Sun Microsystems - Beijing China { 8, 63}, 262*692d834dSPengcheng Chen - Sun Microsystems - Beijing China { 8, 63}, 263*692d834dSPengcheng Chen - Sun Microsystems - Beijing China { 9, 63}, 264*692d834dSPengcheng Chen - Sun Microsystems - Beijing China {10, 63}, 265*692d834dSPengcheng Chen - Sun Microsystems - Beijing China {10, 63}, 266*692d834dSPengcheng Chen - Sun Microsystems - Beijing China {10, 63}, 267*692d834dSPengcheng Chen - Sun Microsystems - Beijing China {10, 63}, 268*692d834dSPengcheng Chen - Sun Microsystems - Beijing China {10, 63} 269*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }; 270*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 271*692d834dSPengcheng Chen - Sun Microsystems - Beijing China struct uwacom_softc { 272*692d834dSPengcheng Chen - Sun Microsystems - Beijing China const struct uwacom_type *sc_type; 273*692d834dSPengcheng Chen - Sun Microsystems - Beijing China struct event_dev_id sc_id; 274*692d834dSPengcheng Chen - Sun Microsystems - Beijing China unsigned long *sc_bm[EVT_USED]; 275*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 276*692d834dSPengcheng Chen - Sun Microsystems - Beijing China int *sc_btn; 277*692d834dSPengcheng Chen - Sun Microsystems - Beijing China struct event_abs_axis *sc_abs; 278*692d834dSPengcheng Chen - Sun Microsystems - Beijing China int sc_tool[2]; 279*692d834dSPengcheng Chen - Sun Microsystems - Beijing China int sc_tool_id[2]; 280*692d834dSPengcheng Chen - Sun Microsystems - Beijing China unsigned int sc_serial[2]; 281*692d834dSPengcheng Chen - Sun Microsystems - Beijing China int sc_sync; 282*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }; 283*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 284*692d834dSPengcheng Chen - Sun Microsystems - Beijing China typedef struct usbwcm_state { 285*692d834dSPengcheng Chen - Sun Microsystems - Beijing China queue_t *usbwcm_rq; /* pointer to read queue */ 286*692d834dSPengcheng Chen - Sun Microsystems - Beijing China queue_t *usbwcm_wq; /* pointer to write queue */ 287*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 288*692d834dSPengcheng Chen - Sun Microsystems - Beijing China int32_t usbwcm_flags; /* open/qwait status */ 289*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define USBWCM_OPEN 0x00000001 /* opened for business */ 290*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define USBWCM_QWAIT 0x00000002 /* waiting for a response */ 291*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 292*692d834dSPengcheng Chen - Sun Microsystems - Beijing China /* software state */ 293*692d834dSPengcheng Chen - Sun Microsystems - Beijing China struct uwacom_softc usbwcm_softc; 294*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 295*692d834dSPengcheng Chen - Sun Microsystems - Beijing China /* device model data */ 296*692d834dSPengcheng Chen - Sun Microsystems - Beijing China hid_vid_pid_t usbwcm_devid; 297*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 298*692d834dSPengcheng Chen - Sun Microsystems - Beijing China /* 299*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * Is an ioctl fails because an mblk wasn't 300*692d834dSPengcheng Chen - Sun Microsystems - Beijing China * available, the mlbk is saved here. 301*692d834dSPengcheng Chen - Sun Microsystems - Beijing China */ 302*692d834dSPengcheng Chen - Sun Microsystems - Beijing China mblk_t *usbwcm_mioctl; 303*692d834dSPengcheng Chen - Sun Microsystems - Beijing China bufcall_id_t usbwcm_bufcall; /* id returned by bufcall() */ 304*692d834dSPengcheng Chen - Sun Microsystems - Beijing China } usbwcm_state_t; 305*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 306*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define abs(x) ((x) < 0 ? -(x) : (x)) 307*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 308*692d834dSPengcheng Chen - Sun Microsystems - Beijing China typedef struct usbwcm_copyin_s { 309*692d834dSPengcheng Chen - Sun Microsystems - Beijing China caddr_t addr; 310*692d834dSPengcheng Chen - Sun Microsystems - Beijing China int state; 311*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define USBWCM_GETSTRUCT 1 312*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define USBWCM_GETRESULT 2 313*692d834dSPengcheng Chen - Sun Microsystems - Beijing China } usbwcm_copyin_t; 314*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 315*692d834dSPengcheng Chen - Sun Microsystems - Beijing China static const struct uwacom_type uwacom_devs[] = { 316*692d834dSPengcheng Chen - Sun Microsystems - Beijing China { 317*692d834dSPengcheng Chen - Sun Microsystems - Beijing China {USB_VENDOR_WACOM, USB_PRODUCT_WACOM_GRAPHIRE}, 318*692d834dSPengcheng Chen - Sun Microsystems - Beijing China GRAPHIRE, 10206, 7422, 511 319*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }, 320*692d834dSPengcheng Chen - Sun Microsystems - Beijing China { 321*692d834dSPengcheng Chen - Sun Microsystems - Beijing China {USB_VENDOR_WACOM, USB_PRODUCT_WACOM_GRAPHIRE2_4X5}, 322*692d834dSPengcheng Chen - Sun Microsystems - Beijing China GRAPHIRE, 10206, 7422, 511 323*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }, 324*692d834dSPengcheng Chen - Sun Microsystems - Beijing China { 325*692d834dSPengcheng Chen - Sun Microsystems - Beijing China {USB_VENDOR_WACOM, USB_PRODUCT_WACOM_GRAPHIRE2_5X7}, 326*692d834dSPengcheng Chen - Sun Microsystems - Beijing China GRAPHIRE, 13918, 10206, 511 327*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }, 328*692d834dSPengcheng Chen - Sun Microsystems - Beijing China { 329*692d834dSPengcheng Chen - Sun Microsystems - Beijing China {USB_VENDOR_WACOM, USB_PRODUCT_WACOM_GRAPHIRE3_4X5}, 330*692d834dSPengcheng Chen - Sun Microsystems - Beijing China GRAPHIRE, 10208, 7424, 511 331*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }, 332*692d834dSPengcheng Chen - Sun Microsystems - Beijing China { 333*692d834dSPengcheng Chen - Sun Microsystems - Beijing China {USB_VENDOR_WACOM, USB_PRODUCT_WACOM_GRAPHIRE3_6X8}, 334*692d834dSPengcheng Chen - Sun Microsystems - Beijing China GRAPHIRE, 16704, 12064, 511 335*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }, 336*692d834dSPengcheng Chen - Sun Microsystems - Beijing China { 337*692d834dSPengcheng Chen - Sun Microsystems - Beijing China {USB_VENDOR_WACOM, USB_PRODUCT_WACOM_GRAPHIRE4_4X5}, 338*692d834dSPengcheng Chen - Sun Microsystems - Beijing China GRAPHIRE4, 10208, 7424, 511 339*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }, 340*692d834dSPengcheng Chen - Sun Microsystems - Beijing China { 341*692d834dSPengcheng Chen - Sun Microsystems - Beijing China {USB_VENDOR_WACOM, USB_PRODUCT_WACOM_GRAPHIRE4_6X8}, 342*692d834dSPengcheng Chen - Sun Microsystems - Beijing China GRAPHIRE4, 16704, 12064, 511 343*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }, 344*692d834dSPengcheng Chen - Sun Microsystems - Beijing China { 345*692d834dSPengcheng Chen - Sun Microsystems - Beijing China {USB_VENDOR_WACOM, USB_PRODUCT_WACOM_BAMBOO_FUN_4X5}, 346*692d834dSPengcheng Chen - Sun Microsystems - Beijing China MYOFFICE, 14760, 9225, 511 347*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }, 348*692d834dSPengcheng Chen - Sun Microsystems - Beijing China { 349*692d834dSPengcheng Chen - Sun Microsystems - Beijing China {USB_VENDOR_WACOM, USB_PRODUCT_WACOM_BAMBOO_FUN_6X8}, 350*692d834dSPengcheng Chen - Sun Microsystems - Beijing China MYOFFICE, 21648, 13530, 511 351*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }, 352*692d834dSPengcheng Chen - Sun Microsystems - Beijing China { 353*692d834dSPengcheng Chen - Sun Microsystems - Beijing China {USB_VENDOR_WACOM, USB_PRODUCT_WACOM_BAMBOO_ONE_6X8}, 354*692d834dSPengcheng Chen - Sun Microsystems - Beijing China GRAPHIRE, 16704, 12064, 511 355*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }, 356*692d834dSPengcheng Chen - Sun Microsystems - Beijing China { 357*692d834dSPengcheng Chen - Sun Microsystems - Beijing China {USB_VENDOR_WACOM, USB_PRODUCT_WACOM_CINTIQ_21UX}, 358*692d834dSPengcheng Chen - Sun Microsystems - Beijing China CINTIQ, 87200, 65600, 1023 359*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }, 360*692d834dSPengcheng Chen - Sun Microsystems - Beijing China { 361*692d834dSPengcheng Chen - Sun Microsystems - Beijing China {USB_VENDOR_WACOM, USB_PRODUCT_WACOM_VOLITO}, 362*692d834dSPengcheng Chen - Sun Microsystems - Beijing China GRAPHIRE, 5104, 3712, 511 363*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }, 364*692d834dSPengcheng Chen - Sun Microsystems - Beijing China { 365*692d834dSPengcheng Chen - Sun Microsystems - Beijing China {USB_VENDOR_WACOM, USB_PRODUCT_WACOM_PENSTATION2}, 366*692d834dSPengcheng Chen - Sun Microsystems - Beijing China GRAPHIRE, 3250, 2320, 255 367*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }, 368*692d834dSPengcheng Chen - Sun Microsystems - Beijing China { 369*692d834dSPengcheng Chen - Sun Microsystems - Beijing China {USB_VENDOR_WACOM, USB_PRODUCT_WACOM_VOLITO2_4X5}, 370*692d834dSPengcheng Chen - Sun Microsystems - Beijing China GRAPHIRE, 5104, 3712, 511 371*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }, 372*692d834dSPengcheng Chen - Sun Microsystems - Beijing China { 373*692d834dSPengcheng Chen - Sun Microsystems - Beijing China {USB_VENDOR_WACOM, USB_PRODUCT_WACOM_VOLITO2_2X3}, 374*692d834dSPengcheng Chen - Sun Microsystems - Beijing China GRAPHIRE, 3248, 2320, 511 375*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }, 376*692d834dSPengcheng Chen - Sun Microsystems - Beijing China { 377*692d834dSPengcheng Chen - Sun Microsystems - Beijing China {USB_VENDOR_WACOM, USB_PRODUCT_WACOM_PENPARTNER2}, 378*692d834dSPengcheng Chen - Sun Microsystems - Beijing China GRAPHIRE, 3250, 2320, 511 379*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }, 380*692d834dSPengcheng Chen - Sun Microsystems - Beijing China { 381*692d834dSPengcheng Chen - Sun Microsystems - Beijing China {USB_VENDOR_WACOM, USB_PRODUCT_WACOM_BAMBOO}, 382*692d834dSPengcheng Chen - Sun Microsystems - Beijing China MYOFFICE, 14760, 9225, 511 383*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }, 384*692d834dSPengcheng Chen - Sun Microsystems - Beijing China { 385*692d834dSPengcheng Chen - Sun Microsystems - Beijing China {USB_VENDOR_WACOM, USB_PRODUCT_WACOM_BAMBOO_ONE_4X5}, 386*692d834dSPengcheng Chen - Sun Microsystems - Beijing China GRAPHIRE, 5104, 3712, 511 387*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }, 388*692d834dSPengcheng Chen - Sun Microsystems - Beijing China { 389*692d834dSPengcheng Chen - Sun Microsystems - Beijing China {USB_VENDOR_WACOM, USB_PRODUCT_WACOM_INTUOS3_4X5}, 390*692d834dSPengcheng Chen - Sun Microsystems - Beijing China INTUOS3S, 25400, 20320, 1023 391*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }, 392*692d834dSPengcheng Chen - Sun Microsystems - Beijing China { 393*692d834dSPengcheng Chen - Sun Microsystems - Beijing China {USB_VENDOR_WACOM, USB_PRODUCT_WACOM_INTUOS3_6X8}, 394*692d834dSPengcheng Chen - Sun Microsystems - Beijing China INTUOS3L, 40640, 30480, 1023 395*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }, 396*692d834dSPengcheng Chen - Sun Microsystems - Beijing China { 397*692d834dSPengcheng Chen - Sun Microsystems - Beijing China {USB_VENDOR_WACOM, USB_PRODUCT_WACOM_INTUOS3_9X12}, 398*692d834dSPengcheng Chen - Sun Microsystems - Beijing China INTUOS3L, 60960, 45720, 1023 399*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }, 400*692d834dSPengcheng Chen - Sun Microsystems - Beijing China { 401*692d834dSPengcheng Chen - Sun Microsystems - Beijing China {USB_VENDOR_WACOM, USB_PRODUCT_WACOM_INTUOS3_12X12}, 402*692d834dSPengcheng Chen - Sun Microsystems - Beijing China INTUOS3L, 60960, 60960, 1023 403*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }, 404*692d834dSPengcheng Chen - Sun Microsystems - Beijing China { 405*692d834dSPengcheng Chen - Sun Microsystems - Beijing China {USB_VENDOR_WACOM, USB_PRODUCT_WACOM_INTUOS3_12X19}, 406*692d834dSPengcheng Chen - Sun Microsystems - Beijing China INTUOS3L, 97536, 60960, 1023 407*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }, 408*692d834dSPengcheng Chen - Sun Microsystems - Beijing China { 409*692d834dSPengcheng Chen - Sun Microsystems - Beijing China {USB_VENDOR_WACOM, USB_PRODUCT_WACOM_INTUOS3_6X11}, 410*692d834dSPengcheng Chen - Sun Microsystems - Beijing China INTUOS3L, 54204, 31750, 1023 411*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }, 412*692d834dSPengcheng Chen - Sun Microsystems - Beijing China { 413*692d834dSPengcheng Chen - Sun Microsystems - Beijing China {USB_VENDOR_WACOM, USB_PRODUCT_WACOM_INTUOS3_4X6}, 414*692d834dSPengcheng Chen - Sun Microsystems - Beijing China INTUOS3S, 31496, 19685, 1023 415*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }, 416*692d834dSPengcheng Chen - Sun Microsystems - Beijing China { 417*692d834dSPengcheng Chen - Sun Microsystems - Beijing China {USB_VENDOR_WACOM, USB_PRODUCT_WACOM_INTUOS4_4X6}, 418*692d834dSPengcheng Chen - Sun Microsystems - Beijing China INTUOS4S, 31496, 19685, 2047 419*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }, 420*692d834dSPengcheng Chen - Sun Microsystems - Beijing China { 421*692d834dSPengcheng Chen - Sun Microsystems - Beijing China {USB_VENDOR_WACOM, USB_PRODUCT_WACOM_INTUOS4_6X9}, 422*692d834dSPengcheng Chen - Sun Microsystems - Beijing China INTUOS4L, 44704, 27940, 2047 423*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }, 424*692d834dSPengcheng Chen - Sun Microsystems - Beijing China { 425*692d834dSPengcheng Chen - Sun Microsystems - Beijing China {USB_VENDOR_WACOM, USB_PRODUCT_WACOM_INTUOS4_8X13}, 426*692d834dSPengcheng Chen - Sun Microsystems - Beijing China INTUOS4L, 65024, 40640, 2047 427*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }, 428*692d834dSPengcheng Chen - Sun Microsystems - Beijing China { 429*692d834dSPengcheng Chen - Sun Microsystems - Beijing China {USB_VENDOR_WACOM, USB_PRODUCT_WACOM_INTUOS4_12X19}, 430*692d834dSPengcheng Chen - Sun Microsystems - Beijing China INTUOS4L, 97536, 60960, 2047 431*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }, 432*692d834dSPengcheng Chen - Sun Microsystems - Beijing China {{0, 0}, 0, 0, 0, 0} 433*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }; 434*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 435*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define PACKET_BIT(b, s) ((packet[b] >> (s)) & 1) 436*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define PACKET_BITS(b, s, n) \ 437*692d834dSPengcheng Chen - Sun Microsystems - Beijing China ((((s) + (n) > 32 ? ((packet[(b) - 4]) << (32 - (s))) : 0) | \ 438*692d834dSPengcheng Chen - Sun Microsystems - Beijing China ((s) + (n) > 24 ? ((packet[(b) - 3]) << (24 - (s))) : 0) | \ 439*692d834dSPengcheng Chen - Sun Microsystems - Beijing China ((s) + (n) > 16 ? ((packet[(b) - 2]) << (16 - (s))) : 0) | \ 440*692d834dSPengcheng Chen - Sun Microsystems - Beijing China ((s) + (n) > 8 ? ((packet[(b) - 1]) << (8 - (s))) : 0) | \ 441*692d834dSPengcheng Chen - Sun Microsystems - Beijing China ((packet[(b)]) >> (s))) & \ 442*692d834dSPengcheng Chen - Sun Microsystems - Beijing China ((n) == 32 ? 0xffffffff : (1 << (n)) - 1)) 443*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 444*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define BM_SIZE(x) \ 445*692d834dSPengcheng Chen - Sun Microsystems - Beijing China (((x) / (sizeof (long) * 8) + 1) * sizeof (long)) 446*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define BM_SET_BIT(x, y) \ 447*692d834dSPengcheng Chen - Sun Microsystems - Beijing China ((x)[(y) / (sizeof (long) * 8)] |= (1ul << ((y) % (sizeof (long) * 8)))) 448*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 449*692d834dSPengcheng Chen - Sun Microsystems - Beijing China static const size_t bm_size[EVT_USED] = { 450*692d834dSPengcheng Chen - Sun Microsystems - Beijing China BM_SIZE(EVT_MAX), 451*692d834dSPengcheng Chen - Sun Microsystems - Beijing China BM_SIZE(BTN_MAX), 452*692d834dSPengcheng Chen - Sun Microsystems - Beijing China BM_SIZE(REL_MAX), 453*692d834dSPengcheng Chen - Sun Microsystems - Beijing China BM_SIZE(ABS_MAX), 454*692d834dSPengcheng Chen - Sun Microsystems - Beijing China BM_SIZE(MSC_MAX), 455*692d834dSPengcheng Chen - Sun Microsystems - Beijing China }; 456*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 457*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #define PRINT_MASK_ALL 0xFFFFFFFF 458*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 459*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #endif /* _KERNEL */ 460*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 461*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #ifdef __cplusplus 462*692d834dSPengcheng Chen - Sun Microsystems - Beijing China } 463*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #endif 464*692d834dSPengcheng Chen - Sun Microsystems - Beijing China 465*692d834dSPengcheng Chen - Sun Microsystems - Beijing China #endif /* _SYS_USB_USBWCM_H */ 466