<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/drivers/pinctrl/intel/pinctrl-cherryview.c, branch linux-5.11.y</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-5.11.y</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-5.11.y'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2020-09-07T08:57:19Z</updated>
<entry>
<title>pinctrl: cherryview: Preserve CHV_PADCTRL1_INVRXTX_TXDATA flag on GPIOs</title>
<updated>2020-09-07T08:57:19Z</updated>
<author>
<name>Hans de Goede</name>
</author>
<published>2020-09-04T17:21:41Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=a0bf06dc51dbbc5ad182b1bcf4d879db8d297c5e'/>
<id>urn:sha1:a0bf06dc51dbbc5ad182b1bcf4d879db8d297c5e</id>
<content type='text'>
One some devices the GPIO should output the inverted value from what
device-drivers / ACPI code expects. The reason for this is unknown,
perhaps these systems use an external buffer chip on the GPIO which
inverts the signal. The BIOS makes this work by setting the
CHV_PADCTRL1_INVRXTX_TXDATA flag.

Before this commit we would unconditionally clear all INVRXTX flags,
including the CHV_PADCTRL1_INVRXTX_TXDATA flag when a GPIO is requested
by a driver (from chv_gpio_request_enable()).

This breaks systems using this setup. Specifically it is causing
problems for systems with a goodix touchscreen, where the BIOS sets the
INVRXTX_TXDATA flag on the GPIO used for the touchscreen's reset pin.

The goodix touchscreen driver by defaults configures this pin as input
(relying on the pull-up to keep it high), but the clearing of the
INVRXTX_TXDATA flag done by chv_gpio_request_enable() causes it to be
driven low for a brief time before the GPIO gets set to input mode.

This causes the touchscreen controller to get reset. On most CHT devs
with this touchscreen this leads to:

[   31.596534] Goodix-TS i2c-GDIX1001:00: i2c test failed attempt 1: -121

The driver retries this though and then everything is fine. But during
reset the touchscreen uses its interrupt pin as bootstrap to determine
which i2c address to use and on the Acer One S1003 the spurious reset
caused by the clearing of the INVRXTX_TXDATA flag causes the controller
to come back up again on the wrong i2c address, breaking things.

This commit fixes both the -121 errors, as well as the total breakage
on the Acer One S1003, by making chv_gpio_clear_triggering() not clear
the INVRXTX_TXDATA flag if the pin is already configured as a GPIO.

Note that chv_pinmux_set_mux() does still unconditionally clear the
flag, so this only affects GPIO usage.

Fixes: a7d4b171660c ("Input: goodix - add support for getting IRQ + reset GPIOs on Cherry Trail devices")
Signed-off-by: Hans de Goede &lt;hdegoede@redhat.com&gt;
Acked-by: Mika Westerberg &lt;mika.westerberg@linux.intel.com&gt;
Signed-off-by: Andy Shevchenko &lt;andriy.shevchenko@linux.intel.com&gt;
</content>
</entry>
<entry>
<title>pinctrl: cherryview: Switch to use intel_pinctrl_get_soc_data()</title>
<updated>2020-08-20T09:37:07Z</updated>
<author>
<name>Andy Shevchenko</name>
</author>
<published>2020-07-29T11:57:08Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=10c857f063fc63902160755a6e23fa594290c6d3'/>
<id>urn:sha1:10c857f063fc63902160755a6e23fa594290c6d3</id>
<content type='text'>
Since we have common helper to retrieve SoC data from driver data
we may switch to use it.

Signed-off-by: Andy Shevchenko &lt;andriy.shevchenko@linux.intel.com&gt;
Acked-by: Mika Westerberg &lt;mika.westerberg@linux.intel.com&gt;
</content>
</entry>
<entry>
<title>pinctrl: cherryview: Utilize temporary variable to hold device pointer</title>
<updated>2020-08-18T12:10:43Z</updated>
<author>
<name>Andy Shevchenko</name>
</author>
<published>2020-07-29T12:02:30Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=359164fa730c45641ec597f48ab33c03d955e824'/>
<id>urn:sha1:359164fa730c45641ec597f48ab33c03d955e824</id>
<content type='text'>
By one of the previous clean up change we got a temporary variable to hold
a device pointer. It can be utilized in other calls in the -&gt;probe() and
save a bit of LOCs.

Signed-off-by: Andy Shevchenko &lt;andriy.shevchenko@linux.intel.com&gt;
Acked-by: Mika Westerberg &lt;mika.westerberg@linux.intel.com&gt;
</content>
</entry>
<entry>
<title>pinctrl: cherryview: Switch to use struct intel_pinctrl</title>
<updated>2020-08-18T12:03:33Z</updated>
<author>
<name>Andy Shevchenko</name>
</author>
<published>2020-07-27T16:12:16Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=3ea2e2cabd2dc749d866887a8eaab9fd9536ca0b'/>
<id>urn:sha1:3ea2e2cabd2dc749d866887a8eaab9fd9536ca0b</id>
<content type='text'>
Now when all preparations are done we may easily switch to use
struct intel_pinctrl instead of custom one.

