linux/include/linux/hid.h
<<
>>
Prefs
   1#ifndef __HID_H
   2#define __HID_H
   3
   4/*
   5 *  Copyright (c) 1999 Andreas Gal
   6 *  Copyright (c) 2000-2001 Vojtech Pavlik
   7 *  Copyright (c) 2006-2007 Jiri Kosina
   8 */
   9
  10/*
  11 * This program is free software; you can redistribute it and/or modify
  12 * it under the terms of the GNU General Public License as published by
  13 * the Free Software Foundation; either version 2 of the License, or
  14 * (at your option) any later version.
  15 *
  16 * This program is distributed in the hope that it will be useful,
  17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
  18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  19 * GNU General Public License for more details.
  20 *
  21 * You should have received a copy of the GNU General Public License
  22 * along with this program; if not, write to the Free Software
  23 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
  24 *
  25 * Should you need to contact me, the author, you can do so either by
  26 * e-mail - mail your message to <vojtech@ucw.cz>, or by paper mail:
  27 * Vojtech Pavlik, Simunkova 1594, Prague 8, 182 00 Czech Republic
  28 */
  29
  30/*
  31 * USB HID (Human Interface Device) interface class code
  32 */
  33
  34#define USB_INTERFACE_CLASS_HID         3
  35
  36/*
  37 * USB HID interface subclass and protocol codes
  38 */
  39
  40#define USB_INTERFACE_SUBCLASS_BOOT     1
  41#define USB_INTERFACE_PROTOCOL_KEYBOARD 1
  42#define USB_INTERFACE_PROTOCOL_MOUSE    2
  43
  44/*
  45 * HID class requests
  46 */
  47
  48#define HID_REQ_GET_REPORT              0x01
  49#define HID_REQ_GET_IDLE                0x02
  50#define HID_REQ_GET_PROTOCOL            0x03
  51#define HID_REQ_SET_REPORT              0x09
  52#define HID_REQ_SET_IDLE                0x0A
  53#define HID_REQ_SET_PROTOCOL            0x0B
  54
  55/*
  56 * HID class descriptor types
  57 */
  58
  59#define HID_DT_HID                      (USB_TYPE_CLASS | 0x01)
  60#define HID_DT_REPORT                   (USB_TYPE_CLASS | 0x02)
  61#define HID_DT_PHYSICAL                 (USB_TYPE_CLASS | 0x03)
  62
  63#define HID_MAX_DESCRIPTOR_SIZE         4096
  64
  65#ifdef __KERNEL__
  66
  67#include <linux/types.h>
  68#include <linux/slab.h>
  69#include <linux/list.h>
  70#include <linux/mod_devicetable.h> /* hid_device_id */
  71#include <linux/timer.h>
  72#include <linux/workqueue.h>
  73#include <linux/input.h>
  74#include <linux/semaphore.h>
  75#include <linux/power_supply.h>
  76
  77/*
  78 * We parse each description item into this structure. Short items data
  79 * values are expanded to 32-bit signed int, long items contain a pointer
  80 * into the data area.
  81 */
  82
  83struct hid_item {
  84        unsigned  format;
  85        __u8      size;
  86        __u8      type;
  87        __u8      tag;
  88        union {
  89            __u8   u8;
  90            __s8   s8;
  91            __u16  u16;
  92            __s16  s16;
  93            __u32  u32;
  94            __s32  s32;
  95            __u8  *longdata;
  96        } data;
  97};
  98
  99/*
 100 * HID report item format
 101 */
 102
 103#define HID_ITEM_FORMAT_SHORT   0
 104#define HID_ITEM_FORMAT_LONG    1
 105
 106/*
 107 * Special tag indicating long items
 108 */
 109
 110#define HID_ITEM_TAG_LONG       15
 111
 112/*
 113 * HID report descriptor item type (prefix bit 2,3)
 114 */
 115
 116#define HID_ITEM_TYPE_MAIN              0
 117#define HID_ITEM_TYPE_GLOBAL            1
 118#define HID_ITEM_TYPE_LOCAL             2
 119#define HID_ITEM_TYPE_RESERVED          3
 120
 121/*
 122 * HID report descriptor main item tags
 123 */
 124
 125#define HID_MAIN_ITEM_TAG_INPUT                 8
 126#define HID_MAIN_ITEM_TAG_OUTPUT                9
 127#define HID_MAIN_ITEM_TAG_FEATURE               11
 128#define HID_MAIN_ITEM_TAG_BEGIN_COLLECTION      10
 129#define HID_MAIN_ITEM_TAG_END_COLLECTION        12
 130
 131/*
 132 * HID report descriptor main item contents
 133 */
 134
 135#define HID_MAIN_ITEM_CONSTANT          0x001
 136#define HID_MAIN_ITEM_VARIABLE          0x002
 137#define HID_MAIN_ITEM_RELATIVE          0x004
 138#define HID_MAIN_ITEM_WRAP              0x008
 139#define HID_MAIN_ITEM_NONLINEAR         0x010
 140#define HID_MAIN_ITEM_NO_PREFERRED      0x020
 141#define HID_MAIN_ITEM_NULL_STATE        0x040
 142#define HID_MAIN_ITEM_VOLATILE          0x080
 143#define HID_MAIN_ITEM_BUFFERED_BYTE     0x100
 144
 145/*
 146 * HID report descriptor collection item types
 147 */
 148
 149#define HID_COLLECTION_PHYSICAL         0
 150#define HID_COLLECTION_APPLICATION      1
 151#define HID_COLLECTION_LOGICAL          2
 152
 153/*
 154 * HID report descriptor global item tags
 155 */
 156
 157#define HID_GLOBAL_ITEM_TAG_USAGE_PAGE          0
 158#define HID_GLOBAL_ITEM_TAG_LOGICAL_MINIMUM     1
 159#define HID_GLOBAL_ITEM_TAG_LOGICAL_MAXIMUM     2
 160#define HID_GLOBAL_ITEM_TAG_PHYSICAL_MINIMUM    3
 161#define HID_GLOBAL_ITEM_TAG_PHYSICAL_MAXIMUM    4
 162#define HID_GLOBAL_ITEM_TAG_UNIT_EXPONENT       5
 163#define HID_GLOBAL_ITEM_TAG_UNIT                6
 164#define HID_GLOBAL_ITEM_TAG_REPORT_SIZE         7
 165#define HID_GLOBAL_ITEM_TAG_REPORT_ID           8
 166#define HID_GLOBAL_ITEM_TAG_REPORT_COUNT        9
 167#define HID_GLOBAL_ITEM_TAG_PUSH                10
 168#define HID_GLOBAL_ITEM_TAG_POP                 11
 169
 170/*
 171 * HID report descriptor local item tags
 172 */
 173
 174#define HID_LOCAL_ITEM_TAG_USAGE                0
 175#define HID_LOCAL_ITEM_TAG_USAGE_MINIMUM        1
 176#define HID_LOCAL_ITEM_TAG_USAGE_MAXIMUM        2
 177#define HID_LOCAL_ITEM_TAG_DESIGNATOR_INDEX     3
 178#define HID_LOCAL_ITEM_TAG_DESIGNATOR_MINIMUM   4
 179#define HID_LOCAL_ITEM_TAG_DESIGNATOR_MAXIMUM   5
 180#define HID_LOCAL_ITEM_TAG_STRING_INDEX         7
 181#define HID_LOCAL_ITEM_TAG_STRING_MINIMUM       8
 182#define HID_LOCAL_ITEM_TAG_STRING_MAXIMUM       9
 183#define HID_LOCAL_ITEM_TAG_DELIMITER            10
 184
 185/*
 186 * HID usage tables
 187 */
 188
 189#define HID_USAGE_PAGE          0xffff0000
 190
 191#define HID_UP_UNDEFINED        0x00000000
 192#define HID_UP_GENDESK          0x00010000
 193#define HID_UP_SIMULATION       0x00020000
 194#define HID_UP_GENDEVCTRLS      0x00060000
 195#define HID_UP_KEYBOARD         0x00070000
 196#define HID_UP_LED              0x00080000
 197#define HID_UP_BUTTON           0x00090000
 198#define HID_UP_ORDINAL          0x000a0000
 199#define HID_UP_CONSUMER         0x000c0000
 200#define HID_UP_DIGITIZER        0x000d0000
 201#define HID_UP_PID              0x000f0000
 202#define HID_UP_HPVENDOR         0xff7f0000
 203#define HID_UP_HPVENDOR2        0xff010000
 204#define HID_UP_MSVENDOR         0xff000000
 205#define HID_UP_CUSTOM           0x00ff0000
 206#define HID_UP_LOGIVENDOR       0xffbc0000
 207
 208#define HID_USAGE               0x0000ffff
 209
 210#define HID_GD_POINTER          0x00010001
 211#define HID_GD_MOUSE            0x00010002
 212#define HID_GD_JOYSTICK         0x00010004
 213#define HID_GD_GAMEPAD          0x00010005
 214#define HID_GD_KEYBOARD         0x00010006
 215#define HID_GD_KEYPAD           0x00010007
 216#define HID_GD_MULTIAXIS        0x00010008
 217#define HID_GD_X                0x00010030
 218#define HID_GD_Y                0x00010031
 219#define HID_GD_Z                0x00010032
 220#define HID_GD_RX               0x00010033
 221#define HID_GD_RY               0x00010034
 222#define HID_GD_RZ               0x00010035
 223#define HID_GD_SLIDER           0x00010036
 224#define HID_GD_DIAL             0x00010037
 225#define HID_GD_WHEEL            0x00010038
 226#define HID_GD_HATSWITCH        0x00010039
 227#define HID_GD_BUFFER           0x0001003a
 228#define HID_GD_BYTECOUNT        0x0001003b
 229#define HID_GD_MOTION           0x0001003c
 230#define HID_GD_START            0x0001003d
 231#define HID_GD_SELECT           0x0001003e
 232#define HID_GD_VX               0x00010040
 233#define HID_GD_VY               0x00010041
 234#define HID_GD_VZ               0x00010042
 235#define HID_GD_VBRX             0x00010043
 236#define HID_GD_VBRY             0x00010044
 237#define HID_GD_VBRZ             0x00010045
 238#define HID_GD_VNO              0x00010046
 239#define HID_GD_FEATURE          0x00010047
 240#define HID_GD_UP               0x00010090
 241#define HID_GD_DOWN             0x00010091
 242#define HID_GD_RIGHT            0x00010092
 243#define HID_GD_LEFT             0x00010093
 244
 245#define HID_DC_BATTERYSTRENGTH  0x00060020
 246
 247#define HID_DG_DIGITIZER        0x000d0001
 248#define HID_DG_PEN              0x000d0002
 249#define HID_DG_LIGHTPEN         0x000d0003
 250#define HID_DG_TOUCHSCREEN      0x000d0004
 251#define HID_DG_TOUCHPAD         0x000d0005
 252#define HID_DG_STYLUS           0x000d0020
 253#define HID_DG_PUCK             0x000d0021
 254#define HID_DG_FINGER           0x000d0022
 255#define HID_DG_TIPPRESSURE      0x000d0030
 256#define HID_DG_BARRELPRESSURE   0x000d0031
 257#define HID_DG_INRANGE          0x000d0032
 258#define HID_DG_TOUCH            0x000d0033
 259#define HID_DG_UNTOUCH          0x000d0034
 260#define HID_DG_TAP              0x000d0035
 261#define HID_DG_TABLETFUNCTIONKEY        0x000d0039
 262#define HID_DG_PROGRAMCHANGEKEY 0x000d003a
 263#define HID_DG_INVERT           0x000d003c
 264#define HID_DG_TIPSWITCH        0x000d0042
 265#define HID_DG_TIPSWITCH2       0x000d0043
 266#define HID_DG_BARRELSWITCH     0x000d0044
 267#define HID_DG_ERASER           0x000d0045
 268#define HID_DG_TABLETPICK       0x000d0046
 269/*
 270 * as of May 20, 2009 the usages below are not yet in the official USB spec
 271 * but are being pushed by Microsft as described in their paper "Digitizer
 272 * Drivers for Windows Touch and Pen-Based Computers"
 273 */
 274#define HID_DG_CONFIDENCE       0x000d0047
 275#define HID_DG_WIDTH            0x000d0048
 276#define HID_DG_HEIGHT           0x000d0049
 277#define HID_DG_CONTACTID        0x000d0051
 278#define HID_DG_INPUTMODE        0x000d0052
 279#define HID_DG_DEVICEINDEX      0x000d0053
 280#define HID_DG_CONTACTCOUNT     0x000d0054
 281#define HID_DG_CONTACTMAX       0x000d0055
 282
 283/*
 284 * HID report types --- Ouch! HID spec says 1 2 3!
 285 */
 286
 287#define HID_INPUT_REPORT        0
 288#define HID_OUTPUT_REPORT       1
 289#define HID_FEATURE_REPORT      2
 290
 291/*
 292 * HID connect requests
 293 */
 294
 295#define HID_CONNECT_HIDINPUT            0x01
 296#define HID_CONNECT_HIDINPUT_FORCE      0x02
 297#define HID_CONNECT_HIDRAW              0x04
 298#define HID_CONNECT_HIDDEV              0x08
 299#define HID_CONNECT_HIDDEV_FORCE        0x10
 300#define HID_CONNECT_FF                  0x20
 301#define HID_CONNECT_DEFAULT     (HID_CONNECT_HIDINPUT|HID_CONNECT_HIDRAW| \
 302                HID_CONNECT_HIDDEV|HID_CONNECT_FF)
 303
 304/*
 305 * HID device quirks.
 306 */
 307
 308/* 
 309 * Increase this if you need to configure more HID quirks at module load time
 310 */
 311#define MAX_USBHID_BOOT_QUIRKS 4
 312
 313#define HID_QUIRK_INVERT                        0x00000001
 314#define HID_QUIRK_NOTOUCH                       0x00000002
 315#define HID_QUIRK_IGNORE                        0x00000004
 316#define HID_QUIRK_NOGET                         0x00000008
 317#define HID_QUIRK_HIDDEV_FORCE                  0x00000010
 318#define HID_QUIRK_BADPAD                        0x00000020
 319#define HID_QUIRK_MULTI_INPUT                   0x00000040
 320#define HID_QUIRK_HIDINPUT_FORCE                0x00000080
 321#define HID_QUIRK_SKIP_OUTPUT_REPORTS           0x00010000
 322#define HID_QUIRK_FULLSPEED_INTERVAL            0x10000000
 323#define HID_QUIRK_NO_INIT_REPORTS               0x20000000
 324#define HID_QUIRK_NO_IGNORE                     0x40000000
 325#define HID_QUIRK_NO_INPUT_SYNC                 0x80000000
 326
 327/*
 328 * HID device groups
 329 */
 330#define HID_GROUP_GENERIC                       0x0001
 331#define HID_GROUP_MULTITOUCH                    0x0002
 332
 333/*
 334 * This is the global environment of the parser. This information is
 335 * persistent for main-items. The global environment can be saved and
 336 * restored with PUSH/POP statements.
 337 */
 338
 339struct hid_global {
 340        unsigned usage_page;
 341        __s32    logical_minimum;
 342        __s32    logical_maximum;
 343        __s32    physical_minimum;
 344        __s32    physical_maximum;
 345        __s32    unit_exponent;
 346        unsigned unit;
 347        unsigned report_id;
 348        unsigned report_size;
 349        unsigned report_count;
 350};
 351
 352/*
 353 * This is the local environment. It is persistent up the next main-item.
 354 */
 355
 356#define HID_MAX_USAGES                  12288
 357#define HID_DEFAULT_NUM_COLLECTIONS     16
 358
 359struct hid_local {
 360        unsigned usage[HID_MAX_USAGES]; /* usage array */
 361        unsigned collection_index[HID_MAX_USAGES]; /* collection index array */
 362        unsigned usage_index;
 363        unsigned usage_minimum;
 364        unsigned delimiter_depth;
 365        unsigned delimiter_branch;
 366};
 367
 368/*
 369 * This is the collection stack. We climb up the stack to determine
 370 * application and function of each field.
 371 */
 372
 373struct hid_collection {
 374        unsigned type;
 375        unsigned usage;
 376        unsigned level;
 377};
 378
 379struct hid_usage {
 380        unsigned  hid;                  /* hid usage code */
 381        unsigned  collection_index;     /* index into collection array */
 382        /* hidinput data */
 383        __u16     code;                 /* input driver code */
 384        __u8      type;                 /* input driver type */
 385        __s8      hat_min;              /* hat switch fun */
 386        __s8      hat_max;              /* ditto */
 387        __s8      hat_dir;              /* ditto */
 388};
 389
 390struct hid_input;
 391
 392struct hid_field {
 393        unsigned  physical;             /* physical usage for this field */
 394        unsigned  logical;              /* logical usage for this field */
 395        unsigned  application;          /* application usage for this field */
 396        struct hid_usage *usage;        /* usage table for this function */
 397        unsigned  maxusage;             /* maximum usage index */
 398        unsigned  flags;                /* main-item flags (i.e. volatile,array,constant) */
 399        unsigned  report_offset;        /* bit offset in the report */
 400        unsigned  report_size;          /* size of this field in the report */
 401        unsigned  report_count;         /* number of this field in the report */
 402        unsigned  report_type;          /* (input,output,feature) */
 403        __s32    *value;                /* last known value(s) */
 404        __s32     logical_minimum;
 405        __s32     logical_maximum;
 406        __s32     physical_minimum;
 407        __s32     physical_maximum;
 408        __s32     unit_exponent;
 409        unsigned  unit;
 410        struct hid_report *report;      /* associated report */
 411        unsigned index;                 /* index into report->field[] */
 412        /* hidinput data */
 413        struct hid_input *hidinput;     /* associated input structure */
 414        __u16 dpad;                     /* dpad input code */
 415};
 416
 417#define HID_MAX_FIELDS 128
 418
 419struct hid_report {
 420        struct list_head list;
 421        unsigned id;                                    /* id of this report */
 422        unsigned type;                                  /* report type */
 423        struct hid_field *field[HID_MAX_FIELDS];        /* fields of the report */
 424        unsigned maxfield;                              /* maximum valid field index */
 425        unsigned size;                                  /* size of the report (bits) */
 426        struct hid_device *device;                      /* associated device */
 427};
 428
 429struct hid_report_enum {
 430        unsigned numbered;
 431        struct list_head report_list;
 432        struct hid_report *report_id_hash[256];
 433};
 434
 435#define HID_REPORT_TYPES 3
 436
 437#define HID_MIN_BUFFER_SIZE     64              /* make sure there is at least a packet size of space */
 438#define HID_MAX_BUFFER_SIZE     4096            /* 4kb */
 439#define HID_CONTROL_FIFO_SIZE   256             /* to init devices with >100 reports */
 440#define HID_OUTPUT_FIFO_SIZE    64
 441
 442struct hid_control_fifo {
 443        unsigned char dir;
 444        struct hid_report *report;
 445        char *raw_report;
 446};
 447
 448struct hid_output_fifo {
 449        struct hid_report *report;
 450        char *raw_report;
 451};
 452
 453#define HID_CLAIMED_INPUT       1
 454#define HID_CLAIMED_HIDDEV      2
 455#define HID_CLAIMED_HIDRAW      4
 456
 457#define HID_STAT_ADDED          1
 458#define HID_STAT_PARSED         2
 459
 460struct hid_input {
 461        struct list_head list;
 462        struct hid_report *report;
 463        struct input_dev *input;
 464};
 465
 466enum hid_type {
 467        HID_TYPE_OTHER = 0,
 468        HID_TYPE_USBMOUSE,
 469        HID_TYPE_USBNONE
 470};
 471
 472struct hid_driver;
 473struct hid_ll_driver;
 474
 475struct hid_device {                                                     /* device report descriptor */
 476        __u8 *dev_rdesc;
 477        unsigned dev_rsize;
 478        __u8 *rdesc;
 479        unsigned rsize;
 480        struct hid_collection *collection;                              /* List of HID collections */
 481        unsigned collection_size;                                       /* Number of allocated hid_collections */
 482        unsigned maxcollection;                                         /* Number of parsed collections */
 483        unsigned maxapplication;                                        /* Number of applications */
 484        __u16 bus;                                                      /* BUS ID */
 485        __u16 group;                                                    /* Report group */
 486        __u32 vendor;                                                   /* Vendor ID */
 487        __u32 product;                                                  /* Product ID */
 488        __u32 version;                                                  /* HID version */
 489        enum hid_type type;                                             /* device type (mouse, kbd, ...) */
 490        unsigned country;                                               /* HID country */
 491        struct hid_report_enum report_enum[HID_REPORT_TYPES];
 492
 493        struct semaphore driver_lock;                                   /* protects the current driver */
 494        struct device dev;                                              /* device */
 495        struct hid_driver *driver;
 496        struct hid_ll_driver *ll_driver;
 497
 498#ifdef CONFIG_HID_BATTERY_STRENGTH
 499        /*
 500         * Power supply information for HID devices which report
 501         * battery strength. power_supply is registered iff
 502         * battery.name is non-NULL.
 503         */
 504        struct power_supply battery;
 505        __s32 battery_min;
 506        __s32 battery_max;
 507        __s32 battery_report_type;
 508        __s32 battery_report_id;
 509#endif
 510
 511        unsigned int status;                                            /* see STAT flags above */
 512        unsigned claimed;                                               /* Claimed by hidinput, hiddev? */
 513        unsigned quirks;                                                /* Various quirks the device can pull on us */
 514
 515        struct list_head inputs;                                        /* The list of inputs */
 516        void *hiddev;                                                   /* The hiddev structure */
 517        void *hidraw;
 518        int minor;                                                      /* Hiddev minor number */
 519
 520        int open;                                                       /* is the device open by anyoneons */
__s32 reporto7eSy_rep2ass="sref">reporto7t     clude/ef="include/linux/hid.h#L519" id="L519" class="line" name="L519"> ude/linux/hid.hclass="sref">open;            2id_report"d.hclass=o7t     clude/eport"d.hclass=o7t     clude/eport  ude/linux/hidd.hclass="sref">open;        ref="+codode=mf">hid_type field[ ude/linux/hidd.hclass="sref">open;        uniqu
country;                          5     /* maxi5um va52st_head /* size of 5he re5ort (bits) */device;         5     52STAT_ADDED          1
 440#define hid_device *hi52 Hiddev minor num(/* fields of the f_ireport" class="sre f_irepHidd)(ass="comment">/* associated device */
 431 t  520        int report_list;
<5 href5"include/linux num(/* fields of thet"  idclasnee/linux/hid.h#L48t"  idclasnee/Hidd)(ass="comment">/* associated device */
report_id_ha5h5256];
/* associated device */
/* associated device */
HID_MAX_FIELDS];        /* fields of the report */
53clude/linux/hhhhhhhhhhhhhhhhhhhhhhhhhhhsage table for this function */
/* associated device */
HID_MAX_FIELDS 463        struct)                                 cclass="s5ID_MIN_BUFFER_SIZE" clas5="sre5">HID_MIN_BUFFER_SIZE     64     5        <5pan class="comment">/* m5ke su53"include/linux> 440#define ="L416"(Get_ef">__)="sre,lasode=quirk/a>="line" name="L520"> 520        int /* 45b */<53 Hiddev minor num(/* fields of thea>  get_inux/hid.h#L452" id="L452a>  get_inux/hid.hHidd) (ass="comment">/* associated device */
 479        unsigned,id.h#L509" id="Lx/hi_h#L452" id="L452x/hi_h="inPl  struct /*5to in53                                     ref="incl5de/linux/hid.h#L441" id=5L441"5431"> 431 t  520        int h54include/linux num(/* fields of thet" lass="srinux/hid.h#L452" id="L452a>  ass="srinux/hid.hHidd) (ass="comment">/* associated device */
 479        unsigned,id.h#L509" id="Lx/hi_h#L452" id="L452x/hi_h="inPl  struct        ef="+code=hid_driver" classbugg" g     >__uviaassbugfhiddev;                                 class="s5ef">report;
__uclude/linux/hid.hbugL495" id="L495" cbug;                                    hid.h#L445" id="L446" class="line"5name=54                    __s32 38=cbugne" ;                                    hclass="s5x/hid.h#L448" id="L448" 5lass=54ref="include/linux/hid.h#L497" id="den__s32hi547ef="include/linux/hid.h#L497" id="den__s32/* The list of inputs */
report;
 470};
 472struct ;
satic>
int /* associated device */
/* associref="include/linux/d.h#L51);
/* associref="include/linux/d.h#L51ut daHI5_STAT_ADDED          1
satic>
int /* associateset_drv"sreclude/linux/hidnor set_drv"srespan(ass="comment">/* associated device */
/* associref="include/linux/d.h#L51, = 0,
hi5_inpu55me="L470"> 470};
/* associref="include/linux/d.h#L51ut da 561}                                s="sref">5ist;
report;
 459
 457#define  454#defiOLLECTION id=CKnclude/linux/hid.h#L442"iOLLECTION id=CKnclude="L4ame="L457"> 457#define  hid_t5pe/* device report descriptor axapp"line" name="L497"> axapp"e="L4_OTHER = 0,
sainclude/linux/hidglob" _>saind.h#L459"> 459
 493        struc5e/linux/h5d.h#L469" id="L469" clas5="lin56array,constant) */sain_pt"line" name="L49glob" _>sain_pt"ef="                                 6href="+co#L470" id="L470" class="5ine" 56/linux/hid.h#L450" id="L450" class="linode= id="L395" classL497ode= linux/hid.id.h#L497" id="mde= id="L395" classode= linu                                 clude/lin5x/hid.h#L472" id="L472" 5lass=57 report */
 459
 493        struc5="+code=h5d_driver" class="sref">h5d_dri57the report */
