All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
To: David Lin <dtwlin@google.com>
Cc: Jacek Anaszewski <jacek.anaszewski@gmail.com>,
	Pavel Machek <pavel@ucw.cz>,
	"linux-input@vger.kernel.org" <linux-input@vger.kernel.org>,
	Jonathan Corbet <corbet@lwn.net>,
	Richard Purdie <rpurdie@rpsys.net>,
	Hans de Goede <hdegoede@redhat.com>,
	Greg Kroah-Hartman <gregkh@linuxfoundation.org>,
	Rob Herring <robh@kernel.org>, Rom Lemarchand <romlem@google.com>,
	"linux-doc@vger.kernel.org" <linux-doc@vger.kernel.org>,
	lkml <linux-kernel@vger.kernel.org>,
	"linux-leds@vger.kernel.org" <linux-leds@vger.kernel.org>
Subject: Re: Vibrations in input vs. LED was Re: [PATCH v2 0/3] led: ledtrig-transient: add support for hrtimer
Date: Wed, 27 Sep 2017 22:43:22 -0700	[thread overview]
Message-ID: <744568EA-8FEE-4A0E-B431-F054B0827261@gmail.com> (raw)
In-Reply-To: <CAPzFB+XZopNPTuOD-xttq-0dqEF2hSXLftQvzfDHLhJ+9ZuB-Q@mail.gmail.com>

