aboutsummaryrefslogtreecommitdiff
path: root/sound/usb
AgeCommit message (Collapse)AuthorFilesLines
2021-06-22ALSA: usb-audio: scarlett2: Fix Level Meter controlGeoffrey D. Bennett1-12/+13
The Level Meter control had a fixed number of channels and therefore only worked with the 18i20 Gen 2. Fix the control to contain the correct number of channels. Signed-off-by: Geoffrey D. Bennett <g@b4.vu> Link: https://lore.kernel.org/r/5e9a2d5c136270db2d048db53a3b4b6e6d4a63de.1624294591.git.g@b4.vu Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-22ALSA: usb-audio: scarlett2: Split struct scarlett2_portsGeoffrey D. Bennett1-179/+124
The scarlett2_ports struct contains both generic (hardware IDs and descriptions) and model-specific (port count) data. Remove the generic data from the scarlett2_device_info struct so it is not repeated for every model. Signed-off-by: Geoffrey D. Bennett <g@b4.vu> Link: https://lore.kernel.org/r/7a9e57e4e55a482390c692a9e60731d72b664a15.1624294591.git.g@b4.vu Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-22ALSA: usb-audio: scarlett2: Allow arbitrary ordering of mux entriesGeoffrey D. Bennett1-68/+154
Some Gen 3 devices do not put all of the mux entries for the same port types together in order in the "set mux" message data. To prepare for this, replace the struct scarlett2_ports num[] array and the assignment_order[] array with mux_assignment[], a list of port types and ranges that is defined in the struct scarlett2_device_info. Signed-off-by: Geoffrey D. Bennett <g@b4.vu> Link: https://lore.kernel.org/r/08e8d784d78262cb57496d28ef1ad7b6213a90ab.1624294591.git.g@b4.vu Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-22ALSA: usb-audio: scarlett2: Add mute supportGeoffrey D. Bennett1-25/+145
For each analogue output, in addition to the output volume (gain) control, the hardware also has a mute control. Add ALSA mute controls for each analogue output. If the device has the line_out_hw_vol feature, then the mute control is disabled along with the output volume control when the switch is set to HW. Signed-off-by: Geoffrey D. Bennett <g@b4.vu> Link: https://lore.kernel.org/r/6fad82174b44633e46cfd96332a038de74d544f2.1624294591.git.g@b4.vu Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-22ALSA: usb-audio: scarlett2: Add scarlett2_vol_ctl_write() helperGeoffrey D. Bennett1-12/+20
Add helper function for setting the read/write status of a volume control. This will simplify the upcoming mute control support. Signed-off-by: Geoffrey D. Bennett <g@b4.vu> Link: https://lore.kernel.org/r/00dd57e1abb3fa379fb51d4ac8537dbddc09f0ea.1624294591.git.g@b4.vu Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-22ALSA: usb-audio: scarlett2: Remove repeated device info commentsGeoffrey D. Bennett1-16/+17
Document the fields of struct scarlett2_device_info in the definition of the struct, not in each instantiation. Signed-off-by: Geoffrey D. Bennett <g@b4.vu> Link: https://lore.kernel.org/r/3486e4d38973333d4ec38f32578c16a9f97bf6c8.1624294591.git.g@b4.vu Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-22ALSA: usb-audio: scarlett2: Move info lookup out of init functionGeoffrey D. Bennett1-11/+10
The info variable is not used by snd_scarlett_gen2_init() except to pass it to snd_scarlett_gen2_controls_create(), so move the lookup into that function. Signed-off-by: Geoffrey D. Bennett <g@b4.vu> Link: https://lore.kernel.org/r/c4b6d17708e104503d9a2b88f9b3320bb9904cfa.1624294591.git.g@b4.vu Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-22ALSA: usb-audio: scarlett2: Improve device info lookupGeoffrey D. Bennett1-14/+23
Add the USB device ID to the scarlett2_device_info struct so that the switch statement which finds the appropriate struct can be replaced with a loop that looks through an array of pointers to those structs. Suggested-by: Vladimir Sadovnikov <sadko4u@gmail.com> Signed-off-by: Geoffrey D. Bennett <g@b4.vu> Link: https://lore.kernel.org/r/474c408c29fb280a611e47e49e59ca2fb9810d27.1624294591.git.g@b4.vu Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-22ALSA: usb-audio: scarlett2: Reformat scarlett2_config_items[]Geoffrey D. Bennett1-30/+10
Use designated initializers and merge lines in preparation for more configuration items coming soon. Signed-off-by: Geoffrey D. Bennett <g@b4.vu> Link: https://lore.kernel.org/r/512d14eeb3571a266810c954d0f83140a3af7afc.1624294591.git.g@b4.vu Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-22ALSA: usb-audio: scarlett2: Merge common line in capture stringsGeoffrey D. Bennett1-2/+3
Use a common sprintf() format for the mixer element names generated in scarlett2_add_line_in_ctls() in preparation for more of them. Signed-off-by: Geoffrey D. Bennett <g@b4.vu> Link: https://lore.kernel.org/r/d91dce45ac75a541c21f47540ecbda24bd83f68c.1624294591.git.g@b4.vu Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-22ALSA: usb-audio: scarlett2: Add "Sync Status" controlGeoffrey D. Bennett1-1/+100
Add "Sync Status" control to display the sync locked/unlocked status. Signed-off-by: Geoffrey D. Bennett <g@b4.vu> Link: https://lore.kernel.org/r/d6967d7a34b2ea7e0672ba819e4ed8b99e8dcd35.1624294591.git.g@b4.vu Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-22ALSA: usb-audio: scarlett2: Always enable interrupt pollingGeoffrey D. Bennett1-7/+10
Always enable interrupt polling as every model has some sort of status to report. Signed-off-by: Geoffrey D. Bennett <g@b4.vu> Link: https://lore.kernel.org/r/8f49a6b9a9805ee0db221706193b7bb43b7fff75.1624294591.git.g@b4.vu Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-22ALSA: usb-audio: scarlett2: Fix 6i6 Gen 2 line out descriptionsGeoffrey D. Bennett1-4/+4
There are two headphone outputs, and they map to the four analogue outputs. Signed-off-by: Geoffrey D. Bennett <g@b4.vu> Link: https://lore.kernel.org/r/205e5e5348f08ded0cc4da5446f604d4b91db5bf.1624294591.git.g@b4.vu Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-22ALSA: usb-audio: scarlett2: Update initialisation sequenceGeoffrey D. Bennett1-11/+45
The old initialisation code only works with Gen 2 devices. Replace it with an initialisation sequence that works on both Gen 2 and Gen 3 devices. Signed-off-by: Geoffrey D. Bennett <g@b4.vu> Link: https://lore.kernel.org/r/6e5c4fedb74b813872f6a4b7fba30b6c471fa63a.1624294591.git.g@b4.vu Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-22ALSA: usb-audio: scarlett2: Add usb_tx/rx functionsGeoffrey D. Bennett1-18/+26
Pull out snd_usb_ctl_msg() calls from scarlett2_usb() and put into scarlett2_usb_tx() and scarlett2_usb_rx() functions. Signed-off-by: Geoffrey D. Bennett <g@b4.vu> Link: https://lore.kernel.org/r/720d1d6f227fc8f5d7d6191a8de62db796940235.1624294591.git.g@b4.vu Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-22ALSA: usb-audio: Fix OOB access at proc outputTakashi Iwai1-2/+3
At extending the available mixer values for 32bit types, we forgot to add the corresponding entries for the format dump in the proc output. This may result in OOB access. Here adds the missing entries. Fixes: bc18e31c3042 ("ALSA: usb-audio: Fix parameter block size for UAC2 control requests") Cc: <stable@vger.kernel.org> Link: https://lore.kernel.org/r/20210622090647.14021-1-tiwai@suse.de Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-21ALSA: usb-audio: scarlett2: Remove hard-coded USB #definesGeoffrey D. Bennett1-19/+55
Remove the hard-coded interface number and related constants for the vendor-specific interface and look them up from the USB endpoint descriptor. Signed-off-by: Geoffrey D. Bennett <g@b4.vu> Link: https://lore.kernel.org/r/20210620164652.GA9237@m.b4.vu Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-21ALSA: usb-audio: scarlett2: Don't copy struct scarlett2_configGeoffrey D. Bennett1-10/+10
scarlett2_usb_set_config() and scarlett2_usb_get_config() were copying struct scarlett2_config. Use a pointer instead. Signed-off-by: Geoffrey D. Bennett <g@b4.vu> Link: https://lore.kernel.org/r/20210620164648.GA9231@m.b4.vu Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-21ALSA: usb-audio: scarlett2: Fix union usage in mixer control callbacksGeoffrey D. Bennett1-6/+6
Fix mixer control callbacks to use the correct members of the struct snd_ctl_elem_value. The use of value.integer and value.enumerated were swapped in a few places. Update scarlett2_mux_src_enum_ctl_put() to use min() instead of clamp() as value.enumerated.item is unsigned. Signed-off-by: Geoffrey D. Bennett <g@b4.vu> Link: https://lore.kernel.org/r/20210620164647.GA9226@m.b4.vu Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-21ALSA: usb-audio: scarlett2: Fix scarlett2_*_ctl_put() return valuesGeoffrey D. Bennett1-0/+8
Mixer control put callbacks should return 1 if the value is changed. Fix the sw_hw, level, pad, and button controls accordingly. Signed-off-by: Geoffrey D. Bennett <g@b4.vu> Link: https://lore.kernel.org/r/20210620164645.GA9221@m.b4.vu Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-21ALSA: usb-audio: scarlett2: Fix data_mutex lockGeoffrey D. Bennett1-12/+9
The private->vol_updated flag was being checked outside of the mutex_lock/unlock() of private->data_mutex leading to the volume data being fetched twice from the device unnecessarily or old volume data being returned. Update scarlett2_*_ctl_get() and include the private->vol_updated flag check inside the critical region. Signed-off-by: Geoffrey D. Bennett <g@b4.vu> Link: https://lore.kernel.org/r/20210620164643.GA9216@m.b4.vu Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-21ALSA: usb-audio: scarlett2: Add temp variable for consistencyGeoffrey D. Bennett1-3/+4
Add index temporary variable to scarlett2_mixer_ctl_put() for consistency with the other *_ctl_put() functions. Signed-off-by: Geoffrey D. Bennett <g@b4.vu> Link: https://lore.kernel.org/r/20210620164641.GA9211@m.b4.vu Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-21ALSA: usb-audio: scarlett2: Rename struct scarlett2_mixer_dataGeoffrey D. Bennett1-40/+40
Rename struct scarlett2_mixer_data to struct scarlett2_data. A less-wordy name is better because it is used everywhere, and although this is a mixer driver, it also controls other vendor-specific features. Signed-off-by: Geoffrey D. Bennett <g@b4.vu> Link: https://lore.kernel.org/r/20210620164639.GA9206@m.b4.vu Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-21ALSA: usb-audio: scarlett2: Rename buttons/interrupts/volGeoffrey D. Bennett1-47/+47
To match the vendor's terminology, change #defines, identifiers, and comments: - mute/dim/hardware buttons are now called dim/mute - mixer status/interrupt is now notify - vol is now monitor Signed-off-by: Geoffrey D. Bennett <g@b4.vu> Link: https://lore.kernel.org/r/20210620164636.GA9199@m.b4.vu Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-21ALSA: usb-audio: scarlett2: Remove redundant info->button_countGeoffrey D. Bennett1-18/+23
The per-model button_count value was used to determine whether dim/mute controls should be added, but these are present iff line_out_hw_vol is true. Remove button_count and replace with SCARLETT2_BUTTON_MAX and a check for line_out_hw_vol true. Signed-off-by: Geoffrey D. Bennett <g@b4.vu> Link: https://lore.kernel.org/r/20210620164634.GA9193@m.b4.vu Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-21ALSA: usb-audio: scarlett2: Remove interrupt debug messageGeoffrey D. Bennett1-11/+6
Just ignore instead of printing an error if the interrupt data is not the expected length. This check was for development and the condition has not been observed. Signed-off-by: Geoffrey D. Bennett <g@b4.vu> Link: https://lore.kernel.org/r/20210620164632.GA9186@m.b4.vu Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-21ALSA: usb-audio: scarlett2: Remove unused/useless codeGeoffrey D. Bennett1-21/+5
Remove #define not used. Remove useless assignments and copies. Signed-off-by: Geoffrey D. Bennett <g@b4.vu> Link: https://lore.kernel.org/r/20210620164630.GA9180@m.b4.vu Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-21ALSA: usb-audio: scarlett2: Coding style improvementsGeoffrey D. Bennett1-26/+27
Improve alignment and readability with: - Whitespace fixes - Add leading zeros to 32-bit flag values - Rename SCARLETT2_USB_GET_METER_LEVELS to SCARLETT2_USB_GET_METER - Rename SCARLETT2_PORT_DIRECTIONS to SCARLETT2_PORT_DIRNS Signed-off-by: Geoffrey D. Bennett <g@b4.vu> Link: https://lore.kernel.org/r/20210620164628.GA9172@m.b4.vu Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-21ALSA: usb-audio: scarlett2: Fix 18i8 Gen 2 PCM Input countGeoffrey D. Bennett1-1/+1
The 18i8 Gen 2 has 8 PCM Inputs, not 20. Fix the ports entry in s18i8_gen2_info. Signed-off-by: Geoffrey D. Bennett <g@b4.vu> Link: https://lore.kernel.org/r/20210620164625.GA9165@m.b4.vu Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-21ALSA: usb-audio: scarlett2: Remove incorrect S/PDIF commentGeoffrey D. Bennett1-4/+0
The 18i8 Gen 2 S/PDIF outputs are available at 192kHz, unlike the 18i20 Gen 2. Remove the comment that says otherwise. Signed-off-by: Geoffrey D. Bennett <g@b4.vu> Link: https://lore.kernel.org/r/20210620164622.GA9155@m.b4.vu Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-17ALSA: usb-audio: fix rate on Ozone Z90 USB headsetDaehwan Jung1-0/+2
It mislabels its 96 kHz altsetting and that's why it causes some noise Signed-off-by: Daehwan Jung <dh10.jung@samsung.com> Cc: <stable@vger.kernel.org> Link: https://lore.kernel.org/r/1623836097-61918-1-git-send-email-dh10.jung@samsung.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-10ALSA: usb-audio: Add support for Denon DN-X1600Damien Zammit2-0/+77
This provides support for Denon DN-X1600 hardware mixer. The device itself supports 44100, 48000 and 96000 (Hz) sample rates, but switching rates via software is currently not working. Therefore, this patch hardcodes the sample rate to 48000Hz which enables all 8 channels to function correctly when the correct sample rate is selected on the hardware itself. MIDI also tested and works. Signed-off-by: Damien Zammit <damien@zamaudio.com> Tested-by: xalmoxis@gmail.com Link: https://lore.kernel.org/r/20210610083528.603942-2-damien@zamaudio.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-08ALSA: usb-audio: scarlett2: Read mux at init timeGeoffrey D. Bennett1-64/+106
Add support for retrieving the mux configuration from the hardware when the driver is initialising. Previously the ALSA controls were initialised to a default hard-coded state instead of being initialised to match the hardware state. Fixes: 9e4d5c1be21f ("ALSA: usb-audio: Scarlett Gen 2 mixer interface") Suggested-by: Vladimir Sadovnikov <sadko4u@gmail.com> Tested-by: Markus Schroetter <project.m.schroetter@gmail.com> Tested-by: Alex Fellows <alex.fellows@gmail.com> Tested-by: Daniel Sales <daniel.sales.z@gmail.com> Signed-off-by: Geoffrey D. Bennett <g@b4.vu> Link: https://lore.kernel.org/r/15b17c60a2bca174bcddcec41c9419b746f21c1d.1623091570.git.g@b4.vu Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-08ALSA: usb-audio: scarlett2: Read mixer volumes at init timeGeoffrey D. Bennett1-2/+55
Add support for reading the mixer volumes from the hardware when the driver is initialising. Previously these ALSA volume controls were initialised to zero instead of being initialised to match the hardware state. Fixes: 9e4d5c1be21f ("ALSA: usb-audio: Scarlett Gen 2 mixer interface") Suggested-by: Vladimir Sadovnikov <sadko4u@gmail.com> Tested-by: Markus Schroetter <project.m.schroetter@gmail.com> Tested-by: Alex Fellows <alex.fellows@gmail.com> Tested-by: Daniel Sales <daniel.sales.z@gmail.com> Signed-off-by: Geoffrey D. Bennett <g@b4.vu> Link: https://lore.kernel.org/r/bb33fa9b79efc6f7a0f0e6fb7018cc8d4d59b3ba.1623091570.git.g@b4.vu Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-08Merge branch 'for-linus' into for-nextTakashi Iwai7-44/+58
2021-06-02ALSA: usb-audio: Reduce latency at playback startTakashi Iwai1-5/+9
USB-audio driver behaves a bit strangely for the playback stream -- namely, it starts sending silent packets at PCM prepare state while the actual data is submitted at first when the trigger START is kicked off. This is a workaround for the behavior where URBs are processed too quickly at the beginning. That is, if we start submitting URBs at trigger START, the first few URBs will be immediately completed, and this would result in the immediate period-elapsed calls right after the start, which may confuse applications. OTOH, submitting the data after silent URBs would, of course, result in a certain delay of the actual data processing, and this is rather more serious problem on modern systems, in practice. This patch tries to revert the workaround and lets the URB submission starting at PCM trigger for the playback again. As far as I've tested with various backends (native ALSA, PA, JACK, PW), I haven't seen any problems (famous last words :) Note that the capture stream handling needs no such workaround, since the capture is driven per received URB. Link: https://lore.kernel.org/r/20210601162457.4877-6-tiwai@suse.de Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-02ALSA: usb-audio: Factor out DSD bitrev copy functionTakashi Iwai1-9/+19
Just minor code refactoring. Like DOP DSD code, it can be better in a separate function for code readability. Link: https://lore.kernel.org/r/20210601162457.4877-5-tiwai@suse.de Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-02ALSA: usb-audio: Refactoring delay account codeTakashi Iwai3-80/+56
The PCM delay accounting in USB-audio driver is a bit complex to follow, and this is an attempt to improve the readability and provide some potential fix. Basically, the PCM position delay is calculated from two factors: the in-flight data on URBs and the USB frame counter. For the playback stream, we advance the hwptr already at submitting URBs. Those "in-flight" data amount is now tracked, and this is used as the base value for the PCM delay correction. The in-flight data is decreased again at URB completion in return. For the capture stream, OTOH, there is no in-flight data, hence the delay base is zero. The USB frame counter is used in addition for correcting the current position. The reference frame counter is updated at each submission and receiving time, and the difference from the current counter value is taken into account. In this patch, each in-flight data bytes is recorded in the new snd_usb_ctx.queued field, and the total in-flight amount is tracked in snd_usb_substream.inflight_bytes field, as the replacement of last_delay field. Note that updating the hwptr after URB completion doesn't work for PulseAudio who tries to scratch the buffer on the fly; USB-audio is basically a double-buffer implementation, hence the scratching the buffer can't work for the already submitted data. So we always update hwptr beforehand. It's not ideal, but the delay account should give enough correctness. Link: https://lore.kernel.org/r/20210601162457.4877-4-tiwai@suse.de Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-02ALSA: usb-audio: Pre-calculate buffer byte sizeTakashi Iwai2-24/+25
There are a bunch of lines calculating the buffer size in bytes at each time. Keep the value in subs->buffer_bytes and use it consistently for the code simplicity. Link: https://lore.kernel.org/r/20210601162457.4877-3-tiwai@suse.de Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-06-02ALSA: usb-audio: Make snd_usb_pcm_delay() staticTakashi Iwai2-5/+2
It's a local function, let's make it static. Link: https://lore.kernel.org/r/20210601162457.4877-2-tiwai@suse.de Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-05-30ALSA: usb-audio: Remove the repeated declarationShaokun Zhang1-1/+0
Function 'snd_usb_endpoint_suspend' is declared twice, so remove the repeated declaration. Signed-off-by: Shaokun Zhang <zhangshaokun@hisilicon.com> Link: https://lore.kernel.org/r/1622278926-63857-1-git-send-email-zhangshaokun@hisilicon.com Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-05-25Merge branch 'topic/pci-rescan-prep-v2' into for-nextTakashi Iwai1-1/+1
Pull PCI rescan prep work. Link: https://lore.kernel.org/r/20210523090920.15345-1-tiwai@suse.de
2021-05-25ALSA: Drop superfluous argument from snd_power_wait()Takashi Iwai1-1/+1
The power_state argument of snd_power_wait() is superfluous, receiving only SNDRV_POWER_STATE_D0. Let's drop it in all callers for simplicity. Reviewed-by: Jaroslav Kysela <perex@perex.cz> Acked-by: Mark Brown <broonie@kernel.org> Link: https://lore.kernel.org/r/20210523090920.15345-6-tiwai@suse.de Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-05-23ALSA: usb-audio: scarlett2: snd_scarlett_gen2_controls_create() can be statickernel test robot1-2/+2
sound/usb/mixer_scarlett_gen2.c:2000:5: warning: symbol 'snd_scarlett_gen2_controls_create' was not declared. Should it be static? Fixes: 265d1a90e4fb ("ALSA: usb-audio: scarlett2: Improve driver startup messages") Reported-by: kernel test robot <lkp@intel.com> Signed-off-by: kernel test robot <lkp@intel.com> Link: https://lore.kernel.org/r/20210522180900.GA83915@f59a3af2f1d9 Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-05-21ALSA: usb-audio: scarlett2: Improve driver startup messagesGeoffrey D. Bennett3-31/+52
Add separate init function to call the existing controls_create function so a custom error can be displayed if initialisation fails. Use info level instead of error for notifications. Display the VID/PID so device_setup is targeted to the right device. Display "enabled" message to easily confirm that the driver is loaded. Signed-off-by: Geoffrey D. Bennett <g@b4.vu> Cc: <stable@vger.kernel.org> Link: https://lore.kernel.org/r/b5d140c65f640faf2427e085fbbc0297b32e5fce.1621584566.git.g@b4.vu Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-05-21ALSA: usb-audio: scarlett2: Fix device hang with ehci-pciGeoffrey D. Bennett1-1/+1
Use usb_rcvctrlpipe() not usb_sndctrlpipe() for USB control input in the Scarlett Gen 2 mixer driver. This fixes the device hang during initialisation when used with the ehci-pci host driver. Fixes: 9e4d5c1be21f ("ALSA: usb-audio: Scarlett Gen 2 mixer interface") Signed-off-by: Geoffrey D. Bennett <g@b4.vu> Cc: <stable@vger.kernel.org> Link: https://lore.kernel.org/r/66a3d05dac325d5b53e4930578e143cef1f50dbe.1621584566.git.g@b4.vu Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-05-21ALSA: usb-audio: fix control-request directionJohan Hovold1-1/+1
The direction of the pipe argument must match the request-type direction bit or control requests may fail depending on the host-controller-driver implementation. Fix the UAC2_CS_CUR request which erroneously used usb_sndctrlpipe(). Fixes: 93db51d06b32 ("ALSA: usb-audio: Check valid altsetting at parsing rates for UAC2/3") Cc: stable@vger.kernel.org # 5.10 Signed-off-by: Johan Hovold <johan@kernel.org> Link: https://lore.kernel.org/r/20210521133742.18098-1-johan@kernel.org Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-05-21ALSA: usb-audio: Fix uninitialized variable at __uac_clock_find_source()Takashi Iwai1-1/+1
The cur variable indicating the currently selected clock source can be theoretically used as uninitialized after the recent commit 481f17c41803 ("ALSA: usb-audio: Handle error for the current selector gracefully"). For addressing it, initialize it before use. Also, one place seems setting 0 to a wrong variable ret, instead of cur; otherwise it makes little sense. Since the initialization is done beforehand, we can get rid of this line, too. Fixes: 481f17c41803 ("ALSA: usb-audio: Handle error for the current selector gracefully") Reported-by: Colin Ian King <colin.king@canonical.com> Link: https://lore.kernel.org/r/4b261d68-f53f-240d-2d8a-2f88b337849d@canonical.com Link: https://lore.kernel.org/r/s5hfsyhh97t.wl-tiwai@suse.de Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-05-19ALSA: line6: Fix racy initialization of LINE6 MIDITakashi Iwai3-11/+4
The initialization of MIDI devices that are found on some LINE6 drivers are currently done in a racy way; namely, the MIDI buffer instance is allocated and initialized in each private_init callback while the communication with the interface is already started via line6_init_cap_control() call before that point. This may lead to Oops in line6_data_received() when a spurious event is received, as reported by syzkaller. This patch moves the MIDI initialization to line6_init_cap_control() as well instead of the too-lately-called private_init for avoiding the race. Also this reduces slightly more lines, so it's a win-win change. Reported-by: syzbot+0d2b3feb0a2887862e06@syzkallerlkml..appspotmail.com Link: https://lore.kernel.org/r/000000000000a4be9405c28520de@google.com Link: https://lore.kernel.org/r/20210517132725.GA50495@hyeyoo Cc: Hyeonggon Yoo <42.hyeyoo@gmail.com> Cc: <stable@vger.kernel.org> Link: https://lore.kernel.org/r/20210518083939.1927-1-tiwai@suse.de Signed-off-by: Takashi Iwai <tiwai@suse.de>
2021-05-19ALSA: usb-audio: Handle error for the current selector gracefullyTakashi Iwai1-3/+10
Currently we bail out when the device returns an error or an invalid value for the current clock selector value via uac_clock_selector_get_val(). But it's possible that the device is really uninitialized and waits for the setup of the proper route at first. For handling such a case, this patch lets the driver dealing with the error or the invalid error more gracefully, choosing the clock source automatically instead. Link: https://lore.kernel.org/r/20210518152112.8016-3-tiwai@suse.de Signed-off-by: Takashi Iwai <tiwai@suse.de>