| From 8735dbc91c7027bfd7471d02a8d8dba7e993d862 Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Thu, 29 Sep 2022 14:44:59 +0800 |
| Subject: usb: mtu3: fix failed runtime suspend in host only mode |
| |
| From: Chunfeng Yun <chunfeng.yun@mediatek.com> |
| |
| [ Upstream commit 1c703e29da5efac6180e4c189029fa34b7e48e97 ] |
| |
| When the dr_mode is "host", after the host enter runtime suspend, |
| the mtu3 can't do it, because the mtu3's device wakeup function is |
| not enabled, instead it's enabled in gadget init function, to fix |
| the issue, init wakeup early in mtu3's probe() |
| |
| Fixes: 6b587394c65c ("usb: mtu3: support suspend/resume for dual-role mode") |
| Reviewed-by: AngeloGioacchino Del Regno <angelogioacchino.delregno@collabora.com> |
| Reported-by: Tianping Fang <tianping.fang@mediatek.com> |
| Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com> |
| Link: https://lore.kernel.org/r/20220929064459.32522-1-chunfeng.yun@mediatek.com |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/usb/mtu3/mtu3_core.c | 2 -- |
| drivers/usb/mtu3/mtu3_plat.c | 2 ++ |
| 2 files changed, 2 insertions(+), 2 deletions(-) |
| |
| diff --git a/drivers/usb/mtu3/mtu3_core.c b/drivers/usb/mtu3/mtu3_core.c |
| index c4a2c37abf62..3ea5145a842b 100644 |
| --- a/drivers/usb/mtu3/mtu3_core.c |
| +++ b/drivers/usb/mtu3/mtu3_core.c |
| @@ -971,8 +971,6 @@ int ssusb_gadget_init(struct ssusb_mtk *ssusb) |
| goto irq_err; |
| } |
| |
| - device_init_wakeup(dev, true); |
| - |
| /* power down device IP for power saving by default */ |
| mtu3_stop(mtu); |
| |
| diff --git a/drivers/usb/mtu3/mtu3_plat.c b/drivers/usb/mtu3/mtu3_plat.c |
| index 4309ed939178..845b25320fd2 100644 |
| --- a/drivers/usb/mtu3/mtu3_plat.c |
| +++ b/drivers/usb/mtu3/mtu3_plat.c |
| @@ -332,6 +332,8 @@ static int mtu3_probe(struct platform_device *pdev) |
| pm_runtime_enable(dev); |
| pm_runtime_get_sync(dev); |
| |
| + device_init_wakeup(dev, true); |
| + |
| ret = ssusb_rscs_init(ssusb); |
| if (ret) |
| goto comm_init_err; |
| -- |
| 2.35.1 |
| |