ALSA: usb-audio: Fix missing endian conversion
The UAC2 jack detection support introduced the bmControls checks in a
couple of places, but they forgot the endian conversion; the
bmControls of UAC2 terminal descriptor is __le16, not a byte like in
UAC1.
Fixes: 5a222e8494
("ALSA: usb-audio: UAC2 jack detection")
Tested-by: Andrew Chant <achant@google.com>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
2de841efae
commit
2b54f785b4
@ -1860,7 +1860,7 @@ static int parse_audio_input_terminal(struct mixer_build *state, int unitid,
|
|||||||
check_input_term(state, d->bTerminalID, &iterm);
|
check_input_term(state, d->bTerminalID, &iterm);
|
||||||
if (state->mixer->protocol == UAC_VERSION_2) {
|
if (state->mixer->protocol == UAC_VERSION_2) {
|
||||||
/* Check for jack detection. */
|
/* Check for jack detection. */
|
||||||
if (uac_v2v3_control_is_readable(d->bmControls,
|
if (uac_v2v3_control_is_readable(le16_to_cpu(d->bmControls),
|
||||||
UAC2_TE_CONNECTOR)) {
|
UAC2_TE_CONNECTOR)) {
|
||||||
build_connector_control(state, &iterm, true);
|
build_connector_control(state, &iterm, true);
|
||||||
}
|
}
|
||||||
@ -2562,7 +2562,7 @@ static int snd_usb_mixer_controls(struct usb_mixer_interface *mixer)
|
|||||||
if (err < 0 && err != -EINVAL)
|
if (err < 0 && err != -EINVAL)
|
||||||
return err;
|
return err;
|
||||||
|
|
||||||
if (uac_v2v3_control_is_readable(desc->bmControls,
|
if (uac_v2v3_control_is_readable(le16_to_cpu(desc->bmControls),
|
||||||
UAC2_TE_CONNECTOR)) {
|
UAC2_TE_CONNECTOR)) {
|
||||||
build_connector_control(&state, &state.oterm,
|
build_connector_control(&state, &state.oterm,
|
||||||
false);
|
false);
|
||||||
|
Loading…
Reference in New Issue
Block a user