summaryrefslogtreecommitdiff
path: root/supervisor
diff options
context:
space:
mode:
authorDan Halbert <halbert@halwitz.org>2021-02-04 19:23:40 -0500
committerDan Halbert <halbert@halwitz.org>2021-02-04 19:23:40 -0500
commit0802b22ed6229a981d26e5d89737877cfb044f61 (patch)
tree856475a89e81629e2c7cad462a7723070628ffc9 /supervisor
parent8789a2c8a9c73b9cd22140307160d5a87a65adc6 (diff)
usb descriptors all set; rework of enabling for USB devices
Diffstat (limited to 'supervisor')
-rw-r--r--supervisor/shared/usb/tusb_config.h7
-rw-r--r--supervisor/supervisor.mk112
2 files changed, 64 insertions, 55 deletions
diff --git a/supervisor/shared/usb/tusb_config.h b/supervisor/shared/usb/tusb_config.h
index 15d9fabaf..0e70367d0 100644
--- a/supervisor/shared/usb/tusb_config.h
+++ b/supervisor/shared/usb/tusb_config.h
@@ -61,10 +61,15 @@
// DEVICE CONFIGURATION
//--------------------------------------------------------------------+
-#define CFG_TUD_ENDOINT0_SIZE 64
+#define CFG_TUD_ENDPOINT0_SIZE 64
//------------- CLASS -------------//
+
+// Could be 2 if secondary CDC channel requested.
+#ifndef CFG_TUD_CDC
#define CFG_TUD_CDC 1
+#endif
+
#define CFG_TUD_MSC 1
#define CFG_TUD_HID CIRCUITPY_USB_HID
#define CFG_TUD_MIDI CIRCUITPY_USB_MIDI
diff --git a/supervisor/supervisor.mk b/supervisor/supervisor.mk
index a59e99e3d..8fd32fa0b 100644
--- a/supervisor/supervisor.mk
+++ b/supervisor/supervisor.mk
@@ -14,23 +14,15 @@ SRC_SUPERVISOR = \
supervisor/shared/tick.c \
supervisor/shared/translate.c
-ifndef $(NO_USB)
- NO_USB = $(wildcard supervisor/usb.c)
-endif
+NO_USB ?= $(wildcard supervisor/usb.c)
-ifndef INTERNAL_FLASH_FILESYSTEM
-INTERNAL_FLASH_FILESYSTEM = 0
-endif
+INTERNAL_FLASH_FILESYSTEM ?= 0
CFLAGS += -DINTERNAL_FLASH_FILESYSTEM=$(INTERNAL_FLASH_FILESYSTEM)
-ifndef QSPI_FLASH_FILESYSTEM
-QSPI_FLASH_FILESYSTEM = 0
-endif
+QSPI_FLASH_FILESYSTEM ?= 0
CFLAGS += -DQSPI_FLASH_FILESYSTEM=$(QSPI_FLASH_FILESYSTEM)
-ifndef SPI_FLASH_FILESYSTEM
SPI_FLASH_FILESYSTEM = 0
-endif
CFLAGS += -DSPI_FLASH_FILESYSTEM=$(SPI_FLASH_FILESYSTEM)
ifeq ($(CIRCUITPY_BLEIO),1)
@@ -115,66 +107,78 @@ ifeq ($(CIRCUITPY_DISPLAYIO), 1)
SUPERVISOR_O += $(BUILD)/autogen_display_resources.o
endif
endif
-ifndef USB_INTERFACE_NAME
-USB_INTERFACE_NAME = "CircuitPython"
+
+USB_INTERFACE_NAME ?= "CircuitPython"
+
+ifneq ($(USB_VID),)
+CFLAGS += -DUSB_VID=$(USB_VID)
+CFLAGS += -DSUB_PID=$(USB_PID)
+CFLAGS += -DUSB_MANUFACTURER=$(USB_MANUFACTURER)
+CFLAGS += -DUSB_PRODUCT=$(USB_PRODUCT)
endif
-USB_DEVICES_COMPUTED := CDC,MSC
+USB_DEVICES =
+ifeq ($(CIRCUITPY_USB_HID),1)
+USB_DEVICES += HID
+endif
ifeq ($(CIRCUITPY_USB_MIDI),1)
-USB_DEVICES_COMPUTED := $(USB_DEVICES_COMPUTED),AUDIO
+USB_DEVICES += AUDIO
endif
-ifeq ($(CIRCUITPY_USB_HID),1)
-USB_DEVICES_COMPUTED := $(USB_DEVICES_COMPUTED),HID
+ifeq ($(CIRCUITPY_USB_MSC),1)
+USB_DEVICES += MSC
endif
-USB_DEVICES ?= "$(USB_DEVICES_COMPUTED)"
-
-ifndef USB_HID_DEVICES
-USB_HID_DEVICES = "KEYBOARD,MOUSE,CONSUMER,GAMEPAD"
+ifeq ($(CIRCUITPY_USB_SERIAL),1)
+USB_DEVICES += CDC
endif
-
-ifndef USB_HIGHSPEED
-USB_HIGHSPEED = 0
+ifeq ($(CIRCUITPY_USB_SERIAL2),1)
+# Inform TinyUSB there are two CDC devices.
+CFLAGS += -DCFG_TUD_CDC=2
+USB_DEVICES += CDC2
endif
-ifndef USB_CDC_EP_NUM_NOTIFICATION
-USB_CDC_EP_NUM_NOTIFICATION = 0
+USB_HID_DEVICES =
+ifeq ($(CIRCUITPY_USB_HID_CONSUMER),1)
+USB_HID_DEVICES += CONSUMER
endif
-
-ifndef USB_CDC_EP_NUM_DATA_OUT
-USB_CDC_EP_NUM_DATA_OUT = 0
+ifeq ($(CIRCUITPY_USB_HID_DIGITIZER),1)
+USB_HID_DEVICES += DIGITIZER
endif
-
-ifndef USB_CDC_EP_NUM_DATA_IN
-USB_CDC_EP_NUM_DATA_IN = 0
+ifeq ($(CIRCUITPY_USB_HID_GAMEPAD),1)
+USB_HID_DEVICES += GAMEPAD
endif
-
-ifndef USB_MSC_EP_NUM_OUT
-USB_MSC_EP_NUM_OUT = 0
+ifeq ($(CIRCUITPY_USB_HID_KEYBOARD),1)
+USB_HID_DEVICES += KEYBOARD
endif
-
-ifndef USB_MSC_EP_NUM_IN
-USB_MSC_EP_NUM_IN = 0
+ifeq ($(CIRCUITPY_USB_HID_MOUSE),1)
+USB_HID_DEVICES += MOUSE
endif
-
-ifndef USB_HID_EP_NUM_OUT
-USB_HID_EP_NUM_OUT = 0
+ifeq ($(CIRCUITPY_USB_HID_SYS_CONTROL),1)
+USB_HID_DEVICES += SYS_CONTROL
endif
-
-ifndef USB_HID_EP_NUM_IN
-USB_HID_EP_NUM_IN = 0
+ifeq ($(CIRCUITPY_USB_HID_XAC_COMPATIBLE_GAMEPAD),1)
+USB_HID_DEVICES += XAC_COMPATIBLE_GAMEPAD
endif
-ifndef USB_MIDI_EP_NUM_OUT
-USB_MIDI_EP_NUM_OUT = 0
+# RAW is not compatible with other HID devices.
+ifeq ($(CIRCUITPY_USB_HID_RAW),1)
+ ifneq ($(CIRCUITPY_USB_HID_DEVICES,)
+ $(error HID RAW must not be combined with other HID devices)
+ endif
+USB_HID_DEVICES += MOUSE
endif
-ifndef USB_MIDI_EP_NUM_IN
-USB_MIDI_EP_NUM_IN = 0
-endif
+USB_HIGHSPEED ?= 0
-ifndef USB_NUM_EP
-USB_NUM_EP = 0
-endif
+USB_CDC_EP_NUM_NOTIFICATION ?= 0
+USB_CDC_EP_NUM_DATA_OUT ?= 0
+USB_CDC_EP_NUM_DATA_IN ?= 0
+USB_MSC_EP_NUM_OUT ?= 0
+USB_MSC_EP_NUM_IN ?= 0
+USB_HID_EP_NUM_OUT ?= 0
+USB_HID_EP_NUM_IN ?= 0
+USB_MIDI_EP_NUM_OUT ?= 0
+USB_MIDI_EP_NUM_IN ?= 0
+USB_NUM_EP ?= 0
USB_DESCRIPTOR_ARGS = \
--manufacturer $(USB_MANUFACTURER)\
@@ -183,8 +187,8 @@ USB_DESCRIPTOR_ARGS = \
--pid $(USB_PID)\
--serial_number_length $(USB_SERIAL_NUMBER_LENGTH)\
--interface_name $(USB_INTERFACE_NAME)\
- --devices $(USB_DEVICES)\
- --hid_devices $(USB_HID_DEVICES)\
+ --devices "$(USB_DEVICES)"\
+ --hid_devices "$(USB_HID_DEVICES)"\
--max_ep $(USB_NUM_EP) \
--cdc_ep_num_notification $(USB_CDC_EP_NUM_NOTIFICATION)\
--cdc_ep_num_data_out $(USB_CDC_EP_NUM_DATA_OUT)\