Skip to content

Fix MIDI host issue#3556

Merged
hathach merged 1 commit intomasterfrom
fix-midi-host
Mar 17, 2026
Merged

Fix MIDI host issue#3556
hathach merged 1 commit intomasterfrom
fix-midi-host

Conversation

@hathach
Copy link
Copy Markdown
Owner

@hathach hathach commented Mar 17, 2026

fix #3544

Copilot AI review requested due to automatic review settings March 17, 2026 04:29
@hathach hathach mentioned this pull request Mar 17, 2026
1 task
Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 1c19a10ed1

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Fixes MIDI host enumeration/configuration behavior to address issue #3544, where the MIDI host driver could be configured for an interface it didn’t actually open (leading to asserts/faults on some targets).

Changes:

  • Adjusts descriptor-walk logic in midih_open() so the computed “MIDI interface total length” is intended to stop at the next interface descriptor (instead of stepping past it).
  • Ensures the mount callback reports the actual MIDI streaming interface number (p_midi->bInterfaceNumber) rather than the itf_num passed into midih_set_config().
  • Minor comment wording cleanup for itf_count.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.


bool found_new_interface = false;
while (tu_desc_in_bounds(p_desc, desc_end) && !found_new_interface) {
p_desc = tu_desc_next(p_desc);
@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 17, 2026

Size Difference Report

Because TinyUSB code size varies by port and configuration, the metrics below represent the averaged totals across all example builds.

Note: If there is no change, only one value is shown.

Changes >1% in size

No entries.

Changes <1% in size

file .text .rodata .data .bss size % diff
midi_host.c 1358 ➙ 1341 (-17) 7 7 3635 4996 ➙ 4979 (-17) -0.3%
TOTAL 1358 ➙ 1341 (-17) 7 7 3635 4996 ➙ 4979 (-17) -0.3%
No changes
file .text .rodata .data .bss size % diff
audio_device.c 2896 0 1260 1623 4514 +0.0%
cdc_device.c 1252 16 1106 682 1932 +0.0%
cdc_host.c 6617 487 15 1498 8327 +0.0%
dcd_ch32_usbfs.c 1473 0 0 2444 3917 +0.0%
dcd_ch32_usbhs.c 1469 0 0 448 1917 +0.0%
dcd_ci_fs.c 1925 0 0 1290 3215 +0.0%
dcd_ci_hs.c 1759 0 0 1344 2538 +0.0%
dcd_da146xx.c 3067 0 0 144 3211 +0.0%
dcd_dwc2.c 4176 25 0 265 4465 +0.0%
dcd_eptri.c 2271 0 0 259 2530 +0.0%
dcd_ft9xx.c 3276 0 0 172 3448 +0.0%
dcd_khci.c 1953 0 0 1290 3243 +0.0%
dcd_lpc17_40.c 1474 0 0 648 1798 +0.0%
dcd_lpc_ip3511.c 1463 0 0 264 1683 +0.0%
dcd_mm32f327x_otg.c 1478 0 0 1290 2768 +0.0%
dcd_msp430x5xx.c 1798 0 0 176 1974 +0.0%
dcd_musb.c 2445 0 0 160 2605 +0.0%
dcd_nrf5x.c 2918 0 0 292 3210 +0.0%
dcd_nuc120.c 1094 0 0 78 1172 +0.0%
dcd_nuc121.c 1168 0 0 101 1269 +0.0%
dcd_nuc505.c 0 0 1531 157 1688 +0.0%
dcd_rp2040.c 858 20 604 655 2137 +0.0%
dcd_rusb2.c 2919 0 0 156 3075 +0.0%
dcd_samd.c 1034 0 0 266 1300 +0.0%
dcd_samg.c 1320 0 0 72 1392 +0.0%
dcd_stm32_fsdev.c 2558 0 0 291 2849 +0.0%
dfu_device.c 777 28 712 140 916 +0.0%
dfu_rt_device.c 157 0 134 0 157 +0.0%
dwc2_common.c 602 30 0 0 618 +0.0%
ecm_rndis_device.c 1037 0 1 2858 3896 +0.0%
ehci.c 2763 0 0 6043 7597 +0.0%
fsdev_common.c 180 0 0 0 180 +0.0%
hcd_ch32_usbfs.c 2484 0 0 498 2982 +0.0%
hcd_ci_hs.c 184 0 0 0 184 +0.0%
hcd_dwc2.c 4994 33 1 513 5540 +0.0%
hcd_khci.c 2442 0 0 449 2891 +0.0%
hcd_musb.c 3073 0 0 157 3230 +0.0%
hcd_pio_usb.c 262 0 240 0 502 +0.0%
hcd_rp2040.c 976 73 416 384 1849 +0.0%
hcd_rusb2.c 2923 0 0 245 3168 +0.0%
hcd_samd.c 2220 0 0 324 2544 +0.0%
hcd_stm32_fsdev.c 3287 0 1 420 3708 +0.0%
hid_device.c 1125 44 997 119 1244 +0.0%
hid_host.c 1206 0 0 1251 2457 +0.0%
hub.c 1384 8 8 30 1418 +0.0%
midi_device.c 1150 0 1007 621 1770 +0.0%
msc_device.c 2525 108 2286 547 3071 +0.0%
msc_host.c 1587 0 0 394 1982 +0.0%
mtp_device.c 1696 22 735 588 2292 +0.0%
ncm_device.c 1538 28 718 5843 7395 +0.0%
ohci.c 1940 0 0 2414 4353 +0.0%
printer_device.c 830 0 706 564 1392 +0.0%
rp2040_usb.c 172 75 717 4 968 +0.0%
rusb2_common.c 160 0 16 0 176 +0.0%
tusb.c 451 0 383 3 453 +0.0%
tusb_fifo.c 842 0 480 0 837 +0.0%
typec_stm32.c 820 8 2 12 842 +0.0%
usbc.c 420 2 20 166 608 +0.0%
usbd.c 3225 57 88 275 3565 +0.0%
usbd_control.c 538 0 484 79 616 +0.0%
usbh.c 4649 55 99 961 5731 +0.0%
usbtmc_device.c 2196 24 68 316 2544 +0.0%
vendor_device.c 641 0 534 563 1202 +0.0%
video_device.c 4443 5 1235 479 4914 +0.0%
TOTAL 116560 1148 16604 43325 161969 +0.0%

@github-actions
Copy link
Copy Markdown

github-actions bot commented Mar 17, 2026

MemBrowse Memory Report

Top 10 targets by memory change (%) (out of 2156 targets) View Project Dashboard →

target .text .rodata .data .bss total % diff
frdm_kl25z/midi_rx 18,424 → 18,396 (-28) 18,424 → 18,396 (-28) -0.2%
stm32c071nucleo/midi_rx 21,040 → 21,012 (-28) 21,664 → 21,636 (-28) -0.1%
raspberry_pi_pico/midi_rx 24,256 → 24,224 (-32) 25,308 → 25,276 (-32) -0.1%
stm32g0b1nucleo/midi_rx 23,080 → 23,052 (-28) 23,704 → 23,676 (-28) -0.1%
lpcxpresso1769/midi_rx 15,864 → 15,848 (-16) 15,872 → 15,856 (-16) -0.1%
ea4088_quickstart/midi_rx 15,992 → 15,976 (-16) 16,008 → 15,992 (-16) -0.1%
metro_m4_express/midi_rx 16,640 → 16,624 (-16) 16,648 → 16,632 (-16) -0.1%
lpcxpresso18s37/midi_rx 18,448 → 18,432 (-16) 18,886 → 18,870 (-16) -0.1%
portenta_c33/midi_rx 18,940 → 18,924 (-16) 18,940 → 18,924 (-16) -0.1%
ea4357/midi_rx 19,688 → 19,672 (-16) 20,134 → 20,118 (-16) -0.1%

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Fixes the MIDI host enumeration/configuration flow (issue #3544) by ensuring the MIDI host driver does not “consume” the next interface descriptor during open(), which previously could cause the host stack to bind/configure an interface that the MIDI driver never opened.

Changes:

  • Update midih_open() descriptor-walk logic to stop at (but not advance past) the next TUSB_DESC_INTERFACE, preventing over-sized drv_len returns.
  • In midih_set_config(), report the MIDI streaming interface number from the opened interface (p_midi->bInterfaceNumber) rather than the interface number passed into set_config.
  • Minor comment grammar fix (interfaceinterfaces).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

You can also share your feedback on Copilot code review. Take the survey.

@hathach hathach merged commit 151a5ad into master Mar 17, 2026
414 of 415 checks passed
@hathach hathach deleted the fix-midi-host branch March 17, 2026 05:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Potential issues with MIDI Host

2 participants