Lines Matching refs:psc
153 pms_alps_e6sig(struct pms_softc *psc, uint8_t *e6sig)
161 if ((res = pckbport_poll_cmd(psc->sc_kbctag, psc->sc_kbcslot,
165 if ((res = pckbport_poll_cmd(psc->sc_kbctag, psc->sc_kbcslot,
169 if ((res = pckbport_poll_cmd(psc->sc_kbctag, psc->sc_kbcslot,
173 if ((res = pckbport_poll_cmd(psc->sc_kbctag, psc->sc_kbcslot,
179 if ((res = pckbport_poll_cmd(psc->sc_kbctag, psc->sc_kbcslot,
191 aprint_debug_dev(psc->sc_dev,
197 aprint_error_dev(psc->sc_dev, "Failed to get E6 signature.\n");
205 pms_alps_e7sig(struct pms_softc *psc, uint8_t *e7sig)
212 if ((res = pckbport_poll_cmd(psc->sc_kbctag, psc->sc_kbcslot,
216 if ((res = pckbport_poll_cmd(psc->sc_kbctag, psc->sc_kbcslot,
220 if ((res = pckbport_poll_cmd(psc->sc_kbctag, psc->sc_kbcslot,
224 if ((res = pckbport_poll_cmd(psc->sc_kbctag, psc->sc_kbcslot,
229 if ((res = pckbport_poll_cmd(psc->sc_kbctag, psc->sc_kbcslot,
233 aprint_debug_dev(psc->sc_dev,
242 aprint_error_dev(psc->sc_dev, "Failed to get E7 signature.\n");
250 pms_alps_ecsig(struct pms_softc *psc, uint8_t *ecsig)
257 if ((res = pckbport_poll_cmd(psc->sc_kbctag, psc->sc_kbcslot,
261 if ((res = pckbport_poll_cmd(psc->sc_kbctag, psc->sc_kbcslot,
265 if ((res = pckbport_poll_cmd(psc->sc_kbctag, psc->sc_kbcslot,
269 if ((res = pckbport_poll_cmd(psc->sc_kbctag, psc->sc_kbcslot,
274 if ((res = pckbport_poll_cmd(psc->sc_kbctag, psc->sc_kbcslot,
278 aprint_debug_dev(psc->sc_dev,
285 aprint_debug_dev(psc->sc_dev, "Failed to get EC signature.\n");
293 pms_alps_start_command_mode(struct pms_softc *psc)
300 if ((res = pckbport_poll_cmd(psc->sc_kbctag, psc->sc_kbcslot,
304 if ((res = pckbport_poll_cmd(psc->sc_kbctag, psc->sc_kbcslot,
308 if ((res = pckbport_poll_cmd(psc->sc_kbctag, psc->sc_kbcslot,
313 if ((res = pckbport_poll_cmd(psc->sc_kbctag, psc->sc_kbcslot,
317 aprint_debug_dev(psc->sc_dev, "ALPS Firmware ID: 0x%x 0x%X 0x%X\n",
325 aprint_error_dev(psc->sc_dev, "Failed to start command mode.\n");
333 pms_alps_end_command_mode(struct pms_softc *psc)
339 if ((res = pckbport_poll_cmd(psc->sc_kbctag, psc->sc_kbcslot,
346 aprint_error_dev(psc->sc_dev, "Failed to end command mode.\n");
487 pms_alps_get_resolution_v7(struct pms_softc *psc)
490 struct alps_softc *sc = &psc->u.alps;
492 pckbport_tag_t tag = psc->sc_kbctag;
493 pckbport_slot_t slot = psc->sc_kbcslot;
548 pms_alps_enable_tap_mode_v2(struct pms_softc *psc)
556 if ((res = pckbport_poll_cmd(psc->sc_kbctag, psc->sc_kbcslot,
560 if ((res = pckbport_poll_cmd(psc->sc_kbctag, psc->sc_kbcslot,
564 if ((res = pckbport_poll_cmd(psc->sc_kbctag, psc->sc_kbcslot,
569 if ((res = pckbport_poll_cmd(psc->sc_kbctag, psc->sc_kbcslot,
575 if ((res = pckbport_poll_cmd(psc->sc_kbctag, psc->sc_kbcslot,
579 if ((res = pckbport_poll_cmd(psc->sc_kbctag, psc->sc_kbcslot,
583 if ((res = pckbport_poll_cmd(psc->sc_kbctag, psc->sc_kbcslot,
588 if ((res = pckbport_poll_cmd(psc->sc_kbctag, psc->sc_kbcslot,
592 aprint_debug_dev(psc->sc_dev, "Tap mode is enabled.\n");
596 aprint_error_dev(psc->sc_dev, "Failed to enable tap mode.\n");
601 pms_alps_init_v2(struct pms_softc *psc)
606 if ((res = pms_alps_enable_tap_mode_v2(psc)) != 0)
611 if ((res = pckbport_poll_cmd(psc->sc_kbctag, psc->sc_kbcslot,
615 if ((res = pckbport_poll_cmd(psc->sc_kbctag, psc->sc_kbcslot,
619 if ((res = pckbport_poll_cmd(psc->sc_kbctag, psc->sc_kbcslot,
623 if ((res = pckbport_poll_cmd(psc->sc_kbctag, psc->sc_kbcslot,
627 if ((res = pckbport_poll_cmd(psc->sc_kbctag, psc->sc_kbcslot,
633 if ((res = pckbport_poll_cmd(psc->sc_kbctag, psc->sc_kbcslot,
639 if ((res = pckbport_poll_cmd(psc->sc_kbctag, psc->sc_kbcslot,
647 aprint_error_dev(psc->sc_dev, "Failed to initialize V2 device.\n");
652 pms_alps_init_v7(struct pms_softc *psc)
659 if ((res = pms_alps_start_command_mode(psc)) != 0) {
662 if ((res = pms_alps_cm_read_1(psc->sc_kbctag, psc->sc_kbcslot, 0xc2d9, &val)) != 0) {
665 if ((res = pms_alps_get_resolution_v7(psc)) != 0) {
668 if ((res = pms_alps_cm_write_1(psc->sc_kbctag, psc->sc_kbcslot, 0xc2c9, 0x64)) != 0) {
673 if ((res = pms_alps_cm_read_1(psc->sc_kbctag, psc->sc_kbcslot, 0xc2c4, &val)) != 0) {
679 if ((res = pms_alps_cm_write_nibble(psc->sc_kbctag, psc->sc_kbcslot, nibble)) != 0) {
683 if ((res = pms_alps_cm_write_nibble(psc->sc_kbctag, psc->sc_kbcslot, nibble)) != 0) {
688 if ((res = pms_alps_end_command_mode(psc)) != 0)
694 (void)pms_alps_end_command_mode(psc);
695 aprint_error_dev(psc->sc_dev, "Failed to initialize V7 device.\n");
702 struct pms_softc *psc = opaque;
703 struct alps_softc *sc = &psc->u.alps;
717 pckbport_flush(psc->sc_kbctag, psc->sc_kbcslot);
719 if ((res = pms_alps_e6sig(psc, e6sig)) != 0)
722 if ((res = pms_alps_e7sig(psc, e7sig)) != 0)
725 if ((res = pms_alps_ecsig(psc, ecsig)) != 0)
742 if ((res = pms_alps_init_v7(psc)) != 0)
744 aprint_normal_dev(psc->sc_dev,
748 if ((res = pms_alps_init_v2(psc)) != 0)
750 aprint_normal_dev(psc->sc_dev,
761 pckbport_set_inputhandler(psc->sc_kbctag, psc->sc_kbcslot,
762 pms_alps_input_v7, psc, device_xname(psc->sc_dev));
764 pckbport_set_inputhandler(psc->sc_kbctag, psc->sc_kbcslot,
765 pms_alps_input_v2, psc, device_xname(psc->sc_dev));
776 (void)pckbport_poll_cmd(psc->sc_kbctag, psc->sc_kbcslot,
779 aprint_error_dev(psc->sc_dev, "Failed to initialize an ALPS device.\n");
786 struct pms_softc *psc = opaque;
787 struct alps_softc *sc = &psc->u.alps;
795 struct pms_softc *psc = opaque;
796 struct alps_softc *sc = &psc->u.alps;
801 res = pckbport_poll_cmd(psc->sc_kbctag, psc->sc_kbcslot, &cmd,
804 aprint_error_dev(psc->sc_dev,
808 (void)pms_alps_init_v7(psc);
810 (void)pms_alps_init_v2(psc);
814 pms_alps_enable(psc);
819 pms_alps_decode_trackstick_packet_v7(struct pms_softc *psc)
828 x = (int8_t)((psc->packet[2] & 0xbf) |
829 ((psc->packet[3] & 0x10) << 2));
830 y = (int8_t)((psc->packet[3] & 0x07) | (psc->packet[4] & 0xb8) |
831 ((psc->packet[3] & 0x20) << 1));
832 z = (int8_t)((psc->packet[5] & 0x3f) |
833 ((psc->packet[3] & 0x80) >> 1));
839 left = psc->packet[1] & 0x01;
840 middle = (psc->packet[1] & 0x04) >> 2;
841 right = (psc->packet[1] & 0x02) >> 1;
846 wsmouse_input(psc->sc_wsmousedev,
854 pms_alps_decode_packetid_v7(struct pms_softc *psc)
856 if (psc->packet[4] & 0x40)
858 else if (psc->packet[4] & 0x01)
860 else if ((psc->packet[0] & 0x10) && !(psc->packet[4] & 0x43))
862 else if ((psc->packet[1] == 0x00) && (psc->packet[4] == 0x00))
869 pms_alps_decode_touchpad_packet_v7(struct pms_softc *psc)
872 struct alps_softc *sc = &psc->u.alps;
881 packetid = pms_alps_decode_packetid_v7(psc);
897 cur_x1 = (psc->packet[2] & 0x80) << 4; /* X0-11 */
898 cur_x1 |= (psc->packet[2] & 0x3f) << 5; /* X0-10 ... X0-5 */
899 cur_x1 |= (psc->packet[3] & 0x30) >> 1; /* X0-4, X0-3 */
900 cur_x1 |= psc->packet[3] & 0x07; /* X0-2 ... X0-0 */
903 cur_y1 = psc->packet[1] << 3; /* Y0-10 ... Y0-3 */
904 cur_y1 |= psc->packet[0] & 0x07; /* Y0-2 ... Y0-0 */
907 cur_x2 = (psc->packet[3] & 0x80) << 4; /* X1-11 */
908 cur_x2 |= (psc->packet[4] & 0x80) << 3; /* X1-10 */
909 cur_x2 |= (psc->packet[4] & 0x3f) << 4; /* X1-9 ... X1-4 */
912 cur_y2 = (psc->packet[5] & 0x80) << 3; /* Y1-10 */
913 cur_y2 |= (psc->packet[5] & 0x3f) << 4; /* Y1-9 .. Y1-4 */
923 cur_y2 |= (psc->packet[4] & __BIT(1)) << 4; /* Set another */
947 sc->nfingers = 3 + (psc->packet[5] & 0x03);
951 button = (psc->packet[0] & 0x80) >> 7;
1003 wsmouse_input(psc->sc_wsmousedev,
1020 pms_alps_dispatch_packet_v7(struct pms_softc *psc)
1022 if ((psc->packet[0] == 0x48) && ((psc->packet[4] & 0x47) == 0x06))
1023 pms_alps_decode_trackstick_packet_v7(psc);
1025 pms_alps_decode_touchpad_packet_v7(psc);
1029 pms_alps_decode_touchpad_packet_v2(struct pms_softc *psc)
1032 struct alps_softc *sc = &psc->u.alps;
1040 sc->nfingers = (psc->packet[2] & 0x02) >> 1;
1044 left = psc->packet[3] & 0x01;
1045 right = (psc->packet[3] & 0x02) >> 1;
1046 middle = (psc->packet[3] & 0x04) >> 2;
1048 cur_x = psc->packet[1];
1049 cur_x |= (psc->packet[2] & 0x78) << 4;
1051 cur_y = psc->packet[4];
1052 cur_y |= (psc->packet[3] & 0x70) << 3;
1055 cur_z = psc->packet[5];
1058 forward = (psc->packet[2] & 0x04) >> 2;
1059 back = (psc->packet[3] & 0x04) >> 2;
1060 ges = psc->packet[2] & 0x01;
1078 wsmouse_input(psc->sc_wsmousedev,
1097 struct pms_softc *psc = opaque;
1099 if (!psc->sc_enabled)
1102 psc->packet[psc->inputstate++] = data & 0xff;
1103 if (psc->inputstate < 6)
1106 pms_alps_decode_touchpad_packet_v2(psc);
1108 psc->inputstate = 0;
1114 struct pms_softc *psc = opaque;
1116 if (!psc->sc_enabled)
1119 psc->packet[psc->inputstate++] = data & 0xff;
1120 if (psc->inputstate < 6)
1123 pms_alps_dispatch_packet_v7(psc);
1125 psc->inputstate = 0;