summaryrefslogtreecommitdiffstats
path: root/drivers/usb/chipidea/host.c
diff options
context:
space:
mode:
authorPeter Chen2014-12-24 04:33:17 +0100
committerGreg Kroah-Hartman2015-01-09 18:45:30 +0100
commit24c498df1c70fa3b8b4df18f4424904bf014c709 (patch)
tree181cd98e1804750626c06e4f23074a00dc0e974f /drivers/usb/chipidea/host.c
parentMerge tag 'for-3.19-rc' of git://git.kernel.org/pub/scm/linux/kernel/git/kish... (diff)
downloadkernel-qcow2-linux-24c498df1c70fa3b8b4df18f4424904bf014c709.tar.gz
kernel-qcow2-linux-24c498df1c70fa3b8b4df18f4424904bf014c709.tar.xz
kernel-qcow2-linux-24c498df1c70fa3b8b4df18f4424904bf014c709.zip
Revert "usb: chipidea: remove duplicate dev_set_drvdata for host_start"
This reverts commit 14b4099c074f2ddf4d84b22d370170e61b527529 It moved platform_set_drvdata(pdev, ci) before hcd is created, and the hcd will assign itself as ci controller's drvdata during the hcd creation function (in usb_create_shared_hcd), so it overwrites the real ci's drvdata which we want to use. So, if the controller is at host mode, the system suspend API will get the wrong struct ci_hdrc pointer, and cause the oops. Signed-off-by: Peter Chen <peter.chen@freescale.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/chipidea/host.c')
-rw-r--r--drivers/usb/chipidea/host.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/usb/chipidea/host.c b/drivers/usb/chipidea/host.c
index c1694cff1eaf..48731d0bab35 100644
--- a/drivers/usb/chipidea/host.c
+++ b/drivers/usb/chipidea/host.c
@@ -91,6 +91,7 @@ static int host_start(struct ci_hdrc *ci)
if (!hcd)
return -ENOMEM;
+ dev_set_drvdata(ci->dev, ci);
hcd->rsrc_start = ci->hw_bank.phys;
hcd->rsrc_len = ci->hw_bank.size;
hcd->regs = ci->hw_bank.abs;