@@ -627,8 +627,12 @@ static int psmouse_extensions(struct psmouse *psmouse,
synaptics_hardware = true;
if (max_proto > PSMOUSE_IMEX) {
- if (!set_properties || synaptics_init(psmouse) == 0)
+ /* be careful to only offer the synaptics protocol for use when
+ * the support is available */
+ if (synaptics_supported() &&
+ (!set_properties || synaptics_init(psmouse) == 0))
return PSMOUSE_SYNAPTICS;
+
/*
* Some Synaptics touchpads can emulate extended protocols (like IMPS/2).
* Unfortunately Logitech/Genius probes confuse some firmware versions so
@@ -743,6 +743,11 @@ int synaptics_init(struct psmouse *psmouse)
return -1;
}
+int synaptics_supported(void)
+{
+ return 1;
+}
+
#else /* CONFIG_MOUSE_PS2_SYNAPTICS */
void __init synaptics_module_init(void)
@@ -754,5 +759,10 @@ int synaptics_init(struct psmouse *psmouse)
return -ENOSYS;
}
+int synaptics_supported(void)
+{
+ return 0;
+}
+
#endif /* CONFIG_MOUSE_PS2_SYNAPTICS */
@@ -109,5 +109,6 @@ void synaptics_module_init(void);
int synaptics_detect(struct psmouse *psmouse, bool set_properties);
int synaptics_init(struct psmouse *psmouse);
void synaptics_reset(struct psmouse *psmouse);
+int synaptics_supported(void);
#endif /* _SYNAPTICS_H */