57/linux/hid.h#L463" id="L463" class="lind device */
 435#define h5d_dev5ce {                             5         5             /* device report descriptor      _>__u8 ce */
__u8 e="L4_OTHER = 0,
 477       > 509#endif
 Tode=__s32" class="sD__u8 Todeme="L                                clude/lin58" id="L478" class="line5 name57"include/linux/hid.h#L508" id=lement">/* Report grolemespan>
#L452" id="L452wD__u8 Lent">me="L                                c/linux/h5ef="include/linux/hid.h#5479" 5d="L47}ux/hid.h#L508" id=attribute__nt">/* Report groattribute__span>((x/hid.h#L508" iBUFFE* The list of inBUFFE*span))                                 480" id="5480" class="line" name="5480">57                                     =collecti5n" class="sref">collecti5n581        struct  = 0,
/* Nu7" class="line" name="L477"> 477       > 509#endif
#L452" id="L452bLent">me="L                                         5                /* Numb7" class="line" name="L477"> 477       > 509#endif
 Tode=__s32" class="sD__u8 Todeme="L                                         5                 /* last known value(s) */lement">/* Report grolemespan>
 477       > 509#endif
 477       > 509#endif
 ux/hid.h#L485" idNumD__u8 ume="L                                 _rdesc          1
 493        struc5sion;5                        5     58="L47}ux/hid.h#L508" id=attribute__nt">/* Report groattribute__span>((x/hid.h#L508" iBUFFE* The list of inBUFFE*span))                                 ref">type5/a>;                    5     58                                              5           441DEVICde/linux/hid.h#L442"DEVICdspan( 509#endif
report5enum<5a>[#endif
nclude/linux/hid.h#L486" id=" = ( 509#endif
gL495" id="L495"g509"),c. 509#endif
lude/linux/hid.h#L487" id="L487 = ( 509#endif
v
59/linu name="L459"> 459
DEVICde/linux/hid.h#L442"USB>DEVICdspan( 509#endif
v
driver_lock;  5     5              . 509#endif
#endif
lude/linux/hid.h#L487" id="L487 = ( 509#endif
v
 455#deBLUETOOTH>DEVICde/linux/hid.h#L442"BLUETOOTH>DEVICdspan( 509#endif
v
driver;
#endif
#endif
lude/linux/hid.h#L487" id="L487 = ( 509#endif
v
ll_driver;
          1
 458#define3" clas42=__s32" class="fine3" clas42span( 509#endif
rede/linux/hid.h#LredHidd) \                                 ion;5="include/linux/hid.h#L459" id598linux/hid.h#. 509#endif
href="+code=__s32" class="s32 #endif
rede/linux/hid.h#LredHidd)                                 ef">type5"L500"> 500#endif
clude_he/linux/hid.h#L51ulude_he/href = ( 509#endif
uhe/linux/hid.h#L51uhe/ude/),c. 509#endif
ulude_code=__s32" class="ulude_codehref = ( 509#endif
ucode=__s32" class="u #endif
ulude_cdif=__s32" class="ulude_cdifhref = ( 509#endif
ucdif=__s32" class="ucdifHidd)                               6
1a href=6ium" class="sref">report6L502"6class="line" name="L502"> 50/* we don't wantf="+catchode=cs anlicas=e equalf="+0iddev;                               6h#L503" i6="L503" class="line" nam6="L5060/linu name="L459"> 459
#endif
SE" ANYs42=__s32" class="fineANYs42linux- 1)                               6
3L503" i6=ref">driver_lock;  6truct6battery_6in;
/* HID version */
 448struct 6attery_report_type;
6a hre607ludeode=HID_REPORT_TYPES" clasulude_e/linux/hid.h#L51clasulude_e/e="L4_OTHER = 0,
6a"include/linux/hid.h#L46ef="i6clude/linux/hid.h#L509" id="L50comment">/* HID version */
 448struct 6aL500"> 500 470};
/* HID version */
 448struct  470};
/* HID version */
 448struct  453#define 6ist_hef="+code=power_supply" */linux/hh>        stn for HID devices which reportinputs;            6     6      f="+code=power_supply" */@    :"sref">d    2(e.g. "Foode=h_bar-wheel")stn for HID devices which reportd    (must behref="incd    B" bestn for HID devices which report618" class="line" name="L618"> 618f="+code=power_supply" *////////////="+b id=lled)stn for HID devices which report6        6* Hiddf="+code=power_supply" */@dynn_rep: class="sdynam"+coly addedme="L50 idsstn for HID devices which report6de=open" class="sref">op6n6      f="+code=power_supply" */@dynn_ock:dodek"+code=d" g @dynn_repstn for HID devices which report/6201" class="line" name="L501"*/@B" be: newme="L50 insertE*spn for HID devices which reportreporto6eSy_r62lass="line" name="L502"> 502*/@remsre:8" class="msredf("incdifhret ID ot-plugid=pabl "sref">)stn for HID devices which reporto7t     cl6de/ep62> 503field[n=vss=:difh="sref"in re2 abl ," nne"hooksne"d=lledf("incdmeans"nop)stn for HID devices which report/* maxi6um va62st_hef="+code=power_supply" */@ulude_cabl :"onstrengt=vss=xf="+call =vss=f("incdmeans"+co)stn for HID devices which report/* size of 6he re62     f="+code=power_supply" */@=vss=:difhulude"in ulude_cabl ," nne"hooksne"d=lledf("incdmeans"nop)stn for HID devices which reportdevice;         6     62espanf="+code=power_supply" */@re2fixup:"d=lledfbe   ss="sref">__u8 *axap" g ("incdmeans"nop)stn for HID devices which report6x/hid.h#L429" id="L429" 6lass=628f="+code=power_supply" */@;
6d_report_enum" class="sr6f">hi62 Hiddf="+code=power_supply" */@;
6L430" id="L430" class="l6ne" n62     f="+code=power_supply" */@feaf">hhmapp" g:dinvokedfonsfeaf">h".name is" g/ln for HID devices which reportreport_list;
<6 href63lass="line" name="L502"> 502*/@resu  :"invokedfonsresu  difh" classwashret reset ("incdmeans"nop)stn for HID devices which reportreport_id_ha6h63> 50363st_hef="+code=power_supply" *//a>n=vss=fanli=vss=fshould#return 0fonsno ae/lin permented, 1strensnostn for HID devices which report6pan class="comment">/* m6ke su638f="+code=power_supply" */;
/* 46b */<63 Hiddf="+code=power_supply" */(e.g. doubledf> *invalid"clude), zerof="+cond" uefwith*axap" g ="s nne/ln for HID devices which report6/*6to in63     f="+code=power_supply" */ulude"by genis"cicas= (no specicodhand9" g needed)f> *positef"f="+skip/ln for HID devices which reporth64lass="line" name="L502"> 502*/;
 503report;
;                               6h       <6d_output_fifo" class="sr6f">hi647ludeode=HID_REPORT_TYPES" clase" name="L496"> 496        struc_OTHER = 0,
 496 448struct report;
 47donst#L463" id="L463" class="lind devi_e/linux/hid.h#L51clasd devi_e/e="L4hid.h#L404" id="use,abl linux/hid.h#L51use,abl hrefame="L448"> 448struct status;                        6clude/lin6x/hid.h#L453" id="L453" 6lass=65>[/* The list of inputs */
 448struct /* Numb7" class="line"sp" odek_h#L452" id="L452xp" odek_hspan>
 448struct /* associated device */
/* assoc__uclude/linux/hid__u509",idonst#L463" id="L463" class="lind devi_e/linux/hid.h#L51clasd devi_e/e="L4hid.h#L404" id="uslinux/hid.h#L51usHidd)ame="L448"> 448struct /* associated device */
/* assoc__uclude/linux/hid__u509")ame="L448"> 448struct HI6_STAT_ADDED          1
 47donst#L463" id="L463" class="lins="srefe/linux/hid.h#L51class="srefe/e="L4/* fields of the="2 abl =__s32" class="s32 abl hrefame="L448"> 448struct n=vss==__s32" class="sa>n=vss=Hidd)(ass="comment">/* associated device */
/* associref="include/linux/d.h#L51,HID_MAX_FIELDS 463        struct* fields of the="2 448struct hi6_inpu65me="L470"> 477777777777777777span>
 477/* assoc_sreclude/linux/hid_srespan,e */
 448struct  660e="L470"> 47donst#L463" id="L463" class="linulude_e/linux/hid.h#L51clasulude_e/e="L4dmment">/* assoculude_cabl =__s32" class="ulude_cabl hrefame="L448"> 448struct 6ist;
/* associated device */
/* associref="include/linux/d.h#L51,HID_MAX_FIELDS];        /* fields of the report */
report;
 477777777777777777sage table for this function */
/* assoculude=__s32" class="uludehref,id.h#L509" id="L509" class="line" name="L509"> 509#endif
valueclass="line" navalue509")ame="L448"> 448struct input;
 477       *(/* fields of the="2fixup=__s32" class="s32fixupHidd)(ass="comment">/* associated device */
/* associref="include/linux/d.h#L51,< 477       * 477
hid_t6pe 477777777777777777ags above */<*
 448struct           1
/* associated device */
/* associref="include/linux/d.h#L51,ADDED          1
/* associrks" clce */
HID_MAX_FIELDS];        /* fields of the report */
 477777777777777777sage table for this function */
