<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/drivers/gpio, branch v4.9.87</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>gpio: xgene: mark PM functions as __maybe_unused</title>
<updated>2018-02-25T10:05:52+00:00</updated>
<author>
<name>Arnd Bergmann</name>
<email>arnd@arndb.de</email>
</author>
<published>2017-02-17T15:13:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=9f47b68eabcf126cd1caec7fcbbb16e1ecc0f09c'/>
<id>9f47b68eabcf126cd1caec7fcbbb16e1ecc0f09c</id>
<content type='text'>
commit b115bebc07f282067eccc06fd5aa3060ab1426da upstream.

When CONFIG_PM_SLEEP is disabled, we get a warning about unused functions:

drivers/gpio/gpio-xgene.c:155:12: warning: 'xgene_gpio_resume' defined but not used [-Wunused-function]
 static int xgene_gpio_resume(struct device *dev)
            ^~~~~~~~~~~~~~~~~
drivers/gpio/gpio-xgene.c:142:12: warning: 'xgene_gpio_suspend' defined but not used [-Wunused-function]
 static int xgene_gpio_suspend(struct device *dev)

The warnings are harmless and can be avoided by simplifying the code and marking
the functions as __maybe_unused.

Signed-off-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit b115bebc07f282067eccc06fd5aa3060ab1426da upstream.

When CONFIG_PM_SLEEP is disabled, we get a warning about unused functions:

drivers/gpio/gpio-xgene.c:155:12: warning: 'xgene_gpio_resume' defined but not used [-Wunused-function]
 static int xgene_gpio_resume(struct device *dev)
            ^~~~~~~~~~~~~~~~~
drivers/gpio/gpio-xgene.c:142:12: warning: 'xgene_gpio_suspend' defined but not used [-Wunused-function]
 static int xgene_gpio_suspend(struct device *dev)

The warnings are harmless and can be avoided by simplifying the code and marking
the functions as __maybe_unused.

Signed-off-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>gpio: intel-mid: Fix build warning when !CONFIG_PM</title>
<updated>2018-02-25T10:05:51+00:00</updated>
<author>
<name>Augusto Mecking Caringi</name>
<email>augustocaringi@gmail.com</email>
</author>
<published>2017-01-16T14:30:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=092bddf5c848ca5f3a865846b372ae1a3ffd2f42'/>
<id>092bddf5c848ca5f3a865846b372ae1a3ffd2f42</id>
<content type='text'>
commit fbc2a294f29e726787a0f5238b27137904f26b81 upstream.

The only usage of function intel_gpio_runtime_idle() is here (in the
same file):

static const struct dev_pm_ops intel_gpio_pm_ops = {
	SET_RUNTIME_PM_OPS(NULL, NULL, intel_gpio_runtime_idle)
};

And when CONFIG_PM is not set, the macro SET_RUNTIME_PM_OPS expands to
nothing, causing the following compiler warning:

drivers/gpio/gpio-intel-mid.c:324:12: warning: ‘intel_gpio_runtime_idle’
defined but not used [-Wunused-function]
static int intel_gpio_runtime_idle(struct device *dev)

Fix it by annotating the function with __maybe_unused.

Signed-off-by: Augusto Mecking Caringi &lt;augustocaringi@gmail.com&gt;
Acked-by: Andy Shevchenko &lt;andy.shevchenko@gmail.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit fbc2a294f29e726787a0f5238b27137904f26b81 upstream.

The only usage of function intel_gpio_runtime_idle() is here (in the
same file):

static const struct dev_pm_ops intel_gpio_pm_ops = {
	SET_RUNTIME_PM_OPS(NULL, NULL, intel_gpio_runtime_idle)
};

And when CONFIG_PM is not set, the macro SET_RUNTIME_PM_OPS expands to
nothing, causing the following compiler warning:

drivers/gpio/gpio-intel-mid.c:324:12: warning: ‘intel_gpio_runtime_idle’
defined but not used [-Wunused-function]
static int intel_gpio_runtime_idle(struct device *dev)

