2013-03-07 14:26:51

by Jiri Kosina

[permalink] [raw]
Subject: Re: [RFC 1/2] HID: Extend the interface with idle requests

On Wed, 27 Feb 2013, Benjamin Tissoires wrote:

> Some drivers send the idle command directly to underlying device,
> creating an unwanted dependency on the underlying transport layer.
> This patch adds hid_hw_idle() to the interface, thereby removing
> usbhid from the lion share of the drivers.
>
> Signed-off-by: Benjamin Tissoires <[email protected]>
> ---
> drivers/hid/usbhid/hid-core.c | 15 +++++++++++++++
> include/linux/hid.h | 19 +++++++++++++++++++
> 2 files changed, 34 insertions(+)
>
> diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c
> index 420466b..effcd3d 100644
> --- a/drivers/hid/usbhid/hid-core.c
> +++ b/drivers/hid/usbhid/hid-core.c
> @@ -1253,6 +1253,20 @@ static void usbhid_request(struct hid_device *hid, struct hid_report *rep, int r
> }
> }
>
> +static int usbhid_idle(struct hid_device *hid, int report, int idle,
> + int reqtype)

Where does the need for passing the report argument come from please?

--
Jiri Kosina
SUSE Labs


2013-03-07 14:30:52

by Benjamin Tissoires

[permalink] [raw]
Subject: Re: [RFC 1/2] HID: Extend the interface with idle requests

On Thu, Mar 7, 2013 at 3:26 PM, Jiri Kosina <[email protected]> wrote:
> On Wed, 27 Feb 2013, Benjamin Tissoires wrote:
>
>> Some drivers send the idle command directly to underlying device,
>> creating an unwanted dependency on the underlying transport layer.
>> This patch adds hid_hw_idle() to the interface, thereby removing
>> usbhid from the lion share of the drivers.
>>
>> Signed-off-by: Benjamin Tissoires <[email protected]>
>> ---
>> drivers/hid/usbhid/hid-core.c | 15 +++++++++++++++
>> include/linux/hid.h | 19 +++++++++++++++++++
>> 2 files changed, 34 insertions(+)
>>
>> diff --git a/drivers/hid/usbhid/hid-core.c b/drivers/hid/usbhid/hid-core.c
>> index 420466b..effcd3d 100644
>> --- a/drivers/hid/usbhid/hid-core.c
>> +++ b/drivers/hid/usbhid/hid-core.c
>> @@ -1253,6 +1253,20 @@ static void usbhid_request(struct hid_device *hid, struct hid_report *rep, int r
>> }
>> }
>>
>> +static int usbhid_idle(struct hid_device *hid, int report, int idle,
>> + int reqtype)
>
> Where does the need for passing the report argument come from please?

Well, I haven't checked in the USB spec, but hid_set_idle() in
usbhid/hid-core.c does require the reportID, so I add it to the
request.
I just gave a quick look at the HID/I2C spec, and it also requires the
report ID. The set_idle request is report specific.

Benjamin

>
> --
> Jiri Kosina
> SUSE Labs

2013-03-07 14:53:52

by Jiri Kosina

[permalink] [raw]
Subject: Re: [RFC 1/2] HID: Extend the interface with idle requests

On Thu, 7 Mar 2013, Benjamin Tissoires wrote:

> >> +static int usbhid_idle(struct hid_device *hid, int report, int idle,
> >> + int reqtype)
> >
> > Where does the need for passing the report argument come from please?
>
> Well, I haven't checked in the USB spec, but hid_set_idle() in
> usbhid/hid-core.c does require the reportID, so I add it to the
> request.
> I just gave a quick look at the HID/I2C spec, and it also requires the
> report ID. The set_idle request is report specific.

You are right, I have missed the special meaning of lower byte of wValue.

Okay, I think it makes sense. I will be taking the patches.

Thanks Benjamin.

--
Jiri Kosina
SUSE Labs