mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 06:04:44 +01:00
phy: usb: disable COMMONONN for dual mode
The COMMONONN bit suspends the phy when the port is put into a suspend
state. However when the phy is shared between host and device in dual
mode, this no longer works cleanly as there is no synchronization between
the two.
Fixes: 5095d045a9 ("phy: usb: Turn off phy when port is in suspend")
Signed-off-by: Justin Chen <justin.chen@broadcom.com>
Acked-by: Florian Fainelli <florian.fainelli@broadcom.com>
Link: https://lore.kernel.org/r/20241010185344.859865-1-justin.chen@broadcom.com
Signed-off-by: Vinod Koul <vkoul@kernel.org>
This commit is contained in:
parent
2d0f973b5f
commit
1e48fd0574
1 changed files with 9 additions and 3 deletions
|
|
@ -153,7 +153,9 @@ static void xhci_soft_reset(struct brcm_usb_init_params *params,
|
|||
} else {
|
||||
USB_CTRL_SET(ctrl, USB_PM, XHC_SOFT_RESETB);
|
||||
/* Required for COMMONONN to be set */
|
||||
USB_XHCI_GBL_UNSET(xhci_gbl, GUSB2PHYCFG, U2_FREECLK_EXISTS);
|
||||
if (params->supported_port_modes != USB_CTLR_MODE_DRD)
|
||||
USB_XHCI_GBL_UNSET(xhci_gbl, GUSB2PHYCFG,
|
||||
U2_FREECLK_EXISTS);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -328,8 +330,12 @@ static void usb_init_common_7216(struct brcm_usb_init_params *params)
|
|||
/* 1 millisecond - for USB clocks to settle down */
|
||||
usleep_range(1000, 2000);
|
||||
|
||||
/* Disable PHY when port is suspended */
|
||||
USB_CTRL_SET(ctrl, P0_U2PHY_CFG1, COMMONONN);
|
||||
/*
|
||||
* Disable PHY when port is suspended
|
||||
* Does not work in DRD mode
|
||||
*/
|
||||
if (params->supported_port_modes != USB_CTLR_MODE_DRD)
|
||||
USB_CTRL_SET(ctrl, P0_U2PHY_CFG1, COMMONONN);
|
||||
|
||||
usb_wake_enable_7216(params, false);
|
||||
usb_init_common(params);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue