<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-stable.git/drivers/usb/chipidea, branch linux-4.1.y</title>
<subtitle>Linux kernel stable tree</subtitle>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/'/>
<entry>
<title>usb: chipidea: properly handle host or gadget initialization failure</title>
<updated>2018-05-23T01:36:24+00:00</updated>
<author>
<name>Jisheng Zhang</name>
<email>jszhang@marvell.com</email>
</author>
<published>2017-04-26T08:59:34+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=fcd1fefbbe10ab42cf38c54a6653ef020d2e3306'/>
<id>fcd1fefbbe10ab42cf38c54a6653ef020d2e3306</id>
<content type='text'>
[ Upstream commit c4a0bbbdb7f6e3c37fa6deb3ef28c5ed99da6175 ]

If ci_hdrc_host_init() or ci_hdrc_gadget_init() returns error and the
error != -ENXIO, as Peter pointed out, "it stands for initialization
for host or gadget has failed", so we'd better return failure rather
continue.

And before destroying the otg, i.e ci_hdrc_otg_destroy(ci), we should
also check ci-&gt;roles[CI_ROLE_GADGET].

Signed-off-by: Jisheng Zhang &lt;jszhang@marvell.com&gt;
Signed-off-by: Peter Chen &lt;peter.chen@nxp.com&gt;
Signed-off-by: Sasha Levin &lt;alexander.levin@microsoft.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit c4a0bbbdb7f6e3c37fa6deb3ef28c5ed99da6175 ]

If ci_hdrc_host_init() or ci_hdrc_gadget_init() returns error and the
error != -ENXIO, as Peter pointed out, "it stands for initialization
for host or gadget has failed", so we'd better return failure rather
continue.

And before destroying the otg, i.e ci_hdrc_otg_destroy(ci), we should
also check ci-&gt;roles[CI_ROLE_GADGET].

Signed-off-by: Jisheng Zhang &lt;jszhang@marvell.com&gt;
Signed-off-by: Peter Chen &lt;peter.chen@nxp.com&gt;
Signed-off-by: Sasha Levin &lt;alexander.levin@microsoft.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>usb: chipidea: debug: check before accessing ci_role</title>
<updated>2017-06-26T02:02:19+00:00</updated>
<author>
<name>Michael Thalmeier</name>
<email>michael.thalmeier@hale.at</email>
</author>
<published>2017-05-18T14:14:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=6f4f7e81b18e465efa1c6a7b3973da7bffe332d6'/>
<id>6f4f7e81b18e465efa1c6a7b3973da7bffe332d6</id>
<content type='text'>
[ Upstream commit 0340ff83cd4475261e7474033a381bc125b45244 ]

ci_role BUGs when the role is &gt;= CI_ROLE_END.

Cc: stable@vger.kernel.org  #v3.10+
Signed-off-by: Michael Thalmeier &lt;michael.thalmeier@hale.at&gt;
Signed-off-by: Peter Chen &lt;peter.chen@nxp.com&gt;
Signed-off-by: Sasha Levin &lt;alexander.levin@verizon.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 0340ff83cd4475261e7474033a381bc125b45244 ]

ci_role BUGs when the role is &gt;= CI_ROLE_END.

Cc: stable@vger.kernel.org  #v3.10+
Signed-off-by: Michael Thalmeier &lt;michael.thalmeier@hale.at&gt;
Signed-off-by: Peter Chen &lt;peter.chen@nxp.com&gt;
Signed-off-by: Sasha Levin &lt;alexander.levin@verizon.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>usb: chipidea: udc: fix NULL pointer dereference if udc_start failed</title>
<updated>2017-06-26T02:02:19+00:00</updated>
<author>
<name>Jisheng Zhang</name>
<email>jszhang@marvell.com</email>
</author>
<published>2017-04-24T12:35:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=9738b3df00b190fbac813e5a5b76dabe439c84e3'/>
<id>9738b3df00b190fbac813e5a5b76dabe439c84e3</id>
<content type='text'>
[ Upstream commit aa1f058d7d9244423b8c5a75b9484b1115df7f02 ]

Fix below NULL pointer dereference. we set ci-&gt;roles[CI_ROLE_GADGET]
too early in ci_hdrc_gadget_init(), if udc_start() fails due to some
reason, the ci-&gt;roles[CI_ROLE_GADGET] check in  ci_hdrc_gadget_destroy
can't protect us.

We fix this issue by only setting ci-&gt;roles[CI_ROLE_GADGET] if
udc_start() succeed.

