Re: [PATCH] HID: i2c-hid: Support batch read of input events from fifo

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

 



On Wed, May 14, 2014 at 7:04 AM,  <archana.patni@xxxxxxxxxxxxxxx> wrote:
>> On 05/12/2014 09:03 AM, Benjamin Tissoires wrote:
>>> Hi Srinivas,
>>>
>>> On Sat, May 10, 2014 at 2:48 PM, Srinivas Pandruvada
>>> <srinivas.pandruvada@xxxxxxxxxxxxxxx> wrote:
>>>> Hi Benjamin,
>>>>
>>>> On 05/08/2014 07:28 AM, Benjamin Tissoires wrote:
>>>>> On Thu, May 8, 2014 at 9:32 AM, Archana Patni
>>>>> <archana.patni@xxxxxxxxxxxxxxx> wrote:
>>>>>> Some i2c_hid devices like a sensor hub have built-in fifos which
>>>>>> can accumulate input events in their buffers and trigger an interrupt
>>>>>> at end of a user defined event like fifo full or a timeout. The
>>>>>> current
>>>>>> implementation reads one event at a time in the IRQ handler leading
>>>>>> to
>>>>>> several hundred interrupts being necessary to flush the fifo.
>>>>>>
>>>>>> This patch changes the threaded IRQ handler to keep input events
>>>>>> until
>>>>>> there are no input events left to read. In the normal case, this will
>>>>>> invoke one additional call to fetch an input event to check for no
>>>>>> pending
>>>>>> events and terminate the loop.
>>>>> I must say, I don't like this patch.
>>>>> It seems to me that it will solve your problem but will break other
>>>>> devices. Nothing in the spec says what happens if the host tries to
>>>>> read while the interrupt line is *not* asserted. I can easily imagine
>>>>> several scenarios where the device would hang until the next available
>>>>> data, or will just fail.
>>>>>
>>>>> So the proper way according to the spec is to check the status of the
>>>>> interrupt line. This line is the responsibility of the device to be
>>>>> asserted and we should rely on it to know if we can read again.
>>>>>
>>>>> However, a quick check on the interrupt API did not provide me the
>>>>> function I would like, so I guess this is something to be work on.
>>>>>
>>>>> I can not ack this one until we can be sure not breaking other stuff.
>>>>>
>>>>> So: NACK.
>>>> I understand your reason, there may be some HID device which will have
>>>> issue
>>>> with this change.
>>>> I am interested in throwing some idea, as I am trying to keep the
>>>> devices in
>>>> deepest idle states as
>>>> long as possible. Sensors are one of the offenders.
>>>> - This driver can register i2c_driver, command callback. We can define
>>>> one
>>>> of the command to set the set the max size dynamically or fire this
>>>> logic to
>>>> empty buffers. This way, we can only enable such logic, when a sensor
>>>> hub
>>>> has capability and notifies this capability dynamically without
>>>> affecting
>>>> any other hid devices.
>>> I am OK with the logic as long as the i2c calls are independent of the
>>> HID layer. Remember that if the advertised bus is BUS_I2C, it might as
>>> well be an uhid device which will not handle the i2c calls.
>>>
>>> Another solution could be to add a HID quirk which triggers the "empty
>>> while input are here" and set this quirk in hid-sensor-hub. This way,
>>> you will be in control of it and other devices might use it as well if
>>> they support it.
>>>
>>> I am not a big fan of quirks, so I would still prefer your solution if
>>> you can control it without disturbing the HID subsystem. This will all
>>> depend where you can enable the functionality on the device.
>> I also don't like quirks as they start becoming de facto solutions.
>>
>> Archana,
>>
>> Can you prototype this using i2c_client_commands by keeping above
>> constraints?
>>
>> Thanks,
>> Srinivas
>
> Benjamin,
>
> The i2c_clients_command callback hook seems to be deprecated and not
> widely used. We had a quick check with Srinivas and he asked us to fall
> back to a quirk based approach.
>
> We will create a device specific quirk (using vendor ID) which sets up a
> batched read IRQ handler if it sees a device capable of supporting batch
> reads from the fifo. In the normal case, the current IRQ handler will
> continue to be used. As more devices support this feature, they can turn
> on the batched handler via the quirk.
>
> Does this look ok to you ?

Yep, fine by me.

Cheers,
Benjamin
--
To unsubscribe from this list: send the line "unsubscribe linux-input" 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 Devel]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Linux Wireless Networking]     [Linux Omap]

  Powered by Linux