Lines Matching +full:0 +full:xff310000
46 #define E1239T_TP_TOGGLE_REPORT_ID 0x05
47 #define T100CHI_MOUSE_REPORT_ID 0x06
48 #define FEATURE_REPORT_ID 0x0d
49 #define INPUT_REPORT_ID 0x5d
50 #define FEATURE_KBD_REPORT_ID 0x5a
52 #define FEATURE_KBD_LED_REPORT_ID1 0x5d
53 #define FEATURE_KBD_LED_REPORT_ID2 0x5e
55 #define SUPPORT_KBD_BACKLIGHT BIT(0)
60 #define BTN_LEFT_MASK 0x01
61 #define CONTACT_TOOL_TYPE_MASK 0x80
62 #define CONTACT_X_MSB_MASK 0xf0
63 #define CONTACT_Y_MSB_MASK 0x0f
64 #define CONTACT_TOUCH_MAJOR_MASK 0x07
65 #define CONTACT_PRESSURE_MASK 0x7f
67 #define BATTERY_REPORT_ID (0x03)
70 #define BATTERY_STAT_DISCONNECT (0)
74 #define QUIRK_FIX_NOTEBOOK_REPORT BIT(0)
198 x = (data[0] & CONTACT_X_MSB_MASK) << 4 | data[1]; in asus_report_contact_down()
199 y = drvdat->tp->max_y - ((data[0] & CONTACT_Y_MSB_MASK) << 8 | data[2]); in asus_report_contact_down()
232 for (i = 0; i < mt->num_slots; ++i) { in asus_report_tool_width()
236 if (id < 0) in asus_report_tool_width()
256 return 0; in asus_report_input()
258 for (i = 0; i < drvdat->tp->max_contacts; i++) { in asus_report_input()
286 return 0; in asus_e1239t_event()
290 data[0] == 0x02 && data[1] == 0xe2 && data[2] == 0x00) { in asus_e1239t_event()
293 input_report_key(drvdat->input, KEY_MUTE, 0); in asus_e1239t_event()
300 data[0] == 0x05 && data[1] == 0x02 && data[2] == 0x28) { in asus_e1239t_event()
303 input_report_key(drvdat->tp_kbd_input, KEY_F21, 0); in asus_e1239t_event()
308 return 0; in asus_e1239t_event()
314 if ((usage->hid & HID_USAGE_PAGE) == 0xff310000 && in asus_event()
315 (usage->hid & HID_USAGE) != 0x00 && in asus_event()
316 (usage->hid & HID_USAGE) != 0xff && !usage->type) { in asus_event()
317 hid_warn(hdev, "Unmapped Asus vendor usagepage code 0x%02x\n", in asus_event()
321 return 0; in asus_event()
329 if (drvdata->battery && data[0] == BATTERY_REPORT_ID) in asus_raw_event()
332 if (drvdata->tp && data[0] == INPUT_REPORT_ID) in asus_raw_event()
349 if (data[0] == 0x02 && data[1] == 0x30) { in asus_raw_event()
360 if(size == 2 && data[0] == 0x02 && data[1] == 0x00) { in asus_raw_event()
365 return 0; in asus_raw_event()
381 ret = hid_hw_raw_request(hdev, buf[0], dmabuf, in asus_kbd_set_report()
391 const u8 buf[] = { report_id, 0x41, 0x53, 0x55, 0x53, 0x20, 0x54, in asus_kbd_init()
392 0x65, 0x63, 0x68, 0x2e, 0x49, 0x6e, 0x63, 0x2e, 0x00 }; in asus_kbd_init()
396 if (ret < 0) in asus_kbd_init()
406 const u8 buf[] = { report_id, 0x05, 0x20, 0x31, 0x00, 0x08 }; in asus_kbd_get_functions()
411 if (ret < 0) { in asus_kbd_get_functions()
423 if (ret < 0) { in asus_kbd_get_functions()
438 { FEATURE_KBD_REPORT_ID, 0x05, 0x20, 0x31, 0x00, 0x08 }, in asus_kbd_disable_oobe()
439 { FEATURE_KBD_REPORT_ID, 0xBA, 0xC5, 0xC4 }, in asus_kbd_disable_oobe()
440 { FEATURE_KBD_REPORT_ID, 0xD0, 0x8F, 0x01 }, in asus_kbd_disable_oobe()
441 { FEATURE_KBD_REPORT_ID, 0xD0, 0x85, 0xFF } in asus_kbd_disable_oobe()
445 for (size_t i = 0; i < ARRAY_SIZE(init); i++) { in asus_kbd_disable_oobe()
447 if (ret < 0) in asus_kbd_disable_oobe()
452 return 0; in asus_kbd_disable_oobe()
496 u8 buf[] = { FEATURE_KBD_REPORT_ID, 0xba, 0xc5, 0xc4, 0x00 }; in asus_kbd_backlight_work()
505 if (ret < 0) in asus_kbd_backlight_work()
529 ASUS_WMI_DEVID_KBD_BACKLIGHT, 0, &value); in asus_kbd_wmi_led_control_present()
546 if (ret < 0) in asus_kbd_register_leds()
551 if (ret < 0) in asus_kbd_register_leds()
555 if (ret < 0) in asus_kbd_register_leds()
560 if (ret < 0) in asus_kbd_register_leds()
566 if (ret < 0) in asus_kbd_register_leds()
571 if (ret < 0) in asus_kbd_register_leds()
586 drvdata->kbd_backlight->brightness = 0; in asus_kbd_register_leds()
596 if (ret < 0) { in asus_kbd_register_leds()
605 * [0] REPORT_ID (same value defined in report descriptor)
606 * [1] rest battery level. range [0..255]
609 * = 0 : AC offline / discharging
638 return 0; in asus_parse_battery()
648 return 0; in asus_report_battery()
654 int ret = 0; in asus_battery_query()
690 int ret = 0; in asus_battery_get_property()
728 int ret = 0; in asus_battery_probe()
730 drvdata->battery_capacity = 0; in asus_battery_probe()
738 drvdata->battery_desc.use_for_apm = 0; in asus_battery_probe()
770 return 0; in asus_input_configured()
779 return 0; in asus_input_configured()
783 return 0; /* Ignore other reports */ in asus_input_configured()
790 input_set_abs_params(input, ABS_MT_POSITION_X, 0, in asus_input_configured()
791 drvdata->tp->max_x, 0, 0); in asus_input_configured()
792 input_set_abs_params(input, ABS_MT_POSITION_Y, 0, in asus_input_configured()
793 drvdata->tp->max_y, 0, 0); in asus_input_configured()
798 input_set_abs_params(input, ABS_TOOL_WIDTH, 0, in asus_input_configured()
799 MAX_TOUCH_MAJOR, 0, 0); in asus_input_configured()
800 input_set_abs_params(input, ABS_MT_TOUCH_MAJOR, 0, in asus_input_configured()
801 MAX_TOUCH_MAJOR, 0, 0); in asus_input_configured()
802 input_set_abs_params(input, ABS_MT_PRESSURE, 0, in asus_input_configured()
803 MAX_PRESSURE, 0, 0); in asus_input_configured()
825 return 0; in asus_input_configured()
850 (field->application == (HID_UP_GENDESK | 0x0080) || in asus_input_mapping()
852 usage->hid == (HID_UP_GENDEVCTRLS | 0x0024) || in asus_input_mapping()
853 usage->hid == (HID_UP_GENDEVCTRLS | 0x0025) || in asus_input_mapping()
854 usage->hid == (HID_UP_GENDEVCTRLS | 0x0026))) in asus_input_mapping()
860 case 0x10: asus_map_key_clear(KEY_BRIGHTNESSDOWN); break; in asus_input_mapping()
861 case 0x20: asus_map_key_clear(KEY_BRIGHTNESSUP); break; in asus_input_mapping()
862 case 0x35: asus_map_key_clear(KEY_DISPLAY_OFF); break; in asus_input_mapping()
863 case 0x6c: asus_map_key_clear(KEY_SLEEP); break; in asus_input_mapping()
864 case 0x7c: asus_map_key_clear(KEY_MICMUTE); break; in asus_input_mapping()
865 case 0x82: asus_map_key_clear(KEY_CAMERA); break; in asus_input_mapping()
866 case 0x88: asus_map_key_clear(KEY_RFKILL); break; in asus_input_mapping()
867 case 0xb5: asus_map_key_clear(KEY_CALC); break; in asus_input_mapping()
868 case 0xc4: asus_map_key_clear(KEY_KBDILLUMUP); break; in asus_input_mapping()
869 case 0xc5: asus_map_key_clear(KEY_KBDILLUMDOWN); break; in asus_input_mapping()
870 case 0xc7: asus_map_key_clear(KEY_KBDILLUMTOGGLE); break; in asus_input_mapping()
872 case 0x6b: asus_map_key_clear(KEY_F21); break; /* ASUS touchpad toggle */ in asus_input_mapping()
873 case 0x38: asus_map_key_clear(KEY_PROG1); break; /* ROG key */ in asus_input_mapping()
874 case 0xba: asus_map_key_clear(KEY_PROG2); break; /* Fn+C ASUS Splendid */ in asus_input_mapping()
875 case 0x5c: asus_map_key_clear(KEY_PROG3); break; /* Fn+Space Power4Gear */ in asus_input_mapping()
876 case 0x99: asus_map_key_clear(KEY_PROG4); break; /* Fn+F5 "fan" symbol */ in asus_input_mapping()
877 case 0xae: asus_map_key_clear(KEY_PROG4); break; /* Fn+F5 "fan" symbol */ in asus_input_mapping()
878 case 0x92: asus_map_key_clear(KEY_CALC); break; /* Fn+Ret "Calc" symbol */ in asus_input_mapping()
879 case 0xb2: asus_map_key_clear(KEY_PROG2); break; /* Fn+Left previous aura */ in asus_input_mapping()
880 case 0xb3: asus_map_key_clear(KEY_PROG3); break; /* Fn+Left next aura */ in asus_input_mapping()
881 case 0x6a: asus_map_key_clear(KEY_F13); break; /* Screenpad toggle */ in asus_input_mapping()
882 case 0x4b: asus_map_key_clear(KEY_F14); break; /* Arrows/Pg-Up/Dn toggle */ in asus_input_mapping()
883 case 0xa5: asus_map_key_clear(KEY_F15); break; /* ROG Ally left back */ in asus_input_mapping()
884 case 0xa6: asus_map_key_clear(KEY_F16); break; /* ROG Ally QAM button */ in asus_input_mapping()
885 case 0xa7: asus_map_key_clear(KEY_F17); break; /* ROG Ally ROG long-press */ in asus_input_mapping()
886 case 0xa8: asus_map_key_clear(KEY_F18); break; /* ROG Ally ROG long-press-release */ in asus_input_mapping()
896 * 0xff31 to avoid initializing the keyboard firmware multiple in asus_input_mapping()
909 case 0xff01: asus_map_key_clear(BTN_1); break; in asus_input_mapping()
910 case 0xff02: asus_map_key_clear(BTN_2); break; in asus_input_mapping()
911 case 0xff03: asus_map_key_clear(BTN_3); break; in asus_input_mapping()
912 case 0xff04: asus_map_key_clear(BTN_4); break; in asus_input_mapping()
913 case 0xff05: asus_map_key_clear(BTN_5); break; in asus_input_mapping()
914 case 0xff06: asus_map_key_clear(BTN_6); break; in asus_input_mapping()
915 case 0xff07: asus_map_key_clear(BTN_7); break; in asus_input_mapping()
916 case 0xff08: asus_map_key_clear(BTN_8); break; in asus_input_mapping()
917 case 0xff09: asus_map_key_clear(BTN_9); break; in asus_input_mapping()
918 case 0xff0a: asus_map_key_clear(BTN_A); break; in asus_input_mapping()
919 case 0xff0b: asus_map_key_clear(BTN_B); break; in asus_input_mapping()
920 case 0x00f1: asus_map_key_clear(KEY_WLAN); break; in asus_input_mapping()
921 case 0x00f2: asus_map_key_clear(KEY_BRIGHTNESSDOWN); break; in asus_input_mapping()
922 case 0x00f3: asus_map_key_clear(KEY_BRIGHTNESSUP); break; in asus_input_mapping()
923 case 0x00f4: asus_map_key_clear(KEY_DISPLAY_OFF); break; in asus_input_mapping()
924 case 0x00f7: asus_map_key_clear(KEY_CAMERA); break; in asus_input_mapping()
925 case 0x00f8: asus_map_key_clear(KEY_PROG1); break; in asus_input_mapping()
927 return 0; in asus_input_mapping()
937 case 0xe2: /* Mute */ in asus_input_mapping()
938 case 0xe9: /* Volume up */ in asus_input_mapping()
939 case 0xea: /* Volume down */ in asus_input_mapping()
940 return 0; in asus_input_mapping()
954 usage->hid == (HID_UP_CONSUMER | 0xe2)) { in asus_input_mapping()
959 return 0; in asus_input_mapping()
966 FEATURE_REPORT_ID, 0x00, 0x03, 0x01, 0x00 in asus_start_multitouch()
976 ret = hid_hw_raw_request(hdev, dmabuf[0], dmabuf, sizeof(buf), in asus_start_multitouch()
986 return 0; in asus_start_multitouch()
991 int ret = 0; in asus_resume()
994 const u8 buf[] = { FEATURE_KBD_REPORT_ID, 0xba, 0xc5, 0xc4, in asus_resume()
997 if (ret < 0) { in asus_resume()
1014 return 0; in asus_reset_resume()
1128 return 0; in asus_probe()
1151 0x19, 0x00, /* Usage Minimum (0x00) */
1152 0x2A, 0xFF, 0x00, /* Usage Maximum (0xFF) */
1161 *rsize >= 56 && rdesc[54] == 0x25 && rdesc[55] == 0x65) { in asus_report_fixup()
1163 rdesc[55] = 0xdd; in asus_report_fixup()
1168 rdesc[73] == 0x81 && rdesc[74] == 0x01) { in asus_report_fixup()
1188 * Note the descriptor has a bogus 0 byte at the end so we in asus_report_fixup()
1192 rdesc[offs] == 0x09 && rdesc[offs + 1] == 0x76) { in asus_report_fixup()
1202 rdesc[offs] = 0x19; in asus_report_fixup()
1203 rdesc[offs + 1] = 0x00; in asus_report_fixup()
1204 rdesc[offs + 2] = 0x29; in asus_report_fixup()
1205 rdesc[offs + 3] = 0xff; in asus_report_fixup()
1206 rdesc[offs + 14] = 0x00; in asus_report_fixup()
1211 *rsize == 75 && rdesc[61] == 0x15 && rdesc[62] == 0x00) { in asus_report_fixup()
1233 *rsize == 331 && rdesc[190] == 0x85 && rdesc[191] == 0x5a && in asus_report_fixup()
1234 rdesc[204] == 0x95 && rdesc[205] == 0x05) { in asus_report_fixup()
1236 rdesc[205] = 0x01; in asus_report_fixup()
1241 for (int i = 0; i < *rsize - 15; i++) { in asus_report_fixup()
1242 /* offset to the count from 0x5a report part always 14 */ in asus_report_fixup()
1243 if (rdesc[i] == 0x85 && rdesc[i + 1] == 0x5a && in asus_report_fixup()
1244 rdesc[i + 14] == 0x95 && rdesc[i + 15] == 0x05) { in asus_report_fixup()
1246 rdesc[i + 15] = 0x01; in asus_report_fixup()