[    1.398550] Unable to handle kernel NULL pointer dereference at
virtual address 00000000
...
[    1.448600] PC is at dma_pool_free+0xb8/0xf0
[    1.453012] LR is at dma_pool_free+0x28/0xf0
[    2.113369] [&lt;ffffff80081817d8&gt;] dma_pool_free+0xb8/0xf0
[    2.118857] [&lt;ffffff800841209c&gt;] destroy_eps+0x4c/0x68
[    2.124165] [&lt;ffffff8008413770&gt;] ci_hdrc_gadget_destroy+0x28/0x50
[    2.130461] [&lt;ffffff800840fa30&gt;] ci_hdrc_probe+0x588/0x7e8
[    2.136129] [&lt;ffffff8008380fb8&gt;] platform_drv_probe+0x50/0xb8
[    2.142066] [&lt;ffffff800837f494&gt;] driver_probe_device+0x1fc/0x2a8
[    2.148270] [&lt;ffffff800837f68c&gt;] __device_attach_driver+0x9c/0xf8
[    2.154563] [&lt;ffffff800837d570&gt;] bus_for_each_drv+0x58/0x98
[    2.160317] [&lt;ffffff800837f174&gt;] __device_attach+0xc4/0x138
[    2.166072] [&lt;ffffff800837f738&gt;] device_initial_probe+0x10/0x18
[    2.172185] [&lt;ffffff800837e58c&gt;] bus_probe_device+0x94/0xa0
[    2.177940] [&lt;ffffff800837c560&gt;] device_add+0x3f0/0x560
[    2.183337] [&lt;ffffff8008380d20&gt;] platform_device_add+0x180/0x240
[    2.189541] [&lt;ffffff800840f0e8&gt;] ci_hdrc_add_device+0x440/0x4f8
[    2.195654] [&lt;ffffff8008414194&gt;] ci_hdrc_usb2_probe+0x13c/0x2d8
[    2.201769] [&lt;ffffff8008380fb8&gt;] platform_drv_probe+0x50/0xb8
[    2.207705] [&lt;ffffff800837f494&gt;] driver_probe_device+0x1fc/0x2a8
[    2.213910] [&lt;ffffff800837f5ec&gt;] __driver_attach+0xac/0xb0
[    2.219575] [&lt;ffffff800837d4b0&gt;] bus_for_each_dev+0x60/0xa0
[    2.225329] [&lt;ffffff800837ec80&gt;] driver_attach+0x20/0x28
[    2.230816] [&lt;ffffff800837e880&gt;] bus_add_driver+0x1d0/0x238
[    2.236571] [&lt;ffffff800837fdb0&gt;] driver_register+0x60/0xf8
[    2.242237] [&lt;ffffff8008380ef4&gt;] __platform_driver_register+0x44/0x50
[    2.248891] [&lt;ffffff80086fd440&gt;] ci_hdrc_usb2_driver_init+0x18/0x20
[    2.255365] [&lt;ffffff8008082950&gt;] do_one_initcall+0x38/0x128
[    2.261121] [&lt;ffffff80086e0d00&gt;] kernel_init_freeable+0x1ac/0x250
[    2.267414] [&lt;ffffff800852f0b8&gt;] kernel_init+0x10/0x100
[    2.272810] [&lt;ffffff8008082680&gt;] ret_from_fork+0x10/0x50

Cc: stable &lt;stable@vger.kernel.org&gt;
Fixes: 3f124d233e97 ("usb: chipidea: add role init and destroy APIs")
Signed-off-by: Jisheng Zhang &lt;jszhang@marvell.com&gt;
Signed-off-by: Peter Chen &lt;peter.chen@nxp.com&gt;
Signed-off-by: Sasha Levin &lt;alexander.levin@verizon.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit aa1f058d7d9244423b8c5a75b9484b1115df7f02 ]

Fix below NULL pointer dereference. we set ci-&gt;roles[CI_ROLE_GADGET]
too early in ci_hdrc_gadget_init(), if udc_start() fails due to some
reason, the ci-&gt;roles[CI_ROLE_GADGET] check in  ci_hdrc_gadget_destroy
can't protect us.

We fix this issue by only setting ci-&gt;roles[CI_ROLE_GADGET] if
udc_start() succeed.

[    1.398550] Unable to handle kernel NULL pointer dereference at
virtual address 00000000
...
[    1.448600] PC is at dma_pool_free+0xb8/0xf0
[    1.453012] LR is at dma_pool_free+0x28/0xf0
[    2.113369] [&lt;ffffff80081817d8&gt;] dma_pool_free+0xb8/0xf0
[    2.118857] [&lt;ffffff800841209c&gt;] destroy_eps+0x4c/0x68
[    2.124165] [&lt;ffffff8008413770&gt;] ci_hdrc_gadget_destroy+0x28/0x50
[    2.130461] [&lt;ffffff800840fa30&gt;] ci_hdrc_probe+0x588/0x7e8
[    2.136129] [&lt;ffffff8008380fb8&gt;] platform_drv_probe+0x50/0xb8
[    2.142066] [&lt;ffffff800837f494&gt;] driver_probe_device+0x1fc/0x2a8
[    2.148270] [&lt;ffffff800837f68c&gt;] __device_attach_driver+0x9c/0xf8
[    2.154563] [&lt;ffffff800837d570&gt;] bus_for_each_drv+0x58/0x98
[    2.160317] [&lt;ffffff800837f174&gt;] __device_attach+0xc4/0x138
[    2.166072] [&lt;ffffff800837f738&gt;] device_initial_probe+0x10/0x18
[    2.172185] [&lt;ffffff800837e58c&gt;] bus_probe_device+0x94/0xa0
[    2.177940] [&lt;ffffff800837c560&gt;] device_add+0x3f0/0x560
[    2.183337] [&lt;ffffff8008380d20&gt;] platform_device_add+0x180/0x240
[    2.189541] [&lt;ffffff800840f0e8&gt;] ci_hdrc_add_device+0x440/0x4f8
[    2.195654] [&lt;ffffff8008414194&gt;] ci_hdrc_usb2_probe+0x13c/0x2d8
[    2.201769] [&lt;ffffff8008380fb8&gt;] platform_drv_probe+0x50/0xb8
[    2.207705] [&lt;ffffff800837f494&gt;] driver_probe_device+0x1fc/0x2a8
[    2.213910] [&lt;ffffff800837f5ec&gt;] __driver_attach+0xac/0xb0
[    2.219575] [&lt;ffffff800837d4b0&gt;] bus_for_each_dev+0x60/0xa0
[    2.225329] [&lt;ffffff800837ec80&gt;] driver_attach+0x20/0x28
[    2.230816] [&lt;ffffff800837e880&gt;] bus_add_driver+0x1d0/0x238
[    2.236571] [&lt;ffffff800837fdb0&gt;] driver_register+0x60/0xf8
[    2.242237] [&lt;ffffff8008380ef4&gt;] __platform_driver_register+0x44/0x50
[    2.248891] [&lt;ffffff80086fd440&gt;] ci_hdrc_usb2_driver_init+0x18/0x20
[    2.255365] [&lt;ffffff8008082950&gt;] do_one_initcall+0x38/0x128
[    2.261121] [&lt;ffffff80086e0d00&gt;] kernel_init_freeable+0x1ac/0x250
[    2.267414] [&lt;ffffff800852f0b8&gt;] kernel_init+0x10/0x100
[    2.272810] [&lt;ffffff8008082680&gt;] ret_from_fork+0x10/0x50

