Message ID | 20240913060710.1325640-1-wade.wang@hp.com (mailing list archive) |
---|---|
State | New |
Delegated to: | Jiri Kosina |
Headers | show |
Series | HID: plantronics: Additional PID for double volume key presses quirk | expand |
On Fri, Sep 13, 2024 at 02:07:10PM +0800, Wade Wang wrote: > Add the below headsets for double volume key presses quirk > Plantronics EncorePro 500 Series (047f:431e) > Plantronics Blackwire_3325 Series (047f:430c) > > Quote from previous patch by Maxim Mikityanskiy and Terry Junge > 'commit f567d6ef8606 ("HID: plantronics: Workaround for double volume > key presses")' > 'commit 3d57f36c89d8 ("HID: plantronics: Additional PIDs for double > volume key presses quirk")' > These Plantronics Series headset sends an opposite volume key following > each volume key press. This patch adds a quirk to hid-plantronics for this > product ID, which will ignore the second opposite volume key press if it > happens within 250 ms from the last one that was handled. > > Cc: stable@vger.kernel.org > Signed-off-by: Wade Wang <wade.wang@hp.com> > --- > drivers/hid/hid-ids.h | 2 ++ > drivers/hid/hid-plantronics.c | 11 +++++++++++ > 2 files changed, 13 insertions(+) > > diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h > index 781c5aa29859..a0aaac98a891 100644 > --- a/drivers/hid/hid-ids.h > +++ b/drivers/hid/hid-ids.h > @@ -1050,6 +1050,8 @@ > #define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3220_SERIES 0xc056 > #define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3215_SERIES 0xc057 > #define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3225_SERIES 0xc058 > +#define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3325_SERIES 0x430c > +#define USB_DEVICE_ID_PLANTRONICS_ENCOREPRO_500_SERIES 0x431e > > #define USB_VENDOR_ID_PANASONIC 0x04da > #define USB_DEVICE_ID_PANABOARD_UBT780 0x1044 > diff --git a/drivers/hid/hid-plantronics.c b/drivers/hid/hid-plantronics.c > index 3d414ae194ac..2a19f3646ecb 100644 > --- a/drivers/hid/hid-plantronics.c > +++ b/drivers/hid/hid-plantronics.c > @@ -38,8 +38,10 @@ > (usage->hid & HID_USAGE_PAGE) == HID_UP_CONSUMER) > > #define PLT_QUIRK_DOUBLE_VOLUME_KEYS BIT(0) > +#define PLT_QUIRK_FOLLOWED_VOLUME_UP_DN_KEYS BIT(1) > > #define PLT_DOUBLE_KEY_TIMEOUT 5 /* ms */ > +#define PLT_FOLLOWED_KEY_TIMEOUT 250 /* ms */ > > struct plt_drv_data { > unsigned long device_type; > @@ -134,6 +136,9 @@ static int plantronics_event(struct hid_device *hdev, struct hid_field *field, > cur_ts = jiffies; > if (jiffies_to_msecs(cur_ts - prev_ts) <= PLT_DOUBLE_KEY_TIMEOUT) > return 1; /* Ignore the repeated key. */ > + if ((drv_data->quirks & PLT_QUIRK_FOLLOWED_VOLUME_UP_DN_KEYS) > + && jiffies_to_msecs(cur_ts - prev_ts) <= PLT_FOLLOWED_KEY_TIMEOUT) > + return 1; /* Ignore the followed volume key. */ > > drv_data->last_volume_key_ts = cur_ts; > } > @@ -210,6 +215,12 @@ static const struct hid_device_id plantronics_devices[] = { > { HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS, > USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3225_SERIES), > .driver_data = PLT_QUIRK_DOUBLE_VOLUME_KEYS }, > + { HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS, > + USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3325_SERIES), > + .driver_data = PLT_QUIRK_DOUBLE_VOLUME_KEYS|PLT_QUIRK_FOLLOWED_VOLUME_UP_DN_KEYS }, > + { HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS, > + USB_DEVICE_ID_PLANTRONICS_ENCOREPRO_500_SERIES), > + .driver_data = PLT_QUIRK_DOUBLE_VOLUME_KEYS|PLT_QUIRK_FOLLOWED_VOLUME_UP_DN_KEYS }, > { HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS, HID_ANY_ID) }, > { } > }; > -- > 2.34.1 > > Hi, This is the friendly patch-bot of Greg Kroah-Hartman. You have sent him a patch that has triggered this response. He used to manually respond to these common problems, but in order to save his sanity (he kept writing the same thing over and over, yet to different people), I was created. Hopefully you will not take offence and will fix the problem in your patch and resubmit it so that it can be accepted into the Linux kernel tree. You are receiving this message because of the following common error(s) as indicated below: - This looks like a new version of a previously submitted patch, but you did not list below the --- line any changes from the previous version. Please read the section entitled "The canonical patch format" in the kernel file, Documentation/process/submitting-patches.rst for what needs to be done here to properly describe this. If you wish to discuss this problem further, or you have questions about how to resolve this issue, please feel free to respond to this email and Greg will reply once he has dug out from the pending patches received from other developers. thanks, greg k-h's patch email bot
Hi Greg, Just add "Cc: stable@vger.kernel.org" in 2nd patch submission, because kernel test robot required. Any other thing I need to do for your question now? Thanks Regards Wade -----Original Message----- From: Greg KH <greg@kroah.com> Sent: Friday, September 13, 2024 2:28 PM To: Wang, Wade <wade.wang@hp.com> Cc: jikos@kernel.org; bentiss@kernel.org; linux-input@vger.kernel.org; linux-kernel@vger.kernel.org; stable@vger.kernel.org Subject: Re: [PATCH] HID: plantronics: Additional PID for double volume key presses quirk CAUTION: External Email On Fri, Sep 13, 2024 at 02:07:10PM +0800, Wade Wang wrote: > Add the below headsets for double volume key presses quirk > Plantronics EncorePro 500 Series (047f:431e) > Plantronics Blackwire_3325 Series (047f:430c) > > Quote from previous patch by Maxim Mikityanskiy and Terry Junge > 'commit f567d6ef8606 ("HID: plantronics: Workaround for double volume > key presses")' > 'commit 3d57f36c89d8 ("HID: plantronics: Additional PIDs for double > volume key presses quirk")' > These Plantronics Series headset sends an opposite volume key > following each volume key press. This patch adds a quirk to > hid-plantronics for this product ID, which will ignore the second > opposite volume key press if it happens within 250 ms from the last one that was handled. > > Cc: stable@vger.kernel.org > Signed-off-by: Wade Wang <wade.wang@hp.com> > --- > drivers/hid/hid-ids.h | 2 ++ > drivers/hid/hid-plantronics.c | 11 +++++++++++ > 2 files changed, 13 insertions(+) > > diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h index > 781c5aa29859..a0aaac98a891 100644 > --- a/drivers/hid/hid-ids.h > +++ b/drivers/hid/hid-ids.h > @@ -1050,6 +1050,8 @@ > #define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3220_SERIES 0xc056 > #define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3215_SERIES 0xc057 > #define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3225_SERIES 0xc058 > +#define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3325_SERIES 0x430c > +#define USB_DEVICE_ID_PLANTRONICS_ENCOREPRO_500_SERIES 0x431e > > #define USB_VENDOR_ID_PANASONIC 0x04da > #define USB_DEVICE_ID_PANABOARD_UBT780 0x1044 > diff --git a/drivers/hid/hid-plantronics.c > b/drivers/hid/hid-plantronics.c index 3d414ae194ac..2a19f3646ecb > 100644 > --- a/drivers/hid/hid-plantronics.c > +++ b/drivers/hid/hid-plantronics.c > @@ -38,8 +38,10 @@ > (usage->hid & HID_USAGE_PAGE) == > HID_UP_CONSUMER) > > #define PLT_QUIRK_DOUBLE_VOLUME_KEYS BIT(0) > +#define PLT_QUIRK_FOLLOWED_VOLUME_UP_DN_KEYS BIT(1) > > #define PLT_DOUBLE_KEY_TIMEOUT 5 /* ms */ > +#define PLT_FOLLOWED_KEY_TIMEOUT 250 /* ms */ > > struct plt_drv_data { > unsigned long device_type; > @@ -134,6 +136,9 @@ static int plantronics_event(struct hid_device *hdev, struct hid_field *field, > cur_ts = jiffies; > if (jiffies_to_msecs(cur_ts - prev_ts) <= PLT_DOUBLE_KEY_TIMEOUT) > return 1; /* Ignore the repeated key. */ > + if ((drv_data->quirks & PLT_QUIRK_FOLLOWED_VOLUME_UP_DN_KEYS) > + && jiffies_to_msecs(cur_ts - prev_ts) <= PLT_FOLLOWED_KEY_TIMEOUT) > + return 1; /* Ignore the followed volume key. */ > > drv_data->last_volume_key_ts = cur_ts; > } > @@ -210,6 +215,12 @@ static const struct hid_device_id plantronics_devices[] = { > { HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS, > USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3225_SERIES), > .driver_data = PLT_QUIRK_DOUBLE_VOLUME_KEYS }, > + { HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS, > + USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3325_SERIES), > + .driver_data = PLT_QUIRK_DOUBLE_VOLUME_KEYS|PLT_QUIRK_FOLLOWED_VOLUME_UP_DN_KEYS }, > + { HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS, > + USB_DEVICE_ID_PLANTRONICS_ENCOREPRO_500_SERIES), > + .driver_data = > + PLT_QUIRK_DOUBLE_VOLUME_KEYS|PLT_QUIRK_FOLLOWED_VOLUME_UP_DN_KEYS }, > { HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS, HID_ANY_ID) }, > { } > }; > -- > 2.34.1 > > Hi, This is the friendly patch-bot of Greg Kroah-Hartman. You have sent him a patch that has triggered this response. He used to manually respond to these common problems, but in order to save his sanity (he kept writing the same thing over and over, yet to different people), I was created. Hopefully you will not take offence and will fix the problem in your patch and resubmit it so that it can be accepted into the Linux kernel tree. You are receiving this message because of the following common error(s) as indicated below: - This looks like a new version of a previously submitted patch, but you did not list below the --- line any changes from the previous version. Please read the section entitled "The canonical patch format" in the kernel file, Documentation/process/submitting-patches.rst for what needs to be done here to properly describe this. If you wish to discuss this problem further, or you have questions about how to resolve this issue, please feel free to respond to this email and Greg will reply once he has dug out from the pending patches received from other developers. thanks, greg k-h's patch email bot
Please do not top-post. On Fri, Sep 13, 2024 at 07:16:13AM +0000, Wang, Wade wrote: > Hi Greg, > > Just add "Cc: stable@vger.kernel.org" in 2nd patch submission, because kernel test robot required. Any other thing I need to do for your question now? Thanks That's a great start, but you need to document the difference when you do this, as the documentation says to do so, below the --- line. Otherwise maintainers have no idea what changed, and what version of a patch to take. Think about what you would want to see if you got 1000 emails a day to do something with? thanks, greg k-h
On Sep 13 2024, Wade Wang wrote: > Add the below headsets for double volume key presses quirk > Plantronics EncorePro 500 Series (047f:431e) > Plantronics Blackwire_3325 Series (047f:430c) > > Quote from previous patch by Maxim Mikityanskiy and Terry Junge > 'commit f567d6ef8606 ("HID: plantronics: Workaround for double volume > key presses")' > 'commit 3d57f36c89d8 ("HID: plantronics: Additional PIDs for double > volume key presses quirk")' > These Plantronics Series headset sends an opposite volume key following > each volume key press. This patch adds a quirk to hid-plantronics for this > product ID, which will ignore the second opposite volume key press if it > happens within 250 ms from the last one that was handled. This commit message is very confusing: - you mention that you are quoting 2 commits, - but then you don't quote them but slightly reword the content - and then, and most of all, you insert in the driver a new timeout of 250 ms, which seems to not be with the same bases than f567d6ef8606 where it is mentioned that "Auto-repeat (when a key is held pressed) is not affected, because the rate is about 3 times per second, which is far less frequent than once in 5 ms." -> 250 ms gets in the roughly same range than 3 times per seconds, so some more explanations is required Please also follow Greg's advice and, as you replied in your last message that didn't made the list (HTML), please resubmit the series with a clear v3 indicator and a description of changes. Ideally, I'd like to also have the other plantronics patch you sent today in the same series, so I know which order I should apply them, in case one rely on the other. Cheers, Benjamin > > Cc: stable@vger.kernel.org > Signed-off-by: Wade Wang <wade.wang@hp.com> > --- > drivers/hid/hid-ids.h | 2 ++ > drivers/hid/hid-plantronics.c | 11 +++++++++++ > 2 files changed, 13 insertions(+) > > diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h > index 781c5aa29859..a0aaac98a891 100644 > --- a/drivers/hid/hid-ids.h > +++ b/drivers/hid/hid-ids.h > @@ -1050,6 +1050,8 @@ > #define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3220_SERIES 0xc056 > #define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3215_SERIES 0xc057 > #define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3225_SERIES 0xc058 > +#define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3325_SERIES 0x430c > +#define USB_DEVICE_ID_PLANTRONICS_ENCOREPRO_500_SERIES 0x431e > > #define USB_VENDOR_ID_PANASONIC 0x04da > #define USB_DEVICE_ID_PANABOARD_UBT780 0x1044 > diff --git a/drivers/hid/hid-plantronics.c b/drivers/hid/hid-plantronics.c > index 3d414ae194ac..2a19f3646ecb 100644 > --- a/drivers/hid/hid-plantronics.c > +++ b/drivers/hid/hid-plantronics.c > @@ -38,8 +38,10 @@ > (usage->hid & HID_USAGE_PAGE) == HID_UP_CONSUMER) > > #define PLT_QUIRK_DOUBLE_VOLUME_KEYS BIT(0) > +#define PLT_QUIRK_FOLLOWED_VOLUME_UP_DN_KEYS BIT(1) > > #define PLT_DOUBLE_KEY_TIMEOUT 5 /* ms */ > +#define PLT_FOLLOWED_KEY_TIMEOUT 250 /* ms */ > > struct plt_drv_data { > unsigned long device_type; > @@ -134,6 +136,9 @@ static int plantronics_event(struct hid_device *hdev, struct hid_field *field, > cur_ts = jiffies; > if (jiffies_to_msecs(cur_ts - prev_ts) <= PLT_DOUBLE_KEY_TIMEOUT) > return 1; /* Ignore the repeated key. */ > + if ((drv_data->quirks & PLT_QUIRK_FOLLOWED_VOLUME_UP_DN_KEYS) > + && jiffies_to_msecs(cur_ts - prev_ts) <= PLT_FOLLOWED_KEY_TIMEOUT) > + return 1; /* Ignore the followed volume key. */ > > drv_data->last_volume_key_ts = cur_ts; > } > @@ -210,6 +215,12 @@ static const struct hid_device_id plantronics_devices[] = { > { HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS, > USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3225_SERIES), > .driver_data = PLT_QUIRK_DOUBLE_VOLUME_KEYS }, > + { HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS, > + USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3325_SERIES), > + .driver_data = PLT_QUIRK_DOUBLE_VOLUME_KEYS|PLT_QUIRK_FOLLOWED_VOLUME_UP_DN_KEYS }, > + { HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS, > + USB_DEVICE_ID_PLANTRONICS_ENCOREPRO_500_SERIES), > + .driver_data = PLT_QUIRK_DOUBLE_VOLUME_KEYS|PLT_QUIRK_FOLLOWED_VOLUME_UP_DN_KEYS }, > { HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS, HID_ANY_ID) }, > { } > }; > -- > 2.34.1 >
Hi Benjamin, I have sent 3rd patch per your comments. And this patch does not depend on other patch, and can be applied directly by "git am -3"\ Thanks Wade -----Original Message----- From: Benjamin Tissoires <bentiss@kernel.org> Sent: Friday, September 13, 2024 10:01 PM To: Wang, Wade <wade.wang@hp.com> Cc: jikos@kernel.org; linux-input@vger.kernel.org; linux-kernel@vger.kernel.org; stable@vger.kernel.org Subject: Re: [PATCH] HID: plantronics: Additional PID for double volume key presses quirk CAUTION: External Email On Sep 13 2024, Wade Wang wrote: > Add the below headsets for double volume key presses quirk > Plantronics EncorePro 500 Series (047f:431e) > Plantronics Blackwire_3325 Series (047f:430c) > > Quote from previous patch by Maxim Mikityanskiy and Terry Junge > 'commit f567d6ef8606 ("HID: plantronics: Workaround for double volume > key presses")' > 'commit 3d57f36c89d8 ("HID: plantronics: Additional PIDs for double > volume key presses quirk")' > These Plantronics Series headset sends an opposite volume key following > each volume key press. This patch adds a quirk to hid-plantronics for this > product ID, which will ignore the second opposite volume key press if it > happens within 250 ms from the last one that was handled. This commit message is very confusing: - you mention that you are quoting 2 commits, - but then you don't quote them but slightly reword the content - and then, and most of all, you insert in the driver a new timeout of 250 ms, which seems to not be with the same bases than f567d6ef8606 where it is mentioned that "Auto-repeat (when a key is held pressed) is not affected, because the rate is about 3 times per second, which is far less frequent than once in 5 ms." -> 250 ms gets in the roughly same range than 3 times per seconds, so some more explanations is required Please also follow Greg's advice and, as you replied in your last message that didn't made the list (HTML), please resubmit the series with a clear v3 indicator and a description of changes. Ideally, I'd like to also have the other plantronics patch you sent today in the same series, so I know which order I should apply them, in case one rely on the other. Cheers, Benjamin > > Cc: stable@vger.kernel.org > Signed-off-by: Wade Wang <wade.wang@hp.com> > --- > drivers/hid/hid-ids.h | 2 ++ > drivers/hid/hid-plantronics.c | 11 +++++++++++ > 2 files changed, 13 insertions(+) > > diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h > index 781c5aa29859..a0aaac98a891 100644 > --- a/drivers/hid/hid-ids.h > +++ b/drivers/hid/hid-ids.h > @@ -1050,6 +1050,8 @@ > #define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3220_SERIES 0xc056 > #define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3215_SERIES 0xc057 > #define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3225_SERIES 0xc058 > +#define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3325_SERIES 0x430c > +#define USB_DEVICE_ID_PLANTRONICS_ENCOREPRO_500_SERIES 0x431e > > #define USB_VENDOR_ID_PANASONIC 0x04da > #define USB_DEVICE_ID_PANABOARD_UBT780 0x1044 > diff --git a/drivers/hid/hid-plantronics.c b/drivers/hid/hid-plantronics.c > index 3d414ae194ac..2a19f3646ecb 100644 > --- a/drivers/hid/hid-plantronics.c > +++ b/drivers/hid/hid-plantronics.c > @@ -38,8 +38,10 @@ > (usage->hid & HID_USAGE_PAGE) == HID_UP_CONSUMER) > > #define PLT_QUIRK_DOUBLE_VOLUME_KEYS BIT(0) > +#define PLT_QUIRK_FOLLOWED_VOLUME_UP_DN_KEYS BIT(1) > > #define PLT_DOUBLE_KEY_TIMEOUT 5 /* ms */ > +#define PLT_FOLLOWED_KEY_TIMEOUT 250 /* ms */ > > struct plt_drv_data { > unsigned long device_type; > @@ -134,6 +136,9 @@ static int plantronics_event(struct hid_device *hdev, struct hid_field *field, > cur_ts = jiffies; > if (jiffies_to_msecs(cur_ts - prev_ts) <= PLT_DOUBLE_KEY_TIMEOUT) > return 1; /* Ignore the repeated key. */ > + if ((drv_data->quirks & PLT_QUIRK_FOLLOWED_VOLUME_UP_DN_KEYS) > + && jiffies_to_msecs(cur_ts - prev_ts) <= PLT_FOLLOWED_KEY_TIMEOUT) > + return 1; /* Ignore the followed volume key. */ > > drv_data->last_volume_key_ts = cur_ts; > } > @@ -210,6 +215,12 @@ static const struct hid_device_id plantronics_devices[] = { > { HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS, > USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3225_SERIES), > .driver_data = PLT_QUIRK_DOUBLE_VOLUME_KEYS }, > + { HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS, > + USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3325_SERIES), > + .driver_data = PLT_QUIRK_DOUBLE_VOLUME_KEYS|PLT_QUIRK_FOLLOWED_VOLUME_UP_DN_KEYS }, > + { HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS, > + USB_DEVICE_ID_PLANTRONICS_ENCOREPRO_500_SERIES), > + .driver_data = PLT_QUIRK_DOUBLE_VOLUME_KEYS|PLT_QUIRK_FOLLOWED_VOLUME_UP_DN_KEYS }, > { HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS, HID_ANY_ID) }, > { } > }; > -- > 2.34.1 >
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h index 781c5aa29859..a0aaac98a891 100644 --- a/drivers/hid/hid-ids.h +++ b/drivers/hid/hid-ids.h @@ -1050,6 +1050,8 @@ #define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3220_SERIES 0xc056 #define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3215_SERIES 0xc057 #define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3225_SERIES 0xc058 +#define USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3325_SERIES 0x430c +#define USB_DEVICE_ID_PLANTRONICS_ENCOREPRO_500_SERIES 0x431e #define USB_VENDOR_ID_PANASONIC 0x04da #define USB_DEVICE_ID_PANABOARD_UBT780 0x1044 diff --git a/drivers/hid/hid-plantronics.c b/drivers/hid/hid-plantronics.c index 3d414ae194ac..2a19f3646ecb 100644 --- a/drivers/hid/hid-plantronics.c +++ b/drivers/hid/hid-plantronics.c @@ -38,8 +38,10 @@ (usage->hid & HID_USAGE_PAGE) == HID_UP_CONSUMER) #define PLT_QUIRK_DOUBLE_VOLUME_KEYS BIT(0) +#define PLT_QUIRK_FOLLOWED_VOLUME_UP_DN_KEYS BIT(1) #define PLT_DOUBLE_KEY_TIMEOUT 5 /* ms */ +#define PLT_FOLLOWED_KEY_TIMEOUT 250 /* ms */ struct plt_drv_data { unsigned long device_type; @@ -134,6 +136,9 @@ static int plantronics_event(struct hid_device *hdev, struct hid_field *field, cur_ts = jiffies; if (jiffies_to_msecs(cur_ts - prev_ts) <= PLT_DOUBLE_KEY_TIMEOUT) return 1; /* Ignore the repeated key. */ + if ((drv_data->quirks & PLT_QUIRK_FOLLOWED_VOLUME_UP_DN_KEYS) + && jiffies_to_msecs(cur_ts - prev_ts) <= PLT_FOLLOWED_KEY_TIMEOUT) + return 1; /* Ignore the followed volume key. */ drv_data->last_volume_key_ts = cur_ts; } @@ -210,6 +215,12 @@ static const struct hid_device_id plantronics_devices[] = { { HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS, USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3225_SERIES), .driver_data = PLT_QUIRK_DOUBLE_VOLUME_KEYS }, + { HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS, + USB_DEVICE_ID_PLANTRONICS_BLACKWIRE_3325_SERIES), + .driver_data = PLT_QUIRK_DOUBLE_VOLUME_KEYS|PLT_QUIRK_FOLLOWED_VOLUME_UP_DN_KEYS }, + { HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS, + USB_DEVICE_ID_PLANTRONICS_ENCOREPRO_500_SERIES), + .driver_data = PLT_QUIRK_DOUBLE_VOLUME_KEYS|PLT_QUIRK_FOLLOWED_VOLUME_UP_DN_KEYS }, { HID_USB_DEVICE(USB_VENDOR_ID_PLANTRONICS, HID_ANY_ID) }, { } };
Add the below headsets for double volume key presses quirk Plantronics EncorePro 500 Series (047f:431e) Plantronics Blackwire_3325 Series (047f:430c) Quote from previous patch by Maxim Mikityanskiy and Terry Junge 'commit f567d6ef8606 ("HID: plantronics: Workaround for double volume key presses")' 'commit 3d57f36c89d8 ("HID: plantronics: Additional PIDs for double volume key presses quirk")' These Plantronics Series headset sends an opposite volume key following each volume key press. This patch adds a quirk to hid-plantronics for this product ID, which will ignore the second opposite volume key press if it happens within 250 ms from the last one that was handled. Cc: stable@vger.kernel.org Signed-off-by: Wade Wang <wade.wang@hp.com> --- drivers/hid/hid-ids.h | 2 ++ drivers/hid/hid-plantronics.c | 11 +++++++++++ 2 files changed, 13 insertions(+)