Lines Matching refs:f
514 struct alps_fields *f = &priv->f; in alps_report_mt_data() local
517 input_mt_assign_slots(dev, slot, f->mt, n, 0); in alps_report_mt_data()
519 alps_set_slot(dev, slot[i], f->mt[i].x, f->mt[i].y); in alps_report_mt_data()
528 struct alps_fields *f = &priv->f; in alps_report_semi_mt_data() local
532 f->mt[0].x = f->st.x; in alps_report_semi_mt_data()
533 f->mt[0].y = f->st.y; in alps_report_semi_mt_data()
534 fingers = f->pressure > 0 ? 1 : 0; in alps_report_semi_mt_data()
539 alps_set_slot(dev, 0, f->mt[0].x, f->mt[0].y); in alps_report_semi_mt_data()
541 alps_set_slot(dev, 1, f->mt[1].x, f->mt[1].y); in alps_report_semi_mt_data()
546 input_report_key(dev, BTN_LEFT, f->left); in alps_report_semi_mt_data()
547 input_report_key(dev, BTN_RIGHT, f->right); in alps_report_semi_mt_data()
548 input_report_key(dev, BTN_MIDDLE, f->middle); in alps_report_semi_mt_data()
550 input_report_abs(dev, ABS_PRESSURE, f->pressure); in alps_report_semi_mt_data()
623 static void alps_decode_buttons_v3(struct alps_fields *f, unsigned char *p) in alps_decode_buttons_v3() argument
625 f->left = !!(p[3] & 0x01); in alps_decode_buttons_v3()
626 f->right = !!(p[3] & 0x02); in alps_decode_buttons_v3()
627 f->middle = !!(p[3] & 0x04); in alps_decode_buttons_v3()
629 f->ts_left = !!(p[3] & 0x10); in alps_decode_buttons_v3()
630 f->ts_right = !!(p[3] & 0x20); in alps_decode_buttons_v3()
631 f->ts_middle = !!(p[3] & 0x40); in alps_decode_buttons_v3()
634 static int alps_decode_pinnacle(struct alps_fields *f, unsigned char *p, in alps_decode_pinnacle() argument
637 f->first_mp = !!(p[4] & 0x40); in alps_decode_pinnacle()
638 f->is_mp = !!(p[0] & 0x40); in alps_decode_pinnacle()
640 if (f->is_mp) { in alps_decode_pinnacle()
641 f->fingers = (p[5] & 0x3) + 1; in alps_decode_pinnacle()
642 f->x_map = ((p[4] & 0x7e) << 8) | in alps_decode_pinnacle()
645 f->y_map = ((p[3] & 0x70) << 4) | in alps_decode_pinnacle()
649 f->st.x = ((p[1] & 0x7f) << 4) | ((p[4] & 0x30) >> 2) | in alps_decode_pinnacle()
651 f->st.y = ((p[2] & 0x7f) << 4) | (p[4] & 0x0f); in alps_decode_pinnacle()
652 f->pressure = p[5] & 0x7f; in alps_decode_pinnacle()
654 alps_decode_buttons_v3(f, p); in alps_decode_pinnacle()
660 static int alps_decode_rushmore(struct alps_fields *f, unsigned char *p, in alps_decode_rushmore() argument
663 f->first_mp = !!(p[4] & 0x40); in alps_decode_rushmore()
664 f->is_mp = !!(p[5] & 0x40); in alps_decode_rushmore()
666 if (f->is_mp) { in alps_decode_rushmore()
667 f->fingers = max((p[5] & 0x3), ((p[5] >> 2) & 0x3)) + 1; in alps_decode_rushmore()
668 f->x_map = ((p[5] & 0x10) << 11) | in alps_decode_rushmore()
672 f->y_map = ((p[5] & 0x20) << 6) | in alps_decode_rushmore()
677 f->st.x = ((p[1] & 0x7f) << 4) | ((p[4] & 0x30) >> 2) | in alps_decode_rushmore()
679 f->st.y = ((p[2] & 0x7f) << 4) | (p[4] & 0x0f); in alps_decode_rushmore()
680 f->pressure = p[5] & 0x7f; in alps_decode_rushmore()
682 alps_decode_buttons_v3(f, p); in alps_decode_rushmore()
688 static int alps_decode_dolphin(struct alps_fields *f, unsigned char *p, in alps_decode_dolphin() argument
694 f->first_mp = !!(p[0] & 0x02); in alps_decode_dolphin()
695 f->is_mp = !!(p[0] & 0x20); in alps_decode_dolphin()
697 if (!f->is_mp) { in alps_decode_dolphin()
698 f->st.x = ((p[1] & 0x7f) | ((p[4] & 0x0f) << 7)); in alps_decode_dolphin()
699 f->st.y = ((p[2] & 0x7f) | ((p[4] & 0xf0) << 3)); in alps_decode_dolphin()
700 f->pressure = (p[0] & 4) ? 0 : p[5] & 0x7f; in alps_decode_dolphin()
701 alps_decode_buttons_v3(f, p); in alps_decode_dolphin()
703 f->fingers = ((p[0] & 0x6) >> 1 | in alps_decode_dolphin()
715 f->y_map = palm_data & (BIT(priv->y_bits) - 1); in alps_decode_dolphin()
718 f->x_map = (palm_data >> priv->y_bits) & in alps_decode_dolphin()
730 struct alps_fields *f = &priv->f; in alps_process_touchpad_packet_v3_v5() local
733 memset(f, 0, sizeof(*f)); in alps_process_touchpad_packet_v3_v5()
735 priv->decode_fields(f, packet, psmouse); in alps_process_touchpad_packet_v3_v5()
750 if (f->is_mp) { in alps_process_touchpad_packet_v3_v5()
751 fingers = f->fingers; in alps_process_touchpad_packet_v3_v5()
756 priv->decode_fields(f, priv->multi_data, psmouse); in alps_process_touchpad_packet_v3_v5()
757 if (alps_process_bitmap(priv, f) == 0) in alps_process_touchpad_packet_v3_v5()
772 if (f->is_mp) in alps_process_touchpad_packet_v3_v5()
775 if (!priv->multi_packet && f->first_mp) { in alps_process_touchpad_packet_v3_v5()
789 if (f->st.x && f->st.y && !f->pressure) in alps_process_touchpad_packet_v3_v5()
796 input_report_key(dev2, BTN_LEFT, f->ts_left); in alps_process_touchpad_packet_v3_v5()
797 input_report_key(dev2, BTN_RIGHT, f->ts_right); in alps_process_touchpad_packet_v3_v5()
798 input_report_key(dev2, BTN_MIDDLE, f->ts_middle); in alps_process_touchpad_packet_v3_v5()
893 struct alps_fields *f = &priv->f; in alps_process_packet_v4() local
913 f->left = !!(packet[4] & 0x01); in alps_process_packet_v4()
914 f->right = !!(packet[4] & 0x02); in alps_process_packet_v4()
916 f->st.x = ((packet[1] & 0x7f) << 4) | ((packet[3] & 0x30) >> 2) | in alps_process_packet_v4()
918 f->st.y = ((packet[2] & 0x7f) << 4) | (packet[3] & 0x0f); in alps_process_packet_v4()
919 f->pressure = packet[5] & 0x7f; in alps_process_packet_v4()
924 f->x_map = ((priv->multi_data[2] & 0x1f) << 10) | in alps_process_packet_v4()
928 f->y_map = ((priv->multi_data[5] & 0x01) << 10) | in alps_process_packet_v4()
932 f->fingers = alps_process_bitmap(priv, f); in alps_process_packet_v4()
935 alps_report_semi_mt_data(psmouse, f->fingers); in alps_process_packet_v4()
1026 static int alps_decode_packet_v7(struct alps_fields *f, in alps_decode_packet_v7() argument
1059 alps_get_finger_coordinate_v7(f->mt, p, pkt_id); in alps_decode_packet_v7()
1062 f->fingers = alps_get_mt_count(f->mt); in alps_decode_packet_v7()
1064 f->fingers = 3 + (p[5] & 0x03); in alps_decode_packet_v7()
1066 f->left = (p[0] & 0x80) >> 7; in alps_decode_packet_v7()
1069 f->fingers++; in alps_decode_packet_v7()
1071 f->fingers++; in alps_decode_packet_v7()
1073 f->right = (p[0] & 0x20) >> 5; in alps_decode_packet_v7()
1074 f->middle = (p[0] & 0x10) >> 4; in alps_decode_packet_v7()
1078 if (f->fingers == 1 && f->mt[0].x == 0 && f->mt[0].y == 0) { in alps_decode_packet_v7()
1079 f->mt[0].x = f->mt[1].x; in alps_decode_packet_v7()
1080 f->mt[0].y = f->mt[1].y; in alps_decode_packet_v7()
1081 f->mt[1].x = 0; in alps_decode_packet_v7()
1082 f->mt[1].y = 0; in alps_decode_packet_v7()
1120 struct alps_fields *f = &priv->f; in alps_process_touchpad_packet_v7() local
1122 memset(f, 0, sizeof(*f)); in alps_process_touchpad_packet_v7()
1124 if (priv->decode_fields(f, psmouse->packet, psmouse)) in alps_process_touchpad_packet_v7()
1127 alps_report_mt_data(psmouse, alps_get_mt_count(f->mt)); in alps_process_touchpad_packet_v7()
1129 input_mt_report_finger_count(dev, f->fingers); in alps_process_touchpad_packet_v7()
1131 input_report_key(dev, BTN_LEFT, f->left); in alps_process_touchpad_packet_v7()
1132 input_report_key(dev, BTN_RIGHT, f->right); in alps_process_touchpad_packet_v7()
1133 input_report_key(dev, BTN_MIDDLE, f->middle); in alps_process_touchpad_packet_v7()
1177 static int alps_decode_ss4_v2(struct alps_fields *f, in alps_decode_ss4_v2() argument
1189 f->mt[0].x = SS4_1F_X_V2(p); in alps_decode_ss4_v2()
1190 f->mt[0].y = SS4_1F_Y_V2(p); in alps_decode_ss4_v2()
1191 f->pressure = ((SS4_1F_Z_V2(p)) * 2) & 0x7f; in alps_decode_ss4_v2()
1198 f->fingers = f->pressure > 0 ? 1 : 0; in alps_decode_ss4_v2()
1199 f->first_mp = 0; in alps_decode_ss4_v2()
1200 f->is_mp = 0; in alps_decode_ss4_v2()
1206 f->mt[0].x = SS4_PLUS_BTL_MF_X_V2(p, 0); in alps_decode_ss4_v2()
1207 f->mt[1].x = SS4_PLUS_BTL_MF_X_V2(p, 1); in alps_decode_ss4_v2()
1209 f->mt[0].x = SS4_BTL_MF_X_V2(p, 0); in alps_decode_ss4_v2()
1210 f->mt[1].x = SS4_BTL_MF_X_V2(p, 1); in alps_decode_ss4_v2()
1212 f->mt[0].y = SS4_BTL_MF_Y_V2(p, 0); in alps_decode_ss4_v2()
1213 f->mt[1].y = SS4_BTL_MF_Y_V2(p, 1); in alps_decode_ss4_v2()
1216 f->mt[0].x = SS4_PLUS_STD_MF_X_V2(p, 0); in alps_decode_ss4_v2()
1217 f->mt[1].x = SS4_PLUS_STD_MF_X_V2(p, 1); in alps_decode_ss4_v2()
1219 f->mt[0].x = SS4_STD_MF_X_V2(p, 0); in alps_decode_ss4_v2()
1220 f->mt[1].x = SS4_STD_MF_X_V2(p, 1); in alps_decode_ss4_v2()
1222 f->mt[0].y = SS4_STD_MF_Y_V2(p, 0); in alps_decode_ss4_v2()
1223 f->mt[1].y = SS4_STD_MF_Y_V2(p, 1); in alps_decode_ss4_v2()
1225 f->pressure = SS4_MF_Z_V2(p, 0) ? 0x30 : 0; in alps_decode_ss4_v2()
1228 f->first_mp = 1; in alps_decode_ss4_v2()
1230 f->fingers = 2; in alps_decode_ss4_v2()
1231 f->first_mp = 0; in alps_decode_ss4_v2()
1233 f->is_mp = 0; in alps_decode_ss4_v2()
1240 f->mt[2].x = SS4_PLUS_BTL_MF_X_V2(p, 0); in alps_decode_ss4_v2()
1241 f->mt[3].x = SS4_PLUS_BTL_MF_X_V2(p, 1); in alps_decode_ss4_v2()
1244 f->mt[2].x = SS4_BTL_MF_X_V2(p, 0); in alps_decode_ss4_v2()
1245 f->mt[3].x = SS4_BTL_MF_X_V2(p, 1); in alps_decode_ss4_v2()
1250 f->mt[2].y = SS4_BTL_MF_Y_V2(p, 0); in alps_decode_ss4_v2()
1251 f->mt[3].y = SS4_BTL_MF_Y_V2(p, 1); in alps_decode_ss4_v2()
1254 f->mt[2].x = SS4_PLUS_STD_MF_X_V2(p, 0); in alps_decode_ss4_v2()
1255 f->mt[3].x = SS4_PLUS_STD_MF_X_V2(p, 1); in alps_decode_ss4_v2()
1258 f->mt[2].x = SS4_STD_MF_X_V2(p, 0); in alps_decode_ss4_v2()
1259 f->mt[3].x = SS4_STD_MF_X_V2(p, 1); in alps_decode_ss4_v2()
1264 f->mt[2].y = SS4_STD_MF_Y_V2(p, 0); in alps_decode_ss4_v2()
1265 f->mt[3].y = SS4_STD_MF_Y_V2(p, 1); in alps_decode_ss4_v2()
1268 f->first_mp = 0; in alps_decode_ss4_v2()
1269 f->is_mp = 1; in alps_decode_ss4_v2()
1272 f->fingers = 5; in alps_decode_ss4_v2()
1273 } else if (f->mt[3].x == no_data_x && in alps_decode_ss4_v2()
1274 f->mt[3].y == no_data_y) { in alps_decode_ss4_v2()
1275 f->mt[3].x = 0; in alps_decode_ss4_v2()
1276 f->mt[3].y = 0; in alps_decode_ss4_v2()
1277 f->fingers = 3; in alps_decode_ss4_v2()
1279 f->fingers = 4; in alps_decode_ss4_v2()
1288 f->first_mp = 0; in alps_decode_ss4_v2()
1289 f->is_mp = 0; in alps_decode_ss4_v2()
1294 memset(f, 0, sizeof(struct alps_fields)); in alps_decode_ss4_v2()
1300 f->ts_left = !!(SS4_BTN_V2(p) & 0x01); in alps_decode_ss4_v2()
1301 f->ts_right = !!(SS4_BTN_V2(p) & 0x02); in alps_decode_ss4_v2()
1302 f->ts_middle = !!(SS4_BTN_V2(p) & 0x04); in alps_decode_ss4_v2()
1304 f->left = !!(SS4_BTN_V2(p) & 0x01); in alps_decode_ss4_v2()
1306 f->right = !!(SS4_BTN_V2(p) & 0x02); in alps_decode_ss4_v2()
1307 f->middle = !!(SS4_BTN_V2(p) & 0x04); in alps_decode_ss4_v2()
1320 struct alps_fields *f = &priv->f; in alps_process_packet_ss4_v2() local
1322 memset(f, 0, sizeof(struct alps_fields)); in alps_process_packet_ss4_v2()
1323 priv->decode_fields(f, packet, psmouse); in alps_process_packet_ss4_v2()
1331 if (f->is_mp) { in alps_process_packet_ss4_v2()
1333 priv->decode_fields(f, priv->multi_data, psmouse); in alps_process_packet_ss4_v2()
1343 if (f->is_mp) in alps_process_packet_ss4_v2()
1347 if (!priv->multi_packet && f->first_mp) { in alps_process_packet_ss4_v2()
1367 input_report_key(dev2, BTN_LEFT, f->ts_left); in alps_process_packet_ss4_v2()
1368 input_report_key(dev2, BTN_RIGHT, f->ts_right); in alps_process_packet_ss4_v2()
1369 input_report_key(dev2, BTN_MIDDLE, f->ts_middle); in alps_process_packet_ss4_v2()
1376 alps_report_mt_data(psmouse, (f->fingers <= 4) ? f->fingers : 4); in alps_process_packet_ss4_v2()
1378 input_mt_report_finger_count(dev, f->fingers); in alps_process_packet_ss4_v2()
1380 input_report_key(dev, BTN_LEFT, f->left); in alps_process_packet_ss4_v2()
1381 input_report_key(dev, BTN_RIGHT, f->right); in alps_process_packet_ss4_v2()
1382 input_report_key(dev, BTN_MIDDLE, f->middle); in alps_process_packet_ss4_v2()
1384 input_report_abs(dev, ABS_PRESSURE, f->pressure); in alps_process_packet_ss4_v2()