Fix it by annotating the function with __maybe_unused.

Signed-off-by: Augusto Mecking Caringi &lt;augustocaringi@gmail.com&gt;
Acked-by: Andy Shevchenko &lt;andy.shevchenko@gmail.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>gpio: ath79: add missing MODULE_DESCRIPTION/LICENSE</title>
<updated>2018-02-03T16:05:35+00:00</updated>
<author>
<name>Jesse Chan</name>
<email>jc@linux.com</email>
</author>
<published>2017-11-20T20:54:26+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=e29997d55268c9d4d4fc2bb7833f83dc5b220cd5'/>
<id>e29997d55268c9d4d4fc2bb7833f83dc5b220cd5</id>
<content type='text'>
commit 539340f37e6d6ed4cd93e8e18c9b2e4eafd4b842 upstream.

This change resolves a new compile-time warning
when built as a loadable module:

WARNING: modpost: missing MODULE_LICENSE() in drivers/gpio/gpio-ath79.o
see include/linux/module.h for more information

This adds the license as "GPL v2", which matches the header of the file.

MODULE_DESCRIPTION is also added.

Signed-off-by: Jesse Chan &lt;jc@linux.com&gt;
Acked-by: Alban Bedel &lt;albeu@free.fr&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 539340f37e6d6ed4cd93e8e18c9b2e4eafd4b842 upstream.

This change resolves a new compile-time warning
when built as a loadable module:

WARNING: modpost: missing MODULE_LICENSE() in drivers/gpio/gpio-ath79.o
see include/linux/module.h for more information

This adds the license as "GPL v2", which matches the header of the file.

MODULE_DESCRIPTION is also added.

Signed-off-by: Jesse Chan &lt;jc@linux.com&gt;
Acked-by: Alban Bedel &lt;albeu@free.fr&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>gpio: iop: add missing MODULE_DESCRIPTION/AUTHOR/LICENSE</title>
<updated>2018-02-03T16:05:35+00:00</updated>
<author>
<name>Jesse Chan</name>
<email>jc@linux.com</email>
</author>
<published>2017-11-20T20:54:52+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=cb1a0b51d1031ce335d16d7528cace677f105106'/>
<id>cb1a0b51d1031ce335d16d7528cace677f105106</id>
<content type='text'>
commit 97b03136e1b637d7a9d2274c099e44ecf23f1103 upstream.

This change resolves a new compile-time warning
when built as a loadable module:

WARNING: modpost: missing MODULE_LICENSE() in drivers/gpio/gpio-iop.o
see include/linux/module.h for more information

This adds the license as "GPL", which matches the header of the file.

MODULE_DESCRIPTION and MODULE_AUTHOR are also added.

Signed-off-by: Jesse Chan &lt;jc@linux.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 97b03136e1b637d7a9d2274c099e44ecf23f1103 upstream.

This change resolves a new compile-time warning
when built as a loadable module:

WARNING: modpost: missing MODULE_LICENSE() in drivers/gpio/gpio-iop.o
see include/linux/module.h for more information

This adds the license as "GPL", which matches the header of the file.

MODULE_DESCRIPTION and MODULE_AUTHOR are also added.

Signed-off-by: Jesse Chan &lt;jc@linux.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>gpio: Fix kernel stack leak to userspace</title>
<updated>2018-02-03T16:05:34+00:00</updated>
<author>
<name>Linus Walleij</name>
<email>linus.walleij@linaro.org</email>
</author>
<published>2018-01-22T12:19:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=cc1fa4a7b653a4f0a4c95a26ce842d699e8e4b1a'/>
<id>cc1fa4a7b653a4f0a4c95a26ce842d699e8e4b1a</id>
<content type='text'>
commit 24bd3efc9d1efb5f756a7c6f807a36ddb6adc671 upstream.

