<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux/drivers/gpio, branch v3.2.38</title>
<subtitle>Linux kernel source tree</subtitle>
<id>https://git.amat.us/linux/atom/drivers/gpio?h=v3.2.38</id>
<link rel='self' href='https://git.amat.us/linux/atom/drivers/gpio?h=v3.2.38'/>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/'/>
<updated>2012-11-16T16:46:52Z</updated>
<entry>
<title>gpio-timberdale: fix a potential wrapping issue</title>
<updated>2012-11-16T16:46:52Z</updated>
<author>
<name>Dan Carpenter</name>
<email>dan.carpenter@oracle.com</email>
</author>
<published>2012-10-11T06:56:35Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=5a7b9047f5512e10e6ef89cd36e5b572bf13f60e'/>
<id>urn:sha1:5a7b9047f5512e10e6ef89cd36e5b572bf13f60e</id>
<content type='text'>
commit d79550a7bc35c16476ebdc27c78378d8093390ec upstream.

-&gt;last_ier is an unsigned long but the high bits can't be used int the
original code because the shift wraps.

Signed-off-by: Dan Carpenter &lt;dan.carpenter@oracle.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
</entry>
<entry>
<title>gpio-lpc32xx: Fix value handling of gpio_direction_output()</title>
<updated>2012-10-10T02:31:04Z</updated>
<author>
<name>Roland Stigge</name>
<email>stigge@antcom.de</email>
</author>
<published>2012-09-20T08:48:03Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=247a9ca13ccd0e1cfd81b481e91d365950eaeaaf'/>
<id>urn:sha1:247a9ca13ccd0e1cfd81b481e91d365950eaeaaf</id>
<content type='text'>
commit b1268d3737c6316016026245eef276eda6b0a621 upstream.

For GPIOs of gpio-lpc32xx, gpio_direction_output() ignores the value argument
(initial value of output). This patch fixes this by setting the level
accordingly.

Signed-off-by: Roland Stigge &lt;stigge@antcom.de&gt;
Acked-by: Alexandre Pereira da Silva &lt;aletes.xgr@gmail.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
</entry>
<entry>
<title>gpiolib: wm8994: Pay attention to the value set when enabling as output</title>
<updated>2012-07-25T03:11:08Z</updated>
<author>
<name>Mark Brown</name>
<email>broonie@opensource.wolfsonmicro.com</email>
</author>
<published>2012-06-09T03:07:56Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=43fc6bce37ff39ab5010afadf1ea86e7cc9c2b37'/>
<id>urn:sha1:43fc6bce37ff39ab5010afadf1ea86e7cc9c2b37</id>
<content type='text'>
commit 8cd578b6e28693f357867a77598a88ef3deb6b39 upstream.

Not paying attention to the value being set is a bad thing because it
means that we'll not set the hardware up to reflect what was requested.
Not setting the hardware up to reflect what was requested means that the
caller won't get the results they wanted.

Signed-off-by: Mark Brown &lt;broonie@opensource.wolfsonmicro.com&gt;
Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
</entry>
<entry>
<title>gpio: mpc8xxx: Prevent NULL pointer deref in demux handler</title>
<updated>2012-05-30T23:43:59Z</updated>
<author>
<name>Thomas Gleixner</name>
<email>tglx@linutronix.de</email>
</author>
<published>2012-05-03T10:22:06Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=be8ad46e10b99411acae4f0461be547f32a08686'/>
<id>urn:sha1:be8ad46e10b99411acae4f0461be547f32a08686</id>
<content type='text'>
commit d6de85e85edcc38c9edcde45a0a568818fcddc13 upstream.

commit cfadd838(powerpc/8xxx: Fix interrupt handling in MPC8xxx GPIO
driver) added an unconditional call of chip-&gt;irq_eoi() to the demux
handler.

This leads to a NULL pointer derefernce on MPC512x platforms which use
this driver as well.

Make it conditional.

Reported-by: Thomas Wucher &lt;thwucher@linutronix.de&gt;
Signed-off-by: Thomas Gleixner &lt;tglx@linutronix.de&gt;
Cc: Felix Radensky &lt;felix@embedded-sol.com&gt;
Cc: Kumar Gala &lt;galak@kernel.crashing.org&gt;
Cc: Grant Likely &lt;grant.likely@secretlab.ca&gt;
Signed-off-by: Grant Likely &lt;grant.likely@secretlab.ca&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
</entry>
<entry>
<title>gpio: Add missing spin_lock_init in gpio-ml-ioh driver</title>
<updated>2012-05-20T21:56:43Z</updated>
<author>
<name>Axel Lin</name>
<email>axel.lin@gmail.com</email>
</author>
<published>2012-02-01T02:50:05Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=347e3c6d3ed876bb5c36189265be02e952679e09'/>
<id>urn:sha1:347e3c6d3ed876bb5c36189265be02e952679e09</id>
<content type='text'>
commit 7e3a70fb7bccada029c188c89bfbf3c0a63c1500 upstream.

