Re: [GIT PULL] HID for 4.11

From: Dmitry Torokhov
Date: Wed Mar 01 2017 - 13:06:26 EST


Hi Benjamin,

On Wed, Mar 01, 2017 at 10:06:35AM +0100, Benjamin Tissoires wrote:
> [I forgot to add Dmitry in the loop, sorry for the noise.]
>
> On Mar 01 2017 or thereabouts, Benjamin Tissoires wrote:
> > On Feb 28 2017 or thereabouts, Linus Torvalds wrote:
> > > On Tue, Feb 28, 2017 at 7:24 PM, Peter Hutterer
> > > <peter.hutterer@xxxxxxxxx> wrote:
> > > >
> > > > I suspect you're just triggering a bug that wasn't triggered by the ps/2
> > > > emulation. you can run linput-debug-events --verbose and have a look at the
> > > > various state debugging information, that may hint at what's going on (e.g.
> > > > a finger mistaken as palm touch, or something). Or record one such
> > > > interaction with evemu-record and send it to me (preferrably here [1], if
> > > > you're using libinput). Also, what version of libinput/synaptics are you on?
> > >
> > > bug reported (it's bug 100014).
> > >
> >
> > Thanks for the report.
> >
> > As Peter mentioned in the bug, there is a missing property on the kernel
> > node (INPUT_PROP_BUTTONPAD).
> >
> > The thing is this property is solely driven in the current driver by the
> > provided platform_data, so there is no way we ever set it through
> > hid-rmi. I wonder how we missed that.
> >
> > Anyway, the good news is that the evemu record shows only one exportted
> > button, so we can infer the property quite easily in the module. Would
> > something like that work for you?
> >
> > From 5f28af88f2c67d1c533500765c5190cdd3006539 Mon Sep 17 00:00:00 2001
> > From: Benjamin Tissoires <benjamin.tissoires@xxxxxxxxxx>
> > Date: Wed, 1 Mar 2017 09:57:00 +0100
> > Subject: [PATCH] Input: rmi4 - f30: detect INPUT_PROP_BUTTONPAD from the
> > button count
> >
> > INPUT_PROP_BUTTONPAD is currently only set through the platform data.
> > The RMI4 header doc says that this property is there to force the
> > buttonpad property, so we also need to detect it by looking at
> > the exported buttons count.
> >
> > Signed-off-by: Benjamin Tissoires <benjamin.tissoires@xxxxxxxxxx>
> > ---
> > drivers/input/rmi4/rmi_f30.c | 5 +++--
> > 1 file changed, 3 insertions(+), 2 deletions(-)
> >
> > diff --git a/drivers/input/rmi4/rmi_f30.c b/drivers/input/rmi4/rmi_f30.c
> > index 3422464..1986786 100644
> > --- a/drivers/input/rmi4/rmi_f30.c
> > +++ b/drivers/input/rmi4/rmi_f30.c
> > @@ -258,9 +258,10 @@ static int rmi_f30_map_gpios(struct rmi_function *fn,
> >
> > /*
> > * Buttonpad could be also inferred from f30->has_mech_mouse_btns,
> > - * but I am not sure, so use only the pdata info.
> > + * but I am not sure, so use only the pdata info and the number of
> > + * mapped buttons.
> > */
> > - if (pdata->f30_data.buttonpad)
> > + if (pdata->f30_data.buttonpad || (button - BTN_LEFT == 1))
> > __set_bit(INPUT_PROP_BUTTONPAD, input->propbit);

Would prefer if we changed button_mapped to n_buttons_mapped counter and
used that, instead of doing calculations on event code.

Thanks.

--
Dmitry