diff --git a/sound/usb/midi.c b/sound/usb/midi.c index 11d324aea1416e20a3f1373ce51bef2b670360b2..01c498241a0f7f22af5b11892db88ba22e61beb4 100644 --- a/sound/usb/midi.c +++ b/sound/usb/midi.c @@ -2213,6 +2213,9 @@ int snd_usbmidi_create(struct snd_card *card, if (err < 0) break; + err = snd_usbmidi_detect_per_port_endpoints(umidi, endpoints); + break; + case QUIRK_MIDI_CH345: err = snd_usbmidi_detect_per_port_endpoints(umidi, endpoints); break; default: diff --git a/sound/usb/quirks-table.h b/sound/usb/quirks-table.h index c014f004a0f1316189aae3b7ba7b16d593510908..0f18c753e660eedaa1ac8c92d5145af9ac703d6d 100644 --- a/sound/usb/quirks-table.h +++ b/sound/usb/quirks-table.h @@ -2611,6 +2611,17 @@ YAMAHA_DEVICE(0x7010, "UB99"), .idProduct = 0x1020, }, +/* QinHeng devices */ +{ + USB_DEVICE(0x1a86, 0x752d), + .driver_info = (unsigned long) &(const struct snd_usb_audio_quirk) { + .vendor_name = "QinHeng", + .product_name = "CH345", + .ifnum = 1, + .type = QUIRK_MIDI_CH345 + } +}, + /* KeithMcMillen Stringport */ { USB_DEVICE(0x1f38, 0x0001), diff --git a/sound/usb/quirks.c b/sound/usb/quirks.c index 9c82f8b67a61f71b2117f3a7c414feedd414bedd..b01d3cf3759ed171f5300e15295a4713245b5a87 100644 --- a/sound/usb/quirks.c +++ b/sound/usb/quirks.c @@ -311,6 +311,7 @@ int snd_usb_create_quirk(struct snd_usb_audio *chip, [QUIRK_MIDI_CME] = create_any_midi_quirk, [QUIRK_MIDI_AKAI] = create_any_midi_quirk, [QUIRK_MIDI_FTDI] = create_any_midi_quirk, + [QUIRK_MIDI_CH345] = create_any_midi_quirk, [QUIRK_AUDIO_STANDARD_INTERFACE] = create_standard_audio_quirk, [QUIRK_AUDIO_FIXED_ENDPOINT] = create_fixed_stream_quirk, [QUIRK_AUDIO_EDIROL_UAXX] = create_uaxx_quirk, diff --git a/sound/usb/usbaudio.h b/sound/usb/usbaudio.h index 6c805a51d7d79e7064e8abeb51f0363c25428a77..5e0e58adfcdbc013eac6558117de8d284c4452f9 100644 --- a/sound/usb/usbaudio.h +++ b/sound/usb/usbaudio.h @@ -81,6 +81,7 @@ enum quirk_type { QUIRK_MIDI_AKAI, QUIRK_MIDI_US122L, QUIRK_MIDI_FTDI, + QUIRK_MIDI_CH345, QUIRK_AUDIO_STANDARD_INTERFACE, QUIRK_AUDIO_FIXED_ENDPOINT, QUIRK_AUDIO_EDIROL_UAXX,