This bug was introduced by commit 54be5663
"gpio-ml-ioh: Support interrupt function" which adds a spinlock to struct
ioh_gpio but never init the spinlock.

Signed-off-by: Axel Lin &lt;axel.lin@gmail.com&gt;
Signed-off-by: Grant Likely &lt;grant.likely@secretlab.ca&gt;
Signed-off-by: Ben Hutchings &lt;ben@decadent.org.uk&gt;
</content>
</entry>
<entry>
<title>gpio: Add missing spin_lock_init in gpio-pch driver</title>
<updated>2012-04-22T22:31:12Z</updated>
<author>
<name>Axel Lin</name>
<email>axel.lin@gmail.com</email>
</author>
<published>2012-02-01T02:51:53Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=4195441e3c6eaa3a118804dd9d8d04e5d3fe2149'/>
<id>urn:sha1:4195441e3c6eaa3a118804dd9d8d04e5d3fe2149</id>
<content type='text'>
commit d166370ad86b33b1111af3a0cdd7de94e03789a6 upstream.

This bug was introduced by commit d568a681
"gpio-pch: add spinlock in suspend/resume processing"
which adds a spinlock to struct pch_gpio but never init the spinlock.

Reported-by: Tomoya MORINAGA &lt;tomoya.rohm@gmail.com&gt;
Signed-off-by: Axel Lin &lt;axel.lin@gmail.com&gt;
Acked-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Grant Likely &lt;grant.likely@secretlab.ca&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>pch_gpio: Support new device LAPIS Semiconductor ML7831 IOH</title>
<updated>2012-04-22T22:31:12Z</updated>
<author>
<name>Tomoya MORINAGA</name>
<email>tomoya-linux@dsn.lapis-semi.com</email>
</author>
<published>2011-10-28T00:23:32Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=10ec1cf0d40f2728f6c96a0a7c6f0365c231738a'/>
<id>urn:sha1:10ec1cf0d40f2728f6c96a0a7c6f0365c231738a</id>
<content type='text'>
commit 868fea0507308b6548bba7debe5f5c2d5ca47fca upstream.

ML7831 is companion chip for Intel Atom E6xx series.

Signed-off-by: Tomoya MORINAGA &lt;tomoya-linux@dsn.lapis-semi.com&gt;
Signed-off-by: Grant Likely &lt;grant.likely@secretlab.ca&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>gpio/davinci: fix enabling unbanked GPIO IRQs</title>
<updated>2012-04-02T16:53:05Z</updated>
<author>
<name>Sekhar Nori</name>
<email>nsekhar@ti.com</email>
</author>
<published>2012-03-11T12:46:12Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=7c2d80c67d367b9a1131de67ddd8088df3541273'/>
<id>urn:sha1:7c2d80c67d367b9a1131de67ddd8088df3541273</id>
<content type='text'>
commit 81b279d80a63628e580c71a31d30a8c3b3047ad4 upstream.

Unbanked GPIO IRQ handling code made a copy of just
the irq_chip structure for GPIO IRQ lines which caused
problems after the generic IRQ chip conversion because
there was no valid irq_chip_type structure with the
right "regs" populated. irq_gc_mask_set_bit() was
therefore accessing random addresses.

Fix it by making a copy of irq_chip_type structure
instead. This will ensure sane register offsets.

Reported-by: Jon Povey &lt;Jon.Povey@racelogic.co.uk&gt;
Tested-by: Jon Povey &lt;Jon.Povey@racelogic.co.uk&gt;
Signed-off-by: Sekhar Nori &lt;nsekhar@ti.com&gt;
Signed-off-by: Grant Likely &lt;grant.likely@secretlab.ca&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>gpio/davinci: fix oops on unbanked gpio irq request</title>
<updated>2012-04-02T16:53:05Z</updated>
<author>
<name>Sekhar Nori</name>
<email>nsekhar@ti.com</email>
</author>
<published>2012-03-11T12:46:11Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=9e4e8ae49a74dbbc69b4e923ecf387154e34da8a'/>
<id>urn:sha1:9e4e8ae49a74dbbc69b4e923ecf387154e34da8a</id>
<content type='text'>
commit ab2dde9924dd1ddb791fa8b14aa52e1df681e20c upstream.

Unbanked GPIO irq setup code was overwriting chip_data leading
to the following oops on request_irq()

Unable to handle kernel paging request at virtual address febfffff
pgd = c22dc000
[febfffff] *pgd=00000000
Internal error: Oops: 801 [#1] PREEMPT
Modules linked in: mcu(+) edmak irqk cmemk
CPU: 0    Not tainted  (3.0.0-rc7+ #93)
PC is at irq_gc_mask_set_bit+0x68/0x7c
LR is at vprintk+0x22c/0x484
pc : [&lt;c0080c0c&gt;]    lr : [&lt;c00457e0&gt;]    psr: 60000093
sp : c33e3ba0  ip : c33e3af0  fp : c33e3bc4
r10: c04555bc  r9 : c33d4340  r8 : 60000013
r7 : 0000002d  r6 : c04555bc  r5 : fec67010  r4 : 00000000
r3 : c04734c8  r2 : fec00000  r1 : ffffffff  r0 : 00000026
Flags: nZCv  IRQs off  FIQs on  Mode SVC_32  ISA ARM  Segment user
Control: 0005317f  Table: 822dc000  DAC: 00000015
Process modprobe (pid: 526, stack limit = 0xc33e2270)
Stack: (0xc33e3ba0 to 0xc33e4000)
3ba0: 00000000 c007d3d4 c33e3bcc c04555bc c04555bc c33d4340 c33e3bdc c33e3bc8
3bc0: c007f5f8 c0080bb4 00000000 c04555bc c33e3bf4 c33e3be0 c007f654 c007f5c0
3be0: 00000000 c04555bc c33e3c24 c33e3bf8 c007e6e8 c007f618 c01f2284 c0350af8
3c00: c0405214 bf016c98 00000001 00000000 c33dc008 0000002d c33e3c54 c33e3c28
3c20: c007e888 c007e408 00000001 c23ef880 c33dc000 00000000 c33dc080 c25caa00
3c40: c0487498 bf017078 c33e3c94 c33e3c58 bf016b44 c007e7d4 bf017078 c33dc008
3c60: c25caa08 c33dc008 c33e3c84 bf017484 c25caa00 c25caa00 c01f5f48 c25caa08
3c80: c0496d60 bf017484 c33e3ca4 c33e3c98 c022a698 bf01692c c33e3cd4 c33e3ca8
3ca0: c01f5d88 c022a688 00000000 bf017484 c25caa00 c25caa00 c01f5f48 c25caa08
3cc0: c0496d60 00000000 c33e3cec c33e3cd8 c01f5f8c c01f5d10 00000000 c33e3cf0
3ce0: c33e3d14 c33e3cf0 c01f5210 c01f5f58 c303cb48 c25ecf94 c25caa00 c25caa00
3d00: c25caa34 c33e3dd8 c33e3d34 c33e3d18 c01f6044 c01f51b8 c0496d3c c25caa00
3d20: c044e918 c33e3dd8 c33e3d44 c33e3d38 c01f4ff4 c01f5fcc c33e3d94 c33e3d48
3d40: c01f3d10 c01f4fd8 00000000 c044e918 00000000 00000000 c01f52c0 c034d570
3d60: c33e3d84 c33e3d70 c022bf84 c25caa00 00000000 c044e918 c33e3dd8 c25c2e00
3d80: c0496d60 bf01763c c33e3db4 c33e3d98 c022b1a0 c01f384c c25caa00 c33e3dd8
3da0: 00000000 c33e3dd8 c33e3dd4 c33e3db8 c022b27c c022b0e8 00000000 bf01763c
3dc0: c0451c80 c33e3dd8 c33e3e34 c33e3dd8 bf016f60 c022b210 5f75636d 746e6f63
3de0: 006c6f72 00000000 00000000 00000000 00000000 00000000 00000000 bf0174bc
3e00: 00000000 00989680 00000000 00000020 c0451c80 c0451c80 bf0174dc c01f5eb0
3e20: c33f0f00 bf0174dc c33e3e44 c33e3e38 c01f72f4 bf016e2c c33e3e74 c33e3e48
3e40: c01f5d88 c01f72e4 00000000 c0451c80 c0451cb4 bf0174dc c01f5eb0 c33f0f00
3e60: c0473100 00000000 c33e3e94 c33e3e78 c01f5f44 c01f5d10 00000000 c33e3e98
3e80: bf0174dc c01f5eb0 c33e3ebc c33e3e98 c01f5534 c01f5ec0 c303c038 c3061c30
3ea0: 00003cd8 00098258 bf0174dc c0462ac8 c33e3ecc c33e3ec0 c01f5bec c01f54dc
3ec0: c33e3efc c33e3ed0 c01f4d30 c01f5bdc bf0173a0 c33e2000 00003cd8 00098258
3ee0: bf0174dc c33e2000 c00301a4 bf019000 c33e3f1c c33e3f00 c01f6588 c01f4c8c
3f00: 00003cd8 00098258 00000000 c33e2000 c33e3f2c c33e3f20 c01f777c c01f6524
3f20: c33e3f3c c33e3f30 bf019014 c01f7740 c33e3f7c c33e3f40 c002f3ec bf019010
3f40: 00000000 00003cd8 00098258 bf017518 00000000 00003cd8 00098258 bf017518
3f60: 00000000 c00301a4 c33e2000 00000000 c33e3fa4 c33e3f80 c007b934 c002f3c4
3f80: c00b307c c00b2f48 00003cd8 00000000 00000003 00000080 00000000 c33e3fa8
3fa0: c0030020 c007b8b8 00003cd8 00000000 00098288 00003cd8 00098258 00098240
3fc0: 00003cd8 00000000 00000003 00000080 00098008 00098028 00098288 00000001
3fe0: be892998 be892988 00013d7c 40178740 60000010 00098288 09089041 00200845
Backtrace:
[&lt;c0080ba4&gt;] (irq_gc_mask_set_bit+0x0/0x7c) from [&lt;c007f5f8&gt;] (irq_enable+0x48/0x58)
 r6:c33d4340 r5:c04555bc r4:c04555bc
[&lt;c007f5b0&gt;] (irq_enable+0x0/0x58) from [&lt;c007f654&gt;] (irq_startup+0x4c/0x54)
 r5:c04555bc r4:00000000
[&lt;c007f608&gt;] (irq_startup+0x0/0x54) from [&lt;c007e6e8&gt;] (__setup_irq+0x2f0/0x3cc)
 r5:c04555bc r4:00000000
[&lt;c007e3f8&gt;] (__setup_irq+0x0/0x3cc) from [&lt;c007e888&gt;] (request_threaded_irq+0xc4/0x110)
 r8:0000002d r7:c33dc008 r6:00000000 r5:00000001 r4:bf016c98
[&lt;c007e7c4&gt;] (request_threaded_irq+0x0/0x110) from [&lt;bf016b44&gt;] (mcu_spi_probe+0x228/0x37c [mcu])
[&lt;bf01691c&gt;] (mcu_spi_probe+0x0/0x37c [mcu]) from [&lt;c022a698&gt;] (spi_drv_probe+0x20/0x24)
[&lt;c022a678&gt;] (spi_drv_probe+0x0/0x24) from [&lt;c01f5d88&gt;] (driver_probe_device+0x88/0x1b0)
[&lt;c01f5d00&gt;] (driver_probe_device+0x0/0x1b0) from [&lt;c01f5f8c&gt;] (__device_attach+0x44/0x48)
[&lt;c01f5f48&gt;] (__device_attach+0x0/0x48) from [&lt;c01f5210&gt;] (bus_for_each_drv+0x68/0x94)
 r5:c33e3cf0 r4:00000000
[&lt;c01f51a8&gt;] (bus_for_each_drv+0x0/0x94) from [&lt;c01f6044&gt;] (device_attach+0x88/0xa0)
 r7:c33e3dd8 r6:c25caa34 r5:c25caa00 r4:c25caa00
[&lt;c01f5fbc&gt;] (device_attach+0x0/0xa0) from [&lt;c01f4ff4&gt;] (bus_probe_device+0x2c/0x4c)
 r7:c33e3dd8 r6:c044e918 r5:c25caa00 r4:c0496d3c
[&lt;c01f4fc8&gt;] (bus_probe_device+0x0/0x4c) from [&lt;c01f3d10&gt;] (device_add+0x4d4/0x648)
[&lt;c01f383c&gt;] (device_add+0x0/0x648) from [&lt;c022b1a0&gt;] (spi_add_device+0xc8/0x128)
[&lt;c022b0d8&gt;] (spi_add_device+0x0/0x128) from [&lt;c022b27c&gt;] (spi_new_device+0x7c/0xb4)
 r7:c33e3dd8 r6:00000000 r5:c33e3dd8 r4:c25caa00
[&lt;c022b200&gt;] (spi_new_device+0x0/0xb4) from [&lt;bf016f60&gt;] (mcu_probe+0x144/0x224 [mcu])
 r7:c33e3dd8 r6:c0451c80 r5:bf01763c r4:00000000
[&lt;bf016e1c&gt;] (mcu_probe+0x0/0x224 [mcu]) from [&lt;c01f72f4&gt;] (platform_drv_probe+0x20/0x24)
[&lt;c01f72d4&gt;] (platform_drv_probe+0x0/0x24) from [&lt;c01f5d88&gt;] (driver_probe_device+0x88/0x1b0)
[&lt;c01f5d00&gt;] (driver_probe_device+0x0/0x1b0) from [&lt;c01f5f44&gt;] (__driver_attach+0x94/0x98)
[&lt;c01f5eb0&gt;] (__driver_attach+0x0/0x98) from [&lt;c01f5534&gt;] (bus_for_each_dev+0x68/0x94)
 r7:c01f5eb0 r6:bf0174dc r5:c33e3e98 r4:00000000
[&lt;c01f54cc&gt;] (bus_for_each_dev+0x0/0x94) from [&lt;c01f5bec&gt;] (driver_attach+0x20/0x28)
 r7:c0462ac8 r6:bf0174dc r5:00098258 r4:00003cd8
[&lt;c01f5bcc&gt;] (driver_attach+0x0/0x28) from [&lt;c01f4d30&gt;] (bus_add_driver+0xb4/0x258)
[&lt;c01f4c7c&gt;] (bus_add_driver+0x0/0x258) from [&lt;c01f6588&gt;] (driver_register+0x74/0x158)
[&lt;c01f6514&gt;] (driver_register+0x0/0x158) from [&lt;c01f777c&gt;] (platform_driver_register+0x4c/0x60)
 r7:c33e2000 r6:00000000 r5:00098258 r4:00003cd8
[&lt;c01f7730&gt;] (platform_driver_register+0x0/0x60) from [&lt;bf019014&gt;] (mcu_init+0x14/0x20 [mcu])
[&lt;bf019000&gt;] (mcu_init+0x0/0x20 [mcu]) from [&lt;c002f3ec&gt;] (do_one_initcall+0x38/0x170)
[&lt;c002f3b4&gt;] (do_one_initcall+0x0/0x170) from [&lt;c007b934&gt;] (sys_init_module+0x8c/0x1a4)
[&lt;c007b8a8&gt;] (sys_init_module+0x0/0x1a4) from [&lt;c0030020&gt;] (ret_fast_syscall+0x0/0x2c)
 r7:00000080 r6:00000003 r5:00000000 r4:00003cd8
Code: e1844003 e585400c e596300c e5932064 (e7814002)

Fix the issue.

Reported-by: Jon Povey &lt;Jon.Povey@racelogic.co.uk&gt;
Signed-off-by: Sekhar Nori &lt;nsekhar@ti.com&gt;
Signed-off-by: Grant Likely &lt;grant.likely@secretlab.ca&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>gpio/omap: fix _set_gpio_irqenable implementation</title>
<updated>2012-04-02T16:53:04Z</updated>
<author>
<name>Tarun Kanti DebBarma</name>
<email>tarun.kanti@ti.com</email>
</author>
<published>2011-11-25T09:57:37Z</published>
<link rel='alternate' type='text/html' href='https://git.amat.us/linux/commit/?id=c43d4b949b856e428d4c1f3c7d4533e40d3bbe67'/>
<id>urn:sha1:c43d4b949b856e428d4c1f3c7d4533e40d3bbe67</id>
<content type='text'>
commit 8276536cec38bc6bde30d0aa67716f22b9b9705a upstream.

This function should be capable of both enabling and disabling interrupts
based upon the *enable* parameter. Right now the function only enables
the interrupt and *enable* is not used at all. So add the interrupt
disable capability also using the parameter.

Signed-off-by: Tarun Kanti DebBarma &lt;tarun.kanti@ti.com&gt;
Reviewed-by: Santosh Shilimkar &lt;santosh.shilimkar@ti.com&gt;
Acked-by: Felipe Balbi &lt;balbi@ti.com&gt;
Reviewed-by: Kevin Hilman &lt;khilman@ti.com&gt;
Signed-off-by: Kevin Hilman &lt;khilman@ti.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
</feed>
