[PATCH] usb: xhci-mtk: disable all ports when disable host controller

Chunfeng Yun chunfeng.yun at mediatek.com
Fri May 27 03:52:09 CEST 2022


This is used to avoid the ports status of IPPC being brought in kernel
stage, it may cause ports error especially when the xhci controller is
a component of dual-role controller.

Reported-by: Yun-Chien Yu <yun-chien.yu at mediatek.com>
Signed-off-by: Chunfeng Yun <chunfeng.yun at mediatek.com>
---
 drivers/usb/host/xhci-mtk.c | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/drivers/usb/host/xhci-mtk.c b/drivers/usb/host/xhci-mtk.c
index 18b4f55d89..3838a990ec 100644
--- a/drivers/usb/host/xhci-mtk.c
+++ b/drivers/usb/host/xhci-mtk.c
@@ -122,11 +122,13 @@ static int xhci_mtk_host_disable(struct mtk_xhci *mtk)
 
 	/* power down all u3 ports */
 	for (i = 0; i < mtk->num_u3ports; i++)
-		setbits_le32(mtk->ippc + IPPC_U3_CTRL(i), CTRL_U3_PORT_PDN);
+		setbits_le32(mtk->ippc + IPPC_U3_CTRL(i),
+			     CTRL_U3_PORT_PDN | CTRL_U3_PORT_DIS);
 
 	/* power down all u2 ports */
 	for (i = 0; i < mtk->num_u2ports; i++)
-		setbits_le32(mtk->ippc + IPPC_U2_CTRL(i), CTRL_U2_PORT_PDN);
+		setbits_le32(mtk->ippc + IPPC_U2_CTRL(i),
+			     CTRL_U2_PORT_PDN | CTRL_U2_PORT_DIS);
 
 	/* power down host ip */
 	setbits_le32(mtk->ippc + IPPC_IP_PW_CTRL1, CTRL1_IP_HOST_PDN);
-- 
2.18.0



More information about the U-Boot mailing list