linux-input.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Christopher Heiny <Cheiny@synaptics.com>
To: Andrew Duggan <aduggan@synaptics.com>,
	Dmitry Torokhov <dmitry.torokhov@gmail.com>,
	Lucas Stach <l.stach@pengutronix.de>
Cc: "linux-input@vger.kernel.org" <linux-input@vger.kernel.org>,
	"kernel@pengutronix.de" <kernel@pengutronix.de>,
	"patchwork-lst@pengutronix.de" <patchwork-lst@pengutronix.de>
Subject: Re: [PATCH] Input: synaptics-rmi4 - switch to reduced reporting mode
Date: Tue, 28 Jan 2020 07:02:27 +0000	[thread overview]
Message-ID: <23ecff7a48f801fcc18680fb6cb150e32fc3c858.camel@synaptics.com> (raw)
In-Reply-To: <b2ca3006-281a-c991-4c6c-7ae7ce5cc3f7@synaptics.com>

On Mon, 2020-01-27 at 11:21 -0800, Andrew Duggan wrote:
> Hi Dmitry,
> 
> On 1/26/20 6:24 PM, Dmitry Torokhov wrote:
> > 
> > On Mon, Jan 20, 2020 at 12:16:28PM +0100, Lucas Stach wrote:
> > > When the distance thresholds are set the controller must be in
> > > reduced
> > > reporting mode for them to have any effect on the interrupt
> > > generation.
> > > This has a potentially large impact on the number of events the
> > > host
> > > needs to process.
> > > 
> > > Signed-off-by: Lucas Stach <l.stach@pengutronix.de>
> > > ---
> > > I'm not sure if we want a separate DT property to allow the use
> > > of
> > > reduced reporting mode, as this change might lead to problems for
> > > controllers with unreasonably large threshold values. I'm not
> > > sure if
> > > any controller with bogus threshold values exist in the wild.
> > > ---
> > Andrew, any feedback on this patch?
> > 
> > Thanks!
> 
> The RMI4 spec does say that delta X/Y thresholds are only used in 
> reduced reporting mode, so this patch is needed for the threshold
> values 
> to have an effect.
> 
> Reviewed-by: Andrew Duggan <aduggan@synaptics.com>
> 
> Because reduced reporting mode is so dependent on these thresholds,
> my 
> opinion is that it is better not to add a separate DT property, but
> to 
> instead control reduced reporting mode through the setting of these 
> thresholds. My guess is that the if reduced reporting is not enabled
> in 
> the firmware by default, then the thresholds may not be valid.
> Setting 
> the thresholds to 0 will essentially disable reduced reporting mode.
> So 
> that would be how a user could disable reduced reporting mode without
> a 
> separate DT property. Chris, do you have an opinion on this? Anything
> I 
> overlooked?

Hi Dmitry, Andrew, Lucas,

I'm in agreement with Andrew on this.  Having two ways to
enable/disable reduced reporting (that is, both the DT property and the
thresholds) could lead to confusion and unexpected behavior.  Simpler
is better, in my opinion.

However, in that case I'm a little concerned about the logic in the
patch below.  When either of the thresholds are set to non-zero, we
clear the report mask and then enable the reduced reporting bit. 
Subsequently setting both thresholds to zero will disable reduced
reporting, but will not enable another report mode.  Unless there is
code elsewhere to catch this case (and if there is, it seems like a bad
idea to be handling this in two different places), it could result in
the touchpad being disabled.

As a hypothetical instance of this, imagine a user using the touchpad
to manipulate report threshold sliders in a GUI.  Setting both sliders
to zero would disable the touch sensor reporting, potentially leaving
the user with a dead touch sensor and no easy way to recover from that.

					Cheers,
						Chris

> 
> Andrew
> 
> > >   drivers/input/rmi4/rmi_f11.c | 14 ++++++++++++++
> > >   1 file changed, 14 insertions(+)
> > > 
> > > diff --git a/drivers/input/rmi4/rmi_f11.c
> > > b/drivers/input/rmi4/rmi_f11.c
> > > index bbf9ae9f3f0c..6adea8a3e8fb 100644
> > > --- a/drivers/input/rmi4/rmi_f11.c
> > > +++ b/drivers/input/rmi4/rmi_f11.c
> > > @@ -412,6 +412,10 @@ struct f11_2d_sensor_queries {
> > > 
> > >   /* Defs for Ctrl0. */
> > >   #define RMI_F11_REPORT_MODE_MASK        0x07
> > > +#define RMI_F11_REPORT_MODE_CONTINUOUS  (0 << 0)
> > > +#define RMI_F11_REPORT_MODE_REDUCED     (1 << 0)
> > > +#define RMI_F11_REPORT_MODE_FS_CHANGE   (2 << 0)
> > > +#define RMI_F11_REPORT_MODE_FP_CHANGE   (3 << 0)
> > >   #define RMI_F11_ABS_POS_FILT            (1 << 3)
> > >   #define RMI_F11_REL_POS_FILT            (1 << 4)
> > >   #define RMI_F11_REL_BALLISTICS          (1 << 5)
> > > @@ -1195,6 +1199,16 @@ static int rmi_f11_initialize(struct
> > > rmi_function *fn)
> > >                ctrl->ctrl0_11[RMI_F11_DELTA_Y_THRESHOLD] =
> > >                        sensor->axis_align.delta_y_threshold;
> > > 
> > > +     /*
> > > +      * If distance threshold values are set, switch to reduced
> > > reporting
> > > +      * mode so they actually get used by the controller.
> > > +      */
> > > +     if (ctrl->ctrl0_11[RMI_F11_DELTA_X_THRESHOLD] ||
> > > +         ctrl->ctrl0_11[RMI_F11_DELTA_Y_THRESHOLD]) {
> > > +             ctrl->ctrl0_11[0] &= ~RMI_F11_REPORT_MODE_MASK;
> > > +             ctrl->ctrl0_11[0] |= RMI_F11_REPORT_MODE_REDUCED;
> > > +     }
> > > +
> > >        if (f11->sens_query.has_dribble) {
> > >                switch (sensor->dribble) {
> > >                case RMI_REG_STATE_OFF:
> > > --
> > > 2.20.1
> > > 
> > --
> > Dmitry



  reply	other threads:[~2020-01-28  7:02 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-01-20 11:16 [PATCH] Input: synaptics-rmi4 - switch to reduced reporting mode Lucas Stach
2020-01-27  2:24 ` Dmitry Torokhov
2020-01-27 19:21   ` Andrew Duggan
2020-01-28  7:02     ` Christopher Heiny [this message]
2020-01-28  9:41       ` Lucas Stach
2020-01-28 17:22         ` Christopher Heiny
2020-01-31 18:28           ` Andrew Duggan
2020-02-01  1:38             ` Dmitry Torokhov
2020-02-19  3:01               ` Paul Hollinsky
2020-02-21  2:36                 ` Andrew Duggan
2020-03-07 22:34                   ` Dmitry Torokhov

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=23ecff7a48f801fcc18680fb6cb150e32fc3c858.camel@synaptics.com \
    --to=cheiny@synaptics.com \
    --cc=aduggan@synaptics.com \
    --cc=dmitry.torokhov@gmail.com \
    --cc=kernel@pengutronix.de \
    --cc=l.stach@pengutronix.de \
    --cc=linux-input@vger.kernel.org \
    --cc=patchwork-lst@pengutronix.de \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).