All of lore.kernel.org
 help / color / mirror / Atom feed
From: Benjamin Tissoires <benjamin.tissoires@gmail.com>
To: Andrew Duggan <aduggan@synaptics.com>
Cc: Linus Walleij <linus.walleij@linaro.org>,
	Dmitry Torokhov <dmitry.torokhov@gmail.com>,
	Christopher Heiny <cheiny@synaptics.com>,
	Stephen Chandler Paul <cpaul@redhat.com>,
	Linux Input <linux-input@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: Re: [PATCH 00/11] Input: synaptics-rmi4: various fixes for the existing rmi4 branch
Date: Wed, 4 Nov 2015 09:28:45 +0100	[thread overview]
Message-ID: <CAN+gG=GZJpgF7z53jNnsq7XBh0vCRO5D_e-ycLxR8VWFLScO-g@mail.gmail.com> (raw)
In-Reply-To: <5639539F.2050406@synaptics.com>

On Wed, Nov 4, 2015 at 1:38 AM, Andrew Duggan <aduggan@synaptics.com> wrote:
> On 11/03/2015 06:01 AM, Linus Walleij wrote:
>>
>> On Mon, Nov 2, 2015 at 11:14 PM, Andrew Duggan <aduggan@synaptics.com>
>> wrote:
>>
>>> I have been continuing to work on the synaptics-rmi4 driver and was just
>>> trying to figure out what the next step should be. I recently uploaded my
>>> changes here https://github.com/aduggan/linux.
>>
>> I just tested this patch set on the Ux500 with a TVK UI board.
>>
>> I added this:
>>
>>          i2c@80110000 {
>>              synaptics@4b {
>>                  /* Synaptics RMI4 TM1217 touchscreen */
>>                  compatible = "syna,rmi-i2c";
>>                  #address-cells = <1>;
>>                  #size-cells = <0>;
>>                  reg = <0x4b>;
>>                  pinctrl-names = "default";
>>                  pinctrl-0 = <&synaptics_tvk_mode>;
>>                  interrupt-parent = <&gpio2>;
>>                  interrupts = <20 IRQ_TYPE_EDGE_FALLING>;
>>                  syna,sensor-name="TM1217";
>>
>>                  rmi-f01@1 {
>>                      reg = <0x1>;
>>                      syna,nosleep = <1>;
>>                  };
>>                  rmi-f11@11 {
>>                      reg = <0x11>;
>>                      syna,f11-flip-x = <1>;
>>                      syna,sensor-type = <1>;
>>                  };
>>              };
>>          };
>>
>> Bootlog:
>> [    2.143127] rmi_f01 sensor00.fn01: found RMI device, manufacturer:
>> Synaptics, product: TM1217
>> [    2.155242] input: Synaptics RMI4 Touch Sensor as
>> /devices/sensor00/input/input2
>> [    2.165466] rmi_i2c 3-004b: registered rmi i2c driver at 0x4b.
>>
>> Doing cat /dev/input/event2 gives noise on screen, yay.
>>
>> Some quick questions I see immediately:
>>
>> - The DT examples in Documentation/devicetree/bindings/input/*
>>    omit
>>    #address-cells = <1>;
>>    #size-cells = <0>;
>>    for the I2C device children (i.e. the function nodes), it needs to look
>>    like my example above to work.
>
>
> The devices which I have tested on haven't needed #address-cells or
> #size-cells. It looks like they are inheriting values defined at higher
> levels. I can add them to the example for completeness and update the
> documentation to say that they may be needed.
>
>> - All things boolean like syna,nosleep and syna,f11-flip-x
>>    should just be like:
>>    syna,nosleep;
>>    syna,f11-flip-x;
>>    in the device tree. Use of_property_read_bool() for these.
>
>
> That makes sense. I will switch them to booleans.
>
>> - syna,sensor-name = "FOO";
>>    Why?
>>    The bootlog clearly states that f01 can autodetect the sensor
>>    type. And f01 is always compiled in, right? So just cut this
>>    binding and handling, if the two don't match it's just
>>    super-confusing.
>
>
> The sensor name in the platform data is used by some debug messages before
> F01 is loaded. But, I agree it can be confusing having multiple names for
> the device. Especially, when the sensor name is the same as the product id.
> I'll see if it makes sense to use another name like the transport device's
> name in the logs.
>
>> - /proc/interrupts say this:
>>   206:        114          0  nmk2-64-95  20 Edge      sensor00
>>   sensor00? Unhelpful. Why can't it say "TM1217", give take
>>   an instance number, with the detected sensor name?
>
>
> Currently, rmi_dev's device name is also being set before F01 is loaded.
> I'll see if we can simply set it later when we have the product id from F01.
>
>> But to me the code seems overall pretty mature. It just works.
>> I'll be happy to give a more detailed review if you post it.
>
>
> Great! I'll look into the issues you highlighted above and start posting
> patches soon. Thanks for reviewing!
>

Guys,

sorry for being a little bit unresponsive on this matter. I just moved
across the Atlantic (again :-P ) and am in a rough setup for a few
days (hopefully not weeks). I don't currently have any Synaptics RMI4
over SMBus device with me, but Lyude (AKA Chandler) does have access
to the ones we have in Westford.

In addition to the patches I published in this series (the ones Andrew
has), our latest tree
(https://github.com/bentiss/linux/commits/synaptics-rmi4-smbus-v4.3-rc6%2B)
contains the SMBus support and some attempts to fix suspend/resume
with SMBus touchpads.

The problem we have with suspend/resume on SMBus is that the device is
both seen as a PS/2 device (which we unbind) and the SMBus one.
Problem is, during resume, the serial port is reset, which disable the
SMBus part.

Our solution currently consists in disabling the PM resume function
from the rmi_driver code, and export it through an internal API. Once
the low level driver receive the resume callback (either from the PM
code or the serial driver which just busted our init through its own
reset), this low level driver calls the rmi_driver resume function
which does all the RMI4 resume handling.

I think this should be needed for i2c-hid devices too given that most
of them also enumerates as PS/2.

I always refrained to send this resume fixes because we were not able
to test the rmi4_i2c driver as it doesn't register itself with the PM
subsystem.

These are hopefully the only changes that needs to be done on the
rmi4_core part for having rmi_smbus working.

Cheers,
Benjamin

  reply	other threads:[~2015-11-04  8:28 UTC|newest]

Thread overview: 42+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-06-23 19:17 [PATCH 00/11] Input: synaptics-rmi4: various fixes for the existing rmi4 branch Benjamin Tissoires
2015-06-23 19:17 ` [PATCH 01/11] Input: synaptics-rmi4 - embed the function modules in rmi_core Benjamin Tissoires
2015-06-24  9:51   ` Paul Bolle
2015-06-24 14:10     ` Benjamin Tissoires
2015-07-02 17:49   ` Andrew Duggan
2015-07-02 17:49     ` Andrew Duggan
2015-06-23 19:17 ` [PATCH 02/11] Input: synaptics-rmi4 - add a common input device in rmi_driver Benjamin Tissoires
2015-07-02 17:49   ` Andrew Duggan
2015-07-02 17:49     ` Andrew Duggan
2015-06-23 19:17 ` [PATCH 03/11] Input: synaptics-rmi4 - explicitly request polling when needed Benjamin Tissoires
2015-07-02 17:50   ` Andrew Duggan
2015-07-02 17:50     ` Andrew Duggan
2015-06-23 19:17 ` [PATCH 04/11] Input: synaptics-rmi4 - prevent oopses when irq arrives while the device is not bound Benjamin Tissoires
2015-07-02 17:50   ` Andrew Duggan
2015-07-02 17:50     ` Andrew Duggan
2015-06-23 19:17 ` [PATCH 05/11] Input: synaptics-rmi4 - call rmi_driver_process_config_requests in enable_sensor Benjamin Tissoires
2015-07-02 17:50   ` Andrew Duggan
2015-07-02 17:50     ` Andrew Duggan
2015-06-23 19:17 ` [PATCH 06/11] Input: synaptics-rmi4 - add a reset callback Benjamin Tissoires
2015-06-23 19:17 ` [PATCH 07/11] Input: synaptics-rmi4 - f11: fix bitmap irq check Benjamin Tissoires
2015-07-02 17:50   ` Andrew Duggan
2015-07-02 17:50     ` Andrew Duggan
2015-06-23 19:17 ` [PATCH 08/11] Input: synaptics-rmi4 - f11: use the unified input node if available Benjamin Tissoires
2015-07-02 17:50   ` Andrew Duggan
2015-07-02 17:50     ` Andrew Duggan
2015-06-23 19:17 ` [PATCH 09/11] Input: synaptics-rmi4 - f11: clean up rmi_f11_finger_handler Benjamin Tissoires
2015-07-02 17:51   ` Andrew Duggan
2015-07-02 17:51     ` Andrew Duggan
2015-06-23 19:17 ` [PATCH 10/11] Input: synaptics-rmi4 - f11: allow the top software button property to be set Benjamin Tissoires
2015-07-02 17:51   ` Andrew Duggan
2015-07-02 17:51     ` Andrew Duggan
2015-06-23 19:17 ` [PATCH 11/11] Input: synaptics-rmi4 - f11: add support for kernel tracking Benjamin Tissoires
2015-07-02 17:51   ` Andrew Duggan
2015-07-02 17:51     ` Andrew Duggan
2015-07-23 17:10 ` [PATCH 00/11] Input: synaptics-rmi4: various fixes for the existing rmi4 branch Benjamin Tissoires
2015-10-31 20:41   ` Linus Walleij
2015-11-02 22:14     ` Andrew Duggan
2015-11-03 10:29       ` Linus Walleij
2015-11-03 14:01       ` Linus Walleij
2015-11-04  0:38         ` Andrew Duggan
2015-11-04  8:28           ` Benjamin Tissoires [this message]
2015-11-04 13:55           ` Linus Walleij

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='CAN+gG=GZJpgF7z53jNnsq7XBh0vCRO5D_e-ycLxR8VWFLScO-g@mail.gmail.com' \
    --to=benjamin.tissoires@gmail.com \
    --cc=aduggan@synaptics.com \
    --cc=cheiny@synaptics.com \
    --cc=cpaul@redhat.com \
    --cc=dmitry.torokhov@gmail.com \
    --cc=linus.walleij@linaro.org \
    --cc=linux-input@vger.kernel.org \
    --cc=linux-kernel@vger.kernel.org \
    /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.