<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/drivers/mfd, branch v3.12.42</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>mfd: kempld-core: Fix callback return value check</title>
<updated>2015-04-21T14:30:02+00:00</updated>
<author>
<name>Ameya Palande</name>
<email>2ameya@gmail.com</email>
</author>
<published>2015-02-26T20:05:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=f06798119a36f014e744e677a20a4b4818a9ddb3'/>
<id>f06798119a36f014e744e677a20a4b4818a9ddb3</id>
<content type='text'>
commit c8648508ebfc597058d2cd00b6c539110264a167 upstream.

On success, callback function returns 0. So invert the if condition
check so that we can break out of loop.

Signed-off-by: Ameya Palande &lt;2ameya@gmail.com&gt;
Signed-off-by: Lee Jones &lt;lee.jones@linaro.org&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;

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

On success, callback function returns 0. So invert the if condition
check so that we can break out of loop.

Signed-off-by: Ameya Palande &lt;2ameya@gmail.com&gt;
Signed-off-by: Lee Jones &lt;lee.jones@linaro.org&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>mfd: viperboard: Fix platform-device id collision</title>
<updated>2015-01-09T10:28:28+00:00</updated>
<author>
<name>Johan Hovold</name>
<email>johan@kernel.org</email>
</author>
<published>2014-09-26T10:55:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=0702a76da972aa3a3a7091a4e3abe833017a2904'/>
<id>0702a76da972aa3a3a7091a4e3abe833017a2904</id>
<content type='text'>
commit b6684228726cc25551a43f5c0bd9c5f977f10f48 upstream.

Allow more than one viperboard to be connected by registering with
PLATFORM_DEVID_AUTO instead of PLATFORM_DEVID_NONE.

The subdevices are currently registered with PLATFORM_DEVID_NONE, which
will cause a name collision on the platform bus when a second viperboard
is plugged in:

viperboard 1-2.4:1.0: version 0.00 found at bus 001 address 004
------------[ cut here ]------------
WARNING: CPU: 0 PID: 181 at /home/johan/work/omicron/src/linux/fs/sysfs/dir.c:31 sysfs_warn_dup+0x74/0x84()
sysfs: cannot create duplicate filename '/bus/platform/devices/viperboard-gpio'
Modules linked in: i2c_viperboard viperboard netconsole [last unloaded: viperboard]
CPU: 0 PID: 181 Comm: bash Tainted: G        W      3.17.0-rc6 #1
[&lt;c0016bf4&gt;] (unwind_backtrace) from [&lt;c0013860&gt;] (show_stack+0x20/0x24)
[&lt;c0013860&gt;] (show_stack) from [&lt;c04305f8&gt;] (dump_stack+0x24/0x28)
[&lt;c04305f8&gt;] (dump_stack) from [&lt;c0040fb4&gt;] (warn_slowpath_common+0x80/0x98)
[&lt;c0040fb4&gt;] (warn_slowpath_common) from [&lt;c004100c&gt;] (warn_slowpath_fmt+0x40/0x48)
[&lt;c004100c&gt;] (warn_slowpath_fmt) from [&lt;c016f1bc&gt;] (sysfs_warn_dup+0x74/0x84)
[&lt;c016f1bc&gt;] (sysfs_warn_dup) from [&lt;c016f548&gt;] (sysfs_do_create_link_sd.isra.2+0xcc/0xd0)
[&lt;c016f548&gt;] (sysfs_do_create_link_sd.isra.2) from [&lt;c016f588&gt;] (sysfs_create_link+0x3c/0x48)
[&lt;c016f588&gt;] (sysfs_create_link) from [&lt;c02867ec&gt;] (bus_add_device+0x12c/0x1e0)
[&lt;c02867ec&gt;] (bus_add_device) from [&lt;c0284820&gt;] (device_add+0x410/0x584)
[&lt;c0284820&gt;] (device_add) from [&lt;c0289440&gt;] (platform_device_add+0xd8/0x26c)
[&lt;c0289440&gt;] (platform_device_add) from [&lt;c02a5ae4&gt;] (mfd_add_device+0x240/0x344)
[&lt;c02a5ae4&gt;] (mfd_add_device) from [&lt;c02a5ce0&gt;] (mfd_add_devices+0xb8/0x110)
[&lt;c02a5ce0&gt;] (mfd_add_devices) from [&lt;bf00d1c8&gt;] (vprbrd_probe+0x160/0x1b0 [viperboard])
[&lt;bf00d1c8&gt;] (vprbrd_probe [viperboard]) from [&lt;c030c000&gt;] (usb_probe_interface+0x1bc/0x2a8)
[&lt;c030c000&gt;] (usb_probe_interface) from [&lt;c028768c&gt;] (driver_probe_device+0x14c/0x3ac)
[&lt;c028768c&gt;] (driver_probe_device) from [&lt;c02879e4&gt;] (__driver_attach+0xa4/0xa8)
[&lt;c02879e4&gt;] (__driver_attach) from [&lt;c0285698&gt;] (bus_for_each_dev+0x70/0xa4)
[&lt;c0285698&gt;] (bus_for_each_dev) from [&lt;c0287030&gt;] (driver_attach+0x2c/0x30)
[&lt;c0287030&gt;] (driver_attach) from [&lt;c030a288&gt;] (usb_store_new_id+0x170/0x1ac)
[&lt;c030a288&gt;] (usb_store_new_id) from [&lt;c030a2f8&gt;] (new_id_store+0x34/0x3c)
[&lt;c030a2f8&gt;] (new_id_store) from [&lt;c02853ec&gt;] (drv_attr_store+0x30/0x3c)
[&lt;c02853ec&gt;] (drv_attr_store) from [&lt;c016eaa8&gt;] (sysfs_kf_write+0x5c/0x60)
[&lt;c016eaa8&gt;] (sysfs_kf_write) from [&lt;c016dc68&gt;] (kernfs_fop_write+0xd4/0x194)
[&lt;c016dc68&gt;] (kernfs_fop_write) from [&lt;c010fe40&gt;] (vfs_write+0xb4/0x1c0)
[&lt;c010fe40&gt;] (vfs_write) from [&lt;c01104a8&gt;] (SyS_write+0x4c/0xa0)
[&lt;c01104a8&gt;] (SyS_write) from [&lt;c000f900&gt;] (ret_fast_syscall+0x0/0x48)
---[ end trace 98e8603c22d65817 ]---
viperboard 1-2.4:1.0: Failed to add mfd devices to core.
viperboard: probe of 1-2.4:1.0 failed with error -17

