Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
a06b7ee2
Commit
a06b7ee2
authored
May 14, 2021
by
Takashi Iwai
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'for-linus' into for-next
parents
6efb943b
814b4312
Changes
8
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
118 additions
and
29 deletions
+118
-29
sound/firewire/Kconfig
sound/firewire/Kconfig
+2
-2
sound/firewire/amdtp-stream-trace.h
sound/firewire/amdtp-stream-trace.h
+3
-3
sound/firewire/amdtp-stream.c
sound/firewire/amdtp-stream.c
+25
-17
sound/firewire/bebob/bebob.c
sound/firewire/bebob/bebob.c
+1
-1
sound/firewire/dice/dice-alesis.c
sound/firewire/dice/dice-alesis.c
+1
-1
sound/firewire/oxfw/oxfw.c
sound/firewire/oxfw/oxfw.c
+0
-1
sound/pci/hda/patch_realtek.c
sound/pci/hda/patch_realtek.c
+78
-1
sound/usb/midi.c
sound/usb/midi.c
+8
-3
No files found.
sound/firewire/Kconfig
View file @
a06b7ee2
...
...
@@ -38,7 +38,7 @@ config SND_OXFW
* Mackie(Loud) Onyx 1640i (former model)
* Mackie(Loud) Onyx Satellite
* Mackie(Loud) Tapco Link.Firewire
* Mackie(Loud) d.
2 pro/d.
4 pro
* Mackie(Loud) d.4 pro
* Mackie(Loud) U.420/U.420d
* TASCAM FireOne
* Stanton Controllers & Systems 1 Deck/Mixer
...
...
@@ -84,7 +84,7 @@ config SND_BEBOB
* PreSonus FIREBOX/FIREPOD/FP10/Inspire1394
* BridgeCo RDAudio1/Audio5
* Mackie Onyx 1220/1620/1640 (FireWire I/O Card)
* Mackie d.2 (FireWire Option)
* Mackie d.2 (FireWire Option)
and d.2 Pro
* Stanton FinalScratch 2 (ScratchAmp)
* Tascam IF-FW/DM
* Behringer XENIX UFX 1204/1604
...
...
sound/firewire/amdtp-stream-trace.h
View file @
a06b7ee2
...
...
@@ -14,8 +14,8 @@
#include <linux/tracepoint.h>
TRACE_EVENT
(
amdtp_packet
,
TP_PROTO
(
const
struct
amdtp_stream
*
s
,
u32
cycles
,
const
__be32
*
cip_header
,
unsigned
int
payload_length
,
unsigned
int
data_blocks
,
unsigned
int
data_block_counter
,
unsigned
int
index
),
TP_ARGS
(
s
,
cycles
,
cip_header
,
payload_length
,
data_blocks
,
data_block_counter
,
index
),
TP_PROTO
(
const
struct
amdtp_stream
*
s
,
u32
cycles
,
const
__be32
*
cip_header
,
unsigned
int
payload_length
,
unsigned
int
data_blocks
,
unsigned
int
data_block_counter
,
unsigned
int
packet_index
,
unsigned
int
index
),
TP_ARGS
(
s
,
cycles
,
cip_header
,
payload_length
,
data_blocks
,
data_block_counter
,
packet_index
,
index
),
TP_STRUCT__entry
(
__field
(
unsigned
int
,
second
)
__field
(
unsigned
int
,
cycle
)
...
...
@@ -48,7 +48,7 @@ TRACE_EVENT(amdtp_packet,
__entry
->
payload_quadlets
=
payload_length
/
sizeof
(
__be32
);
__entry
->
data_blocks
=
data_blocks
;
__entry
->
data_block_counter
=
data_block_counter
,
__entry
->
packet_index
=
s
->
packet_index
;
__entry
->
packet_index
=
packet_index
;
__entry
->
irq
=
!!
in_interrupt
();
__entry
->
index
=
index
;
),
...
...
sound/firewire/amdtp-stream.c
View file @
a06b7ee2
...
...
@@ -526,7 +526,7 @@ static void build_it_pkt_header(struct amdtp_stream *s, unsigned int cycle,
}
trace_amdtp_packet
(
s
,
cycle
,
cip_header
,
payload_length
,
data_blocks
,
data_block_counter
,
index
);
data_block_counter
,
s
->
packet_index
,
index
);
}
static
int
check_cip_header
(
struct
amdtp_stream
*
s
,
const
__be32
*
buf
,
...
...
@@ -630,21 +630,27 @@ static int parse_ir_ctx_header(struct amdtp_stream *s, unsigned int cycle,
unsigned
int
*
payload_length
,
unsigned
int
*
data_blocks
,
unsigned
int
*
data_block_counter
,
unsigned
int
*
syt
,
unsigned
int
index
)
unsigned
int
*
syt
,
unsigned
int
packet_index
,
unsigned
int
index
)
{
const
__be32
*
cip_header
;
unsigned
int
cip_header_size
;
int
err
;
*
payload_length
=
be32_to_cpu
(
ctx_header
[
0
])
>>
ISO_DATA_LENGTH_SHIFT
;
if
(
*
payload_length
>
s
->
ctx_data
.
tx
.
ctx_header_size
+
s
->
ctx_data
.
tx
.
max_ctx_payload_length
)
{
if
(
!
(
s
->
flags
&
CIP_NO_HEADER
))
cip_header_size
=
8
;
else
cip_header_size
=
0
;
if
(
*
payload_length
>
cip_header_size
+
s
->
ctx_data
.
tx
.
max_ctx_payload_length
)
{
dev_err
(
&
s
->
unit
->
device
,
"Detect jumbo payload: %04x %04x
\n
"
,
*
payload_length
,
s
->
ctx_data
.
tx
.
max_ctx_payload_length
);
*
payload_length
,
cip_header_size
+
s
->
ctx_data
.
tx
.
max_ctx_payload_length
);
return
-
EIO
;
}
if
(
!
(
s
->
flags
&
CIP_NO_HEADER
)
)
{
if
(
cip_header_size
>
0
)
{
cip_header
=
ctx_header
+
2
;
err
=
check_cip_header
(
s
,
cip_header
,
*
payload_length
,
data_blocks
,
data_block_counter
,
syt
);
...
...
@@ -662,7 +668,7 @@ static int parse_ir_ctx_header(struct amdtp_stream *s, unsigned int cycle,
}
trace_amdtp_packet
(
s
,
cycle
,
cip_header
,
*
payload_length
,
*
data_blocks
,
*
data_block_counter
,
index
);
*
data_block_counter
,
packet_index
,
index
);
return
err
;
}
...
...
@@ -701,12 +707,13 @@ static int generate_device_pkt_descs(struct amdtp_stream *s,
unsigned
int
packets
)
{
unsigned
int
dbc
=
s
->
data_block_counter
;
unsigned
int
packet_index
=
s
->
packet_index
;
unsigned
int
queue_size
=
s
->
queue_size
;
int
i
;
int
err
;
for
(
i
=
0
;
i
<
packets
;
++
i
)
{
struct
pkt_desc
*
desc
=
descs
+
i
;
unsigned
int
index
=
(
s
->
packet_index
+
i
)
%
s
->
queue_size
;
unsigned
int
cycle
;
unsigned
int
payload_length
;
unsigned
int
data_blocks
;
...
...
@@ -715,7 +722,7 @@ static int generate_device_pkt_descs(struct amdtp_stream *s,
cycle
=
compute_cycle_count
(
ctx_header
[
1
]);
err
=
parse_ir_ctx_header
(
s
,
cycle
,
ctx_header
,
&
payload_length
,
&
data_blocks
,
&
dbc
,
&
syt
,
i
);
&
data_blocks
,
&
dbc
,
&
syt
,
packet_index
,
i
);
if
(
err
<
0
)
return
err
;
...
...
@@ -723,13 +730,15 @@ static int generate_device_pkt_descs(struct amdtp_stream *s,
desc
->
syt
=
syt
;
desc
->
data_blocks
=
data_blocks
;
desc
->
data_block_counter
=
dbc
;
desc
->
ctx_payload
=
s
->
buffer
.
packets
[
index
].
buffer
;
desc
->
ctx_payload
=
s
->
buffer
.
packets
[
packet_
index
].
buffer
;
if
(
!
(
s
->
flags
&
CIP_DBC_IS_END_EVENT
))
dbc
=
(
dbc
+
desc
->
data_blocks
)
&
0xff
;
ctx_header
+=
s
->
ctx_data
.
tx
.
ctx_header_size
/
sizeof
(
*
ctx_header
);
packet_index
=
(
packet_index
+
1
)
%
queue_size
;
}
s
->
data_block_counter
=
dbc
;
...
...
@@ -1065,23 +1074,22 @@ static int amdtp_stream_start(struct amdtp_stream *s, int channel, int speed,
s
->
data_block_counter
=
0
;
}
/* initialize packet buffer */
// initialize packet buffer.
max_ctx_payload_size
=
amdtp_stream_get_max_payload
(
s
);
if
(
s
->
direction
==
AMDTP_IN_STREAM
)
{
dir
=
DMA_FROM_DEVICE
;
type
=
FW_ISO_CONTEXT_RECEIVE
;
if
(
!
(
s
->
flags
&
CIP_NO_HEADER
))
if
(
!
(
s
->
flags
&
CIP_NO_HEADER
))
{
max_ctx_payload_size
-=
8
;
ctx_header_size
=
IR_CTX_HEADER_SIZE_CIP
;
else
}
else
{
ctx_header_size
=
IR_CTX_HEADER_SIZE_NO_CIP
;
max_ctx_payload_size
=
amdtp_stream_get_max_payload
(
s
)
-
ctx_header_size
;
}
}
else
{
dir
=
DMA_TO_DEVICE
;
type
=
FW_ISO_CONTEXT_TRANSMIT
;
ctx_header_size
=
0
;
// No effect for IT context.
max_ctx_payload_size
=
amdtp_stream_get_max_payload
(
s
);
if
(
!
(
s
->
flags
&
CIP_NO_HEADER
))
max_ctx_payload_size
-=
IT_PKT_HEADER_SIZE_CIP
;
}
...
...
sound/firewire/bebob/bebob.c
View file @
a06b7ee2
...
...
@@ -387,7 +387,7 @@ static const struct ieee1394_device_id bebob_id_table[] = {
SND_BEBOB_DEV_ENTRY
(
VEN_BRIDGECO
,
0x00010049
,
&
spec_normal
),
/* Mackie, Onyx 1220/1620/1640 (Firewire I/O Card) */
SND_BEBOB_DEV_ENTRY
(
VEN_MACKIE2
,
0x00010065
,
&
spec_normal
),
/
* Mackie, d.2 (Firewire Option) */
/
/ Mackie, d.2 (Firewire option card) and d.2 Pro (the card is built-in).
SND_BEBOB_DEV_ENTRY
(
VEN_MACKIE1
,
0x00010067
,
&
spec_normal
),
/* Stanton, ScratchAmp */
SND_BEBOB_DEV_ENTRY
(
VEN_STANTON
,
0x00000001
,
&
spec_normal
),
...
...
sound/firewire/dice/dice-alesis.c
View file @
a06b7ee2
...
...
@@ -16,7 +16,7 @@ alesis_io14_tx_pcm_chs[MAX_STREAMS][SND_DICE_RATE_MODE_COUNT] = {
static
const
unsigned
int
alesis_io26_tx_pcm_chs
[
MAX_STREAMS
][
SND_DICE_RATE_MODE_COUNT
]
=
{
{
10
,
10
,
4
},
/* Tx0 = Analog + S/PDIF. */
{
16
,
8
,
0
},
/* Tx1 = ADAT1 + ADAT2
. */
{
16
,
4
,
0
},
/* Tx1 = ADAT1 + ADAT2 (available at low rate)
. */
};
int
snd_dice_detect_alesis_formats
(
struct
snd_dice
*
dice
)
...
...
sound/firewire/oxfw/oxfw.c
View file @
a06b7ee2
...
...
@@ -355,7 +355,6 @@ static const struct ieee1394_device_id oxfw_id_table[] = {
* Onyx-i series (former models): 0x081216
* Mackie Onyx Satellite: 0x00200f
* Tapco LINK.firewire 4x6: 0x000460
* d.2 pro: Unknown
* d.4 pro: Unknown
* U.420: Unknown
* U.420d: Unknown
...
...
sound/pci/hda/patch_realtek.c
View file @
a06b7ee2
...
...
@@ -395,7 +395,6 @@ static void alc_fill_eapd_coef(struct hda_codec *codec)
case
0x10ec0282
:
case
0x10ec0283
:
case
0x10ec0286
:
case
0x10ec0287
:
case
0x10ec0288
:
case
0x10ec0285
:
case
0x10ec0298
:
...
...
@@ -406,6 +405,10 @@ static void alc_fill_eapd_coef(struct hda_codec *codec)
case
0x10ec0275
:
alc_update_coef_idx
(
codec
,
0xe
,
0
,
1
<<
0
);
break
;
case
0x10ec0287
:
alc_update_coef_idx
(
codec
,
0x10
,
1
<<
9
,
0
);
alc_write_coef_idx
(
codec
,
0x8
,
0x4ab7
);
break
;
case
0x10ec0293
:
alc_update_coef_idx
(
codec
,
0xa
,
1
<<
13
,
0
);
break
;
...
...
@@ -6251,6 +6254,35 @@ static void alc294_fixup_gx502_hp(struct hda_codec *codec,
}
}
static
void
alc294_gu502_toggle_output
(
struct
hda_codec
*
codec
,
struct
hda_jack_callback
*
cb
)
{
/* Windows sets 0x10 to 0x8420 for Node 0x20 which is
* responsible from changes between speakers and headphones
*/
if
(
snd_hda_jack_detect_state
(
codec
,
0x21
)
==
HDA_JACK_PRESENT
)
alc_write_coef_idx
(
codec
,
0x10
,
0x8420
);
else
alc_write_coef_idx
(
codec
,
0x10
,
0x0a20
);
}
static
void
alc294_fixup_gu502_hp
(
struct
hda_codec
*
codec
,
const
struct
hda_fixup
*
fix
,
int
action
)
{
if
(
!
is_jack_detectable
(
codec
,
0x21
))
return
;
switch
(
action
)
{
case
HDA_FIXUP_ACT_PRE_PROBE
:
snd_hda_jack_detect_enable_callback
(
codec
,
0x21
,
alc294_gu502_toggle_output
);
break
;
case
HDA_FIXUP_ACT_INIT
:
alc294_gu502_toggle_output
(
codec
,
NULL
);
break
;
}
}
static
void
alc285_fixup_hp_gpio_amp_init
(
struct
hda_codec
*
codec
,
const
struct
hda_fixup
*
fix
,
int
action
)
{
...
...
@@ -6468,6 +6500,9 @@ enum {
ALC294_FIXUP_ASUS_GX502_HP
,
ALC294_FIXUP_ASUS_GX502_PINS
,
ALC294_FIXUP_ASUS_GX502_VERBS
,
ALC294_FIXUP_ASUS_GU502_HP
,
ALC294_FIXUP_ASUS_GU502_PINS
,
ALC294_FIXUP_ASUS_GU502_VERBS
,
ALC285_FIXUP_HP_GPIO_LED
,
ALC285_FIXUP_HP_MUTE_LED
,
ALC236_FIXUP_HP_GPIO_LED
,
...
...
@@ -6507,6 +6542,7 @@ enum {
ALC285_FIXUP_HP_LIMIT_INT_MIC_BOOST
,
ALC295_FIXUP_ASUS_DACS
,
ALC295_FIXUP_HP_OMEN
,
ALC285_FIXUP_HP_SPECTRE_X360
,
};
static
const
struct
hda_fixup
alc269_fixups
[]
=
{
...
...
@@ -7709,6 +7745,35 @@ static const struct hda_fixup alc269_fixups[] = {
.
type
=
HDA_FIXUP_FUNC
,
.
v
.
func
=
alc294_fixup_gx502_hp
,
},
[
ALC294_FIXUP_ASUS_GU502_PINS
]
=
{
.
type
=
HDA_FIXUP_PINS
,
.
v
.
pins
=
(
const
struct
hda_pintbl
[])
{
{
0x19
,
0x01a11050
},
/* rear HP mic */
{
0x1a
,
0x01a11830
},
/* rear external mic */
{
0x21
,
0x012110f0
},
/* rear HP out */
{
}
},
.
chained
=
true
,
.
chain_id
=
ALC294_FIXUP_ASUS_GU502_VERBS
},
[
ALC294_FIXUP_ASUS_GU502_VERBS
]
=
{
.
type
=
HDA_FIXUP_VERBS
,
.
v
.
verbs
=
(
const
struct
hda_verb
[])
{
/* set 0x15 to HP-OUT ctrl */
{
0x15
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
0xc0
},
/* unmute the 0x15 amp */
{
0x15
,
AC_VERB_SET_AMP_GAIN_MUTE
,
0xb000
},
/* set 0x1b to HP-OUT */
{
0x1b
,
AC_VERB_SET_PIN_WIDGET_CONTROL
,
0x24
},
{
}
},
.
chained
=
true
,
.
chain_id
=
ALC294_FIXUP_ASUS_GU502_HP
},
[
ALC294_FIXUP_ASUS_GU502_HP
]
=
{
.
type
=
HDA_FIXUP_FUNC
,
.
v
.
func
=
alc294_fixup_gu502_hp
,
},
[
ALC294_FIXUP_ASUS_COEF_1B
]
=
{
.
type
=
HDA_FIXUP_VERBS
,
.
v
.
verbs
=
(
const
struct
hda_verb
[])
{
...
...
@@ -8035,6 +8100,15 @@ static const struct hda_fixup alc269_fixups[] = {
.
chained
=
true
,
.
chain_id
=
ALC269_FIXUP_HP_LINE1_MIC1_LED
,
},
[
ALC285_FIXUP_HP_SPECTRE_X360
]
=
{
.
type
=
HDA_FIXUP_PINS
,
.
v
.
pins
=
(
const
struct
hda_pintbl
[])
{
{
0x14
,
0x90170110
},
/* enable top speaker */
{}
},
.
chained
=
true
,
.
chain_id
=
ALC285_FIXUP_SPEAKER2_TO_DAC1
,
},
};
static
const
struct
snd_pci_quirk
alc269_fixup_tbl
[]
=
{
...
...
@@ -8195,6 +8269,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
SND_PCI_QUIRK
(
0x103c
,
0x8497
,
"HP Envy x360"
,
ALC269_FIXUP_HP_MUTE_LED_MIC3
),
SND_PCI_QUIRK
(
0x103c
,
0x84da
,
"HP OMEN dc0019-ur"
,
ALC295_FIXUP_HP_OMEN
),
SND_PCI_QUIRK
(
0x103c
,
0x84e7
,
"HP Pavilion 15"
,
ALC269_FIXUP_HP_MUTE_LED_MIC3
),
SND_PCI_QUIRK
(
0x103c
,
0x8519
,
"HP Spectre x360 15-df0xxx"
,
ALC285_FIXUP_HP_SPECTRE_X360
),
SND_PCI_QUIRK
(
0x103c
,
0x869d
,
"HP"
,
ALC236_FIXUP_HP_MUTE_LED
),
SND_PCI_QUIRK
(
0x103c
,
0x86c7
,
"HP Envy AiO 32"
,
ALC274_FIXUP_HP_ENVY_GPIO
),
SND_PCI_QUIRK
(
0x103c
,
0x8724
,
"HP EliteBook 850 G7"
,
ALC285_FIXUP_HP_GPIO_LED
),
...
...
@@ -8253,6 +8328,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
SND_PCI_QUIRK
(
0x1043
,
0x1ccd
,
"ASUS X555UB"
,
ALC256_FIXUP_ASUS_MIC
),
SND_PCI_QUIRK
(
0x1043
,
0x1d4e
,
"ASUS TM420"
,
ALC256_FIXUP_ASUS_HPE
),
SND_PCI_QUIRK
(
0x1043
,
0x1e11
,
"ASUS Zephyrus G15"
,
ALC289_FIXUP_ASUS_GA502
),
SND_PCI_QUIRK
(
0x1043
,
0x1e51
,
"ASUS Zephyrus M15"
,
ALC294_FIXUP_ASUS_GU502_PINS
),
SND_PCI_QUIRK
(
0x1043
,
0x1e8e
,
"ASUS Zephyrus G15"
,
ALC289_FIXUP_ASUS_GA401
),
SND_PCI_QUIRK
(
0x1043
,
0x1f11
,
"ASUS Zephyrus G14"
,
ALC289_FIXUP_ASUS_GA401
),
SND_PCI_QUIRK
(
0x1043
,
0x3030
,
"ASUS ZN270IE"
,
ALC256_FIXUP_ASUS_AIO_GPIO2
),
...
...
@@ -8600,6 +8676,7 @@ static const struct hda_model_fixup alc269_fixup_models[] = {
{.
id
=
ALC274_FIXUP_HP_MIC
,
.
name
=
"alc274-hp-mic-detect"
},
{.
id
=
ALC245_FIXUP_HP_X360_AMP
,
.
name
=
"alc245-hp-x360-amp"
},
{.
id
=
ALC295_FIXUP_HP_OMEN
,
.
name
=
"alc295-hp-omen"
},
{.
id
=
ALC285_FIXUP_HP_SPECTRE_X360
,
.
name
=
"alc285-hp-spectre-x360"
},
{}
};
#define ALC225_STANDARD_PINS \
...
...
sound/usb/midi.c
View file @
a06b7ee2
...
...
@@ -1750,7 +1750,7 @@ static struct usb_midi_in_jack_descriptor *find_usb_in_jack_descriptor(
struct
usb_midi_in_jack_descriptor
*
injd
=
(
struct
usb_midi_in_jack_descriptor
*
)
extra
;
if
(
injd
->
bLength
>
4
&&
if
(
injd
->
bLength
>
=
sizeof
(
*
injd
)
&&
injd
->
bDescriptorType
==
USB_DT_CS_INTERFACE
&&
injd
->
bDescriptorSubtype
==
UAC_MIDI_IN_JACK
&&
injd
->
bJackID
==
jack_id
)
...
...
@@ -1773,7 +1773,7 @@ static struct usb_midi_out_jack_descriptor *find_usb_out_jack_descriptor(
struct
usb_midi_out_jack_descriptor
*
outjd
=
(
struct
usb_midi_out_jack_descriptor
*
)
extra
;
if
(
outjd
->
bLength
>
4
&&
if
(
outjd
->
bLength
>
=
sizeof
(
*
outjd
)
&&
outjd
->
bDescriptorType
==
USB_DT_CS_INTERFACE
&&
outjd
->
bDescriptorSubtype
==
UAC_MIDI_OUT_JACK
&&
outjd
->
bJackID
==
jack_id
)
...
...
@@ -1820,7 +1820,8 @@ static void snd_usbmidi_init_substream(struct snd_usb_midi *umidi,
outjd
=
find_usb_out_jack_descriptor
(
hostif
,
jack_id
);
if
(
outjd
)
{
sz
=
USB_DT_MIDI_OUT_SIZE
(
outjd
->
bNrInputPins
);
iJack
=
*
(((
uint8_t
*
)
outjd
)
+
sz
-
sizeof
(
uint8_t
));
if
(
outjd
->
bLength
>=
sz
)
iJack
=
*
(((
uint8_t
*
)
outjd
)
+
sz
-
sizeof
(
uint8_t
));
}
}
else
{
/* and out jacks connect to ins */
...
...
@@ -1956,8 +1957,12 @@ static int snd_usbmidi_get_ms_info(struct snd_usb_midi *umidi,
ms_ep
=
find_usb_ms_endpoint_descriptor
(
hostep
);
if
(
!
ms_ep
)
continue
;
if
(
ms_ep
->
bLength
<=
sizeof
(
*
ms_ep
))
continue
;
if
(
ms_ep
->
bNumEmbMIDIJack
>
0x10
)
continue
;
if
(
ms_ep
->
bLength
<
sizeof
(
*
ms_ep
)
+
ms_ep
->
bNumEmbMIDIJack
)
continue
;
if
(
usb_endpoint_dir_out
(
ep
))
{
if
(
endpoints
[
epidx
].
out_ep
)
{
if
(
++
epidx
>=
MIDI_MAX_ENDPOINTS
)
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment