diff mbox series

HID: plantronics: Additional PID for double volume key presses quirk

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

Commit Message

Wang, Wade Sept. 13, 2024, 6:07 a.m. UTC
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(+)

Comments

Greg KH Sept. 13, 2024, 6:28 a.m. UTC | #1
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
Wang, Wade Sept. 13, 2024, 7:16 a.m. UTC | #2
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
Greg KH Sept. 13, 2024, 8:23 a.m. UTC | #3
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
Benjamin Tissoires Sept. 13, 2024, 2:01 p.m. UTC | #4
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
>
Wang, Wade Sept. 16, 2024, 9:06 a.m. UTC | #5
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 mbox series

Patch

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) },
 	{ }
 };