Signed-off-by: Johan Hovold &lt;johan@kernel.org&gt;
Signed-off-by: Lee Jones &lt;lee.jones@linaro.org&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit b6684228726cc25551a43f5c0bd9c5f977f10f48 upstream.

Allow more than one viperboard to be connected by registering with
PLATFORM_DEVID_AUTO instead of PLATFORM_DEVID_NONE.

The subdevices are currently registered with PLATFORM_DEVID_NONE, which
will cause a name collision on the platform bus when a second viperboard
is plugged in:

viperboard 1-2.4:1.0: version 0.00 found at bus 001 address 004
------------[ cut here ]------------
WARNING: CPU: 0 PID: 181 at /home/johan/work/omicron/src/linux/fs/sysfs/dir.c:31 sysfs_warn_dup+0x74/0x84()
sysfs: cannot create duplicate filename '/bus/platform/devices/viperboard-gpio'
Modules linked in: i2c_viperboard viperboard netconsole [last unloaded: viperboard]
CPU: 0 PID: 181 Comm: bash Tainted: G        W      3.17.0-rc6 #1
[&lt;c0016bf4&gt;] (unwind_backtrace) from [&lt;c0013860&gt;] (show_stack+0x20/0x24)
[&lt;c0013860&gt;] (show_stack) from [&lt;c04305f8&gt;] (dump_stack+0x24/0x28)
[&lt;c04305f8&gt;] (dump_stack) from [&lt;c0040fb4&gt;] (warn_slowpath_common+0x80/0x98)
[&lt;c0040fb4&gt;] (warn_slowpath_common) from [&lt;c004100c&gt;] (warn_slowpath_fmt+0x40/0x48)
[&lt;c004100c&gt;] (warn_slowpath_fmt) from [&lt;c016f1bc&gt;] (sysfs_warn_dup+0x74/0x84)
[&lt;c016f1bc&gt;] (sysfs_warn_dup) from [&lt;c016f548&gt;] (sysfs_do_create_link_sd.isra.2+0xcc/0xd0)
[&lt;c016f548&gt;] (sysfs_do_create_link_sd.isra.2) from [&lt;c016f588&gt;] (sysfs_create_link+0x3c/0x48)
[&lt;c016f588&gt;] (sysfs_create_link) from [&lt;c02867ec&gt;] (bus_add_device+0x12c/0x1e0)
[&lt;c02867ec&gt;] (bus_add_device) from [&lt;c0284820&gt;] (device_add+0x410/0x584)
[&lt;c0284820&gt;] (device_add) from [&lt;c0289440&gt;] (platform_device_add+0xd8/0x26c)
[&lt;c0289440&gt;] (platform_device_add) from [&lt;c02a5ae4&gt;] (mfd_add_device+0x240/0x344)
[&lt;c02a5ae4&gt;] (mfd_add_device) from [&lt;c02a5ce0&gt;] (mfd_add_devices+0xb8/0x110)
[&lt;c02a5ce0&gt;] (mfd_add_devices) from [&lt;bf00d1c8&gt;] (vprbrd_probe+0x160/0x1b0 [viperboard])
[&lt;bf00d1c8&gt;] (vprbrd_probe [viperboard]) from [&lt;c030c000&gt;] (usb_probe_interface+0x1bc/0x2a8)
[&lt;c030c000&gt;] (usb_probe_interface) from [&lt;c028768c&gt;] (driver_probe_device+0x14c/0x3ac)
[&lt;c028768c&gt;] (driver_probe_device) from [&lt;c02879e4&gt;] (__driver_attach+0xa4/0xa8)
[&lt;c02879e4&gt;] (__driver_attach) from [&lt;c0285698&gt;] (bus_for_each_dev+0x70/0xa4)
[&lt;c0285698&gt;] (bus_for_each_dev) from [&lt;c0287030&gt;] (driver_attach+0x2c/0x30)
[&lt;c0287030&gt;] (driver_attach) from [&lt;c030a288&gt;] (usb_store_new_id+0x170/0x1ac)
[&lt;c030a288&gt;] (usb_store_new_id) from [&lt;c030a2f8&gt;] (new_id_store+0x34/0x3c)
[&lt;c030a2f8&gt;] (new_id_store) from [&lt;c02853ec&gt;] (drv_attr_store+0x30/0x3c)
[&lt;c02853ec&gt;] (drv_attr_store) from [&lt;c016eaa8&gt;] (sysfs_kf_write+0x5c/0x60)
[&lt;c016eaa8&gt;] (sysfs_kf_write) from [&lt;c016dc68&gt;] (kernfs_fop_write+0xd4/0x194)
[&lt;c016dc68&gt;] (kernfs_fop_write) from [&lt;c010fe40&gt;] (vfs_write+0xb4/0x1c0)
[&lt;c010fe40&gt;] (vfs_write) from [&lt;c01104a8&gt;] (SyS_write+0x4c/0xa0)
[&lt;c01104a8&gt;] (SyS_write) from [&lt;c000f900&gt;] (ret_fast_syscall+0x0/0x48)
---[ end trace 98e8603c22d65817 ]---
viperboard 1-2.4:1.0: Failed to add mfd devices to core.
viperboard: probe of 1-2.4:1.0 failed with error -17

