summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorhathach <[email protected]>2018-11-28 16:10:31 +0700
committerhathach <[email protected]>2018-11-28 16:10:31 +0700
commit8b03b6d3b45167b8db805ca95aafce92a1a2e4b0 (patch)
tree2d750c447dfbfb09d23628fcdbcd74154f1064ca
parenta3cc52829b81e80fa37c33be5c0d0c81c909cfb7 (diff)
add Auto descriptor endpoint num config to support lpc17xx
CFG_TUD_DESC_*_EPNUM
-rw-r--r--examples/device/cdc_msc_hid/src/tusb_config.h15
-rw-r--r--src/class/msc/msc_device.h10
-rw-r--r--src/device/usbd_auto_desc.c63
3 files changed, 57 insertions, 31 deletions
diff --git a/examples/device/cdc_msc_hid/src/tusb_config.h b/examples/device/cdc_msc_hid/src/tusb_config.h
index 0634c9576..a9a356f20 100644
--- a/examples/device/cdc_msc_hid/src/tusb_config.h
+++ b/examples/device/cdc_msc_hid/src/tusb_config.h
@@ -52,7 +52,7 @@
// defined by compiler flags for flexibility
#ifndef CFG_TUSB_MCU
- #error CFG_TUSB_MCU should be defined using compiler flags
+ #error CFG_TUSB_MCU must be defined
#endif
#if CFG_TUSB_MCU == OPT_MCU_LPC43XX || CFG_TUSB_MCU == OPT_MCU_LPC18XX
@@ -93,12 +93,22 @@
*/
#define CFG_TUD_DESC_AUTO 1
-/* USB VID/PID if not defined, tinyusb to use default value
+/* If USB VID/PID is not defined, tinyusb will use default value
* Note: different class combination e.g CDC and (CDC + MSC) should have different
* PID since Host OS will "remembered" device driver after the first plug */
// #define CFG_TUD_DESC_VID 0xCAFE
// #define CFG_TUD_DESC_PID 0x0001
+// LPC175x_6x's endpoint type (bulk/interrupt/iso) are fixed by its number
+// Therefor we need to force endpoint number to correct type on lpc17xx
+#if CFG_TUSB_MCU == OPT_MCU_LPC175X_6X
+#define CFG_TUD_DESC_CDC_EPNUM_NOTIF 1
+#define CFG_TUD_DESC_CDC_EPNUM 2
+#define CFG_TUD_DESC_MSC_EPNUM 5
+#define CFG_TUD_DESC_HID_KEYBOARD_EPNUM 4
+#define CFG_TUD_DESC_HID_MOUSE_EPNUM 7
+#endif
+
//------------- CLASS -------------//
#define CFG_TUD_CDC 1
#define CFG_TUD_MSC 1
@@ -114,7 +124,6 @@
#define CFG_TUD_HID_KEYBOARD_BOOT 1
#define CFG_TUD_HID_MOUSE_BOOT 1
-
//--------------------------------------------------------------------
// CDC
//--------------------------------------------------------------------
diff --git a/src/class/msc/msc_device.h b/src/class/msc/msc_device.h
index b268830ca..4053679b8 100644
--- a/src/class/msc/msc_device.h
+++ b/src/class/msc/msc_device.h
@@ -71,16 +71,6 @@ TU_VERIFY_STATIC(CFG_TUD_MSC_BUFSIZE < UINT16_MAX, "Size is not correct");
#error CFG_TUD_MSC_PRODUCT_REV 4-byte string must be defined
#endif
-// TODO highspeed device is 512
-#ifndef CFG_TUD_MSC_EPSIZE
-#if TUD_OPT_HIGH_SPEED
-#define CFG_TUD_MSC_EPSIZE 512
-#else
-#define CFG_TUD_MSC_EPSIZE 64
-#endif
-#endif
-
-
#ifdef __cplusplus
extern "C" {
#endif
diff --git a/src/device/usbd_auto_desc.c b/src/device/usbd_auto_desc.c
index 2d54a934d..028d1b433 100644
--- a/src/device/usbd_auto_desc.c
+++ b/src/device/usbd_auto_desc.c
@@ -101,18 +101,19 @@ enum
ITF_NUM_TOTAL
};
-enum {
- ITF_STR_LANGUAGE = 0 ,
- ITF_STR_MANUFACTURER ,
- ITF_STR_PRODUCT ,
- ITF_STR_SERIAL ,
+enum
+{
+ ITF_STR_LANGUAGE = 0 ,
+ ITF_STR_MANUFACTURER ,
+ ITF_STR_PRODUCT ,
+ ITF_STR_SERIAL ,
#if CFG_TUD_CDC
- ITF_STR_CDC ,
+ ITF_STR_CDC ,
#endif
#if CFG_TUD_MSC
- ITF_STR_MSC ,
+ ITF_STR_MSC ,
#endif
#if CFG_TUD_HID_KEYBOARD && CFG_TUD_HID_KEYBOARD_BOOT
@@ -133,23 +134,51 @@ enum {
#define _EP_OUT(x) (x)
// CDC
-#define EP_CDC_NOTIF _EP_IN ( ITF_NUM_CDC+1 )
+#ifdef CFG_TUD_DESC_CDC_EPNUM_NOTIF
+ #define EP_CDC_NOTIF _EP_IN (CFG_TUD_DESC_CDC_EPNUM_NOTIF)
+#else
+ #define EP_CDC_NOTIF _EP_IN ( ITF_NUM_CDC+1 )
+#endif
#define EP_CDC_NOTIF_SIZE 8
-#define EP_CDC_OUT _EP_OUT( ITF_NUM_CDC+2 )
-#define EP_CDC_IN _EP_IN ( ITF_NUM_CDC+2 )
+#ifdef CFG_TUD_DESC_CDC_EPNUM
+ #define EP_CDC_OUT _EP_OUT( CFG_TUD_DESC_CDC_EPNUM )
+ #define EP_CDC_IN _EP_IN ( CFG_TUD_DESC_CDC_EPNUM )
+#else
+ #define EP_CDC_OUT _EP_OUT( ITF_NUM_CDC+2 )
+ #define EP_CDC_IN _EP_IN ( ITF_NUM_CDC+2 )
+#endif
// Mass Storage
-#define EP_MSC_OUT _EP_OUT( ITF_NUM_MSC+1 )
-#define EP_MSC_IN _EP_IN ( ITF_NUM_MSC+1 )
+#ifdef CFG_TUD_DESC_MSC_EPNUM
+ #define EP_MSC_OUT _EP_OUT( CFG_TUD_DESC_MSC_EPNUM )
+ #define EP_MSC_IN _EP_IN ( CFG_TUD_DESC_MSC_EPNUM )
+#else
+ #define EP_MSC_OUT _EP_OUT( ITF_NUM_MSC+1 )
+ #define EP_MSC_IN _EP_IN ( ITF_NUM_MSC+1 )
+#endif
+
+#if TUD_OPT_HIGH_SPEED
+#define EP_MSC_SIZE 512
+#else
+#define EP_MSC_SIZE 64
+#endif
// HID Keyboard with boot protocol
-#define EP_HID_KBD_BOOT _EP_IN ( ITF_NUM_HID_BOOT_KBD+1 )
+#ifdef CFG_TUD_DESC_HID_KEYBOARD_EPNUM
+ #define EP_HID_KBD_BOOT _EP_IN ( CFG_TUD_DESC_HID_KEYBOARD_EPNUM )
+#else
+ #define EP_HID_KBD_BOOT _EP_IN ( ITF_NUM_HID_BOOT_KBD+1 )
+#endif
#define EP_HID_KBD_BOOT_SZ 8
// HID Mouse with boot protocol
-#define EP_HID_MSE_BOOT _EP_IN ( ITF_NUM_HID_BOOT_MSE+1 )
+#ifdef CFG_TUD_DESC_HID_MOUSE_EPNUM
+ #define EP_HID_MSE_BOOT _EP_IN ( CFG_TUD_DESC_HID_MOUSE_EPNUM )
+#else
+ #define EP_HID_MSE_BOOT _EP_IN ( ITF_NUM_HID_BOOT_MSE+1 )
+#endif
#define EP_HID_MSE_BOOT_SZ 8
// HID composite = keyboard + mouse + gamepad + etc ...
@@ -466,7 +495,7 @@ desc_auto_cfg_t const _desc_auto_config_struct =
.bDescriptorType = TUSB_DESC_ENDPOINT,
.bEndpointAddress = EP_MSC_OUT,
.bmAttributes = { .xfer = TUSB_XFER_BULK },
- .wMaxPacketSize = { .size = CFG_TUD_MSC_EPSIZE},
+ .wMaxPacketSize = { .size = EP_MSC_SIZE},
.bInterval = 1
},
@@ -476,7 +505,7 @@ desc_auto_cfg_t const _desc_auto_config_struct =
.bDescriptorType = TUSB_DESC_ENDPOINT,
.bEndpointAddress = EP_MSC_IN,
.bmAttributes = { .xfer = TUSB_XFER_BULK },
- .wMaxPacketSize = { .size = CFG_TUD_MSC_EPSIZE},
+ .wMaxPacketSize = { .size = EP_MSC_SIZE},
.bInterval = 1
}
},
@@ -563,7 +592,6 @@ desc_auto_cfg_t const _desc_auto_config_struct =
#endif // boot mouse
#if AUTO_DESC_HID_GENERIC
-
//------------- HID Generic Multiple report -------------//
.hid_generic =
{
@@ -601,7 +629,6 @@ desc_auto_cfg_t const _desc_auto_config_struct =
.bInterval = 0x0A
}
}
-
#endif // hid generic
};