The GPIO event descriptor was leaking kernel stack to
userspace because we don't zero the variable before
use. Ooops. Fix this.

Reported-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Reviewed-by: Bartosz Golaszewski &lt;brgl@bgdev.pl&gt;
Reviewed-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 24bd3efc9d1efb5f756a7c6f807a36ddb6adc671 upstream.

The GPIO event descriptor was leaking kernel stack to
userspace because we don't zero the variable before
use. Ooops. Fix this.

Reported-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Reviewed-by: Bartosz Golaszewski &lt;brgl@bgdev.pl&gt;
Reviewed-by: Arnd Bergmann &lt;arnd@arndb.de&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>gpio: stmpe: i2c transfer are forbiden in atomic context</title>
<updated>2018-02-03T16:05:34+00:00</updated>
<author>
<name>Patrice Chotard</name>
<email>patrice.chotard@st.com</email>
</author>
<published>2018-01-12T12:16:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=241c04f75e90b6e0eaf099d53c68a77ed5767835'/>
<id>241c04f75e90b6e0eaf099d53c68a77ed5767835</id>
<content type='text'>
commit b888fb6f2a278442933e3bfab70262e9a5365fb3 upstream.

Move the workaround from stmpe_gpio_irq_unmask() which is executed
in atomic context to stmpe_gpio_irq_sync_unlock() which is not.

It fixes the following issue:

