summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHa Thach <[email protected]>2020-10-25 13:51:11 +0700
committerGitHub <[email protected]>2020-10-25 13:51:11 +0700
commit566a623038220cfe03e80d5eb64068ddf5413d0f (patch)
tree9a42a558055f8f3382b90f5e539895f30f634918
parent43cb5fabfd6d0fca749e9512cc2061deab0adafd (diff)
parent229be75a98af03bdbcfabb29b8a3ddd106ba5f30 (diff)
Merge pull request #541 from j4cbo/internal-phy
Allow use of internal FS PHY on OTG_HS interface
-rw-r--r--src/portable/st/synopsys/dcd_synopsys.c9
1 files changed, 6 insertions, 3 deletions
diff --git a/src/portable/st/synopsys/dcd_synopsys.c b/src/portable/st/synopsys/dcd_synopsys.c
index ca306ff8f..9aeec79e6 100644
--- a/src/portable/st/synopsys/dcd_synopsys.c
+++ b/src/portable/st/synopsys/dcd_synopsys.c
@@ -416,7 +416,7 @@ void dcd_init (uint8_t rhport)
if ( rhport == 1 )
{
// On selected MCUs HS port1 can be used with external PHY via ULPI interface
-
+#if CFG_TUSB_RHPORT1_MODE & OPT_MODE_HIGH_SPEED
// deactivate internal PHY
usb_otg->GCCFG &= ~USB_OTG_GCCFG_PWRDWN;
@@ -425,6 +425,9 @@ void dcd_init (uint8_t rhport)
// Select default internal VBUS Indicator and Drive for ULPI
usb_otg->GUSBCFG &= ~(USB_OTG_GUSBCFG_ULPIEVBUSD | USB_OTG_GUSBCFG_ULPIEVBUSI);
+#else
+ usb_otg->GUSBCFG |= USB_OTG_GUSBCFG_PHYSEL;
+#endif
#if defined(USB_HS_PHYC)
// Highspeed with embedded UTMI PHYC
@@ -467,8 +470,8 @@ void dcd_init (uint8_t rhport)
set_speed(rhport, TUD_OPT_HIGH_SPEED ? TUSB_SPEED_HIGH : TUSB_SPEED_FULL);
- // Enable internal USB transceiver.
- if ( rhport == 0 ) usb_otg->GCCFG |= USB_OTG_GCCFG_PWRDWN;
+ // Enable internal USB transceiver, unless using HS core (port 1) with external PHY.
+ if (!(rhport == 1 && (CFG_TUSB_RHPORT1_MODE & OPT_MODE_HIGH_SPEED))) usb_otg->GCCFG |= USB_OTG_GCCFG_PWRDWN;
usb_otg->GINTMSK |= USB_OTG_GINTMSK_USBRST | USB_OTG_GINTMSK_ENUMDNEM |
USB_OTG_GINTMSK_USBSUSPM | USB_OTG_GINTMSK_WUIM |