Lines Matching refs:psmouse
22 #include "psmouse.h"
248 static void alps_process_packet_v1_v2(struct psmouse *psmouse)
250 struct alps_data *priv = psmouse->private;
251 unsigned char *packet = psmouse->packet;
252 struct input_dev *dev = psmouse->dev;
510 static void alps_report_mt_data(struct psmouse *psmouse, int n)
512 struct alps_data *priv = psmouse->private;
513 struct input_dev *dev = psmouse->dev;
524 static void alps_report_semi_mt_data(struct psmouse *psmouse, int fingers)
526 struct alps_data *priv = psmouse->private;
527 struct input_dev *dev = psmouse->dev;
555 static void alps_process_trackstick_packet_v3(struct psmouse *psmouse)
557 struct alps_data *priv = psmouse->private;
558 unsigned char *packet = psmouse->packet;
564 psmouse_warn(psmouse,
571 psmouse_dbg(psmouse, "Bad trackstick packet, discarding\n");
635 struct psmouse *psmouse)
661 struct psmouse *psmouse)
689 struct psmouse *psmouse)
692 struct alps_data *priv = psmouse->private;
725 static void alps_process_touchpad_packet_v3_v5(struct psmouse *psmouse)
727 struct alps_data *priv = psmouse->private;
728 unsigned char *packet = psmouse->packet;
735 priv->decode_fields(f, packet, psmouse);
756 priv->decode_fields(f, priv->multi_data, psmouse);
792 alps_report_semi_mt_data(psmouse, fingers);
803 static void alps_process_packet_v3(struct psmouse *psmouse)
805 unsigned char *packet = psmouse->packet;
816 alps_process_trackstick_packet_v3(psmouse);
820 alps_process_touchpad_packet_v3_v5(psmouse);
823 static void alps_process_packet_v6(struct psmouse *psmouse)
825 struct alps_data *priv = psmouse->private;
826 unsigned char *packet = psmouse->packet;
827 struct input_dev *dev = psmouse->dev;
840 psmouse_warn(psmouse,
889 static void alps_process_packet_v4(struct psmouse *psmouse)
891 struct alps_data *priv = psmouse->private;
892 unsigned char *packet = psmouse->packet;
935 alps_report_semi_mt_data(psmouse, f->fingers);
938 static bool alps_is_valid_package_v7(struct psmouse *psmouse)
940 switch (psmouse->pktcnt) {
942 return (psmouse->packet[2] & 0x40) == 0x40;
944 return (psmouse->packet[3] & 0x48) == 0x48;
946 return (psmouse->packet[5] & 0x40) == 0x00;
1028 struct psmouse *psmouse)
1030 struct alps_data *priv = psmouse->private;
1088 static void alps_process_trackstick_packet_v7(struct psmouse *psmouse)
1090 struct alps_data *priv = psmouse->private;
1091 unsigned char *packet = psmouse->packet;
1097 psmouse_warn(psmouse,
1116 static void alps_process_touchpad_packet_v7(struct psmouse *psmouse)
1118 struct alps_data *priv = psmouse->private;
1119 struct input_dev *dev = psmouse->dev;
1124 if (priv->decode_fields(f, psmouse->packet, psmouse))
1127 alps_report_mt_data(psmouse, alps_get_mt_count(f->mt));
1138 static void alps_process_packet_v7(struct psmouse *psmouse)
1140 unsigned char *packet = psmouse->packet;
1143 alps_process_trackstick_packet_v7(psmouse);
1145 alps_process_touchpad_packet_v7(psmouse);
1178 unsigned char *p, struct psmouse *psmouse)
1180 struct alps_data *priv = psmouse->private;
1314 static void alps_process_packet_ss4_v2(struct psmouse *psmouse)
1316 struct alps_data *priv = psmouse->private;
1317 unsigned char *packet = psmouse->packet;
1318 struct input_dev *dev = psmouse->dev;
1323 priv->decode_fields(f, packet, psmouse);
1333 priv->decode_fields(f, priv->multi_data, psmouse);
1358 psmouse_warn(psmouse,
1376 alps_report_mt_data(psmouse, (f->fingers <= 4) ? f->fingers : 4);
1388 static bool alps_is_valid_package_ss4_v2(struct psmouse *psmouse)
1390 if (psmouse->pktcnt == 4 && ((psmouse->packet[3] & 0x08) != 0x08))
1392 if (psmouse->pktcnt == 6 && ((psmouse->packet[5] & 0x10) != 0x0))
1403 struct psmouse *psmouse = priv->psmouse;
1414 psmouse_err(psmouse, "failed to allocate secondary device\n");
1420 psmouse->ps2dev.serio->phys,
1426 * see function psmouse_switch_protocol() in psmouse-base.c
1434 dev3->dev.parent = &psmouse->ps2dev.serio->dev;
1446 psmouse_err(psmouse,
1466 static void alps_report_bare_ps2_packet(struct psmouse *psmouse,
1470 struct alps_data *priv = psmouse->private;
1478 dev2 = psmouse->dev;
1482 psmouse_queue_work(psmouse, &priv->dev3_register_work,
1498 static psmouse_ret_t alps_handle_interleaved_ps2(struct psmouse *psmouse)
1500 struct alps_data *priv = psmouse->private;
1502 if (psmouse->pktcnt < 6)
1505 if (psmouse->pktcnt == 6) {
1509 * psmouse core times out itself. 20 ms should be enough
1518 if (psmouse->packet[6] & 0x80) {
1526 if (((psmouse->packet[3] |
1527 psmouse->packet[4] |
1528 psmouse->packet[5]) & 0x80) ||
1529 (!alps_is_valid_first_byte(priv, psmouse->packet[6]))) {
1530 psmouse_dbg(psmouse,
1532 psmouse->packet + 3);
1536 priv->process_packet(psmouse);
1539 psmouse->packet[0] = psmouse->packet[6];
1540 psmouse->pktcnt = 1;
1560 alps_report_bare_ps2_packet(psmouse, &psmouse->packet[3],
1570 psmouse->packet[3] = psmouse->packet[6] & 0xf7;
1571 psmouse->pktcnt = 4;
1580 struct psmouse *psmouse = priv->psmouse;
1582 serio_pause_rx(psmouse->ps2dev.serio);
1584 if (psmouse->pktcnt == psmouse->pktsize) {
1591 if ((psmouse->packet[3] |
1592 psmouse->packet[4] |
1593 psmouse->packet[5]) & 0x80) {
1594 psmouse_dbg(psmouse,
1596 psmouse->packet + 3);
1598 priv->process_packet(psmouse);
1600 psmouse->pktcnt = 0;
1603 serio_continue_rx(psmouse->ps2dev.serio);
1606 static psmouse_ret_t alps_process_byte(struct psmouse *psmouse)
1608 struct alps_data *priv = psmouse->private;
1618 !psmouse->out_of_sync_cnt &&
1619 (psmouse->packet[0] & 0xc8) == 0x08) {
1621 if (psmouse->pktcnt == 3) {
1622 alps_report_bare_ps2_packet(psmouse, psmouse->packet,
1632 psmouse->pktcnt >= 4 && (psmouse->packet[3] & 0x0f) == 0x0f) {
1633 return alps_handle_interleaved_ps2(psmouse);
1636 if (!alps_is_valid_first_byte(priv, psmouse->packet[0])) {
1637 psmouse_dbg(psmouse,
1639 psmouse->packet[0], priv->mask0, priv->byte0);
1645 psmouse->pktcnt >= 2 && psmouse->pktcnt <= psmouse->pktsize &&
1646 (psmouse->packet[psmouse->pktcnt - 1] & 0x80)) {
1647 psmouse_dbg(psmouse, "refusing packet[%i] = %x\n",
1648 psmouse->pktcnt - 1,
1649 psmouse->packet[psmouse->pktcnt - 1]);
1652 psmouse->pktcnt == psmouse->pktsize) {
1669 !alps_is_valid_package_v7(psmouse)) ||
1671 !alps_is_valid_package_ss4_v2(psmouse))) {
1672 psmouse_dbg(psmouse, "refusing packet[%i] = %x\n",
1673 psmouse->pktcnt - 1,
1674 psmouse->packet[psmouse->pktcnt - 1]);
1678 if (psmouse->pktcnt == psmouse->pktsize) {
1679 priv->process_packet(psmouse);
1686 static int alps_command_mode_send_nibble(struct psmouse *psmouse, int nibble)
1688 struct ps2dev *ps2dev = &psmouse->ps2dev;
1689 struct alps_data *priv = psmouse->private;
1706 static int alps_command_mode_set_addr(struct psmouse *psmouse, int addr)
1708 struct ps2dev *ps2dev = &psmouse->ps2dev;
1709 struct alps_data *priv = psmouse->private;
1717 if (alps_command_mode_send_nibble(psmouse, nibble))
1724 static int __alps_command_mode_read_reg(struct psmouse *psmouse, int addr)
1726 struct ps2dev *ps2dev = &psmouse->ps2dev;
1743 static int alps_command_mode_read_reg(struct psmouse *psmouse, int addr)
1745 if (alps_command_mode_set_addr(psmouse, addr))
1747 return __alps_command_mode_read_reg(psmouse, addr);
1750 static int __alps_command_mode_write_reg(struct psmouse *psmouse, u8 value)
1752 if (alps_command_mode_send_nibble(psmouse, (value >> 4) & 0xf))
1754 if (alps_command_mode_send_nibble(psmouse, value & 0xf))
1759 static int alps_command_mode_write_reg(struct psmouse *psmouse, int addr,
1762 if (alps_command_mode_set_addr(psmouse, addr))
1764 return __alps_command_mode_write_reg(psmouse, value);
1767 static int alps_rpt_cmd(struct psmouse *psmouse, int init_command,
1770 struct ps2dev *ps2dev = &psmouse->ps2dev;
1785 psmouse_dbg(psmouse, "%2.2X report: %3ph\n",
1806 static int alps_enter_command_mode(struct psmouse *psmouse)
1810 if (alps_rpt_cmd(psmouse, 0, PSMOUSE_CMD_RESET_WRAP, param)) {
1811 psmouse_err(psmouse, "failed to enter command mode\n");
1816 psmouse_dbg(psmouse,
1823 static inline int alps_exit_command_mode(struct psmouse *psmouse)
1825 struct ps2dev *ps2dev = &psmouse->ps2dev;
1836 static int alps_passthrough_mode_v2(struct psmouse *psmouse, bool enable)
1838 struct ps2dev *ps2dev = &psmouse->ps2dev;
1853 static int alps_absolute_mode_v1_v2(struct psmouse *psmouse)
1855 struct ps2dev *ps2dev = &psmouse->ps2dev;
1872 static int alps_monitor_mode_send_word(struct psmouse *psmouse, u16 word)
1882 if (alps_command_mode_send_nibble(psmouse, nibble))
1889 static int alps_monitor_mode_write_reg(struct psmouse *psmouse,
1892 struct ps2dev *ps2dev = &psmouse->ps2dev;
1896 alps_monitor_mode_send_word(psmouse, 0x0A0) ||
1897 alps_monitor_mode_send_word(psmouse, addr) ||
1898 alps_monitor_mode_send_word(psmouse, value) ||
1905 static int alps_monitor_mode(struct psmouse *psmouse, bool enable)
1907 struct ps2dev *ps2dev = &psmouse->ps2dev;
1929 static int alps_absolute_mode_v6(struct psmouse *psmouse)
1935 if (alps_monitor_mode(psmouse, true))
1938 ret = alps_monitor_mode_write_reg(psmouse, 0x000, reg_val);
1940 if (alps_monitor_mode(psmouse, false))
1946 static int alps_get_status(struct psmouse *psmouse, char *param)
1949 if (alps_rpt_cmd(psmouse, 0, PSMOUSE_CMD_DISABLE, param))
1964 static int alps_tap_mode(struct psmouse *psmouse, int enable)
1966 struct ps2dev *ps2dev = &psmouse->ps2dev;
1977 if (alps_get_status(psmouse, param))
1987 static int alps_poll(struct psmouse *psmouse)
1989 struct alps_data *priv = psmouse->private;
1990 unsigned char buf[sizeof(psmouse->packet)];
1994 alps_passthrough_mode_v2(psmouse, true);
1996 poll_failed = ps2_command(&psmouse->ps2dev, buf,
1997 PSMOUSE_CMD_POLL | (psmouse->pktsize << 8)) < 0;
2000 alps_passthrough_mode_v2(psmouse, false);
2005 if ((psmouse->badbyte & 0xc8) == 0x08) {
2009 if (ps2_command(&psmouse->ps2dev, buf, PSMOUSE_CMD_POLL | (3 << 8)))
2013 memcpy(psmouse->packet, buf, sizeof(buf));
2017 static int alps_hw_init_v1_v2(struct psmouse *psmouse)
2019 struct alps_data *priv = psmouse->private;
2022 alps_passthrough_mode_v2(psmouse, true)) {
2026 if (alps_tap_mode(psmouse, true)) {
2027 psmouse_warn(psmouse, "Failed to enable hardware tapping\n");
2031 if (alps_absolute_mode_v1_v2(psmouse)) {
2032 psmouse_err(psmouse, "Failed to enable absolute mode\n");
2037 alps_passthrough_mode_v2(psmouse, false)) {
2042 if (ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_SETSTREAM)) {
2043 psmouse_err(psmouse, "Failed to enable stream mode\n");
2051 static int alps_trackstick_enter_extended_mode_v3_v6(struct psmouse *psmouse)
2055 if (ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_SETSCALE11) ||
2056 ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_SETSCALE11) ||
2057 ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_SETSCALE11) ||
2058 ps2_command(&psmouse->ps2dev, ¶m[0], PSMOUSE_CMD_SETRATE) ||
2059 ps2_command(&psmouse->ps2dev, ¶m[1], PSMOUSE_CMD_SETRATE))
2065 static int alps_hw_init_v6(struct psmouse *psmouse)
2070 if (alps_passthrough_mode_v2(psmouse, true))
2073 ret = alps_trackstick_enter_extended_mode_v3_v6(psmouse);
2075 if (alps_passthrough_mode_v2(psmouse, false))
2081 if (alps_absolute_mode_v6(psmouse)) {
2082 psmouse_err(psmouse, "Failed to enable absolute mode\n");
2092 static int alps_passthrough_mode_v3(struct psmouse *psmouse,
2097 if (alps_enter_command_mode(psmouse))
2100 reg_val = alps_command_mode_read_reg(psmouse, reg_base + 0x0008);
2109 ret = __alps_command_mode_write_reg(psmouse, reg_val);
2112 if (alps_exit_command_mode(psmouse))
2118 static int alps_absolute_mode_v3(struct psmouse *psmouse)
2122 reg_val = alps_command_mode_read_reg(psmouse, 0x0004);
2127 if (__alps_command_mode_write_reg(psmouse, reg_val))
2133 static int alps_probe_trackstick_v3_v7(struct psmouse *psmouse, int reg_base)
2137 if (alps_enter_command_mode(psmouse))
2140 reg_val = alps_command_mode_read_reg(psmouse, reg_base + 0x08);
2148 alps_exit_command_mode(psmouse);
2152 static int alps_setup_trackstick_v3(struct psmouse *psmouse, int reg_base)
2166 if (alps_passthrough_mode_v3(psmouse, reg_base, true))
2178 if (alps_rpt_cmd(psmouse, 0, PSMOUSE_CMD_SETSCALE21, param)) {
2179 psmouse_warn(psmouse, "Failed to initialize trackstick (E7 report failed)\n");
2182 psmouse_dbg(psmouse, "trackstick E7 report: %3ph\n", param);
2183 if (alps_trackstick_enter_extended_mode_v3_v6(psmouse)) {
2184 psmouse_err(psmouse, "Failed to enter into trackstick extended mode\n");
2189 if (alps_passthrough_mode_v3(psmouse, reg_base, false))
2195 if (alps_enter_command_mode(psmouse))
2198 reg_val = alps_command_mode_read_reg(psmouse, reg_base + 0x08);
2207 if (__alps_command_mode_write_reg(psmouse, reg_val))
2211 if (alps_exit_command_mode(psmouse))
2217 static int alps_hw_init_v3(struct psmouse *psmouse)
2219 struct alps_data *priv = psmouse->private;
2220 struct ps2dev *ps2dev = &psmouse->ps2dev;
2225 alps_setup_trackstick_v3(psmouse, ALPS_REG_BASE_PINNACLE) == -EIO)
2228 if (alps_enter_command_mode(psmouse) ||
2229 alps_absolute_mode_v3(psmouse)) {
2230 psmouse_err(psmouse, "Failed to enter absolute mode\n");
2234 reg_val = alps_command_mode_read_reg(psmouse, 0x0006);
2237 if (__alps_command_mode_write_reg(psmouse, reg_val | 0x01))
2240 reg_val = alps_command_mode_read_reg(psmouse, 0x0007);
2243 if (__alps_command_mode_write_reg(psmouse, reg_val | 0x01))
2246 if (alps_command_mode_read_reg(psmouse, 0x0144) == -1)
2248 if (__alps_command_mode_write_reg(psmouse, 0x04))
2251 if (alps_command_mode_read_reg(psmouse, 0x0159) == -1)
2253 if (__alps_command_mode_write_reg(psmouse, 0x03))
2256 if (alps_command_mode_read_reg(psmouse, 0x0163) == -1)
2258 if (alps_command_mode_write_reg(psmouse, 0x0163, 0x03))
2261 if (alps_command_mode_read_reg(psmouse, 0x0162) == -1)
2263 if (alps_command_mode_write_reg(psmouse, 0x0162, 0x04))
2266 alps_exit_command_mode(psmouse);
2272 psmouse_err(psmouse, "Failed to enable data reporting\n");
2284 alps_exit_command_mode(psmouse);
2288 static int alps_get_v3_v7_resolution(struct psmouse *psmouse, int reg_pitch)
2291 struct alps_data *priv = psmouse->private;
2293 reg = alps_command_mode_read_reg(psmouse, reg_pitch);
2303 reg = alps_command_mode_read_reg(psmouse, reg_pitch + 1);
2319 psmouse_dbg(psmouse,
2327 static int alps_hw_init_rushmore_v3(struct psmouse *psmouse)
2329 struct alps_data *priv = psmouse->private;
2330 struct ps2dev *ps2dev = &psmouse->ps2dev;
2334 reg_val = alps_setup_trackstick_v3(psmouse,
2340 if (alps_enter_command_mode(psmouse) ||
2341 alps_command_mode_read_reg(psmouse, 0xc2d9) == -1 ||
2342 alps_command_mode_write_reg(psmouse, 0xc2cb, 0x00))
2345 if (alps_get_v3_v7_resolution(psmouse, 0xc2da))
2348 reg_val = alps_command_mode_read_reg(psmouse, 0xc2c6);
2351 if (__alps_command_mode_write_reg(psmouse, reg_val & 0xfd))
2354 if (alps_command_mode_write_reg(psmouse, 0xc2c9, 0x64))
2358 reg_val = alps_command_mode_read_reg(psmouse, 0xc2c4);
2361 if (__alps_command_mode_write_reg(psmouse, reg_val | 0x02))
2364 alps_exit_command_mode(psmouse);
2368 alps_exit_command_mode(psmouse);
2373 static int alps_absolute_mode_v4(struct psmouse *psmouse)
2377 reg_val = alps_command_mode_read_reg(psmouse, 0x0004);
2382 if (__alps_command_mode_write_reg(psmouse, reg_val))
2388 static int alps_hw_init_v4(struct psmouse *psmouse)
2390 struct ps2dev *ps2dev = &psmouse->ps2dev;
2393 if (alps_enter_command_mode(psmouse))
2396 if (alps_absolute_mode_v4(psmouse)) {
2397 psmouse_err(psmouse, "Failed to enter absolute mode\n");
2401 if (alps_command_mode_write_reg(psmouse, 0x0007, 0x8c))
2404 if (alps_command_mode_write_reg(psmouse, 0x0149, 0x03))
2407 if (alps_command_mode_write_reg(psmouse, 0x0160, 0x03))
2410 if (alps_command_mode_write_reg(psmouse, 0x017f, 0x15))
2413 if (alps_command_mode_write_reg(psmouse, 0x0151, 0x01))
2416 if (alps_command_mode_write_reg(psmouse, 0x0168, 0x03))
2419 if (alps_command_mode_write_reg(psmouse, 0x014a, 0x03))
2422 if (alps_command_mode_write_reg(psmouse, 0x0161, 0x03))
2425 alps_exit_command_mode(psmouse);
2445 psmouse_err(psmouse, "Failed to enable data reporting\n");
2457 alps_exit_command_mode(psmouse);
2461 static int alps_get_otp_values_ss4_v2(struct psmouse *psmouse,
2464 struct ps2dev *ps2dev = &psmouse->ps2dev;
2550 struct psmouse *psmouse)
2554 struct ps2dev *ps2dev = &psmouse->ps2dev;
2561 if (alps_exit_command_mode(psmouse) == 0 &&
2562 alps_enter_command_mode(psmouse) == 0) {
2563 reg_val = alps_command_mode_read_reg(psmouse,
2566 alps_exit_command_mode(psmouse);
2581 static int alps_set_defaults_ss4_v2(struct psmouse *psmouse,
2588 if (alps_get_otp_values_ss4_v2(psmouse, 1, &otp[1][0]) ||
2589 alps_get_otp_values_ss4_v2(psmouse, 0, &otp[0][0]))
2596 alps_update_dual_info_ss4_v2(otp, priv, psmouse);
2601 static int alps_dolphin_get_device_area(struct psmouse *psmouse,
2604 struct ps2dev *ps2dev = &psmouse->ps2dev;
2608 if (alps_enter_command_mode(psmouse))
2641 if (alps_exit_command_mode(psmouse))
2647 static int alps_hw_init_dolphin_v1(struct psmouse *psmouse)
2649 struct ps2dev *ps2dev = &psmouse->ps2dev;
2664 static int alps_hw_init_v7(struct psmouse *psmouse)
2666 struct ps2dev *ps2dev = &psmouse->ps2dev;
2669 if (alps_enter_command_mode(psmouse) ||
2670 alps_command_mode_read_reg(psmouse, 0xc2d9) == -1)
2673 if (alps_get_v3_v7_resolution(psmouse, 0xc397))
2676 if (alps_command_mode_write_reg(psmouse, 0xc2c9, 0x64))
2679 reg_val = alps_command_mode_read_reg(psmouse, 0xc2c4);
2682 if (__alps_command_mode_write_reg(psmouse, reg_val | 0x02))
2685 alps_exit_command_mode(psmouse);
2689 alps_exit_command_mode(psmouse);
2693 static int alps_hw_init_ss4_v2(struct psmouse *psmouse)
2695 struct ps2dev *ps2dev = &psmouse->ps2dev;
2708 if (alps_exit_command_mode(psmouse) ||
2709 alps_enter_command_mode(psmouse) ||
2710 alps_command_mode_write_reg(psmouse, 0x001D, 0x20)) {
2713 alps_exit_command_mode(psmouse);
2718 alps_exit_command_mode(psmouse);
2722 static int alps_set_protocol(struct psmouse *psmouse,
2726 psmouse->private = priv;
2760 if (alps_probe_trackstick_v3_v7(psmouse,
2776 if (alps_probe_trackstick_v3_v7(psmouse,
2800 if (alps_dolphin_get_device_area(psmouse, priv))
2827 if (alps_probe_trackstick_v3_v7(psmouse, ALPS_REG_BASE_V7) < 0)
2840 if (alps_set_defaults_ss4_v2(psmouse, priv))
2865 static bool alps_is_cs19_trackpoint(struct psmouse *psmouse)
2869 if (ps2_command(&psmouse->ps2dev,
2882 static int alps_identify(struct psmouse *psmouse, struct alps_data *priv)
2894 if (alps_rpt_cmd(psmouse, PSMOUSE_CMD_SETRES,
2905 if (alps_rpt_cmd(psmouse, PSMOUSE_CMD_SETRES,
2907 alps_rpt_cmd(psmouse, PSMOUSE_CMD_SETRES,
2909 alps_exit_command_mode(psmouse))
2933 psmouse_warn(psmouse,
2938 psmouse_dbg(psmouse,
2948 error = alps_set_protocol(psmouse, priv, protocol);
2956 static int alps_reconnect(struct psmouse *psmouse)
2958 struct alps_data *priv = psmouse->private;
2960 psmouse_reset(psmouse);
2962 if (alps_identify(psmouse, priv) < 0)
2965 return priv->hw_init(psmouse);
2968 static void alps_disconnect(struct psmouse *psmouse)
2970 struct alps_data *priv = psmouse->private;
2972 psmouse_reset(psmouse);
3038 int alps_init(struct psmouse *psmouse)
3040 struct alps_data *priv = psmouse->private;
3041 struct input_dev *dev1 = psmouse->dev;
3044 error = priv->hw_init(psmouse);
3049 * Undo part of setup done for us by psmouse core since touchpad
3096 psmouse_err(psmouse,
3103 psmouse->ps2dev.serio->phys);
3108 * see function psmouse_switch_protocol() in psmouse-base.c
3116 dev2->dev.parent = &psmouse->ps2dev.serio->dev;
3133 psmouse_err(psmouse,
3143 priv->psmouse = psmouse;
3148 psmouse->protocol_handler = alps_process_byte;
3149 psmouse->poll = alps_poll;
3150 psmouse->disconnect = alps_disconnect;
3151 psmouse->reconnect = alps_reconnect;
3152 psmouse->pktsize = priv->proto_version == ALPS_PROTO_V4 ? 8 : 6;
3155 psmouse->resync_time = 0;
3158 psmouse->resetafter = psmouse->pktsize * 2;
3163 psmouse_reset(psmouse);
3165 * Even though we did not allocate psmouse->private we do free
3168 kfree(psmouse->private);
3169 psmouse->private = NULL;
3173 int alps_detect(struct psmouse *psmouse, bool set_properties)
3178 error = alps_identify(psmouse, NULL);
3190 if (alps_is_cs19_trackpoint(psmouse)) {
3191 psmouse_dbg(psmouse,
3202 psmouse_reset(psmouse);
3208 error = alps_identify(psmouse, priv);
3215 psmouse->vendor = "ALPS";
3216 psmouse->name = priv->flags & ALPS_DUALPOINT ?
3218 psmouse->model = priv->proto_version;
3227 psmouse->private = NULL;