[    1.500000] BUG: scheduling while atomic: swapper/1/0x00000002
[    1.500000] CPU: 0 PID: 1 Comm: swapper Not tainted 4.15.0-rc2-00020-gbd4301f-dirty #28
[    1.520000] Hardware name: STM32 (Device Tree Support)
[    1.520000] [&lt;0000bfc9&gt;] (unwind_backtrace) from [&lt;0000b347&gt;] (show_stack+0xb/0xc)
[    1.530000] [&lt;0000b347&gt;] (show_stack) from [&lt;0001fc49&gt;] (__schedule_bug+0x39/0x58)
[    1.530000] [&lt;0001fc49&gt;] (__schedule_bug) from [&lt;00168211&gt;] (__schedule+0x23/0x2b2)
[    1.550000] [&lt;00168211&gt;] (__schedule) from [&lt;001684f7&gt;] (schedule+0x57/0x64)
[    1.550000] [&lt;001684f7&gt;] (schedule) from [&lt;0016a513&gt;] (schedule_timeout+0x137/0x164)
[    1.550000] [&lt;0016a513&gt;] (schedule_timeout) from [&lt;00168b91&gt;] (wait_for_common+0x8d/0xfc)
[    1.570000] [&lt;00168b91&gt;] (wait_for_common) from [&lt;00139753&gt;] (stm32f4_i2c_xfer+0xe9/0xfe)
[    1.580000] [&lt;00139753&gt;] (stm32f4_i2c_xfer) from [&lt;00138545&gt;] (__i2c_transfer+0x111/0x148)
[    1.590000] [&lt;00138545&gt;] (__i2c_transfer) from [&lt;001385cf&gt;] (i2c_transfer+0x53/0x70)
[    1.590000] [&lt;001385cf&gt;] (i2c_transfer) from [&lt;001388a5&gt;] (i2c_smbus_xfer+0x12f/0x36e)
[    1.600000] [&lt;001388a5&gt;] (i2c_smbus_xfer) from [&lt;00138b49&gt;] (i2c_smbus_read_byte_data+0x1f/0x2a)
[    1.610000] [&lt;00138b49&gt;] (i2c_smbus_read_byte_data) from [&lt;00124fdd&gt;] (__stmpe_reg_read+0xd/0x24)
[    1.620000] [&lt;00124fdd&gt;] (__stmpe_reg_read) from [&lt;001252b3&gt;] (stmpe_reg_read+0x19/0x24)
[    1.630000] [&lt;001252b3&gt;] (stmpe_reg_read) from [&lt;0002c4d1&gt;] (unmask_irq+0x17/0x22)
[    1.640000] [&lt;0002c4d1&gt;] (unmask_irq) from [&lt;0002c57f&gt;] (irq_startup+0x6f/0x78)
[    1.650000] [&lt;0002c57f&gt;] (irq_startup) from [&lt;0002b7a1&gt;] (__setup_irq+0x319/0x47c)
[    1.650000] [&lt;0002b7a1&gt;] (__setup_irq) from [&lt;0002bad3&gt;] (request_threaded_irq+0x6b/0xe8)
[    1.660000] [&lt;0002bad3&gt;] (request_threaded_irq) from [&lt;0002d0b9&gt;] (devm_request_threaded_irq+0x3b/0x6a)
[    1.670000] [&lt;0002d0b9&gt;] (devm_request_threaded_irq) from [&lt;001446e7&gt;] (mmc_gpiod_request_cd_irq+0x49/0x8a)
[    1.680000] [&lt;001446e7&gt;] (mmc_gpiod_request_cd_irq) from [&lt;0013d45d&gt;] (mmc_start_host+0x49/0x60)
[    1.690000] [&lt;0013d45d&gt;] (mmc_start_host) from [&lt;0013e40b&gt;] (mmc_add_host+0x3b/0x54)
[    1.700000] [&lt;0013e40b&gt;] (mmc_add_host) from [&lt;00148119&gt;] (mmci_probe+0x4d1/0x60c)
[    1.710000] [&lt;00148119&gt;] (mmci_probe) from [&lt;000f903b&gt;] (amba_probe+0x7b/0xbe)
[    1.720000] [&lt;000f903b&gt;] (amba_probe) from [&lt;001170e5&gt;] (driver_probe_device+0x169/0x1f8)
[    1.730000] [&lt;001170e5&gt;] (driver_probe_device) from [&lt;001171b7&gt;] (__driver_attach+0x43/0x5c)
[    1.740000] [&lt;001171b7&gt;] (__driver_attach) from [&lt;0011618d&gt;] (bus_for_each_dev+0x3d/0x46)
[    1.740000] [&lt;0011618d&gt;] (bus_for_each_dev) from [&lt;001165cd&gt;] (bus_add_driver+0xcd/0x124)
[    1.740000] [&lt;001165cd&gt;] (bus_add_driver) from [&lt;00117713&gt;] (driver_register+0x4d/0x7a)
[    1.760000] [&lt;00117713&gt;] (driver_register) from [&lt;001fc765&gt;] (do_one_initcall+0xbd/0xe8)
[    1.770000] [&lt;001fc765&gt;] (do_one_initcall) from [&lt;001fc88b&gt;] (kernel_init_freeable+0xfb/0x134)
[    1.780000] [&lt;001fc88b&gt;] (kernel_init_freeable) from [&lt;00167ee3&gt;] (kernel_init+0x7/0x9c)
[    1.790000] [&lt;00167ee3&gt;] (kernel_init) from [&lt;00009b65&gt;] (ret_from_fork+0x11/0x2c)

Signed-off-by: Alexandre TORGUE &lt;alexandre.torgue@st.com&gt;
Signed-off-by: Patrice Chotard &lt;patrice.chotard@st.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit b888fb6f2a278442933e3bfab70262e9a5365fb3 upstream.

Move the workaround from stmpe_gpio_irq_unmask() which is executed
in atomic context to stmpe_gpio_irq_sync_unlock() which is not.

It fixes the following issue:

