Re: [PATCH] hid-elo: some systems cannot stomach work around

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 9 Sep 2013, oliver@xxxxxxxxxx wrote:

> From: Oliver Neukum <oneukum@xxxxxxx>
> 
> Some systems although they have firmware class 'M', which usually
> needs a work around to not crash, must not be subjected to the
> work around because the work around crashes them. They cannot be
> told apart by their own device descriptor, but as they are part
> of compound devices can be identified by looking at their siblings.

What a mess ... :/

> 
> Signed-off-by: Oliver Neukum <oneukum@xxxxxxx>
> ---
>  drivers/hid/hid-elo.c | 35 ++++++++++++++++++++++++++++++++++-
>  1 file changed, 34 insertions(+), 1 deletion(-)
> 
> diff --git a/drivers/hid/hid-elo.c b/drivers/hid/hid-elo.c
> index f042a6c..64ac53e 100644
> --- a/drivers/hid/hid-elo.c
> +++ b/drivers/hid/hid-elo.c
> @@ -181,7 +181,40 @@ fail:
>   */
>  static bool elo_broken_firmware(struct usb_device *dev)
>  {
> -	return use_fw_quirk && le16_to_cpu(dev->descriptor.bcdDevice) == 0x10d;
> +	struct usb_device *hub = dev->parent;
> +	struct usb_device *child = NULL;
> +	u16 fw_lvl = le16_to_cpu(dev->descriptor.bcdDevice);
> +	u16 child_vid, child_pid;
> +	int i;
> +    
> +	if (!use_fw_quirk)
> +		return false;
> +	if (fw_lvl != 0x10d)
> +		return false;
> +
> +	/*iterate sibling devices of the touch controller*/

Could you please resubmit with comment reformated (spaces before/after 
asterisk)?

> +	usb_hub_for_each_child(hub, i, child) {
> +		child_vid = le16_to_cpu(child->descriptor.idVendor);
> +		child_pid = le16_to_cpu(child->descriptor.idProduct);
> +
> +		/*
> +		 * If one of the devices below is present attached as a sibling of 
> +		 * the touch controller then  this is a newer IBM 4820 monitor that 
> +		 * does not need the IBM-requested workaround if fw level is
> +		 * 0x010d - aka 'M'.
> +		 * No other HW can have this combination.
> +		*/
> +		if (child_vid==0x04b3) {
> +			switch (child_pid) {
> +			case 0x4676: /*4820 21x Video*/
> +			case 0x4677: /*4820 51x Video*/
> +			case 0x4678: /*4820 2Lx Video*/
> +			case 0x4679: /*4820 5Lx Video*/

Here as well.

Thanks,

-- 
Jiri Kosina
SUSE Labs
--
To unsubscribe from this list: send the line "unsubscribe linux-usb" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux