summaryrefslogtreecommitdiff
path: root/docs/info/changelog.rst
blob: b4423f81e14c967cace086e87c440b8a219c60b7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
*********
Changelog
*********

0.19.0
======

General
-------

- New MCUs and Boards:

  - Add ESP32-H4, ESP32-C5, ESP32-C61 support
  - Add STM32U0, STM32WBA, STM32N6
  - Add AT32F405, AT32F403A, AT32F415, AT32F423 support
  - Add CH32V305 support and CH32V20x USB host support
  - Add MCXA156 SDK 2.16 support and FRDM-MCXA156 board

API Changes
-----------

- Core APIs
  - Add weak callbacks with new syntax for better compiler compatibility
  - Add ``tusb_deinit()`` to cleanup stack
  - Add time functions: ``tusb_time_millis_api()`` and ``tusb_time_delay_ms_api()``
  - Add ``osal_critical`` APIs for critical section handling
  - Introduce ``xfer_isr()`` callback for ISO transfer optimization in device classes

- Device APIs
  - CDC: Add notification support ``tud_cdc_configure()``, ``tud_cdc_n_notify_uart_state()``,
    ``tud_cdc_n_notify_conn_speed_change()``, ``tud_cdc_notify_complete_cb()``
  - MSC: Add ``tud_msc_inquiry2_cb()`` with bufsize parameter, update ``tud_msc_async_io_done()``
    with ``in_isr`` parameter
  - Audio: Add ``tud_audio_n_mounted()`` and various FIFO access functions
  - MTP: Add ``tud_mtp_mounted()``, ``tud_mtp_data_send()``, ``tud_mtp_data_receive()``,
    ``tud_mtp_response_send()``, ``tud_mtp_event_send()``

- Host APIs
  - Core: Add ``tuh_edpt_close()``, ``tuh_address_set()``, ``tuh_descriptor_get_device_local()``,
    ``tuh_descriptor_get_string_langid()``, ``tuh_connected()``, ``tuh_bus_info_get()``
  - Add enumeration callbacks: ``tuh_enum_descriptor_device_cb()``,
    ``tuh_enum_descriptor_configuration_cb()``
  - CDC: Add ``tuh_cdc_get_control_line_state_local()``, ``tuh_cdc_get/set_dtr/rts()``,
    ``tuh_cdc_connect/disconnect()`` and sync versions of all control APIs
  - MIDI: Add ``tuh_midi_itf_get_info()``, ``tuh_midi_packet_read_n()``,
    ``tuh_midi_packet_write_n()``, ``tuh_midi_read_available()``, ``tuh_midi_write_flush()``,
    ``tuh_midi_descriptor_cb()``

Controller Driver (DCD & HCD)
-----------------------------

- DWC2
  - Support DWC2 v4.30a with improved reset procedure
  - Fix core reset: wait for AHB idle before reset
  - Add STM32 DWC2 data cache support with proper alignment
  - Host improvements:
    - Fix disconnect detection and SOF flag handling
    - Fix HFIR timing off-by-one error
    - Retry IN token immediately for bInterval=1
    - Proper attach debouncing (200ms)
    - Fix all retry intervals
    - Resume OUT transfer when PING ACKed
  - Fix enumeration racing conditions
  - Refactor bitfields for better code generation

- FSDEV (STM32)
  - Fix AT32 compile issues after single-buffered endpoint changes
  - Add configurable single-buffered isochronous endpoints
  - Fix STM32H7 recurrent suspend ISR
  - Fix STM32L4 GPIOD clock enable for variants without GPIOD
  - Fix STM32 PHYC PLL stability wait
  - Improve PMA size handling for STM32U0

- EHCI
  - Fix removed QHD getting reused
  - Fix NXP USBPHY disconnection detection

- Chipidea/NXP
  - Fix race condition with spinlock
  - Improve iMXRT support: fix build, disable BOARD_ConfigMPU, fix attach debouncing on port1 highspeed
  - Fix iMXRT1064 and add to HIL test pool

- MAX3421E
  - Use spinlock for thread safety instead of atomic flag
  - Implement ``hcd_edpt_close()``

- RP2040
  - Fix audio ISO transfer: reset state before notifying stack
  - Fix CMake RTOS cache variable
  - Abort transfer if active in ``iso_activate()``

- SAMD
  - Add host controller driver support

Device Stack
------------

- USBD Core
  - Introduce ``xfer_isr()`` callback for interrupt-time transfer handling
  - Add ``usbd_edpt_xfer_fifo()`` stub
  - Revert endpoint busy/claim status if ``xfer_isr()`` defers to ``xfer_cb()``

- Audio
  - Major simplification of UAC driver and alt settings management
  - Move ISO transfers into ``xfer_isr()`` for better performance
  - Remove FIFO mutex (single producer/consumer optimization)
  - Add implicit feedback support for data IN endpoints
  - Fix alignment issues
  - Update buffer macros with cache line size alignment

- CDC
  - Add notification support: ``CFG_TUD_CDC_NOTIFY``, ``tud_cdc_n_notify_conn_speed_change()``, ``tud_cdc_notify_complete_cb()``
  - Reduce default bInterval from 16ms to 1ms for better responsiveness
  - Rename ``tud_cdc_configure_fifo()`` to ``tud_cdc_configure()`` and add ``tx_overwritable_if_not_connected`` option
  - Fix web serial robustness with major overhaul and logic cleanup

- HID
  - Add Usage Page and Table for Power Devices (0x84 - 0x85)
  - Fix HID descriptor parser variable size and 4-byte item handling
  - Add consumer page configurations

- MIDI
  - Fix MIDI interface descriptor handling after audio streaming interface
  - Skip RX data with all zeroes

- MSC
  - Add async I/O support for MSC using ``tud_msc_async_io_done()``
  - Add ``tud_msc_inquiry2_cb()`` with bufsize for full inquiry response

- MTP
  - Add new Media Transfer Protocol (MTP) device class driver
  - Support MTP operations: GetDeviceInfo, SendObjectInfo, SendObject
  - Add MTP event support with ``tud_mtp_event_send()``
  - Implement filesystem example with callbacks
  - Add hardware-in-the-loop testing support

- NCM
  - Add USB NCM link state control support
  - Fix DHCP offer/ACK destination

- USBTMC
  - Add vendor-specific message support

- Vendor
  - Fix vendor device reset and open issues
  - Fix descriptor parsing for ``CFG_TUD_VENDOR > 1``
  - Fix vendor FIFO argument calculation

Host Stack
----------

- USBH Core
  - Major enumeration improvements:
    - Fix enumeration racing conditions
    - Add proper attach debouncing with hub/rootport handling (200ms delay)
    - Reduce ``ENUM_DEBOUNCING_DELAY_MS`` to 200ms
    - Always get language ID, manufacturer, product, and serial strings during enumeration
    - Always get first 2 bytes of string descriptor to determine length (prevents buffer overflow)
    - Support devices with multiple configurations
  - Add ``tuh_enum_descriptor_device_cb()`` and ``tuh_enum_descriptor_configuration_cb()`` callbacks
  - Add ``tuh_descriptor_get_string_langid()`` API
  - Hub improvements:
    - Check status before getting first device descriptor
    - Properly handle port status and change detection
    - Queue status endpoint for detach/remove events
    - Fix hub status change endpoint handling
  - Fix endpoint management:
    - ``hcd_edpt_open()`` returns false if endpoint already opened
    - Add ``hcd_edpt_close()`` implementation
    - Abort pending transfers on close
  - Add roothub debouncing flag to ignore attach/remove during debouncing
  - Move address setting and bus info management to separate structures
  - Force removed devices in same bus info before setting address

- CDC Serial Host
  - Major refactor to generalize CDC serial drivers (FTDI, CP210x, CH34x, PL2303, ACM)
  - Add explicit ``sync()`` API with ``TU_API_SYNC()`` returning ``tusb_xfer_result_t``
  - Rename ``tuh_cdc_get_local_line_coding()`` to ``tuh_cdc_get_line_coding_local()``
  - Add ``tuh_cdc_get_control_line_state_local()``
  - Implement ``tuh_cdc_get/set_dtr/rts()`` as inline functions

- MIDI Host
  - Major API changes:
    - Rename ``tuh_midi_stream_flush()`` to ``tuh_midi_write_flush()``
    - Add ``tuh_midi_packet_read_n()`` and ``tuh_midi_packet_write_n()``
    - Add ``CFG_TUH_MIDI_STREAM_API`` to opt out of stream API
    - Change API to use index instead of device address (supports multiple MIDI per device)
  - Rename ``tuh_midi_get_num_rx/tx_cables()`` to ``tuh_midi_get_rx/tx_cable_count()``
  - Add ``tuh_midi_descriptor_cb()`` and ``tuh_midi_itf_get_info()``

- MSC Host
  - Continue async I/O improvements

- HID Host
  - Fix version string to actually show version

0.18.0
======

General
-------

- New MCUs:

  - Add esp32p4 OTG highspeed support
  - Add stm32 u0, c0, h7rs

- Better support dcache, make sure all usb-transferred buffer are cache line aligned and occupy full cache line
- Build ARM IAR with CircleCI
- Improve HIL with `dual/host_info_to_device_cdc`` optional for pico/pico2, enable dwc2 dma test

API Changes
-----------

- Change signature of ``tusb_init(rhport, tusb_rhport_init_t*)``, ``tusb_init(void)`` is now deprecated but still available for backward compatibility
- Add new ``tusb_int_handler(rhport, in_isr)``
- Add time-related APIs: ``tusb_time_millis_api()`` and ``tusb_time_delay_ms_api()`` for non-RTOS, required for some ports/configuration
- New configuration macros:

  - ``CFG_TUD/TUH_MEM_DCACHE_ENABLE`` enable data cache sync for endpoint buffer
  - ``CFG_TUD/TUH_MEM_DCACHE_LINE_SIZE`` set cache line size
  - ``CFG_TUD/TUH_DWC2_SLAVE_ENABLE`` enable dwc2 slave mode
  - ``CFG_TUD/TUH_DWC2_DMA_ENABLE`` enable dwc2 dma mode

Controller Driver (DCD & HCD)
-----------------------------

- DWC2
  - Add DMA support for both device and host controller
  - Add host driver support including: full/high speed, control/bulk/interrupt (CBI) transfer, split CBI i.e FS/LS attached via highspeed hub, hub support

- RP2: implement ``dcd_edpt_iso_alloc()`` and ``dcd_edpt_iso_activate()`` for isochronous endpoint
- iMXRT1170 support M4 core

Device Stack
------------

- Vendor Fix  class reset
- NCM fix recursions in ``tud_network_recv_renew()``
- Audio fix align issue of ``_audiod_fct.alt_setting``
- UVC support format frame based
- Change ``dcd_dcache_()`` return type from void to bool
- HID add Usage Table for Physical Input Device Page (0x0F)

Host Stack
----------

- Fix an duplicated attach issue which cause USBH Defer Attach until current enumeration complete message

0.17.0
======

General
-------

- Improved CI: build both cmake and make. Make use of CircleCI for part of build process to speed up CI
- Add CodeQL Workflow for Code Security Analysis
- Add Clang compiler support
- Add default implementation for weak callbacks functions for better Keil compatibility
- Upgrade hardware-in-the-loop (HIL) testing with more boards and examples: including dual stack example

Controller Driver (DCD & HCD)
-----------------------------

- Chipidea

  - Support MCXA

- DWC2

  - Fix tickless issue with stm32f7: disable ULPI clock during sleep when using internal phy
  - Fix SOF interrupt handling
  - Fix fifo level half/empty issue
  - Add DWC2 Test Mode support.
  - for esp32 force disconnect/connect using USB_WRAP otg pad override

- FSDEV

  - Rewrite and Generalize driver to support non-stm32 mcu such as wch
  - Simplify PMA, HW FIFO access and bit manipulation for different access scheme 1x16, 2x16 and 32 bit
  - Add support for ch32 usbd e.g ch32v203
  - Add support for STM32G4 and STM32U5 microcontrollers.
  - Fix h5 (32-bit) errata 2.15.1: Buffer description table update completes after CTR interrupt triggers
  - ISO EP buffer allocation improvements, implement ``dcd_edpt_close_all()``

  - Fix ch32v203 race condition and stability issue with

    - fix ch32v203 seems to unconditionally accept ZLP on EP0 OUT.
    - fix v203 race condition between rx bufsize and RX_STAT which cause PMAOVR, occurs with WRITE10
    - correctly handle setup prepare at ``dcd_edpt0_status_complete()``, which fixes the race condition with windows where we could miss setup packet (setup bit set, but count = 0)

- MAX3421E

  - Add support for rp2040, esp32 (c3, c6, h2, etc..)
  - Add ``hcd_deinit()`` for max3421
  - Retry NAK handling next frame to reduce CPU and SPI bus usage
  - add ``cpuctl`` and ``pinctl`` to ``tuh_configure()`` option for max3421
  - Implement hcd abort transfer for Max3421
  - Properly Handle NAK Response in MAX3421E driver: correctly switch and skip writing to 2 FIFOs when NAK received. Otherwise, the driver may hang in certain conditions.

- MSP430: support non-bus-powered

- MUSB

  - Add support for Analoog devices: max32650, max32666, max32690, max3278002

- nRF

  - Fix ``dcd_edpt_open()`` for iso endpoint
  - Handle ISOOUT CRC errors
  - Add compile support with old nordic sdk
  - Fix a few race conditions

- OHCI

  - Allow more than 16 devices

- RP2040

  - Correctly abort control transfer when new setup arrived. Due to RP2040-E2 only able to fix B2 or later
  - Implement hcd abort transfer for rp2040
  - Add support for rp2350

- RUSB2

  - Support ra2a1 pipe number scheme

- WCH CH32

  - Added support for USB OTG/FS and FSDev Driver. Update CH32V307 to allow manual select FS or HS driver.
  - Fixed various bugs in CH32v307 usbhs driver: endpoint handling and data transfer management.

Device Stack
------------

- Add ``tud_deinit()`` and ``class driver deinit()`` to deinitialize TinyUSB device stack.
- Add support for generic SOF callback.
- Add set address recovery time 2ms per USB spec.

- Audio

  - Add audio_test_freertos & audio_4_channel_mic_freertos
  - Improved support for Audio Class 2.0 (UAC2) with various bug fixes.
  - Add feedback by fifo counting.

- Bluetooth HCI

  - Issue ZLP on ACL IN ep when transfer is multiple of endpoint max packet size

- CDC

  - Add ``tud_cdc_configure_fifo()`` to make RX/TX buffer persistent (not clear when disconnected)
  - Add missing capability bit for CDC ACM serial break support
  - Enhanced CDC class with better handling of large data transmissions.
  - Add missing capability bit for CDC ACM serial break support

- HID

  - Added missing key codes for keypad
  - Added HID Lighting and Illumination functionality
  - Fixed issues in the HID class for more reliable device enumeration.
  - Support HID Mouse with absolute positioning
  - Use separate buffer for control SET_REPORT, fix conflict with interrupt endpoint out

- MSC: Added support for SCSI_CMD_PREVENT_ALLOW_MEDIUM_REMOVAL

- Net

  - Rewrite of NCM device driver to improve throughput
  - removed obsolete ``tud_network_link_state_cb()``

- USBTMC Added notification support

- Vendor

  - Migrate to new endpoint stream API, support non-buffered TX/RX
  - Add ZLP for ``write()`` when needed

- Video

  - Enhance UVC descriptors and example
  - Video Added support for USB Video Class (UVC) with MJPEG.
  - Fix multiple interfaces, add an example of 2ch video capture.
  - Fix race for ``tud_video_n_streaming()`` check

Host Stack
----------

- Added ``tuh_deinit()`` to de-initialize TinyUSB host stack.
- Added support for new USB mass storage class APIs.
- Improved error handling and retry mechanisms for unstable devices.

- CDC Serial

  - Add support for ch34x
  - Allow to overwrite ``CFG_TUH_CDC_FTDI/CP210X/CH32X_VID_PID_LIST``
  - Enhanced stability of CDC-ACM devices during enumeration.

- HID

  - Add ``tuh_hid_receive_abort()``
  - Add ``tuh_hid_get_report()``

- Hub

  - Prevent status request to invalid ep_num
  - Fix double status xfer
  - unroll hub removal

0.16.0
======

- New controller driver: MAX3421e (usb host shield), rusb2 (Renesas USB2.0), ChipIdea fullspeed
- New MCUs: MCXn9, nRF5340, STM32: G0, G4, L5, U575, U5A5, RA6m5, CH32F20x
- Add initial TypeC PowerDelivery support with STM32G4
- Remove submodules and use python script to manage repo dependencies #1947
- Add CMake support for most families and boards, move build file from tools/ to examples/build_system
- Add ETM trace support with JTrace for nrf52840, nrf5340, mcb1857, stm32h743eval, ra6m5
- [osal] Make it possible to override the ``osal_task_delay()`` in osal_none
- Add CDC+UAC2 composite device example
- Enhance Hardware-in-the-loop (HIL) testing with more boards: rp2040, stm32l412nucleo, stm32f746disco, lpcxpresso43s67

Controller Driver (DCD & HCD)
-----------------------------

- Add new ISO endpoint API: ``dcd_edpt_iso_alloc()`` and ``dcd_edpt_iso_activate()``
- Remove legacy driver st/synopsys

- EHCI

  - [iMXRT] Add dache clean/invalidate when memory is in cacheable memory
  - Fix portsc write issue which cause problem with enumeration
  - Fix an issue when doing port reset write to portsc
  - Fix port change detect is not recognized when power on with attached device
  - Fix xfer failed with disconnected device as stalled
  - Fix error on EHCI causes xfer error in non-queued qhd which cause memory fault
  - Un-roll recursive hub removal with usbh queue
  - Fix issue when removing queue head
  - Implement ``hcd_edpt_abort_xfer()``
  - use standard USB complete interrupt instead of custom chipidea async/period interrupt to be more compatible with other ehci implementation
  - refactor usb complete & error isr processing, merge, update. Fix EHCI QHD reuses QTD on wrong endpoint
  - Improve bus reset, fix ``send_setup()`` not carried out if halted previously
  - Fix clear qhd halted bit if not caused by STALL protocol to allow for next transfer

- ChipIdea Highspeed

  - Fix control transfer issue when previous status and new setup complete in the same isr frame
  - [imxrt] Add dcache support for cache region

- ChipIdea Fullspeed

  - Generalize ChipIdea Fullspeed driver for mcxn9 (port 0), kinetis

- nrf

  - Fix DMA race condition with ISO OUT transfer #1946
  - Add support for nRF5340 with pca10095 board

- Renesas rusb2

  - Generalize rusb2 driver for ra, rx mcus
  - rework both dcd and hcd for better multiple ports support
  - Add support for board with HS USB port: ra6m5 port1

- rp2040

  - [dcd] Make writes to SIE_CTRL aware of concurrent access
  - [hcd] add ``hcd_frame_number()``, ``hcd_edpt_abort_xfer()`` for pio-usb host

- stm32 fsdev:

  - Add STM32L5 support
  - Implement ``dcd_edpt_iso_alloc()`` and ``dcd_edpt_iso_activate()``

- OHCI

  - Allows configurable root hub ports, handles SMM mode (Ref OHCI spec 5.1.1.3.3) and Bios mode (Ref OHCI spec 5.1.1.3.4)
  - Fix FrameIntervalToggle must be toggled after we write the FrameInterval (Ref OHCI Spec 7.3.1)
  - Wait PowerOnToPowerGoodTime after we enable power of the RH ports (Ref OHCI Spec 7.4.1)
  - Generate port interrupts for devices already connected during init.
  - Fix issue when removing queue head
  - Disable MIE during IRQ processing and clear HccaDoneHead on completion as per OCHI Spec Page 80

Device Stack
------------

- Add optional hooks ``tud_event_hook_cb()``
- Audio (UAC2)

  - Fix feedback EP buffer alignment.
  - Fix encoding, update example
  - Improve IN transfer

- Bluetooth

  - Add historical EP compatibility for Bluetooth HCI

- CDC

  - Fix line_coding alignment
  - Fix typo in cdc line coding enum

- MIDI

  - Fix ``stream_write()`` always writes system messages to cable 0
  - Fix incorrect NOTE_ON, NOTE_OFF definitions

- USBTMC: Fix tmc488 bit order

- Vendor: fix ``read()``/``write()`` race condition

- Video (UVC)

  - Add the capability for video class to handle a bulk endpoint in the streaming interface.

Host Stack
----------

- USBH

  - Add new APIs: ``tuh_interface_set()``, ``tuh_task_event_ready()``, ``tuh_edpt_abort_xfer()``, ``tuh_rhport_reset_bus()``, ``tuh_rhport_is_active()``
  - Fix issue when device generate multiple attach/detach/attach when plugging in
  - Prefer application callback over built-in driver on transfer complete event
  - Correct ``hcd_edpt_clear_stall()`` API signature
  - Separate bus reset delay and contact debouncing delay in enumeration
  - Support ``usbh_app_driver_get_cb()`` for application drivers
  - Fix usbh enumeration removal race condition
  - Add optional hooks ``tuh_event_hook_cb()``

- CDC

  - Breaking: change ``tuh_cdc_itf_get_info()`` to use tuh_itf_info_t instead of tuh_cdc_info_t
  - Fix cdc host enumeration issue when device does not support line request
  - Add support for vendor usb2uart serial: ftdi, cp210x, ch9102f
  - Improve sync control API e.g  ``tuh_cdc_set_control_line_state()``, ``tuh_cdc_set_line_coding()``

- HID

  - Add new APIs ``tuh_hid_send_report()``, ``tuh_hid_itf_get_info()``, ``tuh_hid_receive_ready()``, ``tuh_hid_send_ready()``, ``tuh_hid_set_default_protocol()``
  - Change meaning of CFG_TUH_HID to total number of HID interfaces supported. Previously ``CFG_TUH_HID`` is max number of interfaces per device which is rather limited and consume more resources than needed.

- HUB

  - Fix handling of empty "status change" interrupt
  - Fix issue with hub status_change is not aligned

- MSC

  - Fix bug in ``tuh_msc_ready()``
  - Fix host msc get maxlun not using aligned section memory

0.15.0
======

- Add codespell to detect typo
- Add support for fuzzing and bagde for oss-fuzz
- [osal]

  - Allow the use of non-static allocation for FreeRTOS
  - Fix FreeRTOS wrong task switch in some cases

- Fix tu_fifo memory overflown when repeatedly write to overwritable fifo (accumulated more than 2 depths)
- Better support for IAR (ARM) with ci build check for stm32 mcus.
- Fix Windows build for some mingw gnu make situations

Controller Driver (DCD & HCD)
-----------------------------

- Add new port support (WIP) for WCH CH32V307 USB Highspeed
- Add new port support (WIP) for PIC32MM/MX & PIC24

- [nRF]

  - Fix endpoint internal state when closed
  - Fix reception of large ISO packets

- [rp2040]

  - [dcd] Implement workaround for Errata 15. This enable SOF when bulk-in endpoint is in use and reduce its bandwidth to only 80%
  - [hcd] Fix shared irq slots filling up when ``hcd_init()`` is called multiple times
  - [hcd] Support host bulk endpoint using hw "interrupt" endpoint. Note speed limit is 64KB/s

- [samd][dcd] Add support for ISO endpoint
- [dwc2][dcd] Add support for stm32u5xx
- [esp32sx] Fix Isochronous transfers only transmitted on even frame
- [lpc_ip3511][dcd] Add isochronous support and fix endpoint accidental write
- [ft90x] Improve and enhance support for FT9xx MCU, tested with more examples

Device Stack
------------

- [Video]

  - Add support for MJPEG
  - Fix probe on macOS

- [MIDI]

  - Support port name strings
  - fix MS Header wTotalLength computation

- [HID]

  - Add FIDO descriptor template
  - change length in ``tud_hid_report_complete_cb()`` from ``uint8_t`` to ``uint16_t``

- [CDC]

  - Fix autoflush for FIFO < MPS
  - Fix tx fifo memory overflown when DTR is not set and ``tud_cdc_write()`` is called repeatedly with large enough data

- [USBTMC] Fix packet size with highspeed

Host Stack
----------

- Retry a few times with transfers in enumeration since device can be unstable when starting up
- [MSC] Rework host masstorage API. Add new ``host/msc_file_explorer`` example
- [CDC]

  - Add support for host cdc
  - Fix host cdc with device without IAD e.g Arduino Due

0.14.0
======

- Improve compiler support for CCRX and IAR
- Add timeout to ``osal_queue_receive()``
- Add ``tud_task_ext(timeout, in_isr)`` as generic version of ``tud_task()``. Same as ``tuh_task_ext()``, ``tuh_task()``
- Enable more warnings ``-Wnull-dereference -Wuninitialized -Wunused -Wredundant-decls -Wconversion``
- Add new examples

  - ``host/bare_api`` to demonstrate generic (app-level) enumeration and endpoint transfer
  - ``dual/host_hid_to_device_cdc`` to run both device and host stack concurrently, get HID report from host and print out to device CDC. This example only work with multiple-controller MCUs and rp2040 with the help of pio-usb as added controller.

Controller Driver (DCD & HCD)
-----------------------------

- Enhance rhports management to better support dual roles

  - ``CFG_TUD_ENABLED``/``CFG_TUH_ENABLED``, ``CFG_TUD_MAX_SPEED``/``CFG_TUH_MAX_SPEED`` can be used to replace ``CFG_TUSB_RHPORT0_MODE``/``CFG_TUSB_RHPORT1_MODE``
  - ``tud_init(rphort)``, ``tuh_init(rhport)`` can be used to init stack on specified roothub port (controller) instead of ``tusb_init(void)``
- Add dcd/hcd port specific defines ``TUP_`` (stand for tinyusb port-specific)
- [dwc2]

  - Update to support stm32 h72x, h73x with only 1 otg controller
  - Fix overwrite with grstctl when disable endpoint
- [EHCI] Fix an issue with EHCI driver
- [msp430] Fix for possible bug in msp430-elf-gcc 9.3.0
- [nrf5x] Fix DMA access race condition using atomic function
- [pic32] Fix PIC32 santiy
- [rp2040]

  - Add PICO-PIO-USB as controller (device/host) support for rp2040
  - Use shared IRQ handlers, so user can also hook the USB IRQ
  - Fix resumed signal not reported to device stack
- [stm32fsdev] Add support for stm32wb55

Device Stack
------------

- [Audio] Add support for feedback endpoint computation

  - New API ``tud_audio_feedback_params_cb()``, ``tud_audio_feedback_interval_isr()``.
  - Supported computation method are: frequency with fixed/float or power of 2. Feedback with fifo count is not yet supported.
  - Fix nitfs (should be 3) in ``TUD_AUDIO_HEADSET_STEREO_DESCRIPTOR``
  - Fix typo in ``audiod_rx_done_cb()``

- [DFU] Fix coexistence with other interfaces BTH, RNDIS
- [MSC] Fix inquiry response additional length field
- [Venndor] Improve write performance

Host Stack
----------

- Add new API ``tuh_configure(rhport, cfg_id, cfg_param)`` for dynamnic port specific behavior configuration
- [HID] Open OUT endpoint if available
- [Hub] hub clear port and device interrupts
- [USBH] Major improvement

  - Rework usbh control transfer with complete callback. New API ``tuh_control_xfer()`` though still only carry 1 usbh (no queueing) at a time.
  - Add generic endpoint transfer with ``tuh_edpt_open()``, ``tuh_edpt_xfer()``. Require ``CFG_TUH_API_EDPT_XFER=1``
  - Support app-level enumeration with new APIs

    - ``tuh_descriptor_get()``, ``tuh_descriptor_get_device()``, ``tuh_descriptor_get_configuration()``, ``tuh_descriptor_get_hid_report()``
    - ``tuh_descriptor_get_string()``, ``tuh_descriptor_get_manufacturer_string()``, ``tuh_descriptor_get_product_string()``, ``tuh_descriptor_get_serial_string()``
    - Also add ``_sync()`` as sync/blocking version for above APIs

0.13.0
======

- [tu_fifo] Fix locked mutex when full, and return type in ``peek_n()``

Controller Driver (DCD & HCD)
-----------------------------

- [DWC2] Generalize synopsys dwc2 with synopsys/dwc2 which support both FS and HS phy (UTMI and ULPI) for various MCUs.
  - Broadcom 28/27xx on raspberrypi SBC
  - Silicon Labs EFM32
  - Espressif ESP32 Sx
  - GigaDevice GD32
  - ST STM32
  - Infineon XMC
- [KL25] Add new HCD for NXP KL25
- [MUSB] Add new DCD and HCD for Mentor musb with TI MSP432E4
- [F1C100s] Add new DCD for Allwinner F1C100s family
- [PIC32MZ] Add new DCD for PIC32MZ
- [nRF] Fix/Enhance various race condition with: EASY DMA, request HFXO, EPOUT
- [ChipIdea] rename Transdimension to more popular ChipIdea Highspeed,
- [RP2040] various update/fix for hcd/dcd
- [FT9XX] new DCD port for Bridgetek FT90x and FT93x devices
- [DA1469X] Fix resume
- [OHCI] Fix device array out of bound

Note: legacy drivers such as st/synopsys, nxp/transdimension are still present in this release but won't receive more update and could be removed in the future.

Device Stack
------------

- [Audio] Support disabling feedback format correction (16.16 <-> 10.14 format)
- [MSC] Add ``tud_msc_request_sense_cb()`` callback, change most default sense error to medium not present (0x02, 0x3A, 0x00)
- [Video] Fix video_capture example fails enumeration when 8FPS

Host Stack
----------

No notable changes

0.12.0
======

- add ``CFG_TUSB_OS_INC_PATH`` for os include path

Device Controller Driver (DCD)
------------------------------

- Getting device stack to pass USB Compliance Verification test (chapter9, HID, MSC). Ports are tested:
  nRF, SAMD 21/51, rp2040, stm32f4, Renesas RX, iMXRT, ESP32-S2/3, Kinetic KL25/32, DA146xx
- Added ``dcd_edpt_close_all()`` for switching configuration
- [Transdimension] Support ``dcd_edpt_xfer_fifo()`` with auto wrap over if fifo buffer is 4K aligned and size is multiple of 4K.
- [DA146xx] Improve vbus, reset, suspend, resume detection, and remote wakeup.

Device Stack
------------

- Add new network driver Network Control Model (CDC-NCM), update ``net_lwip_webserver`` to work with NCM (need re-configure example)
- Add new USB Video Class UVC 1.5 driver and video_capture example (work in progress)
- Fix potential buffer overflow for HID, bluetooth drivers

Host Controller Driver (HCD)
----------------------------

No notable changes

Host Stack
----------

No notable changes

0.11.0 (2021-08-29)
===================

- Add host/hid_controller example: only worked/tested with Sony PS4 DualShock controller
- Add device/hid_boot_interface example
- Add support for Renesas CCRX toolchain for RX mcu

Device Controller Driver (DCD)
------------------------------

- Add new DCD port for SAMx7x (E70, S70, V70, V71)
- Add new mcu K32L2Bxx
- Add new mcu GD32VF103
- Add new mcu STM32l151
- Add new mcu SAML21
- Add new mcu RX65n RX72n
- Fix NUC120/121/126 USBRAM can only be accessed in byte manner. Also improve set_address & disable sof
- Add Suspend/Resume handling for Renesas RX family.
- Fix DA1469x no VBUS startup

Synopsys
^^^^^^^^

- Fix Synopsys set address bug which could cause re-enumeration failed
- Fix ``dcd_synopsys`` driver integer overflow in HS mode (issue #968)

nRF5x
^^^^^

- Add nRF5x suspend, resume and remote wakeup
- Fix nRF5x race condition with ``TASKS_EP0RCVOUT``

RP2040
^^^^^^

- Add RP2040 suspend & resume support
- Implement double buffer for both host and device (#891). However device EPOUT is still single buffered due to techinical issue with short packet

Device Stack
------------

USBD
^^^^

- Better support big endian mcu
- Add ``tuh_inited()`` and ``tud_inited()``, will separate ``tusb_init/inited()`` to ``tud/tuh_init/inited()``
- Add ``dcd_attr.h`` for defining common controller attribute such as max endpoints

Bluetooth
^^^^^^^^^

- Fix stridx error in descriptor template

DFU
^^^

- Enhance DFU implementation to support multiple alternate interface and better support ``bwPollTimeout``
- Rename ``CFG_TUD_DFU_MODE`` to simply ``CFG_TUD_DFU``

HID
^^^

- Fix newline usage keyboard (ENTER 0x28)
- Better support Hid Get/Set report
- Change max gamepad support from 16 to 32 buttons

MIDI
^^^^

- Fix midi available
- Fix midi data
- Fix an issue when calling midi API when not enumerated yet

UAC2
^^^^

- Fix bug and enhance of UAC2

Vendor
^^^^^^

- Fix vendor fifo deadlock in certain case
- Add ``tud_vendor_n_read_flush()``

Host Controller Driver (HCD)
----------------------------

RP2040
^^^^^^

- Implement double buffered to fix E4 errata and boost performance
- Lots of rp2040 update and enhancement

Host Stack
----------

- Major update and rework most of host stack, still needs more improvement
- Lots of improvement and update in parsing configuration and control
- Rework and major update to HID driver. Will default to enable boot interface if available
- Separate ``CFG_TUH_DEVICE_MAX`` and ``CFG_TUH_HUB`` for better management and reduce SRAM usage

0.10.1 (2021-06-03)
===================

- rework rp2040 examples and CMake build, allow better integration with pico-sdk

Host Controller Driver (HCD)
----------------------------

- Fix rp2040 host driver: incorrect PID with low speed device with max packet size of 8 bytes
- Improve hub driver
- Remove obsolete ``hcd_pipe_queue_xfer()``/``hcd_pipe_xfer()``
- Use ``hcd_frame_number()`` instead of micro frame
- Fix OHCI endpoint address and ``xferred_bytes`` in xfer complete event

0.10.0 (2021-05-28)
===================

- Rework tu_fifo_t with separated mutex for read and write, better support DMA with read/write buffer info. And constant address mode
- Improve audio_test example and add audio_4_channel_mic example
- Add new dfu example
- Remove pico-sdk from submodule

Device Controller Driver (DCD)
------------------------------

- Add new DCD port for Silabs EFM32GG12 with board Thunderboard Kit (SLTB009A)
- Add new DCD port Renesas RX63N, board GR-CITRUS
- Add new (optional) endpoint API dcd_edpt_xfer_fifo
- Fix build with nRF5340
- Fix build with lpc15 and lpc54
- Fix build with lpc177x_8x
- STM32 Synopsys: greatly improve Isochronous transfer with ``edpt_xfer_fifo()`` API
- Support LPC55 port1 highspeed
- Add support for Espressif esp32s3
- nRF: fix race condition that could cause drop packet of Bulk OUT transfer

USB Device Driver (USBD)
------------------------

- Add new (optional) endpoint ADPI ``usbd_edpt_xfer_fifo()``

Device Class Driver
-------------------

CDC

- [Breaking] ``tud_cdc_peek()``, ``tud_vendor_peek()`` no longer support random offset and dropped position parameter.

DFU

- Add new DFU 1.1 class driver (WIP)

HID

- Fix keyboard report descriptor template
- Add more hid keys constant from 0x6B to 0xA4

- [Breaking] rename API
  - ``HID_PROTOCOL_NONE/KEYBOARD/MOUSE`` to ``HID_ITF_PROTOCOL_NONE/KEYBOARD/MOUSE``
  - ``tud_hid_boot_mode()`` to ``tud_hid_get_protocol()``
  - ``tud_hid_boot_mode_cb()`` to ``tud_hid_set_protocol_cb()``

MIDI

- Fix MIDI buffer overflow issue

- [Breaking] rename API
  - Rename ``tud_midi_read()`` to ``tud_midi_stream_read()``
  - Rename ``tud_midi_write()`` to ``tud_midi_stream_write()``
  - Rename ``tud_midi_receive()`` to ``tud_midi_packet_read()``
  - Rename ``tud_midi_send()`` to ``tud_midi_packet_write()``

Host Controller Driver (HCD)
----------------------------

- No noticeable changes

USB Host Driver (USBH)
----------------------

- No noticeable changes

Host Class Driver
-----------------

- HID: Rework host hid driver, basically everything changes


0.9.0 (2021-03-12)
==================

Device Stack
------------

Device Controller Driver (DCD)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

RP2040

- Fix endpoint buffer reallocation overrun problem
- Fix osal_pico queue overflow in initialization
- Fix Isochronous endpoint buffer size in transfer
- Optimize hardware endpoint struct to reduce RAM usage
- Fix enum walkaround forever check for SE0 when pull up is disabled

Sony CXD56

- Pass the correct speed on Spresense
- Fix setup processed flag

NXP Transdimention

- Update dcd_init() to reset controller to device mode

USB Device Driver (USBD)
^^^^^^^^^^^^^^^^^^^^^^^^

- Fix issue with status zlp (``tud_control_status()``) is returned by class driver with SET/CLEAR_FEATURE for endpoint.
- Correct endpoint size check for fullspeed bulk, can be 8, 16, 32, 64
- Ack SET_INTERFACE even if it is not implemented by class driver.

Device Class Driver
^^^^^^^^^^^^^^^^^^^

DFU Runtime

- rename ``dfu_rt()`` to ``dfu_runtime()`` for easy reading

CDC

- Add ``tud_cdc_send_break_cb()`` to support break request
- Improve CDC receive, minor behavior changes: when ``tud_cdc_rx_wanted_cb()`` is invoked wanted_char may not be the last byte in the fifo

HID

- [Breaking] Add itf argument to hid API to support multiple instances, follow API has signature changes

  - ``tud_hid_descriptor_report_cb()``
  - ``tud_hid_get_report_cb()``
  - ``tud_hid_set_report_cb()``
  - ``tud_hid_boot_mode_cb()``
  - ``tud_hid_set_idle_cb()``

- Add report complete callback ``tud_hid_report_complete_cb()`` API
- Add DPad/Hat support for HID Gamepad

  - ``TUD_HID_REPORT_DESC_GAMEPAD()`` now support 16 buttons, 2 joysticks, 1 hat/dpad
  - Add ``hid_gamepad_report_t`` along with ``GAMEPAD_BUTTON_`` and ``GAMEPAD_HAT_`` enum
  - Add Gamepad to ``hid_composite`` / ``hid_composite_freertos`` example

MIDI

- Fix dropping MIDI sysex message when fifo is full
- Fix typo in ``tud_midi_write24()``, make example less ambiguous for cable and channel
- Fix incorrect endpoint descriptor length, MIDI v1 use Audio v1 which has 9-byte endpoint descriptor (instead of 7)

Host Stack
----------

Host Controller Driver (HCD)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

- Add rhport to ``hcd_init()``
- Improve EHCI/OHCI driver abstraction

  - Move echi/ohci files to portable/
  - Rename ``hcd_lpc18_43`` to ``hcd_transdimension``
  - Sub hcd API with ``hcd_ehci_init()``, ``hcd_ehci_register_addr()``

- Update NXP transdimension ``hcd_init()`` to reset controller to host mode

  - Ported hcd to rt10xx

USB Host Driver (USBH)
^^^^^^^^^^^^^^^^^^^^^^

- No noticeable changes to usbh

Host Class Driver
^^^^^^^^^^^^^^^^^

MSC

- Rename ``tuh_msc_scsi_inquiry()`` to ``tuh_msc_inquiry()``
- Rename ``tuh_msc_mounted_cb()``/``tuh_msc_unmounted_cb()`` to ``tuh_msc_mount_cb()``/``tuh_msc_unmount_cb()`` to match device stack naming
- Change ``tuh_msc_is_busy()`` to ``tuh_msc_ready()``
- Add read10 and write10 function: ``tuh_msc_read10()``, ``tuh_msc_write10()``
- Read_Capacity is invoked as part of enumeration process
- Add ``tuh_msc_get_block_count()``, ``tuh_msc_get_block_size()``
- Add ``CFG_TUH_MSC_MAXLUN`` (default to 4) to hold lun capacities

Others
------

- Add basic support for rt-thread OS
- Change zero bitfield length to more explicit padding
- Build example now fetch required submodules on the fly while running ``make`` without prior submodule init for mcu drivers
- Update pico-sdk to v1.1.0

**New Boards**

- Microchip SAM E54 Xplained Pro
- LPCXpresso 55s28
- LPCXpresso 18s37


0.8.0 (2021-02-05)
==================

Device Controller Driver
------------------------

- Added new device support for Raspberry Pi RP2040
- Added new device support for NXP Kinetis KL25ZXX
- Use ``dcd_event_bus_reset()`` with link speed to replace bus_signal

- ESP32-S2:
  - Add bus suspend and wakeup support

- SAMD21:
  - Fix (walkaround) samd21 setup_packet overflow by USB DMA

- STM32 Synopsys:
  - Rework USB FIFO allocation scheme and allow RX FIFO size reduction

- Sony CXD56
  - Update Update Spresense SDK to 2.0.2
  - Fix dcd issues with setup packets
  - Correct EP number for cdc_msc example

USB Device
----------

**USBD**

- Rework usbd control transfer to have additional stage parameter for setup, data, status
- Fix ``tusb_init()`` return true instead of ``TUSB_ERROR_NONE``
- Added new API ``tud_connected()`` that return true after device got out of bus reset and received the very first setup packet

**Class Driver**

- CDC
  - Allow to transmit data, even if the host does not support control line states i.e set DTR

- HID
  - change default ``CFG_TUD_HID_EP_BUFSIZE`` from 16 to 64

- MIDI
  - Fix midi sysex sending bug

- MSC
  - Invoke only scsi complete callback after status transaction is complete.
  - Fix ``scsi_mode_sense6_t`` padding, which cause IAR compiler internal error.

- USBTMC
  - Change interrupt endpoint example size to 8 instead of 2 for better compatibility with mcu

**Example**

- Support make from windows ``cmd.exe``
- Add HID Consumer Control (media keys) to ``hid_composite`` & ``hid_composite_freertos`` examples


USB Host
--------

No noticeable changes to host stack

New Boards
----------

- NXP/Freescale Freedom FRDM-KL25Z
- Feather Double M33 express
- Raspberry Pi Pico
- Adafruit Feather RP2040
- Adafruit Itsy Bitsy RP2040
- Adafruit QT RP2040
- Adfruit Feather ESP32-S2
- Adafruit Magtag 29" Eink
- Adafruit Metro ESP32-S2
- Adafruit PyBadge
- Adafruit PyPortal
- Great Scott Gadgets' LUNA D11 & D21


0.7.0 (2020-11-08)
==================

Device Controller Driver
------------------------

- Added new support for Espressif ESP32-S2
- Added new support for Dialog DA1469x
- Enhance STM32 Synopsys

- Support bus events disconnection/suspend/resume/wakeup
  - Improve transfer performance with optimizing xfer and fifo size
  - Support Highspeed port (OTG_HS) with both internal and external PHY
  - Support multiple usb ports with rhport=1 is highspeed on selected MCUs e.g H743, F23. It is possible to have OTG_HS to run on Fullspeed PHY (e.g lacking external PHY)
  - Add ISO transfer, fix odd/even frame
  - Fix FIFO flush during stall
  - Implement ``dcd_edpt_close()`` API
  - Support F105, F107

- Enhance STM32 fsdev
  - Improve dcd fifo allocation
  - Fix ISTR race condition
  - Support remap USB IRQ on supported MCUs
  - Implement ``dcd_edpt_close()`` API

- Enhance NUC 505: enhance set configure behavior

- Enhance SAMD
  - Fix race condition with setup packet
  - Add SAMD11 option ``OPT_MCU_SAMD11``
  - Add SAME5x option ``OPT_MCU_SAME5X``

- Fix SAMG control data toggle and stall race condition

- Enhance nRF
  - Fix hanged when ``tud_task()`` is called within critical section (disabled interrupt)
  - Fix disconnect bus event not submitted
  - Implement ISO transfer and ``dcd_edpt_close()``


USB Device
----------

**USBD**

- Add new class driver for **Bluetooth HCI** class driver with example can be found in [mynewt-tinyusb-example](https://github.com/hathach/mynewt-tinyusb-example) since it needs mynewt OS to run with.
- Fix USBD endpoint usage racing condition with ``usbd_edpt_claim()``/``usbd_edpt_release()``
- Added ``tud_task_event_ready()`` and ``osal_queue_empty()``. This API is needed to check before enter low power mode with WFI/WFE
- Rename USB IRQ Handler to ``dcd_int_handler()``. Application must define IRQ handler in which it calls this API.
- Add ``dcd_connect()`` and ``dcd_disconnect()`` to enable/disable internal pullup on D+/D- on supported MCUs.
- Add ``usbd_edpt_open()``
- Remove ``dcd_set_config()``
- Add ``OPT_OS_CUMSTOM`` as hook for application to overwrite and/or add their own OS implementation
- Support SET_INTERFACE, GET_INTERFACE request
- Add Logging for debug with optional uart/rtt/swo printf retarget or ``CFG_TUSB_DEBUG_PRINTF`` hook
- Add IAR compiler support
- Support multiple configuration descriptors. ``TUD_CONFIG_DESCRIPTOR()`` template has extra config_num as 1st argument
- Improve USB Highspeed support with actual link speed detection with ``dcd_event_bus_reset()``

- Enhance class driver management
  - ``usbd_driver_open()`` add max length argument, and return length of interface (0 for not supported). Return value is used for finding appropriate driver
  - Add application implemented class driver via ``usbd_app_driver_get_cb()``
  - IAD is handled to assign driver id

- Added ``tud_descriptor_device_qualifier_cb()`` callback
- Optimize ``tu_fifo`` bulk write/read transfer
- Forward non-std control request to class driver
- Let application handle Microsoft OS 1.0 Descriptors (the 0xEE index string)
- Fix OSAL FreeRTOS yield from ISR

**Class Drivers**

- USBNET: remove ACM-EEM due to lack of support from host
- USBTMC: fix descriptors when INT EP is disabled

- CDC:
  - Send zero length packet for end of data when needed
  - Add ``tud_cdc_tx_complete_cb()`` callback
  - Change ``tud_cdc_n_write_flush()`` return number of bytes forced to transfer, and flush when writing enough data to fifo

- MIDI:
  - Add packet interface
  - Add multiple jack descriptors
  - Fix MIDI driver for sysex

- DFU Runtime: fix response to SET_INTERFACE and DFU_GETSTATUS request

- Rename some configure macro to make it clear that those are used directly for endpoint transfer
  - ``CFG_TUD_HID_BUFSIZE`` to ``CFG_TUD_HID_EP_BUFSIZE``
  - ``CFG_TUD_CDC_EPSIZE`` to ``CFG_TUD_CDC_EP_BUFSIZE``
  - ``CFG_TUD_MSC_BUFSIZE`` to ``CFG_TUD_MSC_EP_BUFSIZE``
  - ``CFG_TUD_MIDI_EPSIZE`` to ``CFG_TUD_MIDI_EP_BUFSIZE``

- HID:
  - Fix gamepad template descriptor
  - Add multiple HID interface API
  - Add extra comma to HID_REPORT_ID

USB Host
--------

- Rework USB host stack (still work in progress)
   - Fix compile error with pipehandle
   - Rework usbh control and enumeration as non-blocking

- Improve Hub, MSC, HID host driver

Examples
--------

- Add new ``hid_composite_freertos``
- Add new ``dynamic_configuration`` to demonstrate how to switch configuration descriptors
- Add new ``hid_multiple_interface``

- Enhance ``net_lwip_webserver`` example
  - Add multiple configuration: RNDIS for Windows, CDC-ECM for macOS (Linux will work with both)
  - Update lwip to STABLE-2_1_2_RELEASE for ``net_lwip_webserver``

- Added new Audio example: ``audio_test`` ``uac2_headsest``

New Boards
----------

- Espressif ESP32-S2: saola_1, kaluga_1
- STM32: F746 Nucleo, H743 Eval, H743 Nucleo, F723 discovery, stlink v3 mini, STM32L4r5 Nucleo
- Dialog DA1469x dk pro and dk usb
- Microchip: Great Scoot Gadgets' LUNA, samd11_xplained, D5035-01, atsamd21 xplained pro
- nRF: ItsyBitsy nRF52840


0.6.0 (2020-03-30)
==================

Added **CONTRIBUTORS.md** to give proper credit for contributors to the stack. Special thanks to `Nathan Conrad <https://github.com/pigrew>`__ , `Peter Lawrence <https://github.com/majbthrd>`__ , `William D. Jones <https://github.com/cr1901>`__ and `Sean Cross <https://github.com/xobs>`__ and others for spending their precious time to add lots of features and ports for this release.

Added
-----

**MCU**

- Added support for Microchip SAMG55
- Added support for Nordic nRF52833
- Added support for Nuvoton: NUC120, NUC121/NUC125, NUC126, NUC505
- Added support for NXP LPC: 51Uxx, 54xxx, 55xx
- Added support for NXP iMXRT: RT1011, RT1015, RT1021, RT1052, RT1062, RT1064
- Added support for Sony CXD56 (Spresense)
- Added support for STM32: L0, F0, F1, F2, F3, F4, F7, H7
- Added support for TI MSP430
- Added support for ValentyUSB's eptri

**Class Driver**

- Added DFU Runtime class driver
- Added Network class driver with RNDIS, CDC-ECM, CDC-EEM (work in progress)
- Added USBTMC class driver
- Added WebUSB class driver using vendor-specific class
- Added multiple instances support for CDC and MIDI
- Added a handful of unit test with Ceedling.
- Added LOG support for debugging with CFG_TUSB_DEBUG
- Added ``tud_descriptor_bos_cb()`` for BOS descriptor (required for USB 2.1)
- Added ``dcd_edpt0_status_complete()`` as optional API for DCD

**Examples**

Following examples are added:

- ``board_test``
- ``cdc_dual_ports``
- ``dfu_rt``
- ``hid_composite``
- ``net_lwip_webserver``
- ``usbtmc``
- ``webusb_serial``

Changed
-------

- Changed ``tud_descriptor_string_cb()`` to have additional Language ID argument
- Merged ``hal_nrf5x.c`` into ``dcd_nrf5x.c``
- Merged ``dcd_samd21.c`` and ``dcd_samd51.c`` into ``dcd_samd.c``
- Generalized ``dcd_stm32f4.c`` to ``dcd_synopsys.c``
- Changed ``cdc_msc_hid`` to ``cdc_msc`` (drop hid) due to limited endpoints number of some MCUs
- Improved DCD SAMD stability, fix missing setup packet occasionally
- Improved ``usbd/usbd_control`` with proper handling of zero-length packet (ZLP)
- Improved STM32 DCD FSDev
- Improved STM32 DCD Synopsys
- Migrated CI from Travis to Github Action
- Updated nrfx submodule to 2.1.0
- Fixed mynewt osal queue definition
- Fixed ``cdc_msc_freertos`` example build for all MCUs


0.5.0 (2019-06)
===============

First release, device stack works great, host stack works but still need improvement.

- Special thanks to @adafruit team, especially @tannewt to help out immensely to rework device stack: simplify osal & control transfer, adding SAMD21/SAMD51 ports, writing porting docs, adding MIDI class support etc...
- Thanks to @cr1901 for adding STM32F4 port.
- Thanks to @PTS93 and @todbot for HID raw API