PERFORCE change 159091 for review
Hans Petter Selasky
hselasky at FreeBSD.org
Wed Mar 11 15:22:44 PDT 2009
http://perforce.freebsd.org/chv.cgi?CH=159091
Change 159091 by hselasky at hselasky_laptop001 on 2009/03/11 22:21:41
USB CORE: Be less strict on the last HID item usage.
Reported by: Andrey Chernov
Affected files ...
.. //depot/projects/usb/src/sys/dev/usb/usb_hid.c#23 edit
Differences ...
==== //depot/projects/usb/src/sys/dev/usb/usb_hid.c#23 (text+ko) ====
@@ -68,6 +68,7 @@
struct hid_item cur[MAXPUSH];
int32_t usages_min[MAXUSAGE];
int32_t usages_max[MAXUSAGE];
+ int32_t usage_last; /* last seen usage */
uint32_t loc_size; /* last seen size */
uint32_t loc_count; /* last seen count */
uint8_t kindset; /* we have 5 kinds so 8 bits are enough */
@@ -183,15 +184,21 @@
top:
/* check if there is an array of items */
- if ((s->icount != s->ncount) &&
- (s->iusage != s->nusage)) {
- dval = s->usages_min[s->iusage] + s->ousage;
- c->usage = dval;
- if (dval == s->usages_max[s->iusage]) {
- s->iusage ++;
- s->ousage = 0;
+ if (s->icount < s->ncount) {
+ /* get current usage */
+ if (s->iusage < s->nusage) {
+ dval = s->usages_min[s->iusage] + s->ousage;
+ c->usage = dval;
+ s->usage_last = dval;
+ if (dval == s->usages_max[s->iusage]) {
+ s->iusage ++;
+ s->ousage = 0;
+ } else {
+ s->ousage ++;
+ }
} else {
- s->ousage ++;
+ DPRINTFN(1, "Using last usage\n");
+ dval = s->usage_last;
}
s->icount ++;
/*
@@ -290,14 +297,9 @@
} else {
s->ncount = 1;
}
- /* make sure we have a usage */
- if (s->nusage == 0) {
- DPRINTFN(1, "Using default usage\n");
- /* use the undefined HID PAGE */
- s->usages_min[s->nusage] = 0x0000;
- s->usages_max[s->nusage] = 0xFFFF;
- s->nusage = s->ncount;
- }
+ /* set default usage */
+ /* use the undefined HID PAGE */
+ s->usage_last = 0;
goto top;
case 9: /* Output */
More information about the p4-projects
mailing list