Signed-off-by: Johan Hovold &lt;johan@kernel.org&gt;
Signed-off-by: Lee Jones &lt;lee.jones@linaro.org&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mfd: stmpe: Fix STMPE24xx GPMR LSB</title>
<updated>2015-01-09T10:28:27+00:00</updated>
<author>
<name>Linus Walleij</name>
<email>linus.walleij@linaro.org</email>
</author>
<published>2014-10-04T14:02:27+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=83ee596143c7f78fec7c8f36f92be2223d9a8bad'/>
<id>83ee596143c7f78fec7c8f36f92be2223d9a8bad</id>
<content type='text'>
commit 871c3cf4ea7d5baf58e0a40bce7431ca5525aa2a upstream.

The least significat byte of the GPIO value read register
on the STMPE24xx series is on addres 0xA4 not 0xA5. Correct
against datasheet and tested on the STMPE2401 hardware.

Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Lee Jones &lt;lee.jones@linaro.org&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 871c3cf4ea7d5baf58e0a40bce7431ca5525aa2a upstream.

The least significat byte of the GPIO value read register
on the STMPE24xx series is on addres 0xA4 not 0xA5. Correct
against datasheet and tested on the STMPE2401 hardware.

Signed-off-by: Linus Walleij &lt;linus.walleij@linaro.org&gt;
Signed-off-by: Lee Jones &lt;lee.jones@linaro.org&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mfd: tc6393xb: Fail ohci suspend if full state restore is required</title>
<updated>2015-01-07T15:24:07+00:00</updated>
<author>
<name>Dmitry Eremin-Solenikov</name>
<email>dbaryshkov@gmail.com</email>
</author>
<published>2014-10-24T17:19:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=5e5e43db1e1a87168db5e5f2692dd78845f89caf'/>
<id>5e5e43db1e1a87168db5e5f2692dd78845f89caf</id>
<content type='text'>
commit 1a5fb99de4850cba710d91becfa2c65653048589 upstream.

