Lines Matching defs:hid

20 #include <linux/hid.h>
21 #include <linux/hid-debug.h>
23 #include "hid-ids.h"
64 return (usage->hid & (HID_USAGE_PAGE | HID_USAGE)) == scancode;
85 static struct hid_usage *hidinput_find_key(struct hid_device *hid,
95 list_for_each_entry(report, &hid->report_enum[k].report_list, list) {
114 static struct hid_usage *hidinput_locate_usage(struct hid_device *hid,
122 usage = hidinput_find_key(hid, match_index, ke->index, index);
124 usage = hidinput_find_key(hid, match_scancode, scancode, index);
134 struct hid_device *hid = input_get_drvdata(dev);
138 usage = hidinput_locate_usage(hid, ke, &index);
143 scancode = usage->hid & (HID_USAGE_PAGE | HID_USAGE);
156 struct hid_device *hid = input_get_drvdata(dev);
159 usage = hidinput_locate_usage(hid, ke, NULL);
168 usage->code, usage->hid);
174 if (hidinput_find_key(hid, match_keycode, *old_keycode, NULL))
461 psy_desc->name = kasprintf(GFP_KERNEL, "hid-%s-battery",
585 (usage->hid & HID_USAGE_PAGE) != HID_UP_LED) {
598 switch (usage->hid & HID_USAGE_PAGE) {
605 if ((usage->hid & HID_USAGE) < 256) {
606 if (!hid_keyboard[usage->hid & HID_USAGE]) goto ignore;
607 map_key_clear(hid_keyboard[usage->hid & HID_USAGE]);
614 code = ((usage->hid - 1) & HID_USAGE);
645 switch (usage->hid & 0xffff) {
656 if ((usage->hid & 0xf0) == 0x80) { /* SystemControl */
657 switch (usage->hid & 0xf) {
678 if ((usage->hid & 0xf0) == 0xa0) { /* SystemControl */
679 switch (usage->hid & 0xf) {
686 if ((usage->hid & 0xf0) == 0xb0) { /* SC - Display */
687 switch (usage->hid & 0xf) {
703 if ((usage->hid & 0xf0) == 0x90) { /* D-pad */
704 switch (usage->hid) {
719 switch (usage->hid) {
724 map_rel(usage->hid & 0xf);
726 map_abs_clear(usage->hid & 0xf);
734 map_abs(usage->hid & 0xf);
739 map_rel(usage->hid & 0xf);
741 map_abs(usage->hid & 0xf);
768 switch (usage->hid & 0xffff) { /* HID-Value: */
791 switch (usage->hid & 0xff) {
866 switch (usage->hid & HID_USAGE) {
889 switch (usage->hid & HID_USAGE) {
1079 switch (usage->hid) {
1089 switch (usage->hid & HID_USAGE) {
1108 switch (usage->hid & HID_USAGE) {
1131 switch (usage->hid & HID_USAGE) {
1288 void hidinput_hid_event(struct hid_device *hid, struct hid_field *field, struct hid_usage *usage, __s32 value)
1291 unsigned *quirks = &hid->quirks;
1297 hidinput_update_battery(hid, value);
1322 if (usage->hid == (HID_UP_DIGITIZER | 0x003c)) { /* Invert */
1327 if (usage->hid == (HID_UP_DIGITIZER | 0x0032)) { /* InRange */
1337 if (usage->hid == (HID_UP_DIGITIZER | 0x0030) && (*quirks & HID_QUIRK_NOTOUCH)) { /* Pressure */
1343 if (usage->hid == (HID_UP_PID | 0x83UL)) { /* Simultaneous Effects Max */
1348 if (usage->hid == (HID_UP_PID | 0x7fUL)) {
1421 input_event(input, EV_MSC, MSC_SCAN, usage->hid);
1432 void hidinput_report_event(struct hid_device *hid, struct hid_report *report)
1436 if (hid->quirks & HID_QUIRK_NO_INPUT_SYNC)
1439 list_for_each_entry(hidinput, &hid->inputs, list)
1444 int hidinput_find_field(struct hid_device *hid, unsigned int type, unsigned int code, struct hid_field **field)
1449 list_for_each_entry(report, &hid->report_enum[HID_OUTPUT_REPORT].report_list, list) {
1461 struct hid_field *hidinput_get_led_field(struct hid_device *hid)
1468 &hid->report_enum[HID_OUTPUT_REPORT].report_list,
1481 unsigned int hidinput_count_leds(struct hid_device *hid)
1489 &hid->report_enum[HID_OUTPUT_REPORT].report_list,
1505 struct hid_device *hid = container_of(work, struct hid_device,
1513 field = hidinput_get_led_field(hid);
1533 if (hid->ll_driver->request)
1534 return hid->ll_driver->request(hid, report, HID_REQ_SET_REPORT);
1544 ret = hid_hw_output_report(hid, buf, len);
1546 hid_hw_raw_request(hid, report->id, buf, len, HID_OUTPUT_REPORT,
1554 struct hid_device *hid = input_get_drvdata(dev);
1564 if ((offset = hidinput_find_field(hid, type, code, &field)) == -1) {
1571 schedule_work(&hid->led_work);
1577 struct hid_device *hid = input_get_drvdata(dev);
1579 return hid_hw_open(hid);
1584 struct hid_device *hid = input_get_drvdata(dev);
1586 hid_hw_close(hid);
1589 static bool __hidinput_change_resolution_multipliers(struct hid_device *hid,
1615 if (usage->hid != HID_GD_RESOLUTION_MULTIPLIER)
1629 if (hid->quirks & HID_QUIRK_NO_INIT_REPORTS)
1632 hid_hw_request(hid, report, HID_REQ_GET_REPORT);
1633 hid_hw_wait(hid);
1645 static void hidinput_change_resolution_multipliers(struct hid_device *hid)
1651 rep_enum = &hid->report_enum[HID_FEATURE_REPORT];
1653 bool update_needed = __hidinput_change_resolution_multipliers(hid,
1657 ret = __hid_request(hid, rep, HID_REQ_SET_REPORT);
1659 __hidinput_change_resolution_multipliers(hid,
1667 hid_setup_resolution_multiplier(hid);
1670 static void report_features(struct hid_device *hid)
1672 struct hid_driver *drv = hid->driver;
1678 rep_enum = &hid->report_enum[HID_FEATURE_REPORT];
1689 if (usage->hid == HID_DC_BATTERYSTRENGTH)
1690 hidinput_setup_battery(hid, HID_FEATURE_REPORT,
1694 drv->feature_mapping(hid, rep->field[i], usage);
1699 static struct hid_input *hidinput_allocate(struct hid_device *hid,
1710 if ((hid->quirks & HID_QUIRK_INPUT_PER_APP) &&
1711 hid->maxapplication > 1) {
1749 name_len = strlen(hid->name);
1752 strcmp(hid->name + name_len - suffix_len, suffix)) {
1754 hid->name, suffix);
1760 input_set_drvdata(input_dev, hid);
1767 input_dev->name = hidinput->name ? hidinput->name : hid->name;
1768 input_dev->phys = hid->phys;
1769 input_dev->uniq = hid->uniq;
1770 input_dev->id.bustype = hid->bus;
1771 input_dev->id.vendor = hid->vendor;
1772 input_dev->id.product = hid->product;
1773 input_dev->id.version = hid->version;
1774 input_dev->dev.parent = &hid->dev;
1778 list_add_tail(&hidinput->list, &hid->inputs);
1787 hid_err(hid, "Out of memory during hid input probe\n");
1826 static void hidinput_cleanup_hidinput(struct hid_device *hid,
1838 hid->quirks & HID_QUIRK_SKIP_OUTPUT_REPORTS)
1841 list_for_each_entry(report, &hid->report_enum[k].report_list,
1855 struct hid_device *hid = report->device;
1858 list_for_each_entry(hidinput, &hid->inputs, list) {
1869 struct hid_device *hid = report->device;
1872 list_for_each_entry(hidinput, &hid->inputs, list) {
1897 int hidinput_connect(struct hid_device *hid, unsigned int force)
1899 struct hid_driver *drv = hid->driver;
1905 INIT_LIST_HEAD(&hid->inputs);
1906 INIT_WORK(&hid->led_work, hidinput_led_worker);
1908 hid->status &= ~HID_STAT_DUP_DETECTED;
1911 for (i = 0; i < hid->maxcollection; i++) {
1912 struct hid_collection *col = &hid->collection[i];
1919 if (i == hid->maxcollection)
1923 report_features(hid);
1927 hid->quirks & HID_QUIRK_SKIP_OUTPUT_REPORTS)
1930 list_for_each_entry(report, &hid->report_enum[k].report_list, list) {
1941 if (hid->quirks & HID_QUIRK_MULTI_INPUT)
1943 else if (hid->maxapplication > 1 &&
1944 (hid->quirks & HID_QUIRK_INPUT_PER_APP))
1948 hidinput = hidinput_allocate(hid, application);
1955 if (hid->quirks & HID_QUIRK_MULTI_INPUT)
1963 hidinput_change_resolution_multipliers(hid);
1965 list_for_each_entry_safe(hidinput, next, &hid->inputs, list) {
1967 drv->input_configured(hid, hidinput))
1972 hidinput_cleanup_hidinput(hid, hidinput);
1981 if (list_empty(&hid->inputs)) {
1982 hid_err(hid, "No inputs registered, leaving\n");
1986 if (hid->status & HID_STAT_DUP_DETECTED)
1987 hid_dbg(hid,
1994 hidinput_disconnect(hid);
2000 void hidinput_disconnect(struct hid_device *hid)
2004 hidinput_cleanup_battery(hid);
2006 list_for_each_entry_safe(hidinput, next, &hid->inputs, list) {
2020 cancel_work_sync(&hid->led_work);