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 48929b227467d3ec67214f4b442d3ce4f9e68352 Author: Jerzy Kasenberg <[email protected]> AuthorDate: Thu Aug 18 15:16:18 2022 +0200 tinyusb: Add descriptor for CDC/HCI This adds USB configuration descriptor handling for HCI transport over USB/CDC interface. Code for transport will be added to nimble. --- .../tinyusb/std_descriptors/include/tusb_config.h | 43 +++++++++++++++++++++- .../tinyusb/std_descriptors/src/std_descriptors.c | 20 ++++++++++ 2 files changed, 62 insertions(+), 1 deletion(-) diff --git a/hw/usb/tinyusb/std_descriptors/include/tusb_config.h b/hw/usb/tinyusb/std_descriptors/include/tusb_config.h index 42cc716dd..0f2e62d90 100755 --- a/hw/usb/tinyusb/std_descriptors/include/tusb_config.h +++ b/hw/usb/tinyusb/std_descriptors/include/tusb_config.h @@ -106,6 +106,41 @@ extern "C" { #define USBD_CDC_CONSOLE_DATA_EP_SIZE USBD_CDC_DATA_EP_SIZE #endif +/* + * If CDC_HCI does not have specific values for endpoint configuration, + * use values for unspecified CDC + */ +#if defined(MYNEWT_VAL_USBD_CDC_HCI_NOTIFY_EP) +#define USBD_CDC_HCI_NOTIFY_EP MYNEWT_VAL(USBD_CDC_HCI_NOTIFY_EP) +#else +#define USBD_CDC_HCI_NOTIFY_EP USBD_BTH_EVENT_EP +#endif + +#if defined(MYNEWT_VAL_USBD_CDC_HCI_NOTIFY_EP_SIZE) +#define USBD_CDC_HCI_NOTIFY_EP_SIZE MYNEWT_VAL(USBD_CDC_HCI_NOTIFY_EP_SIZE) +#else +#define USBD_CDC_HCI_NOTIFY_EP_SIZE USBD_CDC_NOTIFY_EP_SIZE +#endif + +#if defined(MYNEWT_VAL_USBD_CDC_HCI_DATA_OUT_EP) +#define USBD_CDC_HCI_DATA_OUT_EP MYNEWT_VAL(USBD_CDC_HCI_DATA_OUT_EP) +#else +#define USBD_CDC_HCI_DATA_OUT_EP USBD_BTH_DATA_OUT_EP +#endif + +#if defined(MYNEWT_VAL_USBD_CDC_HCI_DATA_IN_EP) +#define USBD_CDC_HCI_DATA_IN_EP MYNEWT_VAL(USBD_CDC_HCI_DATA_IN_EP) +#else +#define USBD_CDC_HCI_DATA_IN_EP USBD_BTH_DATA_IN_EP +#endif + +#if defined(MYNEWT_VAL_USBD_CDC_HCI_DATA_EP_SIZE) +#define USBD_CDC_HCI_DATA_EP_SIZE MYNEWT_VAL(USBD_CDC_HCI_DATA_EP_SIZE) +#else +#define USBD_CDC_HCI_DATA_EP_SIZE USBD_CDC_DATA_EP_SIZE +#endif + + #if MYNEWT_VAL(USBD_CDC) #define CFG_CDC MYNEWT_VAL(USBD_CDC) #else @@ -118,7 +153,13 @@ extern "C" { #define CFG_CDC_CONSOLE 0 #endif -#define CFG_TUD_CDC ((CFG_CDC) + (CFG_CDC_CONSOLE)) +#if MYNEWT_VAL(USBD_CDC_HCI) +#define CFG_CDC_HCI MYNEWT_VAL(USBD_CDC_HCI) +#else +#define CFG_CDC_HCI 0 +#endif + +#define CFG_TUD_CDC ((CFG_CDC) + (CFG_CDC_CONSOLE) + (CFG_CDC_HCI)) #if MYNEWT_VAL(USBD_HID) #define CFG_TUD_HID MYNEWT_VAL(USBD_HID) diff --git a/hw/usb/tinyusb/std_descriptors/src/std_descriptors.c b/hw/usb/tinyusb/std_descriptors/src/std_descriptors.c index 515777bfc..f3d95e839 100755 --- a/hw/usb/tinyusb/std_descriptors/src/std_descriptors.c +++ b/hw/usb/tinyusb/std_descriptors/src/std_descriptors.c @@ -53,6 +53,11 @@ enum usb_desc_ix { #else #define CDC_CONSOLE_IF_STR_IX 0 #endif +#if defined MYNEWT_VAL_USBD_CDC_HCI_DESCRIPTOR_STRING + CDC_HCI_IF_STR_IX, +#else +#define CDC_HCI_IF_STR_IX 0 +#endif #if defined MYNEWT_VAL_USBD_MSC_DESCRIPTOR_STRING MSC_IF_STR_IX, #else @@ -272,6 +277,11 @@ enum { ITF_NUM_CDC_CONSOLE_DATA, #endif +#if CFG_CDC_HCI + ITF_NUM_CDC_HCI, + ITF_NUM_CDC_HCI_DATA, +#endif + #if CFG_TUD_MSC ITF_NUM_MSC, #endif @@ -290,6 +300,7 @@ enum { #define CONFIG_TOTAL_LEN (TUD_CONFIG_DESC_LEN + \ CFG_CDC * TUD_CDC_DESC_LEN + \ CFG_CDC_CONSOLE * TUD_CDC_DESC_LEN + \ + CFG_CDC_HCI * TUD_CDC_DESC_LEN + \ CFG_TUD_MSC * TUD_MSC_DESC_LEN + \ CFG_TUD_HID * TUD_HID_DESC_LEN + \ CFG_TUD_BTH * TUD_BTH_DESC_LEN + \ @@ -313,6 +324,12 @@ const uint8_t desc_configuration[] = { (CFG_TUSB_RHPORT0_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), +#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, @@ -358,6 +375,9 @@ const char *string_desc_arr[] = { #if defined MYNEWT_VAL_USBD_CDC_CONSOLE_DESCRIPTOR_STRING MYNEWT_VAL(USBD_CDC_CONSOLE_DESCRIPTOR_STRING), #endif +#if defined MYNEWT_VAL_USBD_CDC_HCI_DESCRIPTOR_STRING + MYNEWT_VAL(USBD_CDC_HCI_DESCRIPTOR_STRING), +#endif #if defined MYNEWT_VAL_USBD_MSC_DESCRIPTOR_STRING MYNEWT_VAL(USBD_MSC_DESCRIPTOR_STRING), #endif
