This is an automated email from the ASF dual-hosted git repository. jerzy pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/mynewt-core.git
commit 5e0fe70c17b824ce20e43bc79dce3be28cb1b0cd Author: Jerzy Kasenberg <jerzy.kasenb...@codecoup.pl> AuthorDate: Thu Aug 22 10:55:12 2024 +0200 tinyusb: Add support for USB selection Some MCU have more then one USB controller So far RHPORT0 was always used. Only one USB device can be configured in mynewt (host is not supported yet) Now application can decide which USB controller to use by specifying USBD_RHPORT: USB0 or USB1 Signed-off-by: Jerzy Kasenberg <jerzy.kasenb...@codecoup.pl> --- hw/usb/tinyusb/std_descriptors/include/tusb_config.h | 19 ++++++++++++++++++- hw/usb/tinyusb/std_descriptors/src/std_descriptors.c | 10 +++++----- hw/usb/tinyusb/syscfg.yml | 7 +++++++ 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/hw/usb/tinyusb/std_descriptors/include/tusb_config.h b/hw/usb/tinyusb/std_descriptors/include/tusb_config.h index 26b25c7b0..eadf278c1 100755 --- a/hw/usb/tinyusb/std_descriptors/include/tusb_config.h +++ b/hw/usb/tinyusb/std_descriptors/include/tusb_config.h @@ -42,7 +42,24 @@ extern "C" { #error CFG_TUSB_MCU must be defined #endif -#define CFG_TUSB_RHPORT0_MODE ((OPT_MODE_DEVICE) | (CFG_TUSB_RHPORT0_SPEED)) +#if MYNEWT_VAL_CHOICE(USBD_RHPORT, USB0) +#undef CFG_TUSB_RHPORT0_MODE +#if MYNEWT_VAL(USBD_HIGH_SPEED) +#define CFG_TUSB_RHPORT0_MODE (OPT_MODE_DEVICE | OPT_MODE_HIGH_SPEED) +#else +#define CFG_TUSB_RHPORT0_MODE (OPT_MODE_DEVICE | OPT_MODE_FULL_SPEED) +#endif +#define USBD_RHPORT_MODE CFG_TUSB_RHPORT0_MODE + +#elif MYNEWT_VAL_CHOICE(USBD_RHPORT, USB1) +#undef CFG_TUSB_RHPORT1_MODE +#if MYNEWT_VAL(USBD_HIGH_SPEED) +#define CFG_TUSB_RHPORT1_MODE (OPT_MODE_DEVICE | OPT_MODE_HIGH_SPEED) +#else +#define CFG_TUSB_RHPORT1_MODE (OPT_MODE_DEVICE | OPT_MODE_FULL_SPEED) +#endif +#define USBD_RHPORT_MODE CFG_TUSB_RHPORT1_MODE +#endif #if MYNEWT_VAL(OS_SCHEDULING) #define CFG_TUSB_OS OPT_OS_MYNEWT diff --git a/hw/usb/tinyusb/std_descriptors/src/std_descriptors.c b/hw/usb/tinyusb/std_descriptors/src/std_descriptors.c index 6f3980ace..9981b754d 100755 --- a/hw/usb/tinyusb/std_descriptors/src/std_descriptors.c +++ b/hw/usb/tinyusb/std_descriptors/src/std_descriptors.c @@ -310,32 +310,32 @@ const uint8_t desc_configuration[] = { #if CFG_TUD_BTH TUD_BTH_DESCRIPTOR(ITF_NUM_BTH, BTH_IF_STR_IX, USBD_BTH_EVENT_EP, USBD_BTH_EVENT_EP_SIZE, USBD_BTH_EVENT_EP_INTERVAL, USBD_BTH_DATA_IN_EP, USBD_BTH_DATA_OUT_EP, - (CFG_TUSB_RHPORT0_MODE & OPT_MODE_HIGH_SPEED) ? 512 : USBD_BTH_DATA_EP_SIZE, + (USBD_RHPORT_MODE & OPT_MODE_HIGH_SPEED) ? 512 : USBD_BTH_DATA_EP_SIZE, 0, 9, 17, 25, 33, 49), #endif #if CFG_CDC_CONSOLE TUD_CDC_DESCRIPTOR(ITF_NUM_CDC_CONSOLE, CDC_CONSOLE_IF_STR_IX, USBD_CDC_CONSOLE_NOTIFY_EP, USBD_CDC_CONSOLE_NOTIFY_EP_SIZE, USBD_CDC_CONSOLE_DATA_OUT_EP, USBD_CDC_CONSOLE_DATA_IN_EP, - (CFG_TUSB_RHPORT0_MODE & OPT_MODE_HIGH_SPEED) ? 512 : USBD_CDC_CONSOLE_DATA_EP_SIZE), + (USBD_RHPORT_MODE & OPT_MODE_HIGH_SPEED) ? 512 : USBD_CDC_CONSOLE_DATA_EP_SIZE), #endif #if CFG_CDC_HCI TUD_CDC_DESCRIPTOR(ITF_NUM_CDC_HCI, CDC_HCI_IF_STR_IX, USBD_CDC_HCI_NOTIFY_EP, USBD_CDC_HCI_NOTIFY_EP_SIZE, USBD_CDC_HCI_DATA_OUT_EP, USBD_CDC_HCI_DATA_IN_EP, - (CFG_TUSB_RHPORT0_MODE & OPT_MODE_HIGH_SPEED) ? 512 : USBD_CDC_HCI_DATA_EP_SIZE), + (USBD_RHPORT_MODE & OPT_MODE_HIGH_SPEED) ? 512 : USBD_CDC_HCI_DATA_EP_SIZE), #endif #if CFG_CDC TUD_CDC_DESCRIPTOR(ITF_NUM_CDC, CDC_IF_STR_IX, USBD_CDC_NOTIFY_EP, USBD_CDC_NOTIFY_EP_SIZE, USBD_CDC_DATA_OUT_EP, USBD_CDC_DATA_IN_EP, - (CFG_TUSB_RHPORT0_MODE & OPT_MODE_HIGH_SPEED) ? 512 : USBD_CDC_DATA_EP_SIZE), + (USBD_RHPORT_MODE & OPT_MODE_HIGH_SPEED) ? 512 : USBD_CDC_DATA_EP_SIZE), #endif #if CFG_TUD_MSC /* TODO: MSC not handled yet */ TUD_MSC_DESCRIPTOR(ITF_NUM_MSC, MSC_IF_STR_IX, USBD_MSC_DATA_OUT_EP, USBD_MSC_DATA_IN_EP, - (CFG_TUSB_RHPORT0_MODE & OPT_MODE_HIGH_SPEED) ? 512 : 64), + (USBD_RHPORT_MODE & OPT_MODE_HIGH_SPEED) ? 512 : 64), #endif #if CFG_TUD_HID diff --git a/hw/usb/tinyusb/syscfg.yml b/hw/usb/tinyusb/syscfg.yml index d59ef2a86..9ccd8c5d6 100644 --- a/hw/usb/tinyusb/syscfg.yml +++ b/hw/usb/tinyusb/syscfg.yml @@ -53,3 +53,10 @@ syscfg.defs: description: > Enable USB high speed if device supports it. value: 0 + USBD_RHPORT: + description: + Selects which peripheral is used for USBD + value: USB0 + choices: + - USB0 + - USB1