[    1.500000] BUG: scheduling while atomic: swapper/1/0x00000002
[    1.500000] CPU: 0 PID: 1 Comm: swapper Not tainted 4.15.0-rc2-00020-gbd4301f-dirty #28
[    1.520000] Hardware name: STM32 (Device Tree Support)
[    1.520000] [&lt;0000bfc9&gt;] (unwind_backtrace) from [&lt;0000b347&gt;] (show_stack+0xb/0xc)
[    1.530000] [&lt;0000b347&gt;] (show_stack) from [&lt;0001fc49&gt;] (__schedule_bug+0x39/0x58)
[    1.530000] [&lt;0001fc49&gt;] (__schedule_bug) from [&lt;00168211&gt;] (__schedule+0x23/0x2b2)
[    1.550000] [&lt;00168211&gt;] (__schedule) from [&lt;001684f7&gt;] (schedule+0x57/0x64)
[    1.550000] [&lt;001684f7&gt;] (schedule) from [&lt;0016a513&gt;] (schedule_timeout+0x137/0x164)
[    1.550000] [&lt;0016a513&gt;] (schedule_timeout) from [&lt;00168b91&gt;] (wait_for_common+0x8d/0xfc)
[    1.570000] [&lt;00168b91&gt;] (wait_for_common) from [&lt;00139753&gt;] (stm32f4_i2c_xfer+0xe9/0xfe)
[    1.580000] [&lt;00139753&gt;] (stm32f4_i2c_xfer) from [&lt;00138545&gt;] (__i2c_transfer+0x111/0x148)
[    1.590000] [&lt;00138545&gt;] (__i2c_transfer) from [&lt;001385cf&gt;] (i2c_transfer+0x53/0x70)
[    1.590000] [&lt;001385cf&gt;] (i2c_transfer) from [&lt;001388a5&gt;] (i2c_smbus_xfer+0x12f/0x36e)
[    1.600000] [&lt;001388a5&gt;] (i2c_smbus_xfer) from [&lt;00138b49&gt;] (i2c_smbus_read_byte_data+0x1f/0x2a)
[    1.610000] [&lt;00138b49&gt;] (i2c_smbus_read_byte_data) from [&lt;00124fdd&gt;] (__stmpe_reg_read+0xd/0x24)
[    1.620000] [&lt;00124fdd&gt;] (__stmpe_reg_read) from [&lt;001252b3&gt;] (stmpe_reg_read+0x19/0x24)
[    1.630000] [&lt;001252b3&gt;] (stmpe_reg_read) from [&lt;0002c4d1&gt;] (unmask_irq+0x17/0x22)
[    1.640000] [&lt;0002c4d1&gt;] (unmask_irq) from [&lt;0002c57f&gt;] (irq_startup+0x6f/0x78)
[    1.650000] [&lt;0002c57f&gt;] (irq_startup) from [&lt;0002b7a1&gt;] (__setup_irq+0x319/0x47c)
[    1.650000] [&lt;0002b7a1&gt;] (__setup_irq) from [&lt;0002bad3&gt;] (request_threaded_irq+0x6b/0xe8)
[    1.660000] [&lt;0002bad3&gt;] (request_threaded_irq) from [&lt;0002d0b9&gt;] (devm_request_threaded_irq+0x3b/0x6a)
[    1.670000] [&lt;0002d0b9&gt;] (devm_request_threaded_irq) from [&lt;001446e7&gt;] (mmc_gpiod_request_cd_irq+0x49/0x8a)
[    1.680000] [&lt;001446e7&gt;] (mmc_gpiod_request_cd_irq) from [&lt;0013d45d&gt;] (mmc_start_host+0x49/0x60)
[    1.690000] [&lt;0013d45d&gt;] (mmc_start_host) from [&lt;0013e40b&gt;] (mmc_add_host+0x3b/0x54)
[    1.700000] [&lt;0013e40b&gt;] (mmc_add_host) from [&lt;00148119&gt;] (mmci_probe+0x4d1/0x60c)
[    1.710000] [&lt;00148119&gt;] (mmci_probe) from [&lt;000f903b&gt;] (amba_probe+0x7b/0xbe)
[    1.720000] [&lt;000f903b&gt;] (amba_probe) from [&lt;001170e5&gt;] (driver_probe_device+0x169/0x1f8)
[    1.730000] [&lt;001170e5&gt;] (driver_probe_device) from [&lt;001171b7&gt;] (__driver_attach+0x43/0x5c)
[    1.740000] [&lt;001171b7&gt;] (__driver_attach) from [&lt;0011618d&gt;] (bus_for_each_dev+0x3d/0x46)
[    1.740000] [&lt;0011618d&gt;] (bus_for_each_dev) from [&lt;001165cd&gt;] (bus_add_driver+0xcd/0x124)
[    1.740000] [&lt;001165cd&gt;] (bus_add_driver) from [&lt;00117713&gt;] (driver_register+0x4d/0x7a)
[    1.760000] [&lt;00117713&gt;] (driver_register) from [&lt;001fc765&gt;] (do_one_initcall+0xbd/0xe8)
[    1.770000] [&lt;001fc765&gt;] (do_one_initcall) from [&lt;001fc88b&gt;] (kernel_init_freeable+0xfb/0x134)
[    1.780000] [&lt;001fc88b&gt;] (kernel_init_freeable) from [&lt;00167ee3&gt;] (kernel_init+0x7/0x9c)
[    1.790000] [&lt;00167ee3&gt;] (kernel_init) from [&lt;00009b65&gt;] (ret_from_fork+0x11/0x2c)

