<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-stable.git/drivers/gpio, branch v4.9.83</title>
<subtitle>Linux kernel stable tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/'/>
<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.tavy.me/linux-stable.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.tavy.me/linux-stable.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.tavy.me/linux-stable.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.tavy.me/linux-stable.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.tavy.me/linux-stable.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.tavy.me/linux-stable.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.tavy.me/linux-stable.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.tavy.me/linux-stable.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>
<entry>
<title>gpiolib: fix filtering out unwanted events</title>
<updated>2017-07-05T12:40:18+00:00</updated>
<author>
<name>Bartosz Golaszewski</name>
<email>brgl@bgdev.pl</email>
</author>
<published>2017-06-23T11:45:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=78c4244f8bdbf3cefa1e01bfcfe7a53bcc45c0f3'/>
<id>78c4244f8bdbf3cefa1e01bfcfe7a53bcc45c0f3</id>
<content type='text'>
commit ad537b822577fcc143325786cd6ad50d7b9df31c upstream.

GPIOEVENT_REQUEST_BOTH_EDGES is not a single flag, but a binary OR of
GPIOEVENT_REQUEST_RISING_EDGE and GPIOEVENT_REQUEST_FALLING_EDGE.

The expression 'le-&gt;eflags &amp; GPIOEVENT_REQUEST_BOTH_EDGES' we'll get
evaluated to true even if only one event type was requested.

Fix it by checking both RISING &amp; FALLING flags explicitly.

Fixes: 61f922db7221 ("gpio: userspace ABI for reading GPIO line 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 ad537b822577fcc143325786cd6ad50d7b9df31c upstream.

GPIOEVENT_REQUEST_BOTH_EDGES is not a single flag, but a binary OR of
GPIOEVENT_REQUEST_RISING_EDGE and GPIOEVENT_REQUEST_FALLING_EDGE.

The expression 'le-&gt;eflags &amp; GPIOEVENT_REQUEST_BOTH_EDGES' we'll get
evaluated to true even if only one event type was requested.

Fix it by checking both RISING &amp; FALLING flags explicitly.

Fixes: 61f922db7221 ("gpio: userspace ABI for reading GPIO line 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>
<entry>
<title>gpio: omap: return error if requested debounce time is not possible</title>
<updated>2017-05-25T13:44:36+00:00</updated>
<author>
<name>David Rivshin</name>
<email>DRivshin@allworx.com</email>
</author>
<published>2017-04-24T22:56:50+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=198ab4031873b5511d6ef9b4777cabc4eebcaf18'/>
<id>198ab4031873b5511d6ef9b4777cabc4eebcaf18</id>
<content type='text'>
commit 83977443938122baeed28dc9f078db3da9855f7c upstream.

omap_gpio_debounce() does not validate that the requested debounce
is within a range it can handle. Instead it lets the register value
wrap silently, and always returns success.

This can lead to all sorts of unexpected behavior, such as gpio_keys
asking for a too-long debounce, but getting a very short debounce in
practice.

Fix this by returning -EINVAL if the requested value does not fit into
the register field. If there is no debounce clock available at all,
return -ENOTSUPP.

Fixes: e85ec6c3047b ("gpio: omap: fix omap2_set_gpio_debounce")
Signed-off-by: David Rivshin &lt;drivshin@allworx.com&gt;
Acked-by: Grygorii Strashko &lt;grygorii.strashko@ti.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 83977443938122baeed28dc9f078db3da9855f7c upstream.

omap_gpio_debounce() does not validate that the requested debounce
is within a range it can handle. Instead it lets the register value
wrap silently, and always returns success.

This can lead to all sorts of unexpected behavior, such as gpio_keys
asking for a too-long debounce, but getting a very short debounce in
practice.

Fix this by returning -EINVAL if the requested value does not fit into
the register field. If there is no debounce clock available at all,
return -ENOTSUPP.

Fixes: e85ec6c3047b ("gpio: omap: fix omap2_set_gpio_debounce")
Signed-off-by: David Rivshin &lt;drivshin@allworx.com&gt;
Acked-by: Grygorii Strashko &lt;grygorii.strashko@ti.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>
</feed>
