From: Chunfeng Yun Date: Fri, 27 May 2022 01:52:09 +0000 (+0800) Subject: usb: xhci-mtk: disable all ports when disable host controller X-Git-Url: http://git.dujemihanovic.xyz/posts?a=commitdiff_plain;h=fe8e8af36c46dd6381d64b174bd6b5e1283a5294;p=u-boot.git usb: xhci-mtk: disable all ports when disable host controller 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 Signed-off-by: Chunfeng Yun --- 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);