auto detect max rhport speed based on mcu
This commit is contained in:
		| @@ -33,7 +33,8 @@ | ||||
| // - ENDPOINT_MAX: max (logical) number of endpoint | ||||
| // - ENDPOINT_EXCLUSIVE_NUMBER: endpoint number with different direction IN and OUT aren't allowed, | ||||
| //                              e.g EP1 OUT & EP1 IN cannot exist together | ||||
| // - PORT_HIGHSPEED: mask to indicate which port support highspeed mode, bit0 for port0 and so on. | ||||
| // - RHPORT_HIGHSPEED: mask to indicate which port support highspeed mode (without external PHY) | ||||
| //                     bit0 for port0 and so on. | ||||
|  | ||||
| //------------- NXP -------------// | ||||
| #if   TU_CHECK_MCU(OPT_MCU_LPC11UXX, OPT_MCU_LPC13XX, OPT_MCU_LPC15XX) | ||||
| @@ -45,7 +46,8 @@ | ||||
| #elif TU_CHECK_MCU(OPT_MCU_LPC18XX, OPT_MCU_LPC43XX) | ||||
|   // TODO USB0 has 6, USB1 has 4 | ||||
|   #define DCD_ATTR_CONTROLLER_CHIPIDEA_HS | ||||
|   #define DCD_ATTR_ENDPOINT_MAX   6 | ||||
|   #define DCD_ATTR_ENDPOINT_MAX     6 | ||||
|   #define DCD_ATTR_RHPORT_HIGHSPEED 0x01 // Port0 HS, Port1 FS | ||||
|  | ||||
| #elif TU_CHECK_MCU(OPT_MCU_LPC51UXX) | ||||
|    #define DCD_ATTR_ENDPOINT_MAX   5 | ||||
| @@ -60,7 +62,8 @@ | ||||
|  | ||||
| #elif TU_CHECK_MCU(OPT_MCU_MIMXRT10XX) | ||||
|   #define DCD_ATTR_CONTROLLER_CHIPIDEA_HS | ||||
|   #define DCD_ATTR_ENDPOINT_MAX   8 | ||||
|   #define DCD_ATTR_ENDPOINT_MAX     8 | ||||
|   #define DCD_ATTR_RHPORT_HIGHSPEED 0x03 // Port0 HS, Port1 HS | ||||
|  | ||||
| #elif TU_CHECK_MCU(OPT_MCU_MKL25ZXX, OPT_MCU_K32L2BXX) | ||||
|   #define DCD_ATTR_ENDPOINT_MAX   16 | ||||
| @@ -83,7 +86,8 @@ | ||||
|   #define DCD_ATTR_ENDPOINT_EXCLUSIVE_NUMBER | ||||
|  | ||||
| #elif TU_CHECK_MCU(OPT_MCU_SAMX7X) | ||||
|   #define DCD_ATTR_ENDPOINT_MAX   10 | ||||
|   #define DCD_ATTR_ENDPOINT_MAX     10 | ||||
|   #define DCD_ATTR_RHPORT_HIGHSPEED 0x01 | ||||
|   #define DCD_ATTR_ENDPOINT_EXCLUSIVE_NUMBER | ||||
|  | ||||
| #elif TU_CHECK_MCU(OPT_MCU_PIC32MZ) | ||||
| @@ -145,7 +149,8 @@ | ||||
|  | ||||
| //------------- Sony -------------// | ||||
| #elif TU_CHECK_MCU(OPT_MCU_CXD56) | ||||
|   #define DCD_ATTR_ENDPOINT_MAX   7 | ||||
|   #define DCD_ATTR_ENDPOINT_MAX     7 | ||||
|   #define DCD_ATTR_RHPORT_HIGHSPEED 0x01 | ||||
|   #define DCD_ATTR_ENDPOINT_EXCLUSIVE_NUMBER | ||||
|  | ||||
| //------------- TI -------------// | ||||
| @@ -167,7 +172,8 @@ | ||||
|   #define DCD_ATTR_ENDPOINT_MAX   6 | ||||
|  | ||||
| #elif TU_CHECK_MCU(OPT_MCU_NUC505) | ||||
|   #define DCD_ATTR_ENDPOINT_MAX   12 | ||||
|   #define DCD_ATTR_ENDPOINT_MAX     12 | ||||
|   #define DCD_ATTR_RHPORT_HIGHSPEED 0x01 | ||||
|  | ||||
| //------------- Espressif -------------// | ||||
| #elif TU_CHECK_MCU(OPT_MCU_ESP32S2, OPT_MCU_ESP32S3) | ||||
| @@ -195,7 +201,8 @@ | ||||
|  | ||||
| //------------- Broadcom -------------// | ||||
| #elif TU_CHECK_MCU(OPT_MCU_BCM2711, OPT_MCU_BCM2835, OPT_MCU_BCM2837) | ||||
|   #define DCD_ATTR_ENDPOINT_MAX   8 | ||||
|   #define DCD_ATTR_ENDPOINT_MAX     8 | ||||
|   #define DCD_ATTR_RHPORT_HIGHSPEED 0x01 | ||||
|  | ||||
| //------------- Broadcom -------------// | ||||
| #elif TU_CHECK_MCU(OPT_MCU_XMC4000) | ||||
| @@ -203,10 +210,12 @@ | ||||
|  | ||||
| //------------- BridgeTek -------------// | ||||
| #elif TU_CHECK_MCU(OPT_MCU_FT90X) | ||||
|   #define DCD_ATTR_ENDPOINT_MAX   8 | ||||
|   #define DCD_ATTR_ENDPOINT_MAX     8 | ||||
|   #define DCD_ATTR_RHPORT_HIGHSPEED 0x01 | ||||
|  | ||||
| #elif TU_CHECK_MCU(OPT_MCU_FT93X) | ||||
|   #define DCD_ATTR_ENDPOINT_MAX   16 | ||||
|   #define DCD_ATTR_ENDPOINT_MAX     16 | ||||
|   #define DCD_ATTR_RHPORT_HIGHSPEED 0x01 | ||||
|  | ||||
| //------------ Allwinner -------------// | ||||
| #elif TU_CHECK_MCU(OPT_MCU_F1C100S) | ||||
| @@ -218,8 +227,8 @@ | ||||
| #endif | ||||
|  | ||||
| // Default to fullspeed if not defined | ||||
| //#ifndef PORT_HIGHSPEED | ||||
| //  #define DCD_ATTR_PORT_HIGHSPEED 0x00 | ||||
| //#endif | ||||
| #ifndef DCD_ATTR_RHPORT_HIGHSPEED | ||||
|   #define DCD_ATTR_RHPORT_HIGHSPEED 0x00 | ||||
| #endif | ||||
|  | ||||
| #endif | ||||
|   | ||||
| @@ -453,7 +453,7 @@ TU_ATTR_WEAK bool tud_vendor_control_xfer_cb(uint8_t rhport, uint8_t stage, tusb | ||||
|   /* Type I Format Type Descriptor(2.3.1.6 - Audio Formats) */\ | ||||
|   TUD_AUDIO_DESC_TYPE_I_FORMAT(_nBytesPerSample, _nBitsUsedPerSample),\ | ||||
|   /* Standard AS Isochronous Audio Data Endpoint Descriptor(4.10.1.1) */\ | ||||
|   TUD_AUDIO_DESC_STD_AS_ISO_EP(/*_ep*/ _epin, /*_attr*/ (TUSB_XFER_ISOCHRONOUS | TUSB_ISO_EP_ATT_ASYNCHRONOUS | TUSB_ISO_EP_ATT_DATA), /*_maxEPsize*/ _epsize, /*_interval*/ (CFG_TUSB_RHPORT0_MODE & OPT_MODE_HIGH_SPEED) ? 0x04 : 0x01),\ | ||||
|   TUD_AUDIO_DESC_STD_AS_ISO_EP(/*_ep*/ _epin, /*_attr*/ (TUSB_XFER_ISOCHRONOUS | TUSB_ISO_EP_ATT_ASYNCHRONOUS | TUSB_ISO_EP_ATT_DATA), /*_maxEPsize*/ _epsize, /*_interval*/ TUD_OPT_HIGH_SPEED ? 0x04 : 0x01),\ | ||||
|   /* Class-Specific AS Isochronous Audio Data Endpoint Descriptor(4.10.1.2) */\ | ||||
|   TUD_AUDIO_DESC_CS_AS_ISO_EP(/*_attr*/ AUDIO_CS_AS_ISO_DATA_EP_ATT_NON_MAX_PACKETS_OK, /*_ctrl*/ AUDIO_CTRL_NONE, /*_lockdelayunit*/ AUDIO_CS_AS_ISO_DATA_EP_LOCK_DELAY_UNIT_UNDEFINED, /*_lockdelay*/ 0x0000) | ||||
|  | ||||
| @@ -502,7 +502,7 @@ TU_ATTR_WEAK bool tud_vendor_control_xfer_cb(uint8_t rhport, uint8_t stage, tusb | ||||
|   /* Type I Format Type Descriptor(2.3.1.6 - Audio Formats) */\ | ||||
|   TUD_AUDIO_DESC_TYPE_I_FORMAT(_nBytesPerSample, _nBitsUsedPerSample),\ | ||||
|   /* Standard AS Isochronous Audio Data Endpoint Descriptor(4.10.1.1) */\ | ||||
|   TUD_AUDIO_DESC_STD_AS_ISO_EP(/*_ep*/ _epin, /*_attr*/ (TUSB_XFER_ISOCHRONOUS | TUSB_ISO_EP_ATT_ASYNCHRONOUS | TUSB_ISO_EP_ATT_DATA), /*_maxEPsize*/ _epsize, /*_interval*/ (CFG_TUSB_RHPORT0_MODE & OPT_MODE_HIGH_SPEED) ? 0x04 : 0x01),\ | ||||
|   TUD_AUDIO_DESC_STD_AS_ISO_EP(/*_ep*/ _epin, /*_attr*/ (TUSB_XFER_ISOCHRONOUS | TUSB_ISO_EP_ATT_ASYNCHRONOUS | TUSB_ISO_EP_ATT_DATA), /*_maxEPsize*/ _epsize, /*_interval*/ TUD_OPT_HIGH_SPEED ? 0x04 : 0x01),\ | ||||
|   /* Class-Specific AS Isochronous Audio Data Endpoint Descriptor(4.10.1.2) */\ | ||||
|   TUD_AUDIO_DESC_CS_AS_ISO_EP(/*_attr*/ AUDIO_CS_AS_ISO_DATA_EP_ATT_NON_MAX_PACKETS_OK, /*_ctrl*/ AUDIO_CTRL_NONE, /*_lockdelayunit*/ AUDIO_CS_AS_ISO_DATA_EP_LOCK_DELAY_UNIT_UNDEFINED, /*_lockdelay*/ 0x0000) | ||||
|  | ||||
| @@ -550,7 +550,7 @@ TU_ATTR_WEAK bool tud_vendor_control_xfer_cb(uint8_t rhport, uint8_t stage, tusb | ||||
|   /* Type I Format Type Descriptor(2.3.1.6 - Audio Formats) */\ | ||||
|   TUD_AUDIO_DESC_TYPE_I_FORMAT(_nBytesPerSample, _nBitsUsedPerSample),\ | ||||
|   /* Standard AS Isochronous Audio Data Endpoint Descriptor(4.10.1.1) */\ | ||||
|   TUD_AUDIO_DESC_STD_AS_ISO_EP(/*_ep*/ _epout, /*_attr*/ (TUSB_XFER_ISOCHRONOUS | TUSB_ISO_EP_ATT_ASYNCHRONOUS | TUSB_ISO_EP_ATT_DATA), /*_maxEPsize*/ _epsize, /*_interval*/ (CFG_TUSB_RHPORT0_MODE & OPT_MODE_HIGH_SPEED) ? 0x04 : 0x01),\ | ||||
|   TUD_AUDIO_DESC_STD_AS_ISO_EP(/*_ep*/ _epout, /*_attr*/ (TUSB_XFER_ISOCHRONOUS | TUSB_ISO_EP_ATT_ASYNCHRONOUS | TUSB_ISO_EP_ATT_DATA), /*_maxEPsize*/ _epsize, /*_interval*/ TUD_OPT_HIGH_SPEED ? 0x04 : 0x01),\ | ||||
|   /* Class-Specific AS Isochronous Audio Data Endpoint Descriptor(4.10.1.2) */\ | ||||
|   TUD_AUDIO_DESC_CS_AS_ISO_EP(/*_attr*/ AUDIO_CS_AS_ISO_DATA_EP_ATT_NON_MAX_PACKETS_OK, /*_ctrl*/ AUDIO_CTRL_NONE, /*_lockdelayunit*/ AUDIO_CS_AS_ISO_DATA_EP_LOCK_DELAY_UNIT_UNDEFINED, /*_lockdelay*/ 0x0000),\ | ||||
|   /* Standard AS Isochronous Feedback Endpoint Descriptor(4.10.2.1) */\ | ||||
| @@ -558,7 +558,7 @@ TU_ATTR_WEAK bool tud_vendor_control_xfer_cb(uint8_t rhport, uint8_t stage, tusb | ||||
|  | ||||
| //   Calculate wMaxPacketSize of Endpoints | ||||
| #define TUD_AUDIO_EP_SIZE(_maxFrequency, _nBytesPerSample, _nChannels) \ | ||||
|     ((((_maxFrequency + ((CFG_TUSB_RHPORT0_MODE & OPT_MODE_HIGH_SPEED) ? 7999 : 999)) / ((CFG_TUSB_RHPORT0_MODE & OPT_MODE_HIGH_SPEED) ? 8000 : 1000)) + 1) * _nBytesPerSample * _nChannels) | ||||
|     ((((_maxFrequency + (TUD_OPT_HIGH_SPEED ? 7999 : 999)) / (TUD_OPT_HIGH_SPEED ? 8000 : 1000)) + 1) * _nBytesPerSample * _nChannels) | ||||
|  | ||||
|  | ||||
| //--------------------------------------------------------------------+ | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 hathach
					hathach