/* assoculude=__s32" class="uludehref,iags abovelong **__ 448struct /* associated device */
/* associref="include/linux/d.h#L51,ADDED          1
h6d_dri67the report */7777777777777777sage table for this functiu

/* associrks" clce */
HID_MAX_FIELDS];        /* fields of the report */
672e="L470"> 477777777777777777sage table for this function */
/* assoculude=__s32" class="uludehref,iags abovelong **__ 448struct hhmapp" grt */
hhmapp" gHidd)(ass="comment">/* associated device */
/* associref="include/linux/d.h#L51,ADDED          1
h6d_dev67clude/linux/hhhhhhhhhhhhhhhhhss="sref">HID_MAX_FIELDS];        /* fields of the report */
 477777777777777777sage table for this function */
/* assoculude=__s32" class="uludehref)ame="L448"> 448struct 
/* associated device */
/* associref="include/linux/d.h#L51,< 509#endif
mesludeclass="sref">__ 448struct /* associated device */
/* associref="include/linux/d.h#L51)ame="L448"> 448struct 679Hiddev minor num(/* fields of the/eset_resu  =__s32" class="s3set_resu  Hidd)(ass="comment">/* associated device */
/* associref="include/linux/d.h#L51)ame="L448"> 448struct collecti6n681ne" name="L511"> 511        unsig6         6                   50/* private: *dev;                               6         6                 496
 496 448struct  435#define  {                             6         6                        6     68     f="+code=power_supply"/*tion for HID devices which reportdd=llbacke/ln for HID devices which report;6                        6     688f="+code=power_supply" */@start:"d=lledfin p" bff="+start" name="L50/ln for HID devices which reportreport6enum<69lass="line" name="L502"> 502*/@ hru