Signed-off-by: Alexandre TORGUE &lt;alexandre.torgue@st.com&gt;
Signed-off-by: Patrice Chotard &lt;patrice.chotard@st.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>gpio: altera: Use handle_level_irq when configured as a level_high</title>
<updated>2017-12-14T08:28:18+00:00</updated>
<author>
<name>Phil Reid</name>
<email>preid@electromag.com.au</email>
</author>
<published>2017-02-20T01:41:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=1bc827aabc70aa14b8a8be0b5b53901edb3b3daa'/>
<id>1bc827aabc70aa14b8a8be0b5b53901edb3b3daa</id>
<content type='text'>
[ Upstream commit f759921cfbf4847319d197a6ed7c9534d593f8bc ]

When a threaded irq handler is chained attached to one of the gpio
pins when configure for level irq the altera_gpio_irq_leveL_high_handler
does not mask the interrupt while being handled by the chained irq.
This resulting in the threaded irq not getting enough cycles to complete
quickly enough before the irq was disabled as faulty. handle_level_irq
should be used in this situation instead of handle_simple_irq.

In gpiochip_irqchip_add set default handler to handle_bad_irq as
per Documentation/gpio/driver.txt. Then set the correct handler in
the set_type callback.

Signed-off-by: Phil Reid &lt;preid@electromag.com.au&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Sasha Levin &lt;alexander.levin@verizon.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit f759921cfbf4847319d197a6ed7c9534d593f8bc ]

When a threaded irq handler is chained attached to one of the gpio
pins when configure for level irq the altera_gpio_irq_leveL_high_handler
does not mask the interrupt while being handled by the chained irq.
This resulting in the threaded irq not getting enough cycles to complete
quickly enough before the irq was disabled as faulty. handle_level_irq
should be used in this situation instead of handle_simple_irq.

In gpiochip_irqchip_add set default handler to handle_bad_irq as
per Documentation/gpio/driver.txt. Then set the correct handler in
the set_type callback.

Signed-off-by: Phil Reid &lt;preid@electromag.com.au&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Sasha Levin &lt;alexander.levin@verizon.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>gpio: mockup: dynamically allocate memory for chip name</title>
<updated>2017-11-30T08:39:13+00:00</updated>
<author>
<name>Bartosz Golaszewski</name>
<email>bgolaszewski@baylibre.com</email>
</author>
<published>2016-12-20T11:28:19+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=86aa023fa68178d22bd90098da84165140673c7f'/>
<id>86aa023fa68178d22bd90098da84165140673c7f</id>
<content type='text'>
[ Upstream commit ad6d8004fa29a8958381b60215e32d1e903b0492 ]

