diff mbox

[3/4] HID: Introduce a module parameter to disable automatic switch of Logitech gaming wheels from compatibility to native mode. This only applies to multimode wheels.

Message ID 1423240486-6714-4-git-send-email-madcatxster@devoid-pointer.net (mailing list archive)
State New, archived
Delegated to: Jiri Kosina
Headers show

Commit Message

Michal Malý Feb. 6, 2015, 4:34 p.m. UTC
Introduce a module parameter to disable automatic switch of Logitech gaming
wheels from compatibility to native mode. This only applies to multimode wheels.

Signed-off-by: Michal Malý <madcatxster@devoid-pointer.net> 
---
 drivers/hid/hid-lg.c    | 6 ++++++
 drivers/hid/hid-lg4ff.c | 4 +++-
 2 files changed, 9 insertions(+), 1 deletion(-)

Comments

Jiri Kosina Feb. 17, 2015, 12:10 p.m. UTC | #1
On Fri, 6 Feb 2015, Michal Malý wrote:

> Introduce a module parameter to disable automatic switch of Logitech gaming
> wheels from compatibility to native mode. This only applies to multimode wheels.
> 
> Signed-off-by: Michal Malý <madcatxster@devoid-pointer.net> 
> ---
>  drivers/hid/hid-lg.c    | 6 ++++++
>  drivers/hid/hid-lg4ff.c | 4 +++-
>  2 files changed, 9 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/hid/hid-lg.c b/drivers/hid/hid-lg.c
> index f91ff14..8dae03f 100644
> --- a/drivers/hid/hid-lg.c
> +++ b/drivers/hid/hid-lg.c
> @@ -818,4 +818,10 @@ static struct hid_driver lg_driver = {
>  };
>  module_hid_driver(lg_driver);
>  
> +#ifdef CONFIG_LOGIWHEELS_FF
> +extern int lg4ff_no_autoswitch; /* From hid-lg4ff.c */
> +module_param_named(lg4ff_no_autoswitch, lg4ff_no_autoswitch, int, S_IRUGO);
> +MODULE_PARM_DESC(lg4ff_no_autoswitch, "Do not switch multimode wheels to their native mode automatically");
> +#endif
> +
>  MODULE_LICENSE("GPL");
> diff --git a/drivers/hid/hid-lg4ff.c b/drivers/hid/hid-lg4ff.c
> index b9c9fe6..cbb000a 100644
> --- a/drivers/hid/hid-lg4ff.c
> +++ b/drivers/hid/hid-lg4ff.c
> @@ -67,6 +67,7 @@
>  #define LG4FF_FFEX_REV_MAJ 0x21
>  #define LG4FF_FFEX_REV_MIN 0x00
>  
> +int lg4ff_no_autoswitch = 0;

This sharing of variable without header file is ugly. Could you please 
declare it properly as extern in logitech header?
diff mbox

Patch

diff --git a/drivers/hid/hid-lg.c b/drivers/hid/hid-lg.c
index f91ff14..8dae03f 100644
--- a/drivers/hid/hid-lg.c
+++ b/drivers/hid/hid-lg.c
@@ -818,4 +818,10 @@  static struct hid_driver lg_driver = {
 };
 module_hid_driver(lg_driver);
 
+#ifdef CONFIG_LOGIWHEELS_FF
+extern int lg4ff_no_autoswitch; /* From hid-lg4ff.c */
+module_param_named(lg4ff_no_autoswitch, lg4ff_no_autoswitch, int, S_IRUGO);
+MODULE_PARM_DESC(lg4ff_no_autoswitch, "Do not switch multimode wheels to their native mode automatically");
+#endif
+
 MODULE_LICENSE("GPL");
diff --git a/drivers/hid/hid-lg4ff.c b/drivers/hid/hid-lg4ff.c
index b9c9fe6..cbb000a 100644
--- a/drivers/hid/hid-lg4ff.c
+++ b/drivers/hid/hid-lg4ff.c
@@ -67,6 +67,7 @@ 
 #define LG4FF_FFEX_REV_MAJ 0x21
 #define LG4FF_FFEX_REV_MIN 0x00
 
+int lg4ff_no_autoswitch = 0;
 static void hid_lg4ff_set_range_dfp(struct hid_device *hid, u16 range);
 static void hid_lg4ff_set_range_g25(struct hid_device *hid, u16 range);
 static ssize_t lg4ff_alternate_modes_show(struct device *dev, struct device_attribute *attr, char *buf);
@@ -808,7 +809,8 @@  int lg4ff_handle_multimode_wheel(struct hid_device *hid, u16 *real_product_id, c
 	/* Switch from "Driving Force" mode to native mode automatically.
 	 * Otherwise keep the wheel in its current mode */
 	if (reported_product_id == USB_DEVICE_ID_LOGITECH_WHEEL &&
-	    reported_product_id != *real_product_id) {
+	    reported_product_id != *real_product_id &&
+	    !lg4ff_no_autoswitch) {
 		const struct lg4ff_compat_mode_switch *s;
 
 		switch (*real_product_id) {