<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/drivers/mfd, branch v3.18.13</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-17T00:13:19+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=bc9432581714eba5708f5187fb7fdd05a82adf09'/>
<id>bc9432581714eba5708f5187fb7fdd05a82adf09</id>
<content type='text'>
[ Upstream commit c8648508ebfc597058d2cd00b6c539110264a167 ]

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

Cc: stable@vger.kernel.org
Signed-off-by: Ameya Palande &lt;2ameya@gmail.com&gt;
Signed-off-by: Lee Jones &lt;lee.jones@linaro.org&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit c8648508ebfc597058d2cd00b6c539110264a167 ]

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

Cc: stable@vger.kernel.org
Signed-off-by: Ameya Palande &lt;2ameya@gmail.com&gt;
Signed-off-by: Lee Jones &lt;lee.jones@linaro.org&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mfd: rtsx_usb: Fix runtime PM deadlock</title>
<updated>2015-01-30T01:40:42+00:00</updated>
<author>
<name>Roger Tseng</name>
<email>rogerable@realtek.com</email>
</author>
<published>2015-01-15T07:14:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=28de6f351a65d7516f80337d5bc80d3ea948480d'/>
<id>28de6f351a65d7516f80337d5bc80d3ea948480d</id>
<content type='text'>
commit b166010f6afbadb896efa37ff85eb681a8f89392 upstream.

sd_set_power_mode() in derived module drivers/mmc/host/rtsx_usb_sdmmc.c
acquires dev_mutex and then calls pm_runtime_get_sync() to make sure the
device is awake while initializing a newly inserted card. Once it is
called during suspending state and explicitly before rtsx_usb_suspend()
acquires the same dev_mutex, both routine deadlock and further hang the
driver because pm_runtime_get_sync() waits the pending PM operations.

Fix this by using an empty suspend method. mmc_core always turns the
LED off after a request is done and thus it is ok to remove the only
rtsx_usb_turn_off_led() here.

Fixes: 730876be2566 ("mfd: Add realtek USB card reader driver")
Signed-off-by: Roger Tseng &lt;rogerable@realtek.com&gt;
[Lee: Removed newly unused variable]
Signed-off-by: Lee Jones &lt;lee.jones@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 b166010f6afbadb896efa37ff85eb681a8f89392 upstream.

sd_set_power_mode() in derived module drivers/mmc/host/rtsx_usb_sdmmc.c
acquires dev_mutex and then calls pm_runtime_get_sync() to make sure the
device is awake while initializing a newly inserted card. Once it is
called during suspending state and explicitly before rtsx_usb_suspend()
acquires the same dev_mutex, both routine deadlock and further hang the
driver because pm_runtime_get_sync() waits the pending PM operations.

Fix this by using an empty suspend method. mmc_core always turns the
LED off after a request is done and thus it is ok to remove the only
rtsx_usb_turn_off_led() here.

Fixes: 730876be2566 ("mfd: Add realtek USB card reader driver")
Signed-off-by: Roger Tseng &lt;rogerable@realtek.com&gt;
[Lee: Removed newly unused variable]
Signed-off-by: Lee Jones &lt;lee.jones@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>mfd: tps65218: Make INT1 our status_base register</title>
<updated>2015-01-30T01:40:42+00:00</updated>
<author>
<name>Felipe Balbi</name>
<email>balbi@ti.com</email>
</author>
<published>2014-12-26T19:28:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=5a8405ca2159a696b8eb535642505bbe9c4e1328'/>
<id>5a8405ca2159a696b8eb535642505bbe9c4e1328</id>
<content type='text'>
commit f29ae369a412942e81035984fa3d7a22ddf91fcb upstream.

If we don't tell regmap-irq that our first status
register is at offset 1, it will try to read offset
zero, which is the chipid register.