On September 27, 2017 10:03:28 PM PDT, David Lin <dtwlin@google.com> wrote:
>Dmitry,
>
>On Fri, Sep 15, 2017 at 3:30 PM, Dmitry Torokhov
><dmitry.torokhov@gmail.com> wrote:
>> On Fri, Sep 15, 2017 at 2:55 PM, Jacek Anaszewski
>> <jacek.anaszewski@gmail.com> wrote:
>>> On 09/15/2017 08:34 PM, Dmitry Torokhov wrote:
>>>> On Thu, Sep 14, 2017 at 1:58 PM, Pavel Machek <pavel@ucw.cz> wrote:
>>>>> On Thu 2017-09-14 21:31:31, Jacek Anaszewski wrote:
>>>>>> Hi David and Pavel,
>>>>>>
>>>>>> On 09/13/2017 10:20 PM, Pavel Machek wrote:
>>>>>>> Hi!
>>>>>>>
>>>>>>>> These patch series add the LED_BRIGHTNESS_FAST flag support for
>>>>>>>> ledtrig-transient to use hrtimer so that platforms with
>high-resolution timer
>>>>>>>> support can have better accuracy in the trigger duration
>timing. The need for
>>>>>>>> this support is driven by the fact that Android has removed the
>timed_ouput [1]
>>>>>>>> and is now using led-trigger for handling vibrator control
>which requires the
>>>>>>>> timer to be accurate up to a millisecond. However, this flag
>support would also
>>>>>>>> allow hrtimer to co-exist with the ktimer without causing
>warning to the
>>>>>>>> existing drivers [2].
>>>>>>>
>>>>>>> NAK.
>>>>>>>
>>>>>>> LEDs do not need extra overhead, and vibrator control should not
>go
>>>>>>> through LED subsystem.
>>>>>>>
>>>>>>> Input subsystem includes support for vibrations and force
>>>>>>> feedback. Please use that instead.
>>>>>>
>>>>>> I think that most vital criterion here is the usability of the
>>>>>> interface. If it can be harnessed for doing the work seemingly
>>>>>> unrelated to the primary subsystem's purpose, that's fine.
>>>>>> Moreover, it is extremely easy to use in comparison to the force
>>>>>> feedback one.
>>>>>
>>>>> Well, no.
>>>>>
>>>>> Kernel is supposed to provide hardware abstraction, that means it
>>>>> should hide differences between different devices.
>>>>>
>>>>> And we already have devices using input as designed. We don't want
>to
>>>>> have situation where "on phones A, D and E, vibrations are handled
>via
>>>>> input, while on B, C and F, they are handled via /sys/class/leds".
>>>>>
>>>>> If we want to have discussion "how to make vibrations in input
>>>>> easier to use", well that's fair. But I don't think it is
>particulary hard.
>>>>>
>>>>
>>>> I would like to know more about why you find the FF interface hard,
>>>
>>> led-transient trigger can be activated using only following bash
>>> commands:
>>>
>>> # echo 1 > state
>>> # echo 1000 > duration
>>> # while [ 1 ]; do echo 1 > activate; sleep 3; done
>>>
>>> Could you share sample sequence of commands to use ff driver?
>>
>> Cut what you need from this:
>> https://github.com/flosse/linuxconsole/blob/master/utils/fftest.c
>>
>> If your objection is that FF is not easily engaged from the shell -
>> yes, but I do not think that actual users who want to do vibration do
>> that via shell either. On the other hand, can you drop privileges and
>> still allow a certain process control your vibrator via LED
>interface?
>> With FF you can pass an FD to whoever you deem worthy and later
>revoke
>> access.
>>
>> IOW sysfs interfaces are nice for quick hacks, but when you want to
>> use them in real frameworks, where you need to think about proper
>> namespaces, isolation, etc, etc, other kinds of interfaces might suit
>> better.
>>
>>>
>>>> given that for rumble you need calls - one ioctl to set up rumble
>>>> parameters, and a write to start the playback. The FF core should
>take
>>>> care of handling duration of the effect, ramping it up and
>decaying,
>>>> if desired, and we make sure to automatically stop effects when
>>>> userspace closes the fd (because of ordinary exit or crash or FD
>being
>>>> revoked).
>>>>
>>>>> If we want to say "lets move all vibrations from input to LED
>>>>> subsystem"... I don't think that is good idea, but its a valid
>>>>> discussion. Some good reasons would be needed.
>>>>>
>>>>> But having half devices use one interface and half use different
>one
>>>>> is just bad...
>>>>
>>>> Completely agree here. I just merged PWM vibra driver from
>Sebastian
>>>> Reichel, we already had regulator-haptic driver, do we need
>gpio-based
>>>> one? Or make regulator-based one working with fixed regulators?
>>>
>>> Just to clarify: the background of this discussion is the question
>>> whether we should remove the following lines from
>>> Documentation/leds/ledtrig-transient.txt:
>>>
>>> -As a specific example of this use-case, let's look at vibrate
>feature on
>>> -phones. Vibrate function on phones is implemented using PWM pins on
>SoC or
>>> -PMIC. There is a need to activate one shot timer to control the
>vibrate
>>> -feature, to prevent user space crashes leaving the phone in vibrate
>mode
>>> -permanently causing the battery to drain.
>>> whether we should remove the following use case example from
>>>
>>> In effect Pavel has objections to increasing ledtrig-transient
>>> interval accuracy by adding hr_timer support to it, because vibrate
>>> devices, as one of the use cases, can benefit from it.
>>>
>>> So there are two issues:
>>> 1. Addition of hr_timer support to LED trigger.
>>> 2. Removal of vibrate devices use case from ledtrig-transient doc.
>>>
>>> I am in favour of 1. and against 2. since we're not gaining anything
>>> by hiding information about some kernel functionality when it will
>>> still be there. It also doesn't define the location of any vibrate
>>> device drivers, since sheer leds-gpio driver can be used for that
>>> purpose.
>>
>> I would say that while leds-gpio can be used to do whatever (you can
>> wire PS/2 mouse to a set of gpios and probably manage to drive it
>> through a set of leds-gpio devices) it does not make it right
>> interface for everything. We do have a standard interface for haptic
>> (via rumble FF), at this moment I see no reason why we need another
>> one. It just confuses userspace as it now needs to implement multiple
>> interfaces, depending on the system it runs. Android expects that HAL
>> will take care of hiding all of that from their upper layers and does
>> not really pay close attention to kernel ABIs, but I think we should.
>
>One thing I noticed is that input_ff_create_memless() also does not
>use high-resolution timer hence it also does not have the stop-time
>precision that I'm looking for.

