<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/drivers/input/touchscreen/goodix.c, branch v4.9</title>
<subtitle>Mirror of https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/
</subtitle>
<id>https://git.shady.money/linux/atom?h=v4.9</id>
<link rel='self' href='https://git.shady.money/linux/atom?h=v4.9'/>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/'/>
<updated>2015-12-18T01:11:56Z</updated>
<entry>
<title>Input: goodix - use "inverted_[xy]" flags instead of "rotated_screen"</title>
<updated>2015-12-18T01:11:56Z</updated>
<author>
<name>Karsten Merker</name>
<email>merker@debian.org</email>
</author>
<published>2015-12-18T01:08:31Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=57c80e8e5d1cddae0651e5314394e6069ebbbe3c'/>
<id>urn:sha1:57c80e8e5d1cddae0651e5314394e6069ebbbe3c</id>
<content type='text'>
The goodix touchscreen driver uses a "rotated_screen" flag for
systems on which the touchscreen is mounted rotated by 180
degrees with respect to the display.  With the addition of
support for the dt properties "touchscreen-inverted-x" and
"touchscreen-inverted-y", a separate "rotated_screen" flag
is not necessary anymore. This patch replaces it by setting
the inverted_x and inverted_y flags instead.

Signed-off-by: Karsten Merker &lt;merker@debian.org&gt;
Reviewed-by: Irina Tirdea &lt;irina.tirdea@intel.com&gt;
Tested-by: Bastien Nocera &lt;hadess@hadess.net&gt;
Acked-by: Bastien Nocera &lt;hadess@hadess.net&gt;
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;</content>
</entry>
<entry>
<title>Input: goodix - add axis swapping and axis inversion support</title>
<updated>2015-12-18T01:11:55Z</updated>
<author>
<name>Karsten Merker</name>
<email>merker@debian.org</email>
</author>
<published>2015-12-18T01:02:53Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=ad48cf5e9597147bb2bb526a6d379ee88970dec8'/>
<id>urn:sha1:ad48cf5e9597147bb2bb526a6d379ee88970dec8</id>
<content type='text'>
Implement support for the following device-tree and ACPI 5.1 DSD
properties in the goodix touchscreen driver:

 - touchscreen-inverted-x:  X axis is inverted (boolean)
 - touchscreen-inverted-y:  Y axis is inverted (boolean)
 - touchscreen-swapped-x-y: X and Y axis are swapped (boolean)

These are necessary on tablets which have a display in portrait
format while the touchscreen is in landscape format, such as e.g.
the MSI Primo 81.

Signed-off-by: Karsten Merker &lt;merker@debian.org&gt;
Tested-by: Bastien Nocera &lt;hadess@hadess.net&gt;
Tested-by: Irina Tirdea &lt;irina.tirdea@intel.com&gt; (with ACPI DSD properties)
Tested-by: Aleksei Mamlin &lt;mamlinav@gmail.com&gt; (with device-tree properties)
Acked-by: Rob Herring &lt;robh@kernel.org&gt;
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;</content>
</entry>
<entry>
<title>Input: goodix - use goodix_i2c_write_u8 instead of i2c_master_send</title>
<updated>2015-12-18T01:11:54Z</updated>
<author>
<name>Irina Tirdea</name>
<email>irina.tirdea@intel.com</email>
</author>
<published>2015-12-18T00:47:42Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=5d655b35466835c6bb8774122db95ecb4e18888d'/>
<id>urn:sha1:5d655b35466835c6bb8774122db95ecb4e18888d</id>
<content type='text'>
Use goodix_i2c_write_u8 instead of i2c_master_send to simplify code.

Signed-off-by: Irina Tirdea &lt;irina.tirdea@intel.com&gt;
Tested-by: Bastien Nocera &lt;hadess@hadess.net&gt;
Tested-by: Aleksei Mamlin &lt;mamlinav@gmail.com&gt;
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;</content>
</entry>
<entry>
<title>Input: goodix - add power management support</title>
<updated>2015-12-18T01:11:53Z</updated>
<author>
<name>Irina Tirdea</name>
<email>irina.tirdea@intel.com</email>
</author>
<published>2015-12-18T00:43:39Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=5ab09d6a8f6406134085fb3f30ab61968c6f1ddf'/>
<id>urn:sha1:5ab09d6a8f6406134085fb3f30ab61968c6f1ddf</id>
<content type='text'>
Implement suspend/resume for goodix driver.

The suspend and resume process uses the gpio pins.  If the device ACPI/DT
information does not declare gpio pins, suspend/resume will not be
available for these devices.