69> 503driver_lock;  6     69a href="+code=power_supply" */x/hid.h#Lhouldn't =llde=mefany nnng ="+ret leak"memoasstn for HID devices which report;                               6         6ef">driver;
/* device report descriptor ll_e" namce */
_OTHER = 0,
ll_driver;

/* associated device */
/* associref="include/linux/d.h#L51)ame="L448"> 448struct /* associated device */
/* associref="include/linux/d.h#L51)ame="L448"> 448struct  448struct  500/* associated device */
/* associref="include/linux/d.h#L51)ame="L448"> 448struct /* associated device */
/* associref="include/linux/d.h#L51)ame="L448"> 448struct report7L502"70r;
/* associated device */
/* associref="include/linux/d.h#L51,< */
 448struct driver_lock;  7truct7
/* assocu
/* associref="include/linuxud.h#L51,/* assoccode=__s32" class=" driver;
 477777777777777777ags above */<* fields of thecoif=__s32" class="cdifhref,< */
 448struct battery_7ax;
7attery_report_type;
7a hre707ef="include/ num(/* fields of theaxappce */
/* associated device */
/* associref="include/linux/d.h#L51)ame="L448"> 448struct 7a"include/linux/hid.h#L47ef="i7clude/name="L435"> 435#define 7aL500"> 500 441PM_HINT_FULLON="include/linuxPM_HINT_FULLONef="in1<<5                               7e1a href=7          441PM_HINT_NORMAL="include/linuxPM_HINT_NORMALef="in1<<1                               7e#L503" i7          ;                               7 7ist_hef="+code=power_supply"/* Wetegn  ssa fe>="L416"applie=m clasthatsare+ret wud.lyfasode*dev;                               7 5L503" i7>inputs;            7     7      "line" name="L441"> 441IS_INPUT_APPLICATION="include/linuxIS_INPUT_APPLICATION    ( 509#endif
eclude/linux/hida#L51) (((x/hid.h#L508" ieclude/linux/hida#L51 t da= 0x00010000) && ( 509#endif
eclude/linux/hida#L51 tlda= 0x00010008)) || ( 509#endif
eclude/linux/hida#L51 == 0x00010080) || ( 509#endif
eclude/linux/hida#L51 == 0x000c0001) || ((x/hid.h#L508" ieclude/linux/hida#L51 t da= 0x000d0002) && ( 509#endif
eclude/linux/hida#L51 tlda= 0x000d0006)))                               7 battery_7                   1
718" class="line" name="L718"> 718f="+code=power_supply"/* HID c  ssAPIe*dev;                               7 8"sref">7        718linume="L448"> 448struct 7de=open" class="sref">op7n7      extern< */
 448struct /72>status;                        7 1a href=7p2ass="sref">reporto7eSy_r72lass=extern< */

