| From bf6e1f01da09c298e9bc32e1753155353ba3aa2e Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Mon, 27 Jul 2020 15:14:59 +0800 |
| Subject: usb: mtu3: clear dual mode of u3port when disable device |
| |
| From: Chunfeng Yun <chunfeng.yun@mediatek.com> |
| |
| [ Upstream commit f1e51e99ed498d4aa9ae5df28e43d558ea627781 ] |
| |
| If not clear u3port's dual mode when disable device, the IP |
| will fail to enter sleep mode when suspend. |
| |
| Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com> |
| Link: https://lore.kernel.org/r/1595834101-13094-10-git-send-email-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 | 6 +++++- |
| 1 file changed, 5 insertions(+), 1 deletion(-) |
| |
| diff --git a/drivers/usb/mtu3/mtu3_core.c b/drivers/usb/mtu3/mtu3_core.c |
| index 9dd02160cca97..e3780d4d65149 100644 |
| --- a/drivers/usb/mtu3/mtu3_core.c |
| +++ b/drivers/usb/mtu3/mtu3_core.c |
| @@ -131,8 +131,12 @@ static void mtu3_device_disable(struct mtu3 *mtu) |
| mtu3_setbits(ibase, SSUSB_U2_CTRL(0), |
| SSUSB_U2_PORT_DIS | SSUSB_U2_PORT_PDN); |
| |
| - if (mtu->ssusb->dr_mode == USB_DR_MODE_OTG) |
| + if (mtu->ssusb->dr_mode == USB_DR_MODE_OTG) { |
| mtu3_clrbits(ibase, SSUSB_U2_CTRL(0), SSUSB_U2_PORT_OTG_SEL); |
| + if (mtu->is_u3_ip) |
| + mtu3_clrbits(ibase, SSUSB_U3_CTRL(0), |
| + SSUSB_U3_PORT_DUAL_MODE); |
| + } |
| |
| mtu3_setbits(ibase, U3D_SSUSB_IP_PW_CTRL2, SSUSB_IP_DEV_PDN); |
| } |
| -- |
| 2.25.1 |
| |