Cc: stable &lt;stable@vger.kernel.org&gt;
Fixes: 3f124d233e97 ("usb: chipidea: add role init and destroy APIs")
Signed-off-by: Jisheng Zhang &lt;jszhang@marvell.com&gt;
Signed-off-by: Peter Chen &lt;peter.chen@nxp.com&gt;
Signed-off-by: Sasha Levin &lt;alexander.levin@verizon.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>usb: chipidea: udc: fix NULL ptr dereference in isr_setup_status_phase</title>
<updated>2016-10-03T00:32:17+00:00</updated>
<author>
<name>Clemens Gruber</name>
<email>clemens.gruber@pqgruber.com</email>
</author>
<published>2016-09-05T17:29:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=32eb86c0cc4b3d19916981f2c3df9b7df6267d65'/>
<id>32eb86c0cc4b3d19916981f2c3df9b7df6267d65</id>
<content type='text'>
[ Upstream commit 6f3c4fb6d05e63c9c6d8968302491c3a5457be61 ]

Problems with the signal integrity of the high speed USB data lines or
noise on reference ground lines can cause the i.MX6 USB controller to
violate USB specs and exhibit unexpected behavior.

It was observed that USBi_UI interrupts were triggered first and when
isr_setup_status_phase was called, ci-&gt;status was NULL, which lead to a
NULL pointer dereference kernel panic.

This patch fixes the kernel panic, emits a warning once and returns
-EPIPE to halt the device and let the host get stalled.
It also adds a comment to point people, who are experiencing this issue,
to their USB hardware design.

Cc: &lt;stable@vger.kernel.org&gt; #4.1+
Signed-off-by: Clemens Gruber &lt;clemens.gruber@pqgruber.com&gt;
Signed-off-by: Peter Chen &lt;peter.chen@nxp.com&gt;
Signed-off-by: Sasha Levin &lt;alexander.levin@verizon.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit 6f3c4fb6d05e63c9c6d8968302491c3a5457be61 ]

Problems with the signal integrity of the high speed USB data lines or
noise on reference ground lines can cause the i.MX6 USB controller to
violate USB specs and exhibit unexpected behavior.

It was observed that USBi_UI interrupts were triggered first and when
isr_setup_status_phase was called, ci-&gt;status was NULL, which lead to a
NULL pointer dereference kernel panic.

This patch fixes the kernel panic, emits a warning once and returns
-EPIPE to halt the device and let the host get stalled.
It also adds a comment to point people, who are experiencing this issue,
to their USB hardware design.

Cc: &lt;stable@vger.kernel.org&gt; #4.1+
Signed-off-by: Clemens Gruber &lt;clemens.gruber@pqgruber.com&gt;
Signed-off-by: Peter Chen &lt;peter.chen@nxp.com&gt;
Signed-off-by: Sasha Levin &lt;alexander.levin@verizon.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>usb: chipidea: udc: don't touch DP when controller is in host mode</title>
<updated>2016-09-12T13:33:21+00:00</updated>
<author>
<name>Li Jun</name>
<email>jun.li@nxp.com</email>
</author>
<published>2016-08-16T11:19:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=b1918a087335a8ed6c8f1f090e3a41a62f8a3818'/>
<id>b1918a087335a8ed6c8f1f090e3a41a62f8a3818</id>
<content type='text'>
[ Upstream commit c4e94174983a86c935be1537a73e496b778b0287 ]

When the controller is configured to be dual role and it's in host mode,
if bind udc and gadgt driver, those gadget operations will do gadget
disconnect and finally pull down DP line, which will break host function.

Cc: &lt;stable@vger.kernel.org&gt; # 4.1+
Signed-off-by: Li Jun &lt;jun.li@nxp.com&gt;
Signed-off-by: Peter Chen &lt;peter.chen@nxp.com&gt;
Signed-off-by: Sasha Levin &lt;alexander.levin@verizon.com&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[ Upstream commit c4e94174983a86c935be1537a73e496b778b0287 ]

When the controller is configured to be dual role and it's in host mode,
if bind udc and gadgt driver, those gadget operations will do gadget
disconnect and finally pull down DP line, which will break host function.

Cc: &lt;stable@vger.kernel.org&gt; # 4.1+
Signed-off-by: Li Jun &lt;jun.li@nxp.com&gt;
Signed-off-by: Peter Chen &lt;peter.chen@nxp.com&gt;
Signed-off-by: Sasha Levin &lt;alexander.levin@verizon.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>usb: chipidea: otg: change workqueue ci_otg as freezable</title>
<updated>2016-03-07T21:35:41+00:00</updated>
<author>
<name>Peter Chen</name>
<email>peter.chen@nxp.com</email>
</author>
<published>2016-02-24T03:05:25+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=49670184289e48451171179470a7dbbdb63f9549'/>
<id>49670184289e48451171179470a7dbbdb63f9549</id>
<content type='text'>
[ Upstream commit d144dfea8af7108f613139623e63952ed7e69c0c ]

If we use USB ID pin as wakeup source, and there is a USB block
device on this USB OTG (ID) cable, the system will be deadlock
after system resume.

The root cause for this problem is: the workqueue ci_otg may try
to remove hcd before the driver resume has finished, and hcd will
disconnect the device on it, then, it will call device_release_driver,
and holds the device lock "dev-&gt;mutex", but it is never unlocked since
it waits workqueue writeback to run to flush the block information, but
the workqueue writeback is freezable, it is not thawed before driver
resume has finished.

When the driver (device: sd 0:0:0:0:) resume goes to dpm_complete, it
tries to get its device lock "dev-&gt;mutex", but it can't get it forever,
then the deadlock occurs. Below call stacks show the situation.

So, in order to fix this problem, we need to change workqueue ci_otg
as freezable, then the work item in this workqueue will be run after
driver's resume, this workqueue will not be blocked forever like above
case since the workqueue writeback has been thawed too.

Tested at: i.mx6qdl-sabresd and i.mx6sx-sdb.

[  555.178869] kworker/u2:13   D c07de74c     0   826      2 0x00000000
[  555.185310] Workqueue: ci_otg ci_otg_work
[  555.189353] Backtrace:
[  555.191849] [&lt;c07de4fc&gt;] (__schedule) from [&lt;c07dec6c&gt;] (schedule+0x48/0xa0)
[  555.198912]  r10:ee471ba0 r9:00000000 r8:00000000 r7:00000002 r6:ee470000 r5:ee471ba4
[  555.206867]  r4:ee470000
[  555.209453] [&lt;c07dec24&gt;] (schedule) from [&lt;c07e2fc4&gt;] (schedule_timeout+0x15c/0x1e0)
[  555.217212]  r4:7fffffff r3:edc2b000
[  555.220862] [&lt;c07e2e68&gt;] (schedule_timeout) from [&lt;c07df6c8&gt;] (wait_for_common+0x94/0x144)
[  555.229140]  r8:00000000 r7:00000002 r6:ee470000 r5:ee471ba4 r4:7fffffff
[  555.235980] [&lt;c07df634&gt;] (wait_for_common) from [&lt;c07df790&gt;] (wait_for_completion+0x18/0x1c)
[  555.244430]  r10:00000001 r9:c0b5563c r8:c0042e48 r7:ef086000 r6:eea4372c r5:ef131b00
[  555.252383]  r4:00000000
[  555.254970] [&lt;c07df778&gt;] (wait_for_completion) from [&lt;c0043cb8&gt;] (flush_work+0x19c/0x234)
[  555.263177] [&lt;c0043b1c&gt;] (flush_work) from [&lt;c0043fac&gt;] (flush_delayed_work+0x48/0x4c)
[  555.271106]  r8:ed5b5000 r7:c0b38a3c r6:eea439cc r5:eea4372c r4:eea4372c
[  555.277958] [&lt;c0043f64&gt;] (flush_delayed_work) from [&lt;c00eae18&gt;] (bdi_unregister+0x84/0xec)
[  555.286236]  r4:eea43520 r3:20000153
[  555.289885] [&lt;c00ead94&gt;] (bdi_unregister) from [&lt;c02c2154&gt;] (blk_cleanup_queue+0x180/0x29c)
[  555.298250]  r5:eea43808 r4:eea43400
[  555.301909] [&lt;c02c1fd4&gt;] (blk_cleanup_queue) from [&lt;c0417914&gt;] (__scsi_remove_device+0x48/0xb8)
[  555.310623]  r7:00000000 r6:20000153 r5:ededa950 r4:ededa800
[  555.316403] [&lt;c04178cc&gt;] (__scsi_remove_device) from [&lt;c0415e90&gt;] (scsi_forget_host+0x64/0x68)
[  555.325028]  r5:ededa800 r4:ed5b5000
[  555.328689] [&lt;c0415e2c&gt;] (scsi_forget_host) from [&lt;c0409828&gt;] (scsi_remove_host+0x78/0x104)
[  555.337054]  r5:ed5b5068 r4:ed5b5000
[  555.340709] [&lt;c04097b0&gt;] (scsi_remove_host) from [&lt;c04cdfcc&gt;] (usb_stor_disconnect+0x50/0xb4)
[  555.349247]  r6:ed5b56e4 r5:ed5b5818 r4:ed5b5690 r3:00000008
[  555.355025] [&lt;c04cdf7c&gt;] (usb_stor_disconnect) from [&lt;c04b3bc8&gt;] (usb_unbind_interface+0x78/0x25c)
[  555.363997]  r8:c13919b4 r7:edd3c000 r6:edd3c020 r5:ee551c68 r4:ee551c00 r3:c04cdf7c
[  555.371892] [&lt;c04b3b50&gt;] (usb_unbind_interface) from [&lt;c03dc248&gt;] (__device_release_driver+0x8c/0x118)
[  555.381213]  r10:00000001 r9:edd90c00 r8:c13919b4 r7:ee551c68 r6:c0b546e0 r5:c0b5563c
[  555.389167]  r4:edd3c020
[  555.391752] [&lt;c03dc1bc&gt;] (__device_release_driver) from [&lt;c03dc2fc&gt;] (device_release_driver+0x28/0x34)
[  555.401071]  r5:edd3c020 r4:edd3c054
[  555.404721] [&lt;c03dc2d4&gt;] (device_release_driver) from [&lt;c03db304&gt;] (bus_remove_device+0xe0/0x110)
[  555.413607]  r5:edd3c020 r4:ef17f04c
[  555.417253] [&lt;c03db224&gt;] (bus_remove_device) from [&lt;c03d8128&gt;] (device_del+0x114/0x21c)
[  555.425270]  r6:edd3c028 r5:edd3c020 r4:ee551c00 r3:00000000
[  555.431045] [&lt;c03d8014&gt;] (device_del) from [&lt;c04b1560&gt;] (usb_disable_device+0xa4/0x1e8)
[  555.439061]  r8:edd3c000 r7:eded8000 r6:00000000 r5:00000001 r4:ee551c00
[  555.445906] [&lt;c04b14bc&gt;] (usb_disable_device) from [&lt;c04a8e54&gt;] (usb_disconnect+0x74/0x224)
[  555.454271]  r9:edd90c00 r8:ee551000 r7:ee551c68 r6:ee551c9c r5:ee551c00 r4:00000001
[  555.462156] [&lt;c04a8de0&gt;] (usb_disconnect) from [&lt;c04a8fb8&gt;] (usb_disconnect+0x1d8/0x224)
[  555.470259]  r10:00000001 r9:edd90000 r8:ee471e2c r7:ee551468 r6:ee55149c r5:ee551400
[  555.478213]  r4:00000001
[  555.480797] [&lt;c04a8de0&gt;] (usb_disconnect) from [&lt;c04ae5ec&gt;] (usb_remove_hcd+0xa0/0x1ac)
[  555.488813]  r10:00000001 r9:ee471eb0 r8:00000000 r7:ef3d9500 r6:eded810c r5:eded80b0
[  555.496765]  r4:eded8000
[  555.499351] [&lt;c04ae54c&gt;] (usb_remove_hcd) from [&lt;c04d4158&gt;] (host_stop+0x28/0x64)
[  555.506847]  r6:eeb50010 r5:eded8000 r4:eeb51010
[  555.511563] [&lt;c04d4130&gt;] (host_stop) from [&lt;c04d09b8&gt;] (ci_otg_work+0xc4/0x124)
[  555.518885]  r6:00000001 r5:eeb50010 r4:eeb502a0 r3:c04d4130
[  555.524665] [&lt;c04d08f4&gt;] (ci_otg_work) from [&lt;c00454f0&gt;] (process_one_work+0x194/0x420)
[  555.532682]  r6:ef086000 r5:eeb502a0 r4:edc44480
[  555.537393] [&lt;c004535c&gt;] (process_one_work) from [&lt;c00457b0&gt;] (worker_thread+0x34/0x514)
[  555.545496]  r10:edc44480 r9:ef086000 r8:c0b1a100 r7:ef086034 r6:00000088 r5:edc44498
[  555.553450]  r4:ef086000
[  555.556032] [&lt;c004577c&gt;] (worker_thread) from [&lt;c004bab4&gt;] (kthread+0xdc/0xf8)
[  555.563268]  r10:00000000 r9:00000000 r8:00000000 r7:c004577c r6:edc44480 r5:eddc15c0
[  555.571221]  r4:00000000
[  555.573804] [&lt;c004b9d8&gt;] (kthread) from [&lt;c000fef0&gt;] (ret_from_fork+0x14/0x24)
[  555.581040]  r7:00000000 r6:00000000 r5:c004b9d8 r4:eddc15c0