/* associated device */
 448struct o7t     cl7de/ep72> 503extern/* associatedeassoyed device */
/* associated device */
 448struct field[/* maxi7um va72st_heextern< */


/* associated" name="L496"> 496        struc*,                               7tbattery_7ss="comment">/* size of 7he re725e="L470"> 4777777777ass="comment">/* assocmodul =__s32" class="modul struc*,7donst#efhhxhid.h#L404" id="mod_lasse="L496"> 496 448struct device;         7     72STAT_ADDED          1
7x/hid.h#L429" id="L429" 7lass=728f="+code=power_supply"/*/ulssa line" nto aint <       #efhinnng ="+get THIS_MODULE &sfriendse*dev;                               7t8"sref">7d_report_enum" class="sr7f">hi72 Hidd"line" name="L441"> 441he/_.name is_e" namce */
 4967L430" id="L430" class="l7ne" n72me="L470"> 470};

 496 496 496report_list;
<7 href731 503extern/* associateun.name is_e" namce */
/* associated" name="L496"> 496        struc*)ame="L448"> 448struct report_id_ha7h73maphore /* associatu
  =vss=ce */
  =vss=    (ass="comment">/* associated device */
HID_MAX_FIELDS];        /,HID_MAX_FIELDS
 448struct 734 hreextern/* associatu
=vss=ce */
=vss=    (ass="comment">/* associated device */
/* associatce */
HID_MAX_FIELDS 463        struct* fields of the="2 448struct 
/* associated device */
/* associatce */

 448struct /* associatu
/* associated device */
 448struct 7pan class="comment">/* m7ke su738me="L448"> 448struct 7pan class="comment">/* 47b */<73 Hidd */
];        ];     (ass="comment">/* associatea>];        /, 448struct 7/*7to in73      */
/* associated device */
/* assoccode=__s32" class=" 
 477 448struct 
];        ];     (ass="comment">/* associated device */
/* associatce */
/* associatea>];        //* fields of the report */
 448struct h74lass=ss="sref">HID_MAX_FIELDS];        /* fields of theassu
];        ];     (ass="comment">/* associated device */
/* associatce */
 448struct  503ags above */<* fields of the hru
/* associated device */
/* associatce */
 448struct /* associateout/* associatee" name="L463"> 463        struct* fields of the="2 477       * 448struct report;

/* associat_=llde=meed device */
 448struct /* device report descriptor e" name="L463"> 463        struct* fields of thehe/_.name is_e" name="L463"> 463    ame is_e" nam    (ass="comment">/* associated device */
/* assocd device */
/* associr="include/linuxudspan)ame="L448"> 448struct 
 463  pxapp_e" nam    (ass="comment">/* associated device */
/* associatce */
 477       */* assoc"izice */
 448struct hi747lude */
/* associated device */
/* assocd device */
 448struct 7L449" id="L449" class="l7ne" n74 Hidd */
/* associated device */
/* associatce */
 448struct 7ef">report;

/* associated device */
/* associatce */
 448struct statint /* associatedisdonnee/linux/hid.h#L48 hredisdonnee/    (ass="comment">/* associated device */
/* associatce */
 448struct [/* associated device */
/* associref="include/linux/d.h#L51,ADDED          1
 47777777777777777777777777777777777donst#L463" id="L463" class="lind devi_e/linux/hid.h#L51clasd devi_e/e="L4hid.h#L404" id="uslinux/hid.h#L51usHidd)ame="L448"> 448struct HI75espanf="+code=power_supply" *stn for HID devices which reportf="+code=power_supply" */@ hru
7ux/hid.h#L459" id="L459"7class75 Hiddf="+code=power_supply" */@ulude:hulude"to fille *stn for HID devices which report7d_input" class="sref">hi7_inpu75     f="+code=power_supply" */@bit: po */erf="+om)stn for HID devices which report 7601" class="line" name="L501"*/@max:smaximal valid"clude-t da id=f="+considis la/erf(out+axaef"t">)stn for HID devices which report;
 502*/@ report;
 503input;
;                               7a"include7x/hid.h#L466" id="L466" 7lass=76cludeodaticomment">/* assocu
6" id=nux/hid.h#L51u
6" ie="L4int /* associatemapncludelinux/hid.h#L51clasmapnclude/lin(ass="comment">/* associateu

/* associrks" clce */
hid_t7pe 4777777777sage table for this function */
/* assoculude=__s32" class="uludehref,iags abovelong **__ 4777777777 477       mment">/* assoccode=__s32" class=" 
 = 0,
/* assocu
/* associ" clce */

/* associ" clce */
 448struct  470};
