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

Reply via email to