[  553.429383] sh              D c07de74c     0   694    691 0x00000000
[  553.435801] Backtrace:
[  553.438295] [&lt;c07de4fc&gt;] (__schedule) from [&lt;c07dec6c&gt;] (schedule+0x48/0xa0)
[  553.445358]  r10:edd3c054 r9:edd3c078 r8:edddbd50 r7:edcbbc00 r6:c1377c34 r5:60000153
[  553.453313]  r4:eddda000
[  553.455896] [&lt;c07dec24&gt;] (schedule) from [&lt;c07deff8&gt;] (schedule_preempt_disabled+0x10/0x14)
[  553.464261]  r4:edd3c058 r3:0000000a
[  553.467910] [&lt;c07defe8&gt;] (schedule_preempt_disabled) from [&lt;c07e0bbc&gt;] (mutex_lock_nested+0x1a0/0x3e8)
[  553.477254] [&lt;c07e0a1c&gt;] (mutex_lock_nested) from [&lt;c03e927c&gt;] (dpm_complete+0xc0/0x1b0)
[  553.485358]  r10:00561408 r9:edd3c054 r8:c0b4863c r7:edddbd90 r6:c0b485d8 r5:edd3c020
[  553.493313]  r4:edd3c0d0
[  553.495896] [&lt;c03e91bc&gt;] (dpm_complete) from [&lt;c03e9388&gt;] (dpm_resume_end+0x1c/0x20)
[  553.503652]  r9:00000000 r8:c0b1a9d0 r7:c1334ec0 r6:c1334edc r5:00000003 r4:00000010
[  553.511544] [&lt;c03e936c&gt;] (dpm_resume_end) from [&lt;c0079894&gt;] (suspend_devices_and_enter+0x158/0x504)
[  553.520604]  r4:00000000 r3:c1334efc
[  553.524250] [&lt;c007973c&gt;] (suspend_devices_and_enter) from [&lt;c0079e74&gt;] (pm_suspend+0x234/0x2cc)
[  553.532961]  r10:00561408 r9:ed6b7300 r8:00000004 r7:c1334eec r6:00000000 r5:c1334ee8
[  553.540914]  r4:00000003
[  553.543493] [&lt;c0079c40&gt;] (pm_suspend) from [&lt;c0078a6c&gt;] (state_store+0x6c/0xc0)

[  555.703684] 7 locks held by kworker/u2:13/826:
[  555.708140]  #0:  ("%s""ci_otg"){++++.+}, at: [&lt;c0045484&gt;] process_one_work+0x128/0x420
[  555.716277]  #1:  ((&amp;ci-&gt;work)){+.+.+.}, at: [&lt;c0045484&gt;] process_one_work+0x128/0x420
[  555.724317]  #2:  (usb_bus_list_lock){+.+.+.}, at: [&lt;c04ae5e4&gt;] usb_remove_hcd+0x98/0x1ac
[  555.732626]  #3:  (&amp;dev-&gt;mutex){......}, at: [&lt;c04a8e28&gt;] usb_disconnect+0x48/0x224
[  555.740403]  #4:  (&amp;dev-&gt;mutex){......}, at: [&lt;c04a8e28&gt;] usb_disconnect+0x48/0x224
[  555.748179]  #5:  (&amp;dev-&gt;mutex){......}, at: [&lt;c03dc2f4&gt;] device_release_driver+0x20/0x34
[  555.756487]  #6:  (&amp;shost-&gt;scan_mutex){+.+.+.}, at: [&lt;c04097d0&gt;] scsi_remove_host+0x20/0x104

Cc: &lt;stable@vger.kernel.org&gt; #v3.14+
Cc: Jun Li &lt;jun.li@nxp.com&gt;
Signed-off-by: Peter Chen &lt;peter.chen@nxp.com&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 d144dfea8af7108f613139623e63952ed7e69c0c ]

If we use USB ID pin as wakeup source, and there is a USB block
device on this USB OTG (ID) cable, the system will be deadlock
after system resume.

The root cause for this problem is: the workqueue ci_otg may try
to remove hcd before the driver resume has finished, and hcd will
disconnect the device on it, then, it will call device_release_driver,
and holds the device lock "dev-&gt;mutex", but it is never unlocked since
it waits workqueue writeback to run to flush the block information, but
the workqueue writeback is freezable, it is not thawed before driver
resume has finished.

When the driver (device: sd 0:0:0:0:) resume goes to dpm_complete, it
tries to get its device lock "dev-&gt;mutex", but it can't get it forever,
then the deadlock occurs. Below call stacks show the situation.

So, in order to fix this problem, we need to change workqueue ci_otg
as freezable, then the work item in this workqueue will be run after
driver's resume, this workqueue will not be blocked forever like above
case since the workqueue writeback has been thawed too.

