Skip to content

Commit

Permalink
usb: xhci-mtk: support option to disable usb2 ports
Browse files Browse the repository at this point in the history
Add support to disable specific usb2 host ports, it's useful when
a usb2 port is disabled on some platforms, but enabled on others
for the same SoC.

Signed-off-by: Chunfeng Yun <chunfeng.yun@mediatek.com>
Link: https://lore.kernel.org/r/1629189389-18779-4-git-send-email-chunfeng.yun@mediatek.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Chunfeng Yun authored and Greg Kroah-Hartman committed Aug 26, 2021
1 parent 7f85c16 commit 7465d7b
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 2 deletions.
12 changes: 10 additions & 2 deletions drivers/usb/host/xhci-mtk.c
Original file line number Diff line number Diff line change
Expand Up @@ -115,8 +115,11 @@ static int xhci_mtk_host_enable(struct xhci_hcd_mtk *mtk)
writel(value, &ippc->u3_ctrl_p[i]);
}

/* power on and enable all u2 ports */
/* power on and enable all u2 ports except skipped ones */
for (i = 0; i < mtk->num_u2_ports; i++) {
if (BIT(i) & mtk->u2p_dis_msk)
continue;

value = readl(&ippc->u2_ctrl_p[i]);
value &= ~(CTRL_U2_PORT_PDN | CTRL_U2_PORT_DIS);
value |= CTRL_U2_PORT_HOST_SEL;
Expand Down Expand Up @@ -163,8 +166,11 @@ static int xhci_mtk_host_disable(struct xhci_hcd_mtk *mtk)
writel(value, &ippc->u3_ctrl_p[i]);
}

/* power down all u2 ports */
/* power down all u2 ports except skipped ones */
for (i = 0; i < mtk->num_u2_ports; i++) {
if (BIT(i) & mtk->u2p_dis_msk)
continue;

value = readl(&ippc->u2_ctrl_p[i]);
value |= CTRL_U2_PORT_PDN;
writel(value, &ippc->u2_ctrl_p[i]);
Expand Down Expand Up @@ -444,6 +450,8 @@ static int xhci_mtk_probe(struct platform_device *pdev)
/* optional property, ignore the error if it does not exist */
of_property_read_u32(node, "mediatek,u3p-dis-msk",
&mtk->u3p_dis_msk);
of_property_read_u32(node, "mediatek,u2p-dis-msk",
&mtk->u2p_dis_msk);

ret = usb_wakeup_of_property_parse(mtk, node);
if (ret) {
Expand Down
1 change: 1 addition & 0 deletions drivers/usb/host/xhci-mtk.h
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,7 @@ struct xhci_hcd_mtk {
struct mu3c_ippc_regs __iomem *ippc_regs;
int num_u2_ports;
int num_u3_ports;
int u2p_dis_msk;
int u3p_dis_msk;
struct regulator *vusb33;
struct regulator *vbus;
Expand Down

0 comments on commit 7465d7b

Please sign in to comment.