I'll take patches for high resolution timers in ff memless, they should also help with more accurate scheduling of ramping up and fading of events.

>
>Another thing is that ff_reply duration value is maxed-out at 32767 ms
>(u16) while the Android/userspace requires size long for performing
>long notification alert.
>

You need unattended vibrations lasting longer than 30 seconds? Anyway, replay.length == 0 means endless IIRC, so you only need to schedule stopping. We still will clean up properly if your process crashes or exits or closes the fd.


Thanks.

-- 
Dmitry

  reply	other threads:[~2017-09-28  5:43 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-09-13 17:53 [PATCH v2 0/3] led: ledtrig-transient: add support for hrtimer David Lin
2017-09-13 17:53 ` [PATCH v2 1/3] leds: Replace flags bit shift with BIT() macros David Lin
2017-09-14 19:43   ` Jacek Anaszewski
2017-09-13 17:53 ` [PATCH v2 2/3] leds: Add the LED_BRIGHTNESS_FAST flag David Lin
2017-09-13 17:54 ` [PATCH v2 3/3] led: ledtrig-transient: add support for hrtimer David Lin
2017-09-13 20:20 ` [PATCH v2 0/3] " Pavel Machek
2017-09-13 21:20   ` David Lin
2017-09-13 21:34     ` Pavel Machek
2017-09-14 17:31       ` David Lin
2017-09-14 19:42         ` Pavel Machek
2017-09-14 19:31   ` Jacek Anaszewski
2017-09-14 19:38     ` David Lin
2017-09-14 20:03       ` Jacek Anaszewski
2017-09-14 20:58     ` Vibrations in input vs. LED was " Pavel Machek
2017-09-15 18:34       ` Dmitry Torokhov
2017-09-15 21:55         ` Jacek Anaszewski
2017-09-15 22:30           ` Dmitry Torokhov
2017-09-17 16:41             ` Jacek Anaszewski
2017-09-17 18:22               ` Pavel Machek
2017-09-17 21:15                 ` Pavel Machek
2017-09-18 20:50                 ` Jacek Anaszewski
2017-09-18 22:29                   ` Dmitry Torokhov
2017-09-19 20:45                     ` Jacek Anaszewski
2017-09-19 21:07                       ` Dmitry Torokhov
2017-09-20 19:31                         ` Jacek Anaszewski
2017-09-20 11:29                       ` Pavel Machek
2017-09-20 20:08                         ` Jacek Anaszewski
2017-10-06 11:48                           ` Pavel Machek
2017-10-06 20:57                             ` Jacek Anaszewski
2017-09-20 11:26                   ` Pavel Machek
2017-09-28  5:03             ` David Lin
2017-09-28  5:43               ` Dmitry Torokhov [this message]
2017-09-28 19:22                 ` David Lin
2017-10-05  0:40                   ` Dmitry Torokhov
2017-09-16 12:59           ` Pavel Machek
2017-09-15 21:55       ` Jacek Anaszewski
2017-09-16  1:58         ` Pavel Machek
2017-09-17 16:41           ` Jacek Anaszewski
2017-09-17 17:50             ` Pavel Machek
2017-09-18 20:43               ` Jacek Anaszewski
2017-09-20 11:15                 ` Pavel Machek
2017-09-20 18:44                   ` Jacek Anaszewski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=744568EA-8FEE-4A0E-B431-F054B0827261@gmail.com \
    --to=dmitry.torokhov@gmail.com \
    --cc=corbet@lwn.net \
    --cc=dtwlin@google.com \
    --cc=gregkh@linuxfoundation.org \
    --cc=hdegoede@redhat.com \
    --cc=jacek.anaszewski@gmail.com \
    --cc=linux-doc@vger.kernel.org \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-leds@vger.kernel.org \
    --cc=pavel@ucw.cz \
    --cc=robh@kernel.org \
    --cc=romlem@google.com \
    --cc=rpurdie@rpsys.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.