Some boards with TC6393XB chip require full state restore during system
resume thanks to chip's VCC being cut off during suspend (Sharp SL-6000
tosa is one of them). Failing to do so would result in ohci Oops on
resume due to internal memory contentes being changed. Fail ohci suspend
on tc6393xb is full state restore is required.

Recommended workaround is to unbind tmio-ohci driver before suspend and
rebind it after resume.

Signed-off-by: Dmitry Eremin-Solenikov &lt;dbaryshkov@gmail.com&gt;
Signed-off-by: Lee Jones &lt;lee.jones@linaro.org&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 1a5fb99de4850cba710d91becfa2c65653048589 upstream.

Some boards with TC6393XB chip require full state restore during system
resume thanks to chip's VCC being cut off during suspend (Sharp SL-6000
tosa is one of them). Failing to do so would result in ohci Oops on
resume due to internal memory contentes being changed. Fail ohci suspend
on tc6393xb is full state restore is required.

Recommended workaround is to unbind tmio-ohci driver before suspend and
rebind it after resume.

Signed-off-by: Dmitry Eremin-Solenikov &lt;dbaryshkov@gmail.com&gt;
Signed-off-by: Lee Jones &lt;lee.jones@linaro.org&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mfd: rtsx_pcr: Fix MSI enable error handling</title>
<updated>2014-11-13T18:02:18+00:00</updated>
<author>
<name>Chris Ball</name>
<email>chris@printf.net</email>
</author>
<published>2014-09-04T16:11:53+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=3d96e8ff2dbd213598460bda628892ce091f8dcc'/>
<id>3d96e8ff2dbd213598460bda628892ce091f8dcc</id>
<content type='text'>
commit 5152970538a5e16c03bbcb9f1c780489a795ed40 upstream.

pci_enable_msi() can return failure with both positive and negative
integers -- it returns 0 for success -- but is only tested here for
"if (ret &lt; 0)".  This causes us to try to use MSI on the RTS5249 SD
reader in the Dell XPS 11 when enabling MSI failed, causing:

[    1.737110] rtsx_pci: probe of 0000:05:00.0 failed with error -110

Reported-by: D. Jared Dominguez &lt;Jared_Dominguez@Dell.com&gt;
Tested-by: D. Jared Dominguez &lt;Jared_Dominguez@Dell.com&gt;
Signed-off-by: Chris Ball &lt;chris@printf.net&gt;
Signed-off-by: Lee Jones &lt;lee.jones@linaro.org&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 5152970538a5e16c03bbcb9f1c780489a795ed40 upstream.

pci_enable_msi() can return failure with both positive and negative
integers -- it returns 0 for success -- but is only tested here for
"if (ret &lt; 0)".  This causes us to try to use MSI on the RTS5249 SD
reader in the Dell XPS 11 when enabling MSI failed, causing:

[    1.737110] rtsx_pci: probe of 0000:05:00.0 failed with error -110

Reported-by: D. Jared Dominguez &lt;Jared_Dominguez@Dell.com&gt;
Tested-by: D. Jared Dominguez &lt;Jared_Dominguez@Dell.com&gt;
Signed-off-by: Chris Ball &lt;chris@printf.net&gt;
Signed-off-by: Lee Jones &lt;lee.jones@linaro.org&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mfd: omap-usb-host: Fix improper mask use.</title>
<updated>2014-09-17T14:55:03+00:00</updated>
<author>
<name>Michael Welling</name>
<email>mwelling@emacinc.com</email>
</author>
<published>2014-07-28T23:01:04+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=8a9f2a150ef49da8cfc8cde47aa1962a3bb72ed3'/>
<id>8a9f2a150ef49da8cfc8cde47aa1962a3bb72ed3</id>
<content type='text'>
commit 46de8ff8e80a6546aa3d2fdf58c6776666301a0c upstream.