Tested at: i.mx6qdl-sabresd and i.mx6sx-sdb.

[  555.178869] kworker/u2:13   D c07de74c     0   826      2 0x00000000
[  555.185310] Workqueue: ci_otg ci_otg_work
[  555.189353] Backtrace:
[  555.191849] [&lt;c07de4fc&gt;] (__schedule) from [&lt;c07dec6c&gt;] (schedule+0x48/0xa0)
[  555.198912]  r10:ee471ba0 r9:00000000 r8:00000000 r7:00000002 r6:ee470000 r5:ee471ba4
[  555.206867]  r4:ee470000
[  555.209453] [&lt;c07dec24&gt;] (schedule) from [&lt;c07e2fc4&gt;] (schedule_timeout+0x15c/0x1e0)
[  555.217212]  r4:7fffffff r3:edc2b000
[  555.220862] [&lt;c07e2e68&gt;] (schedule_timeout) from [&lt;c07df6c8&gt;] (wait_for_common+0x94/0x144)
[  555.229140]  r8:00000000 r7:00000002 r6:ee470000 r5:ee471ba4 r4:7fffffff
[  555.235980] [&lt;c07df634&gt;] (wait_for_common) from [&lt;c07df790&gt;] (wait_for_completion+0x18/0x1c)
[  555.244430]  r10:00000001 r9:c0b5563c r8:c0042e48 r7:ef086000 r6:eea4372c r5:ef131b00
[  555.252383]  r4:00000000
[  555.254970] [&lt;c07df778&gt;] (wait_for_completion) from [&lt;c0043cb8&gt;] (flush_work+0x19c/0x234)
[  555.263177] [&lt;c0043b1c&gt;] (flush_work) from [&lt;c0043fac&gt;] (flush_delayed_work+0x48/0x4c)
[  555.271106]  r8:ed5b5000 r7:c0b38a3c r6:eea439cc r5:eea4372c r4:eea4372c
[  555.277958] [&lt;c0043f64&gt;] (flush_delayed_work) from [&lt;c00eae18&gt;] (bdi_unregister+0x84/0xec)
[  555.286236]  r4:eea43520 r3:20000153
[  555.289885] [&lt;c00ead94&gt;] (bdi_unregister) from [&lt;c02c2154&gt;] (blk_cleanup_queue+0x180/0x29c)
[  555.298250]  r5:eea43808 r4:eea43400
[  555.301909] [&lt;c02c1fd4&gt;] (blk_cleanup_queue) from [&lt;c0417914&gt;] (__scsi_remove_device+0x48/0xb8)
[  555.310623]  r7:00000000 r6:20000153 r5:ededa950 r4:ededa800
[  555.316403] [&lt;c04178cc&gt;] (__scsi_remove_device) from [&lt;c0415e90&gt;] (scsi_forget_host+0x64/0x68)
[  555.325028]  r5:ededa800 r4:ed5b5000
[  555.328689] [&lt;c0415e2c&gt;] (scsi_forget_host) from [&lt;c0409828&gt;] (scsi_remove_host+0x78/0x104)
[  555.337054]  r5:ed5b5068 r4:ed5b5000
[  555.340709] [&lt;c04097b0&gt;] (scsi_remove_host) from [&lt;c04cdfcc&gt;] (usb_stor_disconnect+0x50/0xb4)
[  555.349247]  r6:ed5b56e4 r5:ed5b5818 r4:ed5b5690 r3:00000008
[  555.355025] [&lt;c04cdf7c&gt;] (usb_stor_disconnect) from [&lt;c04b3bc8&gt;] (usb_unbind_interface+0x78/0x25c)
[  555.363997]  r8:c13919b4 r7:edd3c000 r6:edd3c020 r5:ee551c68 r4:ee551c00 r3:c04cdf7c
[  555.371892] [&lt;c04b3b50&gt;] (usb_unbind_interface) from [&lt;c03dc248&gt;] (__device_release_driver+0x8c/0x118)
[  555.381213]  r10:00000001 r9:edd90c00 r8:c13919b4 r7:ee551c68 r6:c0b546e0 r5:c0b5563c
[  555.389167]  r4:edd3c020
[  555.391752] [&lt;c03dc1bc&gt;] (__device_release_driver) from [&lt;c03dc2fc&gt;] (device_release_driver+0x28/0x34)
[  555.401071]  r5:edd3c020 r4:edd3c054
[  555.404721] [&lt;c03dc2d4&gt;] (device_release_driver) from [&lt;c03db304&gt;] (bus_remove_device+0xe0/0x110)
[  555.413607]  r5:edd3c020 r4:ef17f04c
[  555.417253] [&lt;c03db224&gt;] (bus_remove_device) from [&lt;c03d8128&gt;] (device_del+0x114/0x21c)
[  555.425270]  r6:edd3c028 r5:edd3c020 r4:ee551c00 r3:00000000
[  555.431045] [&lt;c03d8014&gt;] (device_del) from [&lt;c04b1560&gt;] (usb_disable_device+0xa4/0x1e8)
[  555.439061]  r8:edd3c000 r7:eded8000 r6:00000000 r5:00000001 r4:ee551c00
[  555.445906] [&lt;c04b14bc&gt;] (usb_disable_device) from [&lt;c04a8e54&gt;] (usb_disconnect+0x74/0x224)
[  555.454271]  r9:edd90c00 r8:ee551000 r7:ee551c68 r6:ee551c9c r5:ee551c00 r4:00000001
[  555.462156] [&lt;c04a8de0&gt;] (usb_disconnect) from [&lt;c04a8fb8&gt;] (usb_disconnect+0x1d8/0x224)
[  555.470259]  r10:00000001 r9:edd90000 r8:ee471e2c r7:ee551468 r6:ee55149c r5:ee551400
[  555.478213]  r4:00000001
[  555.480797] [&lt;c04a8de0&gt;] (usb_disconnect) from [&lt;c04ae5ec&gt;] (usb_remove_hcd+0xa0/0x1ac)
[  555.488813]  r10:00000001 r9:ee471eb0 r8:00000000 r7:ef3d9500 r6:eded810c r5:eded80b0
[  555.496765]  r4:eded8000
[  555.499351] [&lt;c04ae54c&gt;] (usb_remove_hcd) from [&lt;c04d4158&gt;] (host_stop+0x28/0x64)
[  555.506847]  r6:eeb50010 r5:eded8000 r4:eeb51010
[  555.511563] [&lt;c04d4130&gt;] (host_stop) from [&lt;c04d09b8&gt;] (ci_otg_work+0xc4/0x124)
[  555.518885]  r6:00000001 r5:eeb50010 r4:eeb502a0 r3:c04d4130
[  555.524665] [&lt;c04d08f4&gt;] (ci_otg_work) from [&lt;c00454f0&gt;] (process_one_work+0x194/0x420)
[  555.532682]  r6:ef086000 r5:eeb502a0 r4:edc44480
[  555.537393] [&lt;c004535c&gt;] (process_one_work) from [&lt;c00457b0&gt;] (worker_thread+0x34/0x514)
[  555.545496]  r10:edc44480 r9:ef086000 r8:c0b1a100 r7:ef086034 r6:00000088 r5:edc44498
[  555.553450]  r4:ef086000
[  555.556032] [&lt;c004577c&gt;] (worker_thread) from [&lt;c004bab4&gt;] (kthread+0xdc/0xf8)
[  555.563268]  r10:00000000 r9:00000000 r8:00000000 r7:c004577c r6:edc44480 r5:eddc15c0
[  555.571221]  r4:00000000
[  555.573804] [&lt;c004b9d8&gt;] (kthread) from [&lt;c000fef0&gt;] (ret_from_fork+0x14/0x24)
[  555.581040]  r7:00000000 r6:00000000 r5:c004b9d8 r4:eddc15c0

