usb: chipidea: Add platform flag for wrapper phy management
The ULPI phy on qcom platforms needs to be initialized and powered on after a USB reset and before we toggle the run/stop bit. Otherwise, the phy locks up and doesn't work properly. Therefore, add a flag to skip any phy power management in the core layer, leaving it up to the glue driver to manage. Acked-by: Peter Chen <peter.chen@nxp.com> Cc: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Signed-off-by: Stephen Boyd <stephen.boyd@linaro.org> Signed-off-by: Peter Chen <peter.chen@nxp.com>
This commit is contained in:
parent
a89b94b533
commit
8feb3680bd
|
@ -361,6 +361,9 @@ static int _ci_usb_phy_init(struct ci_hdrc *ci)
|
|||
*/
|
||||
static void ci_usb_phy_exit(struct ci_hdrc *ci)
|
||||
{
|
||||
if (ci->platdata->flags & CI_HDRC_OVERRIDE_PHY_CONTROL)
|
||||
return;
|
||||
|
||||
if (ci->phy) {
|
||||
phy_power_off(ci->phy);
|
||||
phy_exit(ci->phy);
|
||||
|
@ -379,6 +382,9 @@ static int ci_usb_phy_init(struct ci_hdrc *ci)
|
|||
{
|
||||
int ret;
|
||||
|
||||
if (ci->platdata->flags & CI_HDRC_OVERRIDE_PHY_CONTROL)
|
||||
return 0;
|
||||
|
||||
switch (ci->platdata->phy_mode) {
|
||||
case USBPHY_INTERFACE_MODE_UTMI:
|
||||
case USBPHY_INTERFACE_MODE_UTMIW:
|
||||
|
|
|
@ -57,6 +57,7 @@ struct ci_hdrc_platform_data {
|
|||
#define CI_HDRC_OVERRIDE_AHB_BURST BIT(9)
|
||||
#define CI_HDRC_OVERRIDE_TX_BURST BIT(10)
|
||||
#define CI_HDRC_OVERRIDE_RX_BURST BIT(11)
|
||||
#define CI_HDRC_OVERRIDE_PHY_CONTROL BIT(12) /* Glue layer manages phy */
|
||||
enum usb_dr_mode dr_mode;
|
||||
#define CI_HDRC_CONTROLLER_RESET_EVENT 0
|
||||
#define CI_HDRC_CONTROLLER_STOPPED_EVENT 1
|
||||
|
|
Loading…
Reference in New Issue