lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Date:	Fri, 19 Dec 2014 20:56:19 -0500
From:	Benjamin Tissoires <benjamin.tissoires@...hat.com>
To:	Andrew Duggan <aduggan@...aptics.com>
Cc:	linux-input@...r.kernel.org, linux-kernel@...r.kernel.org,
	Jiri Kosina <jkosina@...e.cz>
Subject: Re: [PATCH 3/3] HID: rmi: Add support for the touchpad in the Razer
 Blade 14 laptop

On Dec 19 2014 or thereabouts, Andrew Duggan wrote:
> Have hid-rmi handle all of the Razer Blade HID devices that are part of the
> composite USB device. This will allow hid-rmi to operate the touchpad in rmi
> mode while passing events from the other devices to hid-input.
> 
> Signed-off-by: Andrew Duggan <aduggan@...aptics.com>
> ---
>  drivers/hid/hid-core.c |  1 +
>  drivers/hid/hid-ids.h  |  3 +++
>  drivers/hid/hid-rmi.c  | 15 +++++++++++++++
>  3 files changed, 19 insertions(+)
> 
> diff --git a/drivers/hid/hid-core.c b/drivers/hid/hid-core.c
> index 81665b4..ef718f9 100644
> --- a/drivers/hid/hid-core.c
> +++ b/drivers/hid/hid-core.c
> @@ -1982,6 +1982,7 @@ static const struct hid_device_id hid_have_special_driver[] = {
>  	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_PRESENTER_8K_BT) },
>  	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_NINTENDO, USB_DEVICE_ID_NINTENDO_WIIMOTE) },
>  	{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_NINTENDO, USB_DEVICE_ID_NINTENDO_WIIMOTE2) },
> +	{ HID_USB_DEVICE(USB_VENDOR_ID_RAZER, USB_DEVICE_ID_RAZER_BLADE_14) },
>  	{ }
>  };
>  
> diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
> index 7460f34..7d0912d 100644
> --- a/drivers/hid/hid-ids.h
> +++ b/drivers/hid/hid-ids.h
> @@ -767,6 +767,9 @@
>  #define USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH_3001		0x3001
>  #define USB_DEVICE_ID_QUANTA_OPTICAL_TOUCH_3008		0x3008
>  
> +#define USB_VENDOR_ID_RAZER            0x1532
> +#define USB_DEVICE_ID_RAZER_BLADE_14   0x011D
> +
>  #define USB_VENDOR_ID_REALTEK		0x0bda
>  #define USB_DEVICE_ID_REALTEK_READER	0x0152
>  
> diff --git a/drivers/hid/hid-rmi.c b/drivers/hid/hid-rmi.c
> index cdfe165..849b35a 100644
> --- a/drivers/hid/hid-rmi.c
> +++ b/drivers/hid/hid-rmi.c
> @@ -1038,6 +1038,20 @@ static int rmi_probe(struct hid_device *hdev, const struct hid_device_id *id)
>  
>  	data->readReport = data->writeReport + data->output_report_size;
>  
> +	/*
> +	 * Unfortunately there is no way to query the touchpad in the
> +	 * Razer system to determine that it has pass through buttons
> +	 * so the only solution is to set phys buttons flag based on the
> +	 * vid and pid. In the future we should be able to query devices
> +	 * to find out. However, we need to know if the touchpad has
> +	 * physical buttons before the input_mapping gets called which
> +	 * is before we query the device. So we may have to resort to creating
> +	 * a list of devices based on product id.
> +	 */
> +	if (hdev->vendor == USB_VENDOR_ID_RAZER &&
> +	    hdev->product == USB_DEVICE_ID_RAZER_BLADE_14)
> +		data->device_flags |= RMI_DEVICE_HAS_PHYS_BUTTONS;

This whole test can be replace by a field in rmi_id (.driver_data) as
mentioned in 2/3.

> +
>  	init_waitqueue_head(&data->wait);
>  
>  	mutex_init(&data->page_mutex);
> @@ -1074,6 +1088,7 @@ static void rmi_remove(struct hid_device *hdev)
>  
>  static const struct hid_device_id rmi_id[] = {
>  	{ HID_DEVICE(HID_BUS_ANY, HID_GROUP_RMI, HID_ANY_ID, HID_ANY_ID) },
> +	{ HID_USB_DEVICE(USB_VENDOR_ID_RAZER, USB_DEVICE_ID_RAZER_BLADE_14) },

Nitpicking, I'd prefer having the most generic one at the end. In case
you need to specify other flags to some specific devices, they will have
to be inserted before the catchall rule, so let's start now :).

>  	{ }
>  };
>  MODULE_DEVICE_TABLE(hid, rmi_id);
> -- 
> 2.1.0
> 

Cheers,
Benjamin
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@...r.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Powered by blists - more mailing lists