This is based on Goodix datasheets for GT911 and GT9271 and on Goodix
driver gt9xx.c for Android (publicly available in Android kernel trees for
various devices).

Signed-off-by: Octavian Purdila &lt;octavian.purdila@intel.com&gt;
Signed-off-by: Irina Tirdea &lt;irina.tirdea@intel.com&gt;
Tested-by: Bastien Nocera &lt;hadess@hadess.net&gt;
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;</content>
</entry>
<entry>
<title>Input: goodix - write configuration data to device</title>
<updated>2015-12-18T01:11:53Z</updated>
<author>
<name>Irina Tirdea</name>
<email>irina.tirdea@intel.com</email>
</author>
<published>2015-12-18T00:05:42Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=68caf85881cd842b59d5e2124a236ecce0389a73'/>
<id>urn:sha1:68caf85881cd842b59d5e2124a236ecce0389a73</id>
<content type='text'>
Goodix devices can be configured by writing custom data to the device at
init. The configuration data is read with request_firmware from
"goodix_&lt;id&gt;_cfg.bin", where &lt;id&gt; is the product id read from the device
(e.g.: goodix_911_cfg.bin for Goodix GT911, goodix_9271_cfg.bin for
GT9271).

The configuration information has a specific format described in the Goodix
datasheet. It includes X/Y resolution, maximum supported touch points,
interrupt flags, various sensitivity factors and settings for advanced
features (like gesture recognition).

Before writing the firmware, it is necessary to reset the device. If
the device ACPI/DT information does not declare gpio pins (needed for
reset), writing the firmware will not be available for these devices.

This is based on Goodix datasheets for GT911 and GT9271 and on Goodix
driver gt9xx.c for Android (publicly available in Android kernel
trees for various devices).

Signed-off-by: Octavian Purdila &lt;octavian.purdila@intel.com&gt;
Signed-off-by: Irina Tirdea &lt;irina.tirdea@intel.com&gt;
Tested-by: Bastien Nocera &lt;hadess@hadess.net&gt;
Tested-by: Aleksei Mamlin &lt;mamlinav@gmail.com&gt;
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;</content>
</entry>
<entry>
<title>Input: goodix - reset device at init</title>
<updated>2015-12-18T01:11:52Z</updated>
<author>
<name>Irina Tirdea</name>
<email>irina.tirdea@intel.com</email>
</author>
<published>2015-12-17T23:57:34Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=ec6e1b4082d9f5b0858ce33169a1c22a27a982f6'/>
<id>urn:sha1:ec6e1b4082d9f5b0858ce33169a1c22a27a982f6</id>
<content type='text'>
After power on, it is recommended that the driver resets the device.
The reset procedure timing is described in the datasheet and is used
at device init (before writing device configuration) and
for power management. It is a sequence of setting the interrupt
and reset pins high/low at specific timing intervals. This procedure
also includes setting the slave address to the one specified in the
ACPI/device tree.

This is based on Goodix datasheets for GT911 and GT9271 and on Goodix
driver gt9xx.c for Android (publicly available in Android kernel
trees for various devices).

For reset the driver needs to control the interrupt and
reset gpio pins (configured through ACPI/device tree). For devices
that do not have the gpio pins properly declared, the functionality
depending on these pins will not be available, but the device can still
be used with basic functionality.

For both device tree and ACPI, the interrupt gpio pin configuration is
read from the "irq-gpios" property and the reset pin configuration is
read from the "reset-gpios" property. For ACPI 5.1, named properties
can be specified using the _DSD section. This functionality will not be
available for devices that use indexed gpio pins declared in the _CRS
section (we need to provide backward compatibility with devices
that do not support using the interrupt gpio pin as output).