/* assoccode=__s32" class="  448struct h7d_dri77the report */0};
/* assoccoif=__s32" class="cdifhref/=<* fields of thedclude/linux/hiddspaname="L448"> 448struct 77maphore h7d_dev77clude/linux/hcas name="L441"> 441EV_ABS=__s32" class="EV_ABSlude:OTHER = 0,
 4777777777*
/* assocabsbitort" class="sreabsbitspaname="L448"> 448struct ;
 4777777777*____ABS_MAXspaname="L448"> 448struct  448struct  441EV_REL=__s32" class="EV_RELlude:OTHER = 0,
77me="L470"> 4777777777*
/* assocrelbitort" class="srerelbitspaname="L448"> 448struct collecti7n780e="L470"> 4777777777*____REL_MAXspaname="L448"> 448struct  448struct  441EV_KEY=__s32" class="EV_KEYlude:OTHER = 0,
 4777777777*
/* assockeybitort" class="srekeybitspaname="L448"> 448struct ____KEY_MAXspaname="L448"> 448struct  4777777777breakame="L448"> 448struct  441EV_LED=__s32" class="EV_LEDlude:OTHER = 0,

/* assocledbitort" class="sreledbitspaname="L448"> 448struct ____LED_MAXspaname="L448"> 448struct ;                    7     78me="L470"> 4777777777breakame="L448"> 448struct  47}me="L448"> 448struct report7enum<79lass=}me="L448"> 448struct 79maphore driver_lock;  7     79a href="+code=power_supply"/*tion for HID devices which reportdriver;
ll_driver;
f="+code=power_supply" */bitef(@bit)lude/linux/hid.h#L504" id="L504" class=7="+code=h7="include/linux/hid.h#L479" id79 Hiddf="+code=power_supply" *dev;                               7=href="+c7"L500"> 500/* assocu
6" id=nux/hid.h#L51u
6" ie="L4int /* associatemapnclude_clearlinux/hid.h#L51clasmapnclude_clear/lin(ass="comment">/* associateu

/* associrks" clce */
 4777777777sage table for this function */
/* assoculude=__s32" class="uludehref,iags abovelong **__report8L502"80the report */77777777 477       mment">/* assoccode=__s32" class=" 
driver_lock;  8truct803e="L470"> 47mment">/* associatemapncludelinux/hid.h#L51clasmapnclude/lin(mment">/* associrks" clce */
};
__/* assoccode=__s32" class=" 
 448struct 
/* assocdclude/linux/hiddspan,/* 448struct driver;
 448struct battery_8ax;
8attery_report_type;
8a hre808f="+code=power_supply"/**ion for HID devices which report8a"include/linux/hid.h#L48ef="i80 Hiddf="+code=power_supply" */a>  pxapp -spxapp HW s328aL500"> 500 502*/ln for HID devices which reportfixup willebffd=lledf(if non-NULL)faf/erfreadnng raw/s328ist_hef="+code=power_supply"n*/e="L50 bef  ssp=ponng itsto  hrmlaye  f  frealspxapnnglude/linux/hid.h#L504" id="L504" class=8 5L503" i8>inputs;            8     81     f="+code=power_supply" *dev;                               8 battery_8         /* assocu
6" id=nux/hid.h#L51u
6" ie="L4 */