Currently the chip name buffer is allocated on the stack and the
address of the buffer is passed to the gpio framework. It's invalid
after probe() returns, so the sysfs label attribute displays garbage.

Use devm_kasprintf() for each string instead.

Signed-off-by: Bartosz Golaszewski &lt;bgolaszewski@baylibre.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Sasha Levin &lt;alexander.levin@verizon.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit ad6d8004fa29a8958381b60215e32d1e903b0492 ]

Currently the chip name buffer is allocated on the stack and the
address of the buffer is passed to the gpio framework. It's invalid
after probe() returns, so the sysfs label attribute displays garbage.

Use devm_kasprintf() for each string instead.

Signed-off-by: Bartosz Golaszewski &lt;bgolaszewski@baylibre.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Sasha Levin &lt;alexander.levin@verizon.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>gpio: mcp23s08: Select REGMAP/REGMAP_I2C to fix build error</title>
<updated>2017-11-08T09:08:35+00:00</updated>
<author>
<name>Axel Lin</name>
<email>axel.lin@ingics.com</email>
</author>
<published>2017-10-07T22:36:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=b1a38567a9ed04d0c235023d5b2a70cce1a3bc4c'/>
<id>b1a38567a9ed04d0c235023d5b2a70cce1a3bc4c</id>
<content type='text'>
[ Upstream commit e8e1a5b5679b1ae1ff03a3883b011b84e7226171 ]

This driver now using devm_regmap_init/devm_regmap_init_i2c, so it needs
to select REGMAP/REGMAP_I2C accordingly.

Fixes: ("3d84fdb3f0b5 gpio: mcp23s08: use regmap")
Signed-off-by: Axel Lin &lt;axel.lin@ingics.com&gt;
Acked-By: Sebastian Reichel &lt;sre@kernel.org&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Sasha Levin &lt;alexander.levin@verizon.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit e8e1a5b5679b1ae1ff03a3883b011b84e7226171 ]

This driver now using devm_regmap_init/devm_regmap_init_i2c, so it needs
to select REGMAP/REGMAP_I2C accordingly.

Fixes: ("3d84fdb3f0b5 gpio: mcp23s08: use regmap")
Signed-off-by: Axel Lin &lt;axel.lin@ingics.com&gt;
Acked-By: Sebastian Reichel &lt;sre@kernel.org&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Sasha Levin &lt;alexander.levin@verizon.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>gpiolib: skip unwanted events, don't convert them to opposite edge</title>
<updated>2017-08-11T15:49:30+00:00</updated>
<author>
<name>Bartosz Golaszewski</name>
<email>brgl@bgdev.pl</email>
</author>
<published>2017-07-03T09:12:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=b680e22fca767103ea4f86e21a8cca927f9d1ca7'/>
<id>b680e22fca767103ea4f86e21a8cca927f9d1ca7</id>
<content type='text'>
commit df1e76f28ffe87d1b065eecab2d0fbb89e6bdee5 upstream.

The previous fix for filtering out of unwatched events was not entirely
correct. Instead of skipping the events we don't want, they are now
interpreted as events with opposing edge.

In order to fix it: always read the GPIO line value on interrupt and
only emit the event if it corresponds with the event type we requested.

Fixes: ad537b822577 ("gpiolib: fix filtering out unwanted events")
Signed-off-by: Bartosz Golaszewski &lt;brgl@bgdev.pl&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit df1e76f28ffe87d1b065eecab2d0fbb89e6bdee5 upstream.

The previous fix for filtering out of unwatched events was not entirely
correct. Instead of skipping the events we don't want, they are now
interpreted as events with opposing edge.

In order to fix it: always read the GPIO line value on interrupt and
only emit the event if it corresponds with the event type we requested.

Fixes: ad537b822577 ("gpiolib: fix filtering out unwanted events")
Signed-off-by: Bartosz Golaszewski &lt;brgl@bgdev.pl&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
</feed>
