| /* |
| * Focaltech TouchPad PS/2 mouse driver |
| * |
| * Copyright (c) 2014 Red Hat Inc. |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License as published by |
| * the Free Software Foundation; either version 2 of the License, or |
| * (at your option) any later version. |
| * |
| * Red Hat authors: |
| * |
| * Hans de Goede <hdegoede@redhat.com> |
| */ |
| |
| /* |
| * The Focaltech PS/2 touchpad protocol is unknown. This drivers deals with |
| * detection only, to avoid further detection attempts confusing the touchpad |
| * this way it at least works in PS/2 mouse compatibility mode. |
| */ |
| |
| #include <linux/device.h> |
| #include <linux/libps2.h> |
| #include "psmouse.h" |
| |
| static const char * const focaltech_pnp_ids[] = { |
| "FLT0101", |
| "FLT0102", |
| "FLT0103", |
| NULL |
| }; |
| |
| int focaltech_detect(struct psmouse *psmouse, bool set_properties) |
| { |
| if (!psmouse_matches_pnp_id(psmouse, focaltech_pnp_ids)) |
| return -ENODEV; |
| |
| if (set_properties) { |
| psmouse->vendor = "FocalTech"; |
| psmouse->name = "FocalTech Touchpad in mouse emulation mode"; |
| } |
| |
| return 0; |
| } |
| |
| int focaltech_init(struct psmouse *psmouse) |
| { |
| ps2_command(&psmouse->ps2dev, NULL, PSMOUSE_CMD_RESET_DIS); |
| psmouse_reset(psmouse); |
| |
| return 0; |
| } |