Fixes: 44b4dc6 mfd: tps65218: Add driver for the TPS65218 PMIC
Signed-off-by: Felipe Balbi &lt;balbi@ti.com&gt;
Signed-off-by: Lee Jones &lt;lee.jones@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 f29ae369a412942e81035984fa3d7a22ddf91fcb upstream.

If we don't tell regmap-irq that our first status
register is at offset 1, it will try to read offset
zero, which is the chipid register.

Fixes: 44b4dc6 mfd: tps65218: Add driver for the TPS65218 PMIC
Signed-off-by: Felipe Balbi &lt;balbi@ti.com&gt;
Signed-off-by: Lee Jones &lt;lee.jones@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>mfd: tps65218: Make INT[12] and STATUS registers volatile</title>
<updated>2015-01-30T01:40:42+00:00</updated>
<author>
<name>Felipe Balbi</name>
<email>balbi@ti.com</email>
</author>
<published>2014-12-26T19:28:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=fc904760b41b2ae22df59b8757bdf76fd930a86a'/>
<id>fc904760b41b2ae22df59b8757bdf76fd930a86a</id>
<content type='text'>
commit 773328da243978bebac82bf4c45604281edb6975 upstream.

STATUS register can be modified by the HW, so we
should bypass cache because of that.

In the case of INT[12] registers, they are the ones
that actually clear the IRQ source at the time they
are read. If we rely on the cache for them, we will
never be able to clear the interrupt, which will cause
our IRQ line to be disabled due to IRQ throttling.

Fixes: 44b4dc6 mfd: tps65218: Add driver for the TPS65218 PMIC
Signed-off-by: Felipe Balbi &lt;balbi@ti.com&gt;
Signed-off-by: Lee Jones &lt;lee.jones@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 773328da243978bebac82bf4c45604281edb6975 upstream.

STATUS register can be modified by the HW, so we
should bypass cache because of that.

In the case of INT[12] registers, they are the ones
that actually clear the IRQ source at the time they
are read. If we rely on the cache for them, we will
never be able to clear the interrupt, which will cause
our IRQ line to be disabled due to IRQ throttling.

Fixes: 44b4dc6 mfd: tps65218: Add driver for the TPS65218 PMIC
Signed-off-by: Felipe Balbi &lt;balbi@ti.com&gt;
Signed-off-by: Lee Jones &lt;lee.jones@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>mfd: tc6393xb: Fail ohci suspend if full state restore is required</title>
<updated>2015-01-08T18:30:16+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=39a67594a73595ab51c2edcd4969dce7d52bb179'/>
<id>39a67594a73595ab51c2edcd4969dce7d52bb179</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: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&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: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>mfd: twl4030-power: Fix regression with missing compatible flag</title>
<updated>2015-01-08T18:30:15+00:00</updated>
<author>
<name>Tony Lindgren</name>
<email>tony@atomide.com</email>
</author>
<published>2014-11-02T18:09:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=ff1589b52f6fccab0f53dcd9958bdeb63f7aba30'/>
<id>ff1589b52f6fccab0f53dcd9958bdeb63f7aba30</id>
<content type='text'>
commit 1b9b46d05f887aec418b3a5f4f55abf79316fcda upstream.

