Skip to content

Commit

Permalink
better workaround for S3 timing issue
Browse files Browse the repository at this point in the history
  • Loading branch information
hathach committed Jan 21, 2025
1 parent 401295f commit f72af51
Showing 1 changed file with 3 additions and 33 deletions.
36 changes: 3 additions & 33 deletions ports/espressif/supervisor/usb.c
Original file line number Diff line number Diff line change
Expand Up @@ -89,49 +89,19 @@ void tud_cdc_rx_cb(uint8_t itf) {
}
#endif // CIRCUITPY_USB_DEVICE


#if defined(CONFIG_IDF_TARGET_ESP32S3)
// TEMPORARY WORKAROUND for https://github.com/hathach/tinyusb/issues/2943
#include "soc/rtc_cntl_struct.h"
#include "soc/usb_wrap_struct.h"
#endif

void init_usb_hardware(void) {
#if CIRCUITPY_USB_DEVICE
// Configure USB PHY

// TEMPORARY WORKAROUND for https://github.com/hathach/tinyusb/issues/2943
#if defined(CONFIG_IDF_TARGET_ESP32S3)

(void)phy_hdl;
periph_module_reset(PERIPH_USB_MODULE);
periph_module_enable(PERIPH_USB_MODULE);

USB_WRAP.otg_conf.pad_enable = 1;
// USB_OTG use internal PHY
USB_WRAP.otg_conf.phy_sel = 0;
// phy_sel is controlled by the following register value
RTCCNTL.usb_conf.sw_hw_usb_phy_sel = 1;
// phy_sel=sw_usb_phy_sel=1, USB_OTG is connected with internal PHY
RTCCNTL.usb_conf.sw_usb_phy_sel = 1;

gpio_set_drive_capability(USBPHY_DM_NUM, GPIO_DRIVE_CAP_3);
gpio_set_drive_capability(USBPHY_DP_NUM, GPIO_DRIVE_CAP_3);
#else

usb_phy_config_t phy_conf = {
.controller = USB_PHY_CTRL_OTG,
.target = USB_PHY_TARGET_INT,

.otg_mode = USB_OTG_MODE_DEVICE,
#ifdef CONFIG_IDF_TARGET_ESP32P4
.otg_speed = USB_PHY_SPEED_HIGH,
#else
.otg_speed = USB_PHY_SPEED_FULL,
#endif
// https://github.com/hathach/tinyusb/issues/2943#issuecomment-2601888322
// Set speed to undefined (auto-detect) to avoid timinng/racing issue with S3 with host such as macOS
.otg_speed = USB_PHY_SPEED_UNDEFINED,
};
usb_new_phy(&phy_conf, &phy_hdl);
#endif

// Pin the USB task to the same core as CircuitPython. This way we leave
// the other core for networking.
Expand Down

0 comments on commit f72af51

Please sign in to comment.