single-ulpi-bypass is a flag used for older OMAP3 silicon.

The flag when set, can excite code that improperly uses the
OMAP_UHH_HOSTCONFIG_UPLI_BYPASS define to clear the corresponding bit.
Instead it clears all of the other bits disabling all of the ports in
the process.

Signed-off-by: Michael Welling &lt;mwelling@emacinc.com&gt;
Signed-off-by: Lee Jones &lt;lee.jones@linaro.org&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;

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

single-ulpi-bypass is a flag used for older OMAP3 silicon.

The flag when set, can excite code that improperly uses the
OMAP_UHH_HOSTCONFIG_UPLI_BYPASS define to clear the corresponding bit.
Instead it clears all of the other bits disabling all of the ports in
the process.

Signed-off-by: Michael Welling &lt;mwelling@emacinc.com&gt;
Signed-off-by: Lee Jones &lt;lee.jones@linaro.org&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>mfd: sm501: dbg_regs attribute must be read-only</title>
<updated>2014-07-02T10:05:43+00:00</updated>
<author>
<name>Guenter Roeck</name>
<email>linux@roeck-us.net</email>
</author>
<published>2013-09-08T07:25:36+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=7228e303b34f8ee8c7dec2c5f7c0988d3ff9aee0'/>
<id>7228e303b34f8ee8c7dec2c5f7c0988d3ff9aee0</id>
<content type='text'>
commit 8a8320c2e78d1b619a8fa8eb5ae946b8691de604 upstream.

Fix:

sm501 sm501: SM501 At b3e00000: Version 050100a0, 8 Mb, IRQ 100
Attribute dbg_regs: write permission without 'store'
------------[ cut here ]------------
WARNING: at drivers/base/core.c:620

dbg_regs does not have a write function and must therefore be marked
as read-only.

Signed-off-by: Guenter Roeck &lt;linux@roeck-us.net&gt;
Signed-off-by: Lee Jones &lt;lee.jones@linaro.org&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 8a8320c2e78d1b619a8fa8eb5ae946b8691de604 upstream.

Fix:

sm501 sm501: SM501 At b3e00000: Version 050100a0, 8 Mb, IRQ 100
Attribute dbg_regs: write permission without 'store'
------------[ cut here ]------------
WARNING: at drivers/base/core.c:620

dbg_regs does not have a write function and must therefore be marked
as read-only.

Signed-off-by: Guenter Roeck &lt;linux@roeck-us.net&gt;
Signed-off-by: Lee Jones &lt;lee.jones@linaro.org&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mfd: kempld-core: Fix potential hang-up during boot</title>
<updated>2014-05-15T07:54:58+00:00</updated>
<author>
<name>Guenter Roeck</name>
<email>linux@roeck-us.net</email>
</author>
<published>2014-03-20T15:12:28+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=fb7f82565eb51c39faf55ef6f057eb66eb49dfa0'/>
<id>fb7f82565eb51c39faf55ef6f057eb66eb49dfa0</id>
<content type='text'>
commit 204747c970c0d568721c76ab8a57dde0e5dcf0d5 upstream.

On PXT and COMe-cPC2 boards it is observed that the hardware
mutex is acquired but not being released during initialization.
This can result in a hang-up during boot if the driver is built
into the kernel.

Releasing the mutex twice if it was acquired fixes the problem.
Subsequent request/release cycles work as expected, so the fix is
only needed during initialization.

Reviewed-by: Michael Brunner &lt;michael.brunner@kontron.com&gt;
Tested-by: Michael Brunner &lt;michael.brunner@kontron.com&gt;
Signed-off-by: Guenter Roeck &lt;linux@roeck-us.net&gt;
Signed-off-by: Lee Jones &lt;lee.jones@linaro.org&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 204747c970c0d568721c76ab8a57dde0e5dcf0d5 upstream.

On PXT and COMe-cPC2 boards it is observed that the hardware
mutex is acquired but not being released during initialization.
This can result in a hang-up during boot if the driver is built
into the kernel.

Releasing the mutex twice if it was acquired fixes the problem.
Subsequent request/release cycles work as expected, so the fix is
only needed during initialization.

