summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorDan Halbert <halbert@halwitz.org>2019-09-04 21:45:16 -0400
committerDan Halbert <halbert@halwitz.org>2019-09-04 21:45:16 -0400
commit195de97c67c4d1daa6ec8659bbdf30b8e7f4fff6 (patch)
tree7391bf0f5f5cdf77910f12ee56ad562ac41ac51a /tools
parent95a5a57f949c2f00caa144d246ce2a5477fb7c6d (diff)
use only one endpoint pair for MSC except on SAMD21
Diffstat (limited to 'tools')
-rw-r--r--tools/gen_usb_descriptor.py9
1 files changed, 8 insertions, 1 deletions
diff --git a/tools/gen_usb_descriptor.py b/tools/gen_usb_descriptor.py
index 82d2daf0f..87219194b 100644
--- a/tools/gen_usb_descriptor.py
+++ b/tools/gen_usb_descriptor.py
@@ -32,6 +32,8 @@ parser.add_argument('--devices', type=lambda l: tuple(l.split(',')), default=DEF
help='devices to include in descriptor (AUDIO includes MIDI support)')
parser.add_argument('--hid_devices', type=lambda l: tuple(l.split(',')), default=DEFAULT_HID_DEVICES,
help='HID devices to include in HID report descriptor')
+parser.add_argument('--msc_num_endpoint_pairs', type=int, default=1,
+ help='Use 1 or 2 endpoint pairs for MSC (1 bidirectional, or 1 input + 1 output (required by SAMD21))')
parser.add_argument('--output_c_file', type=argparse.FileType('w'), required=True)
parser.add_argument('--output_h_file', type=argparse.FileType('w'), required=True)
@@ -45,6 +47,9 @@ unknown_hid_devices = list(frozenset(args.hid_devices) - ALL_HID_DEVICES_SET)
if unknown_hid_devices:
raise ValueError("Unknown HID devices(s)", unknown_hid_devices)
+if args.msc_num_endpoint_pairs not in (1, 2):
+ raise ValueError("--msc_num_endpoint_pairs must be 1 or 2")
+
class StringIndex:
"""Assign a monotonically increasing index to each unique string. Start with 0."""
@@ -153,7 +158,9 @@ msc_interfaces = [
bInterval=0),
standard.EndpointDescriptor(
description="MSC out",
- bEndpointAddress=0x1 | standard.EndpointDescriptor.DIRECTION_OUT,
+ # SAMD21 needs to use a separate pair of endpoints for MSC.
+ bEndpointAddress=((0x1 if args.msc_num_endpoint_pairs == 2 else 0x0) |
+ standard.EndpointDescriptor.DIRECTION_OUT),
bmAttributes=standard.EndpointDescriptor.TYPE_BULK,
bInterval=0)
]