Commit e7cd1d1eb16f ("mfd: twl4030-power: Add generic reset
configuration") accidentally removed the compatible flag for
"ti,twl4030-power" that should be there as documented in the
binding.

If "ti,twl4030-power" only the poweroff configuration is done
by the driver.

Fixes: e7cd1d1eb16f ("mfd: twl4030-power: Add generic reset configuration")
Reported-by: "Dr. H. Nikolaus Schaller" &lt;hns@goldelico.com&gt;
Signed-off-by: Tony Lindgren &lt;tony@atomide.com&gt;
Signed-off-by: Lee Jones &lt;lee.jones@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 1b9b46d05f887aec418b3a5f4f55abf79316fcda upstream.

Commit e7cd1d1eb16f ("mfd: twl4030-power: Add generic reset
configuration") accidentally removed the compatible flag for
"ti,twl4030-power" that should be there as documented in the
binding.

If "ti,twl4030-power" only the poweroff configuration is done
by the driver.

Fixes: e7cd1d1eb16f ("mfd: twl4030-power: Add generic reset configuration")
Reported-by: "Dr. H. Nikolaus Schaller" &lt;hns@goldelico.com&gt;
Signed-off-by: Tony Lindgren &lt;tony@atomide.com&gt;
Signed-off-by: Lee Jones &lt;lee.jones@linaro.org&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>mfd: twl4030-power: Fix poweroff with PM configuration enabled</title>
<updated>2014-11-10T15:22:04+00:00</updated>
<author>
<name>Tony Lindgren</name>
<email>tony@atomide.com</email>
</author>
<published>2014-11-02T18:07:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=481c7f868c6d855f31a29c69b445ac4aee9625a6'/>
<id>481c7f868c6d855f31a29c69b445ac4aee9625a6</id>
<content type='text'>
Commit e7cd1d1eb16f ("mfd: twl4030-power: Add generic reset
configuration") enabled configuring the PM features for twl4030.

This caused poweroff command to fail on devices that have the
BCI charger on twl4030 wired, or have power wired for VBUS.
Instead of powering off, the device reboots. This is because
voltage is detected on charger or VBUS with the default bits
enabled for the power transition registers.

To fix the issue, let's just clear VBUS and CHG bits as we want
poweroff command to keep the system powered off.

Fixes: e7cd1d1eb16f ("mfd: twl4030-power: Add generic reset configuration")
Cc: stable@vger.kernel.org # v3.16+
Reported-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
Signed-off-by: Tony Lindgren &lt;tony@atomide.com&gt;
Signed-off-by: Lee Jones &lt;lee.jones@linaro.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Commit e7cd1d1eb16f ("mfd: twl4030-power: Add generic reset
configuration") enabled configuring the PM features for twl4030.

This caused poweroff command to fail on devices that have the
BCI charger on twl4030 wired, or have power wired for VBUS.
Instead of powering off, the device reboots. This is because
voltage is detected on charger or VBUS with the default bits
enabled for the power transition registers.

To fix the issue, let's just clear VBUS and CHG bits as we want
poweroff command to keep the system powered off.

Fixes: e7cd1d1eb16f ("mfd: twl4030-power: Add generic reset configuration")
Cc: stable@vger.kernel.org # v3.16+
Reported-by: Russell King &lt;rmk+kernel@arm.linux.org.uk&gt;
Signed-off-by: Tony Lindgren &lt;tony@atomide.com&gt;
Signed-off-by: Lee Jones &lt;lee.jones@linaro.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mfd: max77693: Fix always masked MUIC interrupts</title>
<updated>2014-11-10T15:22:02+00:00</updated>
<author>
<name>Krzysztof Kozlowski</name>
<email>k.kozlowski@samsung.com</email>
</author>
<published>2014-10-10T10:48:35+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=c0acb8144bd6d8d88aee1dab33364b7353e9a903'/>
<id>c0acb8144bd6d8d88aee1dab33364b7353e9a903</id>
<content type='text'>
All interrupts coming from MUIC were ignored because interrupt source
register was masked.

The Maxim 77693 has a "interrupt source" - a separate register and interrupts
which give information about PMIC block triggering the individual
interrupt (charger, topsys, MUIC, flash LED).

By default bootloader could initialize this register to "mask all"
value. In such case (observed on Trats2 board) MUIC interrupts won't be
generated regardless of their mask status. Regmap irq chip was unmasking
individual MUIC interrupts but the source was masked

Before introducing regmap irq chip this interrupt source was unmasked,
read and acked. Reading and acking is not necessary but unmasking is.

Fixes: 342d669c1ee4 ("mfd: max77693: Handle IRQs using regmap")

Cc: &lt;stable@vger.kernel.org&gt;
Signed-off-by: Krzysztof Kozlowski &lt;k.kozlowski@samsung.com&gt;
Reviewed-by: Chanwoo Choi &lt;cw00.choi@samsung.com&gt;
Signed-off-by: Lee Jones &lt;lee.jones@linaro.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
All interrupts coming from MUIC were ignored because interrupt source
register was masked.

The Maxim 77693 has a "interrupt source" - a separate register and interrupts
which give information about PMIC block triggering the individual
interrupt (charger, topsys, MUIC, flash LED).

By default bootloader could initialize this register to "mask all"
value. In such case (observed on Trats2 board) MUIC interrupts won't be
generated regardless of their mask status. Regmap irq chip was unmasking
individual MUIC interrupts but the source was masked

Before introducing regmap irq chip this interrupt source was unmasked,
read and acked. Reading and acking is not necessary but unmasking is.

Fixes: 342d669c1ee4 ("mfd: max77693: Handle IRQs using regmap")

Cc: &lt;stable@vger.kernel.org&gt;
Signed-off-by: Krzysztof Kozlowski &lt;k.kozlowski@samsung.com&gt;
Reviewed-by: Chanwoo Choi &lt;cw00.choi@samsung.com&gt;
Signed-off-by: Lee Jones &lt;lee.jones@linaro.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mfd: max77693: Use proper regmap for handling MUIC interrupts</title>
<updated>2014-11-10T15:22:01+00:00</updated>
<author>
<name>Krzysztof Kozlowski</name>
<email>k.kozlowski@samsung.com</email>
</author>
<published>2014-10-10T08:22:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=43fc9396cac3f7498e07a22e6a987b911462fa58'/>
<id>43fc9396cac3f7498e07a22e6a987b911462fa58</id>
<content type='text'>
Interrupts coming from Maxim77693 MUIC block (MicroUSB Interface
Controller) were not handled at all because wrong regmap was used for
MUIC's regmap_irq_chip.

The MUIC component of Maxim 77693 uses different I2C address thus second
regmap is created and used by max77693 extcon driver. The registers for
MUIC interrupts are also in that block and should be handled by that
second regmap.

However the regmap irq chip for MUIC was configured with default regmap
which could not read MUIC registers.

Fixes: 342d669c1ee4 ("mfd: max77693: Handle IRQs using regmap")

Cc: &lt;stable@vger.kernel.org&gt;
Signed-off-by: Krzysztof Kozlowski &lt;k.kozlowski@samsung.com&gt;
Reviewed-by: Chanwoo Choi &lt;cw00.choi@samsung.com&gt;
Signed-off-by: Lee Jones &lt;lee.jones@linaro.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Interrupts coming from Maxim77693 MUIC block (MicroUSB Interface
Controller) were not handled at all because wrong regmap was used for
MUIC's regmap_irq_chip.

The MUIC component of Maxim 77693 uses different I2C address thus second
regmap is created and used by max77693 extcon driver. The registers for
MUIC interrupts are also in that block and should be handled by that
second regmap.

However the regmap irq chip for MUIC was configured with default regmap
which could not read MUIC registers.

Fixes: 342d669c1ee4 ("mfd: max77693: Handle IRQs using regmap")

Cc: &lt;stable@vger.kernel.org&gt;
Signed-off-by: Krzysztof Kozlowski &lt;k.kozlowski@samsung.com&gt;
Reviewed-by: Chanwoo Choi &lt;cw00.choi@samsung.com&gt;
Signed-off-by: Lee Jones &lt;lee.jones@linaro.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>mfd: viperboard: Fix platform-device id collision</title>
<updated>2014-11-10T15:22:00+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=b6684228726cc25551a43f5c0bd9c5f977f10f48'/>
<id>b6684228726cc25551a43f5c0bd9c5f977f10f48</id>
<content type='text'>
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;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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;
</pre>
</div>
</content>
</entry>
</feed>