Reviewed-by: Michael Brunner &lt;michael.brunner@kontron.com&gt;
Tested-by: Michael Brunner &lt;michael.brunner@kontron.com&gt;
Signed-off-by: Guenter Roeck &lt;linux@roeck-us.net&gt;
Signed-off-by: Lee Jones &lt;lee.jones@linaro.org&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mfd: tps65910: Fix possible invalid pointer dereference on regmap_add_irq_chip fail</title>
<updated>2014-05-15T07:54:57+00:00</updated>
<author>
<name>Krzysztof Kozlowski</name>
<email>k.kozlowski@samsung.com</email>
</author>
<published>2014-03-12T15:50:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=d5688296e2f56884e43f7cee7c7b8d686e892f81'/>
<id>d5688296e2f56884e43f7cee7c7b8d686e892f81</id>
<content type='text'>
commit 483e2dfdbc94751430e41db9973985f5b054d322 upstream.

Fixes: 4aab3fadad32 ("mfd: tps65910: Move interrupt implementation code to mfd file")

tps65910_irq_init() sets 'tps65910-&gt;chip_irq' before calling
regmap_add_irq_chip(). If the regmap_add_irq_chip() call fails in
memory allocation of regmap_irq_chip_data members then:

1. The 'tps65910-&gt;chip_irq' will still hold some value
2. 'tps65910-&gt;irq_data' will be pointing to already freed memory
   (because regmap_add_irq_chip() will free it on error)

This results in invalid memory access during driver remove because the
tps65910_irq_exit() tests whether 'tps65910-&gt;chip_irq' is not zero.

Signed-off-by: Krzysztof Kozlowski &lt;k.kozlowski@samsung.com&gt;
Signed-off-by: Lee Jones &lt;lee.jones@linaro.org&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 483e2dfdbc94751430e41db9973985f5b054d322 upstream.

Fixes: 4aab3fadad32 ("mfd: tps65910: Move interrupt implementation code to mfd file")

tps65910_irq_init() sets 'tps65910-&gt;chip_irq' before calling
regmap_add_irq_chip(). If the regmap_add_irq_chip() call fails in
memory allocation of regmap_irq_chip_data members then:

1. The 'tps65910-&gt;chip_irq' will still hold some value
2. 'tps65910-&gt;irq_data' will be pointing to already freed memory
   (because regmap_add_irq_chip() will free it on error)

This results in invalid memory access during driver remove because the
tps65910_irq_exit() tests whether 'tps65910-&gt;chip_irq' is not zero.

Signed-off-by: Krzysztof Kozlowski &lt;k.kozlowski@samsung.com&gt;
Signed-off-by: Lee Jones &lt;lee.jones@linaro.org&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mfd: max8997: Fix possible NULL pointer dereference on i2c_new_dummy error</title>
<updated>2014-05-15T07:54:57+00:00</updated>
<author>
<name>Krzysztof Kozlowski</name>
<email>k.kozlowski@samsung.com</email>
</author>
<published>2014-02-11T10:03:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=9c2e8dca71c77b59d2602edb4a5b9b9c7a8caf6e'/>
<id>9c2e8dca71c77b59d2602edb4a5b9b9c7a8caf6e</id>
<content type='text'>
commit 97dc4ed3fa377ec91bb60ba98b70d645c2099384 upstream.

During probe the driver allocates dummy I2C devices for RTC, haptic and
MUIC with i2c_new_dummy() but it does not check the return value of this
calls.

In case of error (i2c_new_device(): memory allocation failure or I2C
address cannot be used) this function returns NULL which is later used
by i2c_unregister_device().

If i2c_new_dummy() fails for RTC, haptic or MUIC devices, fail also the
probe for main MFD driver.

Signed-off-by: Krzysztof Kozlowski &lt;k.kozlowski@samsung.com&gt;
Signed-off-by: Lee Jones &lt;lee.jones@linaro.org&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
commit 97dc4ed3fa377ec91bb60ba98b70d645c2099384 upstream.

During probe the driver allocates dummy I2C devices for RTC, haptic and
MUIC with i2c_new_dummy() but it does not check the return value of this
calls.

In case of error (i2c_new_device(): memory allocation failure or I2C
address cannot be used) this function returns NULL which is later used
by i2c_unregister_device().

If i2c_new_dummy() fails for RTC, haptic or MUIC devices, fail also the
probe for main MFD driver.

Signed-off-by: Krzysztof Kozlowski &lt;k.kozlowski@samsung.com&gt;
Signed-off-by: Lee Jones &lt;lee.jones@linaro.org&gt;
Signed-off-by: Jiri Slaby &lt;jslaby@suse.cz&gt;
</pre>
</div>
</content>
</entry>
</feed>
