[alsa-devel] [PATCH] ALSA: usb-audio: Fix missing endian conversion
Andrew Chant
achant at google.com
Tue Apr 24 13:28:39 CEST 2018
On Mon, Apr 23, 2018 at 9:24 PM, Takashi Iwai <tiwai at suse.de> wrote:
>
> 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: 5a222e849452 ("ALSA: usb-audio: UAC2 jack detection")
> Signed-off-by: Takashi Iwai <tiwai at suse.de>
Tested-by: Andrew Chant <achant at google.com>
>
> ---
> sound/usb/mixer.c | 4 ++--
> 1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/sound/usb/mixer.c b/sound/usb/mixer.c
> index 301ad61ed426..f78b500b3c0e 100644
> --- a/sound/usb/mixer.c
> +++ b/sound/usb/mixer.c
> @@ -1859,7 +1859,7 @@ static int parse_audio_input_terminal(struct mixer_build *state, int unitid,
> check_input_term(state, d->bTerminalID, &iterm);
> if (state->mixer->protocol == UAC_VERSION_2) {
> /* 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)) {
> build_connector_control(state, &iterm, true);
> }
> @@ -2561,7 +2561,7 @@ static int snd_usb_mixer_controls(struct usb_mixer_interface *mixer)
> if (err < 0 && err != -EINVAL)
> return err;
>
> - if (uac_v2v3_control_is_readable(desc->bmControls,
> + if (uac_v2v3_control_is_readable(le16_to_cpu(desc->bmControls),
> UAC2_TE_CONNECTOR)) {
> build_connector_control(&state, &state.oterm,
> false);
> --
> 2.16.3
>
Tests fine, thank you. Did you intentionally leave the
UAC2_CS_CONTROL_CLOCK_VALID reading at line 1575 for another patch?
More information about the Alsa-devel
mailing list