For ACPI, the pins can be specified using ACPI 5.1:
Device (STAC)
{
    Name (_HID, "GDIX1001")
    ...

    Method (_CRS, 0, Serialized)
    {
        Name (RBUF, ResourceTemplate ()
        {
            I2cSerialBus (0x0014, ControllerInitiated, 0x00061A80,
                AddressingMode7Bit, "\\I2C0",
                0x00, ResourceConsumer, ,
                )

            GpioInt (Edge, ActiveHigh, Exclusive, PullNone, 0x0000,
                "\\I2C0", 0x00, ResourceConsumer, ,
                 )
                 {   // Pin list
                     0
                 }

            GpioIo (Exclusive, PullDown, 0x0000, 0x0000,
                IoRestrictionOutputOnly, "\\I2C0", 0x00,
                ResourceConsumer, ,
                )
                {
                     1
                }
        })
        Return (RBUF)
    }

    Name (_DSD,  Package ()
    {
        ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
        Package ()
        {
            Package (2) {"irq-gpios", Package() {^STAC, 0, 0, 0 }},
            Package (2) {"reset-gpios", Package() {^STAC, 1, 0, 0 }},
            ...
        }
    }

Signed-off-by: Octavian Purdila &lt;octavian.purdila@intel.com&gt;
Signed-off-by: Irina Tirdea &lt;irina.tirdea@intel.com&gt;
Acked-by: Rob Herring &lt;robh@kernel.org&gt;
Acked-by: Bastien Nocera &lt;hadess@hadess.net&gt;
Tested-by: Bastien Nocera &lt;hadess@hadess.net&gt;
Tested-by: Aleksei Mamlin &lt;mamlinav@gmail.com&gt;
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;</content>
</entry>
<entry>
<title>Input: goodix - use actual config length for each device type</title>
<updated>2015-12-18T01:11:51Z</updated>
<author>
<name>Irina Tirdea</name>
<email>irina.tirdea@intel.com</email>
</author>
<published>2015-12-17T23:55:21Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=a779fbc6c931007559b74fd74c2dc7b1c25bac33'/>
<id>urn:sha1:a779fbc6c931007559b74fd74c2dc7b1c25bac33</id>
<content type='text'>
Each of the Goodix devices supported by this driver has a fixed size for
the configuration information registers. The size varies depending on the
device and is specified in the datasheet.

Use the proper configuration length as specified in the datasheet for
each device model, so we do not read more than the actual size of the
configuration registers.

Signed-off-by: Irina Tirdea &lt;irina.tirdea@intel.com&gt;
Acked-by: Bastien Nocera &lt;hadess@hadess.net&gt;
Tested-by: Bastien Nocera &lt;hadess@hadess.net&gt;
Tested-by: Aleksei Mamlin &lt;mamlinav@gmail.com&gt;
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;</content>
</entry>
<entry>
<title>Merge branch 'next' into for-linus</title>
<updated>2015-09-03T17:01:44Z</updated>
<author>
<name>Dmitry Torokhov</name>
<email>dmitry.torokhov@gmail.com</email>
</author>
<published>2015-09-03T17:01:44Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=01b944fe1cd4e21a2a9ed51adbdbafe2d5e905ba'/>
<id>urn:sha1:01b944fe1cd4e21a2a9ed51adbdbafe2d5e905ba</id>
<content type='text'>
Prepare first round of input updates for 4.3 merge window.
</content>
</entry>
<entry>
<title>Input: export I2C module alias information in missing drivers</title>
<updated>2015-07-30T18:05:37Z</updated>
<author>
<name>Javier Martinez Canillas</name>
<email>javier@osg.samsung.com</email>
</author>
<published>2015-07-30T17:38:52Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=2e9e910e8a4626d1217b6887c74a456d2835be2a'/>
<id>urn:sha1:2e9e910e8a4626d1217b6887c74a456d2835be2a</id>
<content type='text'>
The I2C core always reports the MODALIAS uevent as "i2c:&lt;client name"
regardless if the driver was matched using the I2C id_table or the
of_match_table. So the driver needs to export the I2C table and this
be built into the module or udev won't have the necessary information
to auto load the correct module when the device is added.

Signed-off-by: Javier Martinez Canillas &lt;javier@osg.samsung.com&gt;
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;</content>
</entry>
<entry>
<title>Input: goodix - fix touch coordinates on WinBook TW100 and TW700</title>
<updated>2015-07-24T16:11:02Z</updated>
<author>
<name>Bastien Nocera</name>
<email>hadess@hadess.net</email>
</author>
<published>2015-07-24T16:08:53Z</published>
<link rel='alternate' type='text/html' href='https://git.shady.money/linux/commit/?id=8b5a359c5b3e631f17eeb1dcb930474000d33d49'/>
<id>urn:sha1:8b5a359c5b3e631f17eeb1dcb930474000d33d49</id>
<content type='text'>
The touchscreen on the WinBook TW100 and TW700 don't match the default
display, with 0,0 touches being reported when touching at the bottom
right of the screen.

  1280,800             0,800
         +-------------+
         |             |
         |             |
         |             |
         +-------------+
    1280,0             0,0

It's unfortunately impossible to detect this problem with data from the
DSDT, or other auxiliary metadata, so fallback to quirking this specific
model of tablet instead.

Signed-off-by: Bastien Nocera &lt;hadess@hadess.net&gt;
Reviewed-by: Benjamin Tissoires &lt;benjamin.tissoires@redhat.com&gt;
Signed-off-by: Dmitry Torokhov &lt;dmitry.torokhov@gmail.com&gt;</content>
</entry>
</feed>
