Lines Matching refs:item
296 static u32 item_udata(struct hid_item *item) in item_udata() argument
298 switch (item->size) { in item_udata()
299 case 1: return item->data.u8; in item_udata()
300 case 2: return item->data.u16; in item_udata()
301 case 4: return item->data.u32; in item_udata()
306 static s32 item_sdata(struct hid_item *item) in item_sdata() argument
308 switch (item->size) { in item_sdata()
309 case 1: return item->data.s8; in item_sdata()
310 case 2: return item->data.s16; in item_sdata()
311 case 4: return item->data.s32; in item_sdata()
320 static int hid_parser_global(struct hid_parser *parser, struct hid_item *item) in hid_parser_global() argument
323 switch (item->tag) { in hid_parser_global()
347 parser->global.usage_page = item_udata(item); in hid_parser_global()
351 parser->global.logical_minimum = item_sdata(item); in hid_parser_global()
356 parser->global.logical_maximum = item_sdata(item); in hid_parser_global()
358 parser->global.logical_maximum = item_udata(item); in hid_parser_global()
362 parser->global.physical_minimum = item_sdata(item); in hid_parser_global()
367 parser->global.physical_maximum = item_sdata(item); in hid_parser_global()
369 parser->global.physical_maximum = item_udata(item); in hid_parser_global()
377 raw_value = item_sdata(item); in hid_parser_global()
385 parser->global.unit = item_udata(item); in hid_parser_global()
389 parser->global.report_size = item_udata(item); in hid_parser_global()
398 parser->global.report_count = item_udata(item); in hid_parser_global()
407 parser->global.report_id = item_udata(item); in hid_parser_global()
417 hid_err(parser->device, "unknown global tag 0x%x\n", item->tag); in hid_parser_global()
426 static int hid_parser_local(struct hid_parser *parser, struct hid_item *item) in hid_parser_local() argument
432 data = item_udata(item); in hid_parser_local()
434 switch (item->tag) { in hid_parser_local()
466 if (item->size <= 2) in hid_parser_local()
478 if (item->size <= 2) in hid_parser_local()
491 if (item->size <= 2) in hid_parser_local()
521 dbg_hid("unknown local item tag 0x%x\n", item->tag); in hid_parser_local()
531 static int hid_parser_main(struct hid_parser *parser, struct hid_item *item) in hid_parser_main() argument
536 data = item_udata(item); in hid_parser_main()
538 switch (item->tag) { in hid_parser_main()
555 hid_err(parser->device, "unknown main item tag 0x%x\n", item->tag); in hid_parser_main()
568 static int hid_parser_reserved(struct hid_parser *parser, struct hid_item *item) in hid_parser_reserved() argument
570 dbg_hid("reserved item type, tag 0x%x\n", item->tag); in hid_parser_reserved()
640 static u8 *fetch_item(__u8 *start, __u8 *end, struct hid_item *item) in fetch_item() argument
649 item->type = (b >> 2) & 3; in fetch_item()
650 item->tag = (b >> 4) & 15; in fetch_item()
652 if (item->tag == HID_ITEM_TAG_LONG) { in fetch_item()
654 item->format = HID_ITEM_FORMAT_LONG; in fetch_item()
659 item->size = *start++; in fetch_item()
660 item->tag = *start++; in fetch_item()
662 if ((end - start) < item->size) in fetch_item()
665 item->data.longdata = start; in fetch_item()
666 start += item->size; in fetch_item()
670 item->format = HID_ITEM_FORMAT_SHORT; in fetch_item()
671 item->size = b & 3; in fetch_item()
673 switch (item->size) { in fetch_item()
680 item->data.u8 = *start++; in fetch_item()
686 item->data.u16 = get_unaligned_le16(start); in fetch_item()
691 item->size++; in fetch_item()
694 item->data.u32 = get_unaligned_le32(start); in fetch_item()
744 static int hid_scan_main(struct hid_parser *parser, struct hid_item *item) in hid_scan_main() argument
749 data = item_udata(item); in hid_scan_main()
751 switch (item->tag) { in hid_scan_main()
786 struct hid_item item; in hid_scan_report() local
790 struct hid_item *item) = { in hid_scan_report()
809 while ((start = fetch_item(start, end, &item)) != NULL) in hid_scan_report()
810 dispatch_type[item.type](parser, &item); in hid_scan_report()
945 struct hid_item item; in hid_open_report() local
952 struct hid_item *item) = { in hid_open_report()
1003 while ((start = fetch_item(start, end, &item)) != NULL) { in hid_open_report()
1005 if (item.format != HID_ITEM_FORMAT_SHORT) { in hid_open_report()
1010 if (dispatch_type[item.type](parser, &item)) { in hid_open_report()
1012 item.format, (unsigned)item.size, in hid_open_report()
1013 (unsigned)item.type, (unsigned)item.tag); in hid_open_report()