/* associated device */
/* associref="include/linux/d.h#L51)                               8 ="sref">818" class="line" name="L818"> 817ef="_OTHER = 0,
8        81array,constanreturn
/* associref="include/linux/d.h#L51)ame="L448"> 448struct 8de=open" class="sref">op8n8      }me="L448"> 448struct /82>status;                        8 1a href=8p2ass="sref">reporto8eSy_r82lass="line" name="L502"> 50/**/ln for HID devices which reporto7t     cl8de/ep82> 503field[/* maxi8um va82st_hef="+code=power_supply"n*/@/d.h:  hrme="L50/ln for HID devices which report/* size of 8he re82     f="+code=power_supply" */@donnee/_masn: trengtoutdevice;         8     82espanf="+code=power_supply" *stn for HID devices which report8x/hid.h#L429" id="L429" 8lass=828f="+code=power_supply"n*/Call+ nne"in p" bfffuncm cl *af/er*/a>  pxapp. Tnne"willesetup HW buffere/ln for HID devices which report8d_report_enum" class="sr8f">hi82 Hiddf="+code=power_supply" */anlistart" name="L50f(if not linferedf="+e="L50foncl). ass=hw_stop must be/ln for HID devices which report8L430" id="L430" class="l8ne" n82     f="+code=power_supply" */d=lledfif  nne"was successfullude/linux/hid.h#L504" id="L504" class=8id.h#L4318 id="L431" class="line" 8ame="8301" class="line" name="L501"*dev;                               8t" class=8sref">report_list;
<8 href831TAT_odaticomment">/* assocu
6" id=nux/hid.h#L51u
6" ie="L4 */

/* associated device */
/* associref="include/linux/d.h#L51,                               8t"d.hclas8lass="sref">report_id_ha8h832e="L470"> 4777777777ags above */<* fields of thedonnee/_masnclude/linux/hiddonnee/_masnspan)                               8t3L503" i8x/hid.h#L435" id="L435" 8lass=83a hre_OTHER = 0,
83/linux/hid.h# nummment">/* assocretort" class="srere lude/=<* fields of the ref="include/linux/d.h#L51-t damment">/* assocll_e" namce */
/* assocstartce */
/* associref="include/linux/d.h#L51)ame="L448"> 448struct  47if (mment">/* assocretort" class="srere lude/|| !* fields of thedonnee/_masnclude/linux/hiddonnee/_masnspan)                               8tbattery_8ID_MIN_BUFFER_SIZE" clas8="sre836e="L470"> 4777777777return
 448struct 8pan class="comment">/* m8ke su837ef="include/mment">/* assocretort" class="srere lude/=<* fields of the hredonnee/linux/hid.h#L48 hredonnee/    (mment">/* associref="include/linux/d.h#L51,<* fields of thedonnee/_masnclude/linux/hiddonnee/_masnspan)ame="L448"> 448struct 8pan class="comment">/* 48b */<838e="L470"> 47if (mment">/* assocretort" class="srere lude)                               8t9"sref">8/*8to in83me="L470"> 4777777777* fields of the ref="include/linux/d.h#L51-t damment">/* assocll_e" namce */
/* assocstopce */
/* associref="include/linux/d.h#L51)ame="L448"> 448struct  47return
 448struct h84lass=}me="L448"> 448struct  report;
hi848f="+code=power_supply"n*/ln for HID devices which report8L449" id="L449" class="l8ne" n84 Hiddf="+code=power_supply" */Tnne"ne"clu=lly/d=lledffrot s3msreffuncm cl or"frot p" bffwhen someth" gHin for HID devices which report8ef">report;
;                               8clude/lin8x/hid.h#L453" id="L453" 8lass=851TAT_odaticomment">/* assocu
6" id=nux/hid.h#L51u
6" ie="L4int /* associatehw_stop       /* associated device */
/* associref="include/linux/d.h#L51)                               8hinux/hid8ID_CLAIMED_INPUT" class=8sref"852Hidd_OTHER = 0,
 47mment">/* associatedisdonnee/linux/hid.h#L48 hredisdonnee/    (mment">/* associref="include/linux/d.h#L51)ame="L448"> 448struct 
/* assocll_e" namce */
/* assocstopce */
/* associref="include/linux/d.h#L51)ame="L448"> 448struct  448struct HI85STAT_ADDED          1
f="+code=power_supply"/*tion for HID devices which report8ux/hid.h#L459" id="L459"8class85 Hiddf="+code=power_supply" */ass=hw_oncl -+signal underlaynng HWf="+start"del namnng =vss=e/ln for HID devices which report8d_input" class="sref">hi8_inpu85     f="+code=power_supply" */ln for HID devices which report 8601" class="line" name="L501"*/@/d.h:  hrme="L50/ln for HID devices which report;
 502*/ln for HID devices which reportreport;
 503input;
hid_t8pe;                               8aclass="s8class="line" name="L467"8 467<86STAT_odaticomment">/* assocu
6" id=nux/hid.h#L51u
6" ie="L4 */

/* associated device */
/* associref="include/linux/d.h#L51)                               86lude/lin8h#L468" id="L468" class=8line"867ef="_OTHER = 0,
/* assocll_e" namce */
/* associncl="include/linuxincluddd(mment">/* associref="include/linux/d.h#L51)ame="L448"> 448struct  448struct status;                        8="+code=h8d_driver" class="sref">h8d_dri87lass="line" name="L502"> 50/**/ln for HID devices which report87> 503h8d_dev87st_hef="+code=power_supply"n*/@/d.h:  hrme="L50/ln for HID devices which report;
87     f="+code=power_supply" *dev;                               8=collecti8n" class="sref">collecti8n880e="Lodaticomment">/* assocu
6" id=nux/hid.h#L51u
6" ie="L4int /* associatehw_close="include/linuxiatehw_closeuddd(ass="comment">/* associated device */
/* associref="include/linux/d.h#L51)                               8="+code=h8                   = 0,

/* assocll_e" namce */
/* assocclose="include/linuxcloseuddd(mment">/* associref="include/linux/d.h#L51)ame="L448"> 448struct  448struct  448struct ;                    8     88     f="+code=power_supply" */@l=vsl:srequestovepower l=vsl (onefof %PM_HINT_* line" s)stn for HID devices which reportreport8enum<89lass="line" name="L502"> 502*/Tnne"funcm cl requests underlynng hardware+="+en/erfrequestovepowerstn for HID devices which report89> 503driver_lock;  8     89a href="+code=power_supply" *dev;                               8 "+code=h8                        8     89cludeme="L448"> 448struct driver;
/* assocu
6" id=nux/hid.h#L51u
6" ie="L4 */
/* associated device */
/* associref="include/linux/d.h#L51,4 */

ll_driver;
 = 0,
/* assocll_e" namce */
/* assocpower="include/linuxpowerstdd ?
/* assocll_e" namce */
/* assocpower="include/linuxpowerstdd(mment">/* associref="include/linux/d.h#L51,<* fields of thel=vslce */
 448struct  448struct  500
raw>=vss=ce */
raw>=vss=stdd(ass="comment">/* associated device */
/* associatce */
/* assoccode=__s32" class=" 
 477
/* assoc"izice */
report9L502"90the report */77777777 *//* assoc */erruplce */
 448struct driver_lock;  9truct90a hreextern< */
 448struct /* associategeneric_exitort" class="sre hregeneric_exitstdd(int )ame="L448"> 448struct driver;
 448struct ll_driver;                               9s="sref">9attery_report_type;
9a hre908fpan>


 448struct 9a"include/linux/hid.h#L49ef="i90 Hidd */
 448struct 9aL500"> 500/* assocusb hrequirks_exitort" class="sreusb hrequirks_exitstdd(int )ame="L448"> 448struct /* assocusb hreset_letux/hid.h#L485" iusb hreset_letustdd(ass="comment">/* associated device */
/* associatce */
 448struct  448struct /* assocCONFIG_HID_PID=__s32" class="CONFIG_HID_PIDass=me="L448"> 448struct 
/* associated device */
/* associatce */
 448struct 9ist_he#elseme="L448"> 448struct inputs;            9     91     #line" 
 448struct  448struct 918" class="line" name="L918"> 918me="L448"> 448struct 9        91array#line" 

/* assocformatort" class="sreformathref,7span>
 448struct 9de=open" class="sref">op9n9      do {eport */777777777777777777777777777777777777777777777777777777777777\me="L448"> 448struct /920e="L470"> 47if (mment">/* assoc href=bugort" class="sre href=bug#L51) 7777777777777777777777777777777777777777777777777\me="L448"> 448struct reporto9eSy_r92the report */77777777/* assocKERN_DEBUGclass="line" naKERN_DEBUGstdd"%s: "ev;7 448struct o7t     cl9de/ep92> 503} trele (0)                               9t3L503" i9>field[/* maxi9um va92st_he#line" 
/* assocl=vslce */

 448struct /* size of 9he re925e="L470"> 47/span>
/* assocl=vslce */
/* assoc hrce */
/* assocref="include/linuxd.h#L51,<* fields of thefmtort" class="srefmthref,7##arg)me="L448"> 448struct device;         9     92espan#line" 
/* associatce */
 448struct 9x/hid.h#L429" id="L429" 9lass=927ef="include/mment">/* assocdeveemergort" class="sredeveemergstdd(&(mment">/* assoc hrce */
/* assocref="include/linuxd.h#L51,<* fields of thefmtort" class="srefmthref,7##arg)me="L448"> 448struct 9d_report_enum" class="sr9f">hi92array#line" 
/* associatce */
 448struct 9L430" id="L430" class="l9ne" n929ef="include/mment">/* assocdevecritort" class="sredevecritstdd(&(mment">/* assoc hrce */
/* assocref="include/linuxd.h#L51,<* fields of thefmtort" class="srefmthref,7##arg)me="L448"> 448struct 
/* associatce */
 448struct report_list;
<9 href93the report */0};
/* assoc hrce */
/* assocref="include/linuxd.h#L51,<* fields of thefmtort" class="srefmthref,7##arg)me="L448"> 448struct report_id_ha9h932e="L#line" 
/* associatce */
 448struct  47mment">/* assocdeveerr="include/linuxdeveerrstdd(&(mment">/* assoc hrce */
/* assocref="include/linuxd.h#L51,<* fields of thefmtort" class="srefmthref,7##arg)me="L448"> 448struct 93st_he#line" 

/* associatce */
 448struct  47/span>

/* assoc hrce */
/* assocref="include/linuxd.h#L51,<* fields of thefmtort" class="srefmthref,7##arg)me="L448"> 448struct 
/* associatce */
 448struct 9pan class="comment">/* m9ke su937ef="include/mment">/* assocdevewarl       /* assoc hrce */
/* assocref="include/linuxd.h#L51,<* fields of thefmtort" class="srefmthref,7##arg)me="L448"> 448struct 9pan class="comment">/* 49b */<93array#line" 
/* associatce */
 448struct 9/*9to in939ef="include/mment">/* assocdeveinfo       /* assoc hrce */
/* assocref="include/linuxd.h#L51,<* fields of thefmtort" class="srefmthref,7##arg)me="L448"> 448struct 
/* associatce */
 448struct h94the report */0};
/* assoc hrce */
/* assocref="include/linuxd.h#L51,<* fields of thefmtort" class="srefmthref,7##arg)me="L448"> 448struct  ;                               9rreport;
 448struct  448struct           1
hi948f/pre>f/div>


f/div>


Tnamoriginal LXR software+by  namDDED http://sourcef  ge.net/projects/lxr">LXR r_suunityhref,7 nne"experiupplal vers cl by DDED mailto:lxr@ 1
lxr@ 1


lxr. 1
 http://www.redpill- 1
pro.no">Redpill L1
pro AShref,7providerfof L1