Browse Source

Input: synaptics - warn the users when there is a better mode

The Synaptics touchpads are now either using i2c-hid or rmi-smbus.
Warn the users if they are missing the rmi-smbus modules and have no
chance of reporting correct data.

Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
Benjamin Tissoires 8 years ago
parent
commit
f4101ff87d
1 changed files with 15 additions and 7 deletions
  1. 15 7
      drivers/input/mouse/synaptics.c

+ 15 - 7
drivers/input/mouse/synaptics.c

@@ -176,6 +176,12 @@ static const char * const smbus_pnp_ids[] = {
 	NULL
 	NULL
 };
 };
 
 
+static const char * const forcepad_pnp_ids[] = {
+	"SYN300D",
+	"SYN3014",
+	NULL
+};
+
 /*
 /*
  * Send a command to the synpatics touchpad by special commands
  * Send a command to the synpatics touchpad by special commands
  */
  */
@@ -482,13 +488,6 @@ static const struct min_max_quirk min_max_pnpid_table[] = {
 	{ }
 	{ }
 };
 };
 
 
-/* This list has been kindly provided by Synaptics. */
-static const char * const forcepad_pnp_ids[] = {
-	"SYN300D",
-	"SYN3014",
-	NULL
-};
-
 /*****************************************************************************
 /*****************************************************************************
  *	Synaptics communications functions
  *	Synaptics communications functions
  ****************************************************************************/
  ****************************************************************************/
@@ -1813,6 +1812,15 @@ int synaptics_init(struct psmouse *psmouse)
 	}
 	}
 
 
 	if (SYN_CAP_INTERTOUCH(info.ext_cap_0c)) {
 	if (SYN_CAP_INTERTOUCH(info.ext_cap_0c)) {
+		if ((!IS_ENABLED(CONFIG_RMI4_SMB) ||
+		     !IS_ENABLED(CONFIG_MOUSE_PS2_SYNAPTICS_SMBUS)) &&
+		    /* Forcepads need F21, which is not ready */
+		    !psmouse_matches_pnp_id(psmouse, forcepad_pnp_ids)) {
+			psmouse_warn(psmouse,
+				     "The touchpad can support a better bus than the too old PS/2 protocol. "
+				     "Make sure MOUSE_PS2_SYNAPTICS_SMBUS and RMI4_SMB are enabled to get a better touchpad experience.\n");
+		}
+
 		error = synaptics_setup_intertouch(psmouse, &info, true);
 		error = synaptics_setup_intertouch(psmouse, &info, true);
 		if (!error)
 		if (!error)
 			return PSMOUSE_SYNAPTICS_SMBUS;
 			return PSMOUSE_SYNAPTICS_SMBUS;