[  553.429383] sh              D c07de74c     0   694    691 0x00000000
[  553.435801] Backtrace:
[  553.438295] [&lt;c07de4fc&gt;] (__schedule) from [&lt;c07dec6c&gt;] (schedule+0x48/0xa0)
[  553.445358]  r10:edd3c054 r9:edd3c078 r8:edddbd50 r7:edcbbc00 r6:c1377c34 r5:60000153
[  553.453313]  r4:eddda000
[  553.455896] [&lt;c07dec24&gt;] (schedule) from [&lt;c07deff8&gt;] (schedule_preempt_disabled+0x10/0x14)
[  553.464261]  r4:edd3c058 r3:0000000a
[  553.467910] [&lt;c07defe8&gt;] (schedule_preempt_disabled) from [&lt;c07e0bbc&gt;] (mutex_lock_nested+0x1a0/0x3e8)
[  553.477254] [&lt;c07e0a1c&gt;] (mutex_lock_nested) from [&lt;c03e927c&gt;] (dpm_complete+0xc0/0x1b0)
[  553.485358]  r10:00561408 r9:edd3c054 r8:c0b4863c r7:edddbd90 r6:c0b485d8 r5:edd3c020
[  553.493313]  r4:edd3c0d0
[  553.495896] [&lt;c03e91bc&gt;] (dpm_complete) from [&lt;c03e9388&gt;] (dpm_resume_end+0x1c/0x20)
[  553.503652]  r9:00000000 r8:c0b1a9d0 r7:c1334ec0 r6:c1334edc r5:00000003 r4:00000010
[  553.511544] [&lt;c03e936c&gt;] (dpm_resume_end) from [&lt;c0079894&gt;] (suspend_devices_and_enter+0x158/0x504)
[  553.520604]  r4:00000000 r3:c1334efc
[  553.524250] [&lt;c007973c&gt;] (suspend_devices_and_enter) from [&lt;c0079e74&gt;] (pm_suspend+0x234/0x2cc)
[  553.532961]  r10:00561408 r9:ed6b7300 r8:00000004 r7:c1334eec r6:00000000 r5:c1334ee8
[  553.540914]  r4:00000003
[  553.543493] [&lt;c0079c40&gt;] (pm_suspend) from [&lt;c0078a6c&gt;] (state_store+0x6c/0xc0)

[  555.703684] 7 locks held by kworker/u2:13/826:
[  555.708140]  #0:  ("%s""ci_otg"){++++.+}, at: [&lt;c0045484&gt;] process_one_work+0x128/0x420
[  555.716277]  #1:  ((&amp;ci-&gt;work)){+.+.+.}, at: [&lt;c0045484&gt;] process_one_work+0x128/0x420
[  555.724317]  #2:  (usb_bus_list_lock){+.+.+.}, at: [&lt;c04ae5e4&gt;] usb_remove_hcd+0x98/0x1ac
[  555.732626]  #3:  (&amp;dev-&gt;mutex){......}, at: [&lt;c04a8e28&gt;] usb_disconnect+0x48/0x224
[  555.740403]  #4:  (&amp;dev-&gt;mutex){......}, at: [&lt;c04a8e28&gt;] usb_disconnect+0x48/0x224
[  555.748179]  #5:  (&amp;dev-&gt;mutex){......}, at: [&lt;c03dc2f4&gt;] device_release_driver+0x20/0x34
[  555.756487]  #6:  (&amp;shost-&gt;scan_mutex){+.+.+.}, at: [&lt;c04097d0&gt;] scsi_remove_host+0x20/0x104

Cc: &lt;stable@vger.kernel.org&gt; #v3.14+
Cc: Jun Li &lt;jun.li@nxp.com&gt;
Signed-off-by: Peter Chen &lt;peter.chen@nxp.com&gt;
Signed-off-by: Sasha Levin &lt;sasha.levin@oracle.com&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>usb: chipidea: imx: refine clock operations to adapt for all platforms</title>
<updated>2015-12-09T19:03:25+00:00</updated>
<author>
<name>Peter Chen</name>
<email>peter.chen@freescale.com</email>
</author>
<published>2015-09-16T01:40:51+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=fca6d6f19873f5070f191046134cc2645308b385'/>
<id>fca6d6f19873f5070f191046134cc2645308b385</id>
<content type='text'>
commit ae3e57ae26cdcc85728bb566f999bcb9a7cc6954 upstream.

