summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorDan Halbert <halbert@halwitz.org>2019-10-15 15:55:21 -0400
committerDan Halbert <halbert@halwitz.org>2019-10-15 15:55:21 -0400
commitbe8136dc6d09e2c3af5c20c881662ebf51a778d8 (patch)
treed365470b40d1877449c929dce43c55a288550437 /tools
parentfc19e03128aeeb94a22fdff097e4d0576d768986 (diff)
parent63790f01f833ff197d92f80816f21a61e924bd72 (diff)
Merge remote-tracking branch 'adafruit/master' into bonding1
Diffstat (limited to 'tools')
-rw-r--r--tools/build_board_info.py4
-rw-r--r--tools/gen_usb_descriptor.py81
m---------tools/usb_descriptor0
3 files changed, 65 insertions, 20 deletions
diff --git a/tools/build_board_info.py b/tools/build_board_info.py
index 7d0d2996c..efa481a63 100644
--- a/tools/build_board_info.py
+++ b/tools/build_board_info.py
@@ -12,18 +12,20 @@ from sh.contrib import git
sys.path.append("adabot")
import adabot.github_requests as github
-SUPPORTED_PORTS = ["nrf", "atmel-samd", "stm32f4"]
+SUPPORTED_PORTS = ["nrf", "atmel-samd", "stm32f4", "cxd56"]
BIN = ('bin',)
UF2 = ('uf2',)
BIN_UF2 = ('bin', 'uf2')
HEX = ('hex',)
+SPK = ('spk',)
# Default extensions
extension_by_port = {
"nrf": UF2,
"atmel-samd": UF2,
"stm32f4": BIN,
+ "cxd56": SPK,
}
# Per board overrides
diff --git a/tools/gen_usb_descriptor.py b/tools/gen_usb_descriptor.py
index c4ff74d39..21a480f99 100644
--- a/tools/gen_usb_descriptor.py
+++ b/tools/gen_usb_descriptor.py
@@ -32,8 +32,28 @@ 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('--msc_max_packet_size', type=int, default=64,
+ help='Max packet size for MSC')
+parser.add_argument('--no-renumber_endpoints', dest='renumber_endpoints', action='store_false',
+ help='use to not renumber endpoint')
+parser.add_argument('--cdc_ep_num_notification', type=int, default=0,
+ help='endpoint number of CDC NOTIFICATION')
+parser.add_argument('--cdc_ep_num_data_out', type=int, default=0,
+ help='endpoint number of CDC DATA OUT')
+parser.add_argument('--cdc_ep_num_data_in', type=int, default=0,
+ help='endpoint number of CDC DATA IN')
+parser.add_argument('--msc_ep_num_out', type=int, default=0,
+ help='endpoint number of MSC OUT')
+parser.add_argument('--msc_ep_num_in', type=int, default=0,
+ help='endpoint number of MSC IN')
+parser.add_argument('--hid_ep_num_out', type=int, default=0,
+ help='endpoint number of HID OUT')
+parser.add_argument('--hid_ep_num_in', type=int, default=0,
+ help='endpoint number of HID IN')
+parser.add_argument('--midi_ep_num_out', type=int, default=0,
+ help='endpoint number of MIDI OUT')
+parser.add_argument('--midi_ep_num_in', type=int, default=0,
+ help='endpoint number of MIDI IN')
parser.add_argument('--output_c_file', type=argparse.FileType('w'), required=True)
parser.add_argument('--output_h_file', type=argparse.FileType('w'), required=True)
@@ -47,9 +67,32 @@ 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")
-
+if not args.renumber_endpoints:
+ if 'CDC' in args.devices:
+ if args.cdc_ep_num_notification == 0:
+ raise ValueError("CDC notification endpoint number must not be 0")
+ elif args.cdc_ep_num_data_out == 0:
+ raise ValueError("CDC data OUT endpoint number must not be 0")
+ elif args.cdc_ep_num_data_in == 0:
+ raise ValueError("CDC data IN endpoint number must not be 0")
+
+ if 'MSC' in args.devices:
+ if args.msc_ep_num_out == 0:
+ raise ValueError("MSC endpoint OUT number must not be 0")
+ elif args.msc_ep_num_in == 0:
+ raise ValueError("MSC endpoint IN number must not be 0")
+
+ if 'HID' in args.devices:
+ if args.args.hid_ep_num_out == 0:
+ raise ValueError("HID endpoint OUT number must not be 0")
+ elif args.hid_ep_num_in == 0:
+ raise ValueError("HID endpoint IN number must not be 0")
+
+ if 'AUDIO' in args.devices:
+ if args.args.midi_ep_num_out == 0:
+ raise ValueError("MIDI endpoint OUT number must not be 0")
+ elif args.midi_ep_num_in == 0:
+ raise ValueError("MIDI endpoint IN number must not be 0")
class StringIndex:
"""Assign a monotonically increasing index to each unique string. Start with 0."""
@@ -120,7 +163,7 @@ cdc_comm_interface = standard.InterfaceDescriptor(
cdc_union,
standard.EndpointDescriptor(
description="CDC comm in",
- bEndpointAddress=0x0 | standard.EndpointDescriptor.DIRECTION_IN,
+ bEndpointAddress=args.cdc_ep_num_notification | standard.EndpointDescriptor.DIRECTION_IN,
bmAttributes=standard.EndpointDescriptor.TYPE_INTERRUPT,
wMaxPacketSize=0x0040,
bInterval=0x10)
@@ -133,11 +176,11 @@ cdc_data_interface = standard.InterfaceDescriptor(
subdescriptors=[
standard.EndpointDescriptor(
description="CDC data out",
- bEndpointAddress=0x0 | standard.EndpointDescriptor.DIRECTION_OUT,
+ bEndpointAddress=args.cdc_ep_num_data_out | standard.EndpointDescriptor.DIRECTION_OUT,
bmAttributes=standard.EndpointDescriptor.TYPE_BULK),
standard.EndpointDescriptor(
description="CDC data in",
- bEndpointAddress=0x0 | standard.EndpointDescriptor.DIRECTION_IN,
+ bEndpointAddress=args.cdc_ep_num_data_in | standard.EndpointDescriptor.DIRECTION_IN,
bmAttributes=standard.EndpointDescriptor.TYPE_BULK),
])
@@ -153,16 +196,16 @@ msc_interfaces = [
subdescriptors=[
standard.EndpointDescriptor(
description="MSC in",
- bEndpointAddress=0x0 | standard.EndpointDescriptor.DIRECTION_IN,
+ bEndpointAddress=args.msc_ep_num_in | standard.EndpointDescriptor.DIRECTION_IN,
bmAttributes=standard.EndpointDescriptor.TYPE_BULK,
- bInterval=0),
+ bInterval=0,
+ wMaxPacketSize=args.msc_max_packet_size),
standard.EndpointDescriptor(
description="MSC 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),
+ bEndpointAddress=(args.msc_ep_num_out | standard.EndpointDescriptor.DIRECTION_OUT),
bmAttributes=standard.EndpointDescriptor.TYPE_BULK,
- bInterval=0)
+ bInterval=0,
+ wMaxPacketSize=args.msc_max_packet_size)
]
)
]
@@ -197,13 +240,13 @@ else:
# and will fail (possibly silently) if both are not supplied.
hid_endpoint_in_descriptor = standard.EndpointDescriptor(
description="HID in",
- bEndpointAddress=0x0 | standard.EndpointDescriptor.DIRECTION_IN,
+ bEndpointAddress=args.hid_ep_num_in | standard.EndpointDescriptor.DIRECTION_IN,
bmAttributes=standard.EndpointDescriptor.TYPE_INTERRUPT,
bInterval=8)
hid_endpoint_out_descriptor = standard.EndpointDescriptor(
description="HID out",
- bEndpointAddress=0x0 | standard.EndpointDescriptor.DIRECTION_OUT,
+ bEndpointAddress=args.hid_ep_num_out | standard.EndpointDescriptor.DIRECTION_OUT,
bmAttributes=standard.EndpointDescriptor.TYPE_INTERRUPT,
bInterval=8)
@@ -267,12 +310,12 @@ audio_midi_interface = standard.InterfaceDescriptor(
),
standard.EndpointDescriptor(
description="MIDI data out to CircuitPython",
- bEndpointAddress=0x0 | standard.EndpointDescriptor.DIRECTION_OUT,
+ bEndpointAddress=args.midi_ep_num_out | standard.EndpointDescriptor.DIRECTION_OUT,
bmAttributes=standard.EndpointDescriptor.TYPE_BULK),
midi.DataEndpointDescriptor(baAssocJack=[midi_in_jack_emb]),
standard.EndpointDescriptor(
description="MIDI data in from CircuitPython",
- bEndpointAddress=0x0 | standard.EndpointDescriptor.DIRECTION_IN,
+ bEndpointAddress=args.midi_ep_num_in | standard.EndpointDescriptor.DIRECTION_IN,
bmAttributes=standard.EndpointDescriptor.TYPE_BULK,
bInterval = 0x0),
midi.DataEndpointDescriptor(baAssocJack=[midi_out_jack_emb]),
@@ -316,7 +359,7 @@ if 'AUDIO' in args.devices:
# util.join_interfaces() will renumber the endpoints to make them unique across descriptors,
# and renumber the interfaces in order. But we still need to fix up certain
# interface cross-references.
-interfaces = util.join_interfaces(*interfaces_to_join)
+interfaces = util.join_interfaces(interfaces_to_join, renumber_endpoints=args.renumber_endpoints)
# Now adjust the CDC interface cross-references.
diff --git a/tools/usb_descriptor b/tools/usb_descriptor
-Subproject dac9689e274844294bbe4fd1b78defff9ff2753
+Subproject 701cafc50e2e574dccaf7a340eedbd64a0b41a4