Home | History | Annotate | Download | only in pckbport

Lines Matching refs:SC

134 #define	DPRINTF(LEVEL, SC, FMT, ARGS...) do					      \
138 container_of((SC), struct pms_softc, u.synaptics); \
351 struct synaptics_softc *sc = &psc->u.synaptics;
355 DPRINTF(10, sc,
356 "synaptics_probe: Capabilities 0x%04x.\n", sc->caps);
357 if (sc->caps & SYNAPTICS_CAP_PASSTHROUGH)
358 sc->flags |= SYN_FLAG_HAS_PASSTHROUGH;
360 if (sc->caps & SYNAPTICS_CAP_PALMDETECT)
361 sc->flags |= SYN_FLAG_HAS_PALM_DETECT;
363 if (sc->caps & SYNAPTICS_CAP_MULTIDETECT)
364 sc->flags |= SYN_FLAG_HAS_MULTI_FINGER;
366 if (sc->caps & SYNAPTICS_CAP_MULTIFINGERREPORT)
367 sc->flags |= SYN_FLAG_HAS_MULTI_FINGER_REPORT;
370 if ((__SHIFTOUT(sc->caps, SYNAPTICS_CAP_EXTNUM) + 0x08)
375 sc->num_buttons = (resp[1] >> 4);
376 if (sc->num_buttons > 0)
377 sc->button_mask = sc->button_mask <<
378 ((sc->num_buttons + 1) >> 1);
380 DPRINTF(10, sc,
382 sc->num_buttons);
384 DPRINTF(10, sc, "Extended "
387 if (sc->num_buttons >= 2) {
389 sc->flags |= SYN_FLAG_HAS_UP_DOWN_BUTTONS;
393 sc->flags |= SYN_FLAG_HAS_VERTICAL_SCROLL;
397 sc->flags |= SYN_FLAG_HAS_HORIZONTAL_SCROLL;
401 sc->flags |= SYN_FLAG_HAS_EXTENDED_WMODE;
407 if ((__SHIFTOUT(sc->caps, SYNAPTICS_CAP_EXTNUM) + 0x08) >=
444 DPRINTF(10, sc, "Continued "
451 sc->flags |= SYN_FLAG_HAS_ONE_BUTTON_CLICKPAD;
454 sc->flags |= SYN_FLAG_HAS_TWO_BUTTON_CLICKPAD;
463 sc->flags |= SYN_FLAG_HAS_ADV_GESTURE_MODE;
466 sc->flags |= SYN_FLAG_HAS_MAX_REPORT;
469 sc->flags |= SYN_FLAG_HAS_MIN_REPORT;
498 struct synaptics_softc *sc = &psc->u.synaptics;
526 sc->flags = 0;
527 sc->num_buttons = 0;
528 sc->button_mask = 0xff;
540 sc->caps = 0;
553 sc->caps = SYNAPTICS_CAP_VALUE(resp);
555 if (sc->caps & SYNAPTICS_CAP_MBUTTON)
556 sc->flags |= SYN_FLAG_HAS_MIDDLE_BUTTON;
558 if (sc->caps & SYNAPTICS_CAP_4BUTTON)
559 sc->flags |= SYN_FLAG_HAS_BUTTONS_4_5;
561 if (sc->caps & SYNAPTICS_CAP_EXTENDED) {
565 if (sc->flags) {
570 if (sc->flags & syn_flags[f].bit) {
578 if (sc->flags & SYN_FLAG_HAS_MAX_REPORT) {
596 if (sc->flags & SYN_FLAG_HAS_VERTICAL_SCROLL)
606 if (sc->flags & SYN_FLAG_HAS_MIN_REPORT) {
624 if (sc->flags & SYN_FLAG_HAS_HORIZONTAL_SCROLL)
647 struct synaptics_softc *sc = &psc->u.synaptics;
651 if (sc->flags & SYN_FLAG_HAS_PASSTHROUGH) {
668 if (sc->flags & SYN_FLAG_HAS_EXTENDED_WMODE)
689 if ((sc->flags & SYN_FLAG_HAS_EXTENDED_WMODE) ||
690 (sc->flags & SYN_FLAG_HAS_ADV_GESTURE_MODE))
694 if(sc->flags & SYN_FLAG_HAS_ONE_BUTTON_CLICKPAD)
697 sc->up_down = 0;
698 sc->prev_fingers = 0;
699 sc->gesture_start_x = sc->gesture_start_y = 0;
700 sc->gesture_start_packet = 0;
701 sc->gesture_tap_packet = 0;
702 sc->gesture_type = 0;
703 sc->gesture_buttons = 0;
704 sc->total_packets = 0;
706 sc->rem_x[i] = sc->rem_y[i] = sc->rem_z[i] = 0;
708 sc->button_history = 0;
1198 struct synaptics_softc *sc = &psc->u.synaptics;
1212 if ((sc->flags & SYN_FLAG_HAS_EXTENDED_WMODE) &&
1248 if (sc->flags & (SYN_FLAG_HAS_MULTI_FINGER | SYN_FLAG_HAS_MULTI_FINGER_REPORT)) {
1268 struct synaptics_softc *sc = &psc->u.synaptics;
1276 sc->total_packets++;
1288 if ((sc->flags & SYN_FLAG_HAS_EXTENDED_WMODE) &&
1295 DPRINTF(10, sc, "mouse wheel packet\n");
1321 sc->gesture_type = 0;
1322 sc->gesture_buttons = 0;
1323 sc->total_packets--;
1324 DPRINTF(20, sc,
1337 nsp.sp_left = sc->button_history & PMS_LBUTMASK;
1338 nsp.sp_middle = sc->button_history & PMS_MBUTMASK;
1339 nsp.sp_right = sc->button_history & PMS_RBUTMASK;
1377 if ((sc->num_buttons > 0) &&
1380 btn_mask = sc->button_mask;
1395 if ((sc->flags & SYN_FLAG_HAS_MULTI_FINGER) &&
1447 sc->gesture_type = 0;
1448 sc->gesture_buttons = 0;
1449 sc->total_packets--;
1450 DPRINTF(20, sc,
1466 if (((sc->flags & SYN_FLAG_HAS_EXTENDED_WMODE)
1478 DPRINTF(10, sc,
1514 if (sc->flags & SYN_FLAG_HAS_BUTTONS_4_5) {
1520 } else if (sc->flags & SYN_FLAG_HAS_UP_DOWN_BUTTONS &&
1532 if(sc->flags & SYN_FLAG_HAS_ONE_BUTTON_CLICKPAD) {
1554 if (new_buttons != sc->button_history) {
1555 if (sc->button_history == 0)
1556 sc->button_history = new_buttons;
1558 sc->button_history = 0;
1572 nsp.sp_left = sc->button_history & PMS_LBUTMASK;
1573 nsp.sp_middle = sc->button_history
1575 nsp.sp_right = sc->button_history & PMS_RBUTMASK;
1578 } else if (sc->flags & SYN_FLAG_HAS_MIDDLE_BUTTON) {
1591 nsp.sp_left = sc->ext_left = ext_left;
1592 else if (sc->ext_left != 0)
1593 nsp.sp_left = sc->ext_left;
1596 nsp.sp_right = sc->ext_right = ext_right;
1597 else if (sc->ext_right != 0)
1598 nsp.sp_right = sc->ext_right;
1601 nsp.sp_middle = sc->ext_middle = ext_middle;
1602 else if (sc->ext_middle != 0)
1603 nsp.sp_middle = sc->ext_middle;
1606 nsp.sp_up = sc->ext_up = ext_up;
1607 else if (sc->ext_up != 0)
1608 nsp.sp_up = sc->ext_up;
1611 nsp.sp_down = sc->ext_down = ext_down;
1612 else if (sc->ext_down != 0)
1613 nsp.sp_down = sc->ext_down;
1644 DPRINTF(20, sc,
1777 struct synaptics_softc *sc = &psc->u.synaptics;
1778 DPRINTF(10, sc, "synaptics: packet: 0x%02x%02x%02x%02x%02x%02x\n",
1797 synaptics_finger_detect(struct synaptics_softc *sc, struct synaptics_packet *sp,
1811 if ((sc->prev_fingers == 0 && sp->sp_z > synaptics_finger_high) ||
1812 (sc->prev_fingers != 0 && sp->sp_z > synaptics_finger_low))
1820 if (fingers == 0 || (sc->flags & SYN_FLAG_HAS_PALM_DETECT) == 0)
1830 if (sc->prev_fingers == 0 &&
1844 if ((sc->flags & SYN_FLAG_HAS_MULTI_FINGER) &&
1845 ((SYN_TIME(sc, sc->gesture_start_packet)
1847 SYN_TIME(sc, sc->gesture_start_packet)
1863 fingers = sc->prev_fingers <= 1 ? 1 : sc->prev_fingers;
1872 synaptics_gesture_detect(struct synaptics_softc *sc,
1878 gesture_len = SYN_TIME(sc, sc->gesture_start_packet);
1879 gesture_buttons = sc->gesture_buttons;
1881 if (fingers > 0 && (fingers == sc->prev_fingers)) {
1883 sc->gesture_move_x = abs(sc->gesture_start_x - sp->sp_x);
1884 sc->gesture_move_y = abs(sc->gesture_start_y - sp->sp_y);
1886 if (fingers && sc->prev_fingers == 0) {
1896 if (SYN_IS_SINGLE_TAP(sc->gesture_type))
1897 sc->gesture_type |= SYN_GESTURE_DRAG;
1899 sc->gesture_start_x = abs(sp->sp_x);
1900 sc->gesture_start_y = abs(sp->sp_y);
1901 sc->gesture_move_x = 0;
1902 sc->gesture_move_y = 0;
1903 sc->gesture_start_packet = sc->total_packets;
1905 DPRINTF(10, sc, "Finger applied:"
1908 sc->gesture_start_x, sc->gesture_start_y);
1910 if (fingers == 0 && sc->prev_fingers != 0) {
1920 DPRINTF(10, sc, "Finger removed: gesture_len: %d (%d)\n",
1922 DPRINTF(10, sc, "gesture_move_x: %d (%d) sp_x: %d\n",
1923 sc->gesture_move_x, synaptics_gesture_move, abs(sp->sp_x));
1924 DPRINTF(10, sc, "gesture_move_y: %d (%d) sp_y: %d\n",
1925 sc->gesture_move_y, synaptics_gesture_move, abs(sp->sp_y));
1928 ((sc->gesture_move_x < synaptics_gesture_move &&
1929 sc->gesture_move_y < synaptics_gesture_move))) {
1933 if (SYN_IS_DRAG(sc->gesture_type)) {
1937 sc->gesture_type |= SYN_GESTURE_DOUBLE;
1938 sc->gesture_type &= ~SYN_GESTURE_SINGLE;
1944 sc->gesture_tap_packet = sc->total_packets;
1945 sc->gesture_type |= SYN_GESTURE_SINGLE;
1957 switch (sc->prev_fingers) {
1978 sc->gesture_type &= ~SYN_GESTURE_DRAG;
1981 if (sc->gesture_type == 0) {
1986 sc->gesture_buttons = 0;
1995 if (SYN_IS_SINGLE_TAP(sc->gesture_type)) {
2001 if (SYN_TIME(sc, sc->gesture_tap_packet) <
2005 sc->gesture_type &= ~SYN_GESTURE_SINGLE;
2006 DPRINTF(10, sc, "synaptics_gesture: single tap, buttons %d\n",
2008 DPRINTF(10, sc, "synaptics_gesture: single tap, tap at %d, current %d\n",
2009 sc->gesture_tap_packet, sc->total_packets);
2010 DPRINTF(10, sc, "synaptics_gesture: single tap, tap_time %d, gesture len %d\n",
2011 SYN_TIME(sc, sc->gesture_tap_packet), synaptics_gesture_length);
2013 if (SYN_IS_DOUBLE_TAP(sc->gesture_type) && sc->prev_fingers == 0) {
2019 sc->gesture_type &= ~SYN_GESTURE_DOUBLE;
2022 if (set_buttons || SYN_IS_DRAG(sc->gesture_type)) {
2032 sc->gesture_buttons = gesture_buttons;
2036 synaptics_filter_policy(struct synaptics_softc *sc, int finger, int *history,
2104 synaptics_edge_motion(struct synaptics_softc *sc, int delta, int dir)
2143 synaptics_movement(struct synaptics_softc *sc, struct synaptics_packet *sp,
2153 dx = synaptics_filter_policy(sc, 0,
2154 sc->history_x[SYN_PRIMARY_FINGER], sp->sp_x,
2155 sc->packet_count[SYN_PRIMARY_FINGER]);
2156 dy = synaptics_filter_policy(sc, 0,
2157 sc->history_y[SYN_PRIMARY_FINGER], sp->sp_y,
2158 sc->packet_count[SYN_PRIMARY_FINGER]);
2159 sc->packet_count[SYN_PRIMARY_FINGER]++;
2162 sdx = synaptics_filter_policy(sc, 1,
2163 sc->history_x[SYN_SECONDARY_FINGER], sp->sp_sx,
2164 sc->packet_count[SYN_SECONDARY_FINGER]);
2165 sdy = synaptics_filter_policy(sc, 1,
2166 sc->history_y[SYN_SECONDARY_FINGER], sp->sp_sy,
2167 sc->packet_count[SYN_SECONDARY_FINGER]);
2168 sc->packet_count[SYN_SECONDARY_FINGER]++;
2169 DPRINTF(10, sc, "synaptics_movement: dx %d dy %d sdx %d sdy %d\n",
2178 if (synaptics_edge_motion_delta && SYN_IS_DRAG(sc->gesture_type)) {
2182 dx -= synaptics_edge_motion(sc, dx, 1);
2184 dx += synaptics_edge_motion(sc, dx, -1);
2186 dy -= synaptics_edge_motion(sc, dy, 1);
2188 dy += synaptics_edge_motion(sc, dy, -1);
2194 sdx -= synaptics_edge_motion(sc, sdx, 1);
2196 sdx += synaptics_edge_motion(sc, sdx, -1);
2198 sdy -= synaptics_edge_motion(sc, sdy, 1);
2200 sdy += synaptics_edge_motion(sc, sdy, -1);
2208 &sc->rem_x[SYN_PRIMARY_FINGER]);
2210 &sc->rem_y[SYN_PRIMARY_FINGER]);
2212 &sc->rem_z[SYN_PRIMARY_FINGER]);
2216 &sc->rem_x[SYN_SECONDARY_FINGER]);
2218 &sc->rem_y[SYN_SECONDARY_FINGER]);
2220 &sc->rem_z[SYN_SECONDARY_FINGER]);
2222 DPRINTF(10, sc,
2258 struct synaptics_softc *sc = &psc->u.synaptics;
2274 if (sc->up_down == 0) {
2284 sc->up_down = sp->sp_up | sp->sp_down;
2293 fingers = synaptics_finger_detect(sc, sp, &palm);
2299 synaptics_gesture_detect(sc, sp, fingers);
2301 sc->gesture_type = sc->gesture_buttons = 0;
2314 sc->prev_fingers = fingers;
2322 synaptics_movement(sc, sp, &dx, &dy, &dz, &sdx, &sdy,
2331 if (sp->sp_finger_count >= 2 && sc->gesture_type == 0 ) {
2332 if (!(sc->flags & SYN_FLAG_HAS_ONE_BUTTON_CLICKPAD) ||
2333 ((sc->flags & SYN_FLAG_HAS_ONE_BUTTON_CLICKPAD) &&
2348 if (sc->flags & SYN_FLAG_HAS_ONE_BUTTON_CLICKPAD) {
2374 sc->rem_x[SYN_PRIMARY_FINGER] = 0;
2375 sc->rem_y[SYN_PRIMARY_FINGER] = 0;
2376 sc->rem_x[SYN_SECONDARY_FINGER] = 0;
2377 sc->rem_y[SYN_SECONDARY_FINGER] = 0;
2380 sc->packet_count[SYN_PRIMARY_FINGER] = 0;
2381 sc->packet_count[SYN_SECONDARY_FINGER] = 0;
2387 sc->rem_x[SYN_PRIMARY_FINGER] = 0;
2388 sc->rem_y[SYN_PRIMARY_FINGER] = 0;
2389 sc->rem_z[SYN_PRIMARY_FINGER] = 0;
2393 DPRINTF(10, sc,