Some i.mx platforms need three clocks to let controller work, but
others only need one, refine clock operation to adapt for all
platforms, it fixes a regression found at i.mx27.

Signed-off-by: Peter Chen &lt;peter.chen@freescale.com&gt;
Tested-by: Fabio Estevam &lt;fabio.estevam@freescale.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>
commit ae3e57ae26cdcc85728bb566f999bcb9a7cc6954 upstream.

Some i.mx platforms need three clocks to let controller work, but
others only need one, refine clock operation to adapt for all
platforms, it fixes a regression found at i.mx27.

Signed-off-by: Peter Chen &lt;peter.chen@freescale.com&gt;
Tested-by: Fabio Estevam &lt;fabio.estevam@freescale.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>usb: chipidea: otg: gadget module load and unload support</title>
<updated>2015-12-09T19:03:24+00:00</updated>
<author>
<name>Li Jun</name>
<email>B47624@freescale.com</email>
</author>
<published>2014-12-12T01:11:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=13ba3569a6693d05c345590cee38ac3593f36640'/>
<id>13ba3569a6693d05c345590cee38ac3593f36640</id>
<content type='text'>
commit 85da852df66e5e0d3aba761b0fece7c958ff0685 upstream.

This patch is to support load and unload gadget driver in full OTG mode.

Signed-off-by: Li Jun &lt;jun.li@freescale.com&gt;
Signed-off-by: Peter Chen &lt;peter.chen@freescale.com&gt;
Tested-by: Jiada Wang &lt;jiada_wang@mentor.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>
commit 85da852df66e5e0d3aba761b0fece7c958ff0685 upstream.

This patch is to support load and unload gadget driver in full OTG mode.

Signed-off-by: Li Jun &lt;jun.li@freescale.com&gt;
Signed-off-by: Peter Chen &lt;peter.chen@freescale.com&gt;
Tested-by: Jiada Wang &lt;jiada_wang@mentor.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>usb: chipidea: udc: using the correct stall implementation</title>
<updated>2015-10-22T21:43:23+00:00</updated>
<author>
<name>Peter Chen</name>
<email>peter.chen@freescale.com</email>
</author>
<published>2015-08-24T06:10:07+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=7e1f01e6c0e99241b3b03e71385d0f4dfb9180ab'/>
<id>7e1f01e6c0e99241b3b03e71385d0f4dfb9180ab</id>
<content type='text'>
commit 56ffa1d154c7e12af16273f0cdc42690dd05caf5 upstream.

According to spec, there are functional and protocol stalls.

For functional stall, it is for bulk and interrupt endpoints,
below are cases for it:
- Host sends SET_FEATURE request for Set-Halt, the udc driver
needs to set stall, and return true unconditionally.
- The gadget driver may call usb_ep_set_halt to stall certain
endpoints, if there is a transfer in pending, the udc driver
should not set stall, and return -EAGAIN accordingly.
These two kinds of stall need to be cleared by host using CLEAR_FEATURE
request (Clear-Halt).

For protocol stall, it is for control endpoint, this stall will
be set if the control request has failed. This stall will be
cleared by next setup request (hardware will do it).

It fixed usbtest (drivers/usb/misc/usbtest.c) Test 13 "set/clear halt"
test failure, meanwhile, this change has been verified by
USB2 CV Compliance Test and MSC Tests.

Cc: Alan Stern &lt;stern@rowland.harvard.edu&gt;
Cc: Felipe Balbi &lt;balbi@ti.com&gt;
Signed-off-by: Peter Chen &lt;peter.chen@freescale.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>
commit 56ffa1d154c7e12af16273f0cdc42690dd05caf5 upstream.

According to spec, there are functional and protocol stalls.

For functional stall, it is for bulk and interrupt endpoints,
below are cases for it:
- Host sends SET_FEATURE request for Set-Halt, the udc driver
needs to set stall, and return true unconditionally.
- The gadget driver may call usb_ep_set_halt to stall certain
endpoints, if there is a transfer in pending, the udc driver
should not set stall, and return -EAGAIN accordingly.
These two kinds of stall need to be cleared by host using CLEAR_FEATURE
request (Clear-Halt).

For protocol stall, it is for control endpoint, this stall will
be set if the control request has failed. This stall will be
cleared by next setup request (hardware will do it).

It fixed usbtest (drivers/usb/misc/usbtest.c) Test 13 "set/clear halt"
test failure, meanwhile, this change has been verified by
USB2 CV Compliance Test and MSC Tests.

Cc: Alan Stern &lt;stern@rowland.harvard.edu&gt;
Cc: Felipe Balbi &lt;balbi@ti.com&gt;
Signed-off-by: Peter Chen &lt;peter.chen@freescale.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</pre>
</div>
</content>
</entry>
<entry>
<title>usb: chipidea: imx: fix a typo for imx6sx</title>
<updated>2015-10-22T21:43:21+00:00</updated>
<author>
<name>Li Jun</name>
<email>jun.li@freescale.com</email>
</author>
<published>2015-09-16T06:46:32+00:00</published>
<link rel='alternate' type='text/html' href='https://git.tavy.me/linux-stable.git/commit/?id=76ff51ce2e55873e479c550127e405442fa09a7e'/>
<id>76ff51ce2e55873e479c550127e405442fa09a7e</id>
<content type='text'>
commit 8315b77d72c5f0b18ceb513303d845e73166133c upstream.

Use imx6sx instead of imx6sl's platform flags for imx6sx.

Fixes: e14db48dfcf3 ("usb: chipidea: imx: add runtime power management support")
Signed-off-by: Li Jun &lt;jun.li@freescale.com&gt;
Signed-off-by: Peter Chen &lt;peter.chen@freescale.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>
commit 8315b77d72c5f0b18ceb513303d845e73166133c upstream.

Use imx6sx instead of imx6sl's platform flags for imx6sx.

Fixes: e14db48dfcf3 ("usb: chipidea: imx: add runtime power management support")
Signed-off-by: Li Jun &lt;jun.li@freescale.com&gt;
Signed-off-by: Peter Chen &lt;peter.chen@freescale.com&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

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