Signed-off-by: Andy Shevchenko &lt;andriy.shevchenko@linux.intel.com&gt;
Acked-by: Mika Westerberg &lt;mika.westerberg@linux.intel.com&gt;
</content>
</entry>
<entry>
<title>pinctrl: cherryview: Move custom community members to separate data struct</title>
<updated>2020-08-18T12:03:33Z</updated>
<author>
<name>Andy Shevchenko</name>
</author>
<published>2020-07-27T16:12:15Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=8a82857077804b03be3a64fc5204ebc49a53dd95'/>
<id>urn:sha1:8a82857077804b03be3a64fc5204ebc49a53dd95</id>
<content type='text'>
This is a preparatory patch for bigger clean up pending for Cherryview driver.
There is no functional change intended.

Signed-off-by: Andy Shevchenko &lt;andriy.shevchenko@linux.intel.com&gt;
Acked-by: Mika Westerberg &lt;mika.westerberg@linux.intel.com&gt;
</content>
</entry>
<entry>
<title>pinctrl: cherryview: Drop stale comment</title>
<updated>2020-08-18T12:03:33Z</updated>
<author>
<name>Andy Shevchenko</name>
</author>
<published>2020-07-27T16:12:14Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=0e2d769d4b4eb8eb012c430be34b6ca06daf9e1d'/>
<id>urn:sha1:0e2d769d4b4eb8eb012c430be34b6ca06daf9e1d</id>
<content type='text'>
There is no more .groups member in struct chv_pinctrl,
drop associated comment because it's not applicable anymore.

Signed-off-by: Andy Shevchenko &lt;andriy.shevchenko@linux.intel.com&gt;
Acked-by: Mika Westerberg &lt;mika.westerberg@linux.intel.com&gt;
</content>
</entry>
<entry>
<title>pinctrl: cherryview: Re-use data structures from pinctrl-intel.h (part 3)</title>
<updated>2020-06-22T07:58:51Z</updated>
<author>
<name>Andy Shevchenko</name>
</author>
<published>2020-06-09T18:24:49Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=293428f93260d45f712a2d9f895bc0def0b34a3d'/>
<id>urn:sha1:293428f93260d45f712a2d9f895bc0def0b34a3d</id>
<content type='text'>
We have some data structures duplicated across the drivers.
Let's deduplicate them by using struct intel_pinctrl_soc_data,
struct intel_community and struct intel_pinctrl_context that
are being provided by pinctrl-intel.h.

Signed-off-by: Andy Shevchenko &lt;andriy.shevchenko@linux.intel.com&gt;
Acked-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Acked-by: Mika Westerberg &lt;mika.westerberg@linux.intel.com&gt;
</content>
</entry>
<entry>
<title>pinctrl: cherryview: Convert chv_writel() to use chv_padreg()</title>
<updated>2020-06-22T07:58:51Z</updated>
<author>
<name>Andy Shevchenko</name>
</author>
<published>2020-06-09T18:24:46Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=bfc8a4baec9377b3fdd2bbeafaf5a7f2c95b1151'/>
<id>urn:sha1:bfc8a4baec9377b3fdd2bbeafaf5a7f2c95b1151</id>
<content type='text'>
chv_writel() is now solely used for cases where we write data
to the PAD registers. In order to simplify callers, calculate
register address inside chv_writel().

Signed-off-by: Andy Shevchenko &lt;andriy.shevchenko@linux.intel.com&gt;
Acked-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Acked-by: Mika Westerberg &lt;mika.westerberg@linux.intel.com&gt;
</content>
</entry>
<entry>
<title>pinctrl: cherryview: Introduce helpers to IO with common registers</title>
<updated>2020-06-22T07:58:51Z</updated>
<author>
<name>Andy Shevchenko</name>
</author>
<published>2020-06-09T18:24:45Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=99fd6512278e08a0fb264e3b83eccbbf0ff30967'/>
<id>urn:sha1:99fd6512278e08a0fb264e3b83eccbbf0ff30967</id>
<content type='text'>
Pin control device and effectively the single community in it has
a set of common registers. It's good to have a helpers to IO on them.

Signed-off-by: Andy Shevchenko &lt;andriy.shevchenko@linux.intel.com&gt;
Acked-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Acked-by: Mika Westerberg &lt;mika.westerberg@linux.intel.com&gt;
</content>
</entry>
<entry>
<title>pinctrl: cherryview: Introduce chv_readl() helper</title>
<updated>2020-06-22T07:58:51Z</updated>
<author>
<name>Andy Shevchenko</name>
</author>
<published>2020-06-09T18:24:44Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4e7293e3a2a367d0935925988acfd941549ce489'/>
<id>urn:sha1:4e7293e3a2a367d0935925988acfd941549ce489</id>
<content type='text'>
There are plenty of places where we call
	readl(chv_padreg(pctrl, offset, ...));

Replace them with newly introduced chv_readl() helper
	chv_readl(pctrl, offset, ...);

Signed-off-by: Andy Shevchenko &lt;andriy.shevchenko@linux.intel.com&gt;
Acked-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Acked-by: Mika Westerberg &lt;mika.westerberg@linux.intel.com&gt;
</content>
</entry>
</feed>
