diff options
author | Takashi Iwai <tiwai@suse.de> | 2021-07-29 09:38:51 +0200 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2021-08-02 09:05:58 +0200 |
commit | 019c7f912ca947c80b9b6f090fee90f90e1be9c8 (patch) | |
tree | 1f7900ce777c595eb3654a756748c1c609637f47 /sound/usb | |
parent | c1b034a4214e4ce81132be9db44e9fe3e2369351 (diff) | |
download | linux-019c7f912ca947c80b9b6f090fee90f90e1be9c8.tar.gz linux-019c7f912ca947c80b9b6f090fee90f90e1be9c8.tar.bz2 linux-019c7f912ca947c80b9b6f090fee90f90e1be9c8.zip |
ALSA: usb-audio: Move playback_first flag into quirk_flags
The snd_usb_audio.playback_first flag is used by the implicit feedback
mode handling, and this can be also moved to quirk_flags.
Link: https://lore.kernel.org/r/20210729073855.19043-6-tiwai@suse.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/usb')
-rw-r--r-- | sound/usb/endpoint.c | 2 | ||||
-rw-r--r-- | sound/usb/implicit.c | 6 | ||||
-rw-r--r-- | sound/usb/usbaudio.h | 4 |
3 files changed, 7 insertions, 5 deletions
diff --git a/sound/usb/endpoint.c b/sound/usb/endpoint.c index 16c36e43c16f..6016e97faf69 100644 --- a/sound/usb/endpoint.c +++ b/sound/usb/endpoint.c @@ -1382,7 +1382,7 @@ int snd_usb_endpoint_start(struct snd_usb_endpoint *ep) goto __error; if (snd_usb_endpoint_implicit_feedback_sink(ep) && - !ep->chip->playback_first) { + !(ep->chip->quirk_flags & QUIRK_FLAG_PLAYBACK_FIRST)) { for (i = 0; i < ep->nurbs; i++) { struct snd_urb_ctx *ctx = ep->urb + i; list_add_tail(&ctx->ready_list, &ep->ready_playback_urbs); diff --git a/sound/usb/implicit.c b/sound/usb/implicit.c index 590a0dbba7a2..23767a14d126 100644 --- a/sound/usb/implicit.c +++ b/sound/usb/implicit.c @@ -171,7 +171,7 @@ static int add_roland_implicit_fb(struct snd_usb_audio *chip, if (!usb_endpoint_is_isoc_in(epd) || (epd->bmAttributes & USB_ENDPOINT_SYNCTYPE) != USB_ENDPOINT_SYNC_ASYNC) return 0; - chip->playback_first = 1; + chip->quirk_flags |= QUIRK_FLAG_PLAYBACK_FIRST; return add_implicit_fb_sync_ep(chip, fmt, epd->bEndpointAddress, 0, alts->desc.bInterfaceNumber, alts); } @@ -320,7 +320,7 @@ static int audioformat_implicit_fb_quirk(struct snd_usb_audio *chip, case IMPLICIT_FB_FIXED: return 0; /* no quirk */ case IMPLICIT_FB_BOTH: - chip->playback_first = 1; + chip->quirk_flags |= QUIRK_FLAG_PLAYBACK_FIRST; return add_generic_implicit_fb(chip, fmt, alts); } } @@ -344,7 +344,7 @@ static int audioformat_implicit_fb_quirk(struct snd_usb_audio *chip, /* Pioneer devices with vendor spec class */ if (is_pioneer_implicit_fb(chip, alts)) { - chip->playback_first = 1; + chip->quirk_flags |= QUIRK_FLAG_PLAYBACK_FIRST; return add_implicit_fb_sync_ep(chip, fmt, get_endpoint(alts, 1)->bEndpointAddress, 1, alts->desc.bInterfaceNumber, diff --git a/sound/usb/usbaudio.h b/sound/usb/usbaudio.h index 4003ca99d4ac..8de2b6c51dad 100644 --- a/sound/usb/usbaudio.h +++ b/sound/usb/usbaudio.h @@ -36,7 +36,6 @@ struct snd_usb_audio { wait_queue_head_t shutdown_wait; unsigned int quirk_flags; unsigned int need_delayed_register:1; /* warn for delayed registration */ - unsigned int playback_first:1; /* for implicit fb: don't wait for the first capture URBs */ int num_interfaces; int num_suspended_intf; int sample_rate_read_error; @@ -139,11 +138,14 @@ extern bool snd_usb_skip_validation; * slots (audio frames) * QUIRK_TX_LENGTH: * Add length specifier to transfers + * QUIRK_FLAG_PLAYBACK_FIRST: + * Start playback stream at first even in implement feedback mode */ #define QUIRK_FLAG_GET_SAMPLE_RATE (1U << 0) #define QUIRK_FLAG_SHARE_MEDIA_DEVICE (1U << 1) #define QUIRK_FLAG_ALIGN_TRANSFER (1U << 2) #define QUIRK_FLAG_TX_LENGTH (1U << 3) +#define QUIRK_FLAG_PLAYBACK_FIRST (1U << 4) #endif /* __USBAUDIO_H */ |