Takashi Iwai [Tue, 17 Dec 2019 08:14:48 +0000 (09:14 +0100)]
ALSA: cmipci: Allow disabling MPU port via module option
Patrick May reported that his sound card with CMI8378 chip causes a
crash / reboot when accessing the MIDI port that isn't actually
present on the board. Moreover, despite of the documentation,
passing mpu_port=0 doesn't disable the MIDI port on this board.
It implies that the chip is a newer revision and the MPU401 port is
integrated and mapped on the PCI register. For this chip model, the
driver enables the MPU port unconditionally, so far.
Although fixing the unexpected reboot would be the best solution, it's
not so trivial to identify the cause. So, as a plan B, this patch
extends the existing mpu_port option usage to allow disabling the port
by specifying the value 0, just like we applied for fm_port option in
commit d04d0e68473a ("[ALSA] cmipci - Allow to disable integrated FM
port"). As default, the MPU port is still enabled, but user can pass
mpu_port=0 to disable it.
Takashi Sakamoto [Sat, 14 Dec 2019 13:13:51 +0000 (22:13 +0900)]
ALSA: control: remove useless assignment in .info callback of PCM chmap element
Control elements for PCM chmap return information to userspace abount
the maximum number of available PCM channels as the number of values
in the element.
In current implementation the number is once initialized to zero, then
assigned to. This is useless and this commit fixes it.
Takashi Iwai [Thu, 12 Dec 2019 19:11:01 +0000 (20:11 +0100)]
ALSA: hda: Unify get_response handling
Now most of the get_response handling became quite similar between
HDA-core and legacy drivers, and the only differences are:
- the handling of extra-long polling delay for some codecs
- the debug message for the stalled communication
and both are worth to share in the common code.
This patch unifies the code into snd_hdac_bus_get_response(), and use
this from the legacy get_response callback. It results in a good
amount of code reduction in the end.
Takashi Iwai [Thu, 12 Dec 2019 19:11:00 +0000 (20:11 +0100)]
ALSA: hda: Use waitqueue for RIRB in HDA-core helper, too
This patch implements the same logic that was done for the legacy
HD-audio controller driver by the commit 2e83a9db16aa ("ALSA: hda: Use
standard waitqueue for RIRB wakeup") to the HDA-core helper code,
too. This makes snd_hdac_bus_get_response() waiting for the response
with bus->rirb_wq instead of polling when bus->polling is false.
It'll save both CPU time and response latency.
Forgot to remove the variable declaration as well in the last commit.
sound/pci/hda/hda_tegra.c: In function 'hda_tegra_runtime_suspend':
sound/pci/hda/hda_tegra.c:169:19: warning: unused variable 'bus' [-Wunused-variable]
Takashi Iwai [Tue, 10 Dec 2019 06:34:53 +0000 (07:34 +0100)]
ALSA: vxpocket: Support PCM sync_stop
The driver invokes snd_pcm_period_elapsed() simply from the threaded
interrupt handler. Set card->sync_irq for enabling the missing
sync_stop PCM operation.
Takashi Iwai [Tue, 10 Dec 2019 06:34:52 +0000 (07:34 +0100)]
ALSA: pdaudiocf: Support PCM sync_stop
The driver invokes snd_pcm_period_elapsed() simply from the threaded
interrupt handler. Set card->sync_irq for enabling the missing
sync_stop PCM operation.
Takashi Iwai [Tue, 10 Dec 2019 06:34:51 +0000 (07:34 +0100)]
ALSA: vx222: Support PCM sync_stop
The driver invokes snd_pcm_period_elapsed() simply from the threaded
interrupt handler. Set card->sync_irq for enabling the missing
sync_stop PCM operation.
Takashi Iwai [Tue, 10 Dec 2019 06:34:50 +0000 (07:34 +0100)]
ALSA: pcxhr: Support PCM sync_stop
The driver invokes snd_pcm_period_elapsed() simply from the threaded
interrupt handler. Set card->sync_irq for enabling the missing
sync_stop PCM operation.
Takashi Iwai [Tue, 10 Dec 2019 06:34:49 +0000 (07:34 +0100)]
ALSA: mixart: Support PCM sync_stop
The driver invokes snd_pcm_period_elapsed() simply from the threaded
interrupt handler. Set card->sync_irq for enabling the missing
sync_stop PCM operation.
Takashi Iwai [Tue, 10 Dec 2019 06:34:48 +0000 (07:34 +0100)]
ALSA: lx6464es: Support PCM sync_stop
The driver invokes snd_pcm_period_elapsed() simply from the threaded
interrupt handler. Set card->sync_irq for enabling the missing
sync_stop PCM operation.
Takashi Iwai [Tue, 10 Dec 2019 06:34:36 +0000 (07:34 +0100)]
ALSA: via82xx: Support PCM sync_stop
The driver invokes snd_pcm_period_elapsed() simply from the interrupt
handler. Set card->sync_irq for enabling the missing sync_stop PCM
operation, as well as removing the superfluous synchronize_irq()
call.
Takashi Iwai [Tue, 10 Dec 2019 06:34:28 +0000 (07:34 +0100)]
ALSA: oxygen: Support PCM sync_stop
The driver invokes snd_pcm_period_elapsed() simply from the interrupt
handler. Set card->sync_irq for enabling the missing sync_stop PCM
operation, as well as removing the superfluous synchronize_irq()
call.
Takashi Iwai [Tue, 10 Dec 2019 06:34:27 +0000 (07:34 +0100)]
ALSA: nm256: Support PCM sync_stop
The driver invokes snd_pcm_period_elapsed() simply from the interrupt
handler. Set card->sync_irq for enabling the missing sync_stop PCM
operation. It's cleared and reset dynamically at IRQ re-acquiring for
the PM resume, too.
Takashi Iwai [Tue, 10 Dec 2019 06:34:25 +0000 (07:34 +0100)]
ALSA: lola: Support PCM sync_stop
The driver invokes snd_pcm_period_elapsed() simply from the interrupt
handler. Set card->sync_irq for enabling the missing sync_stop PCM
operation, as well as removing the superfluous synchronize_irq()
call.
Takashi Iwai [Tue, 10 Dec 2019 06:34:23 +0000 (07:34 +0100)]
ALSA: intel8x0: Support PCM sync_stop
The driver invokes snd_pcm_period_elapsed() simply from the interrupt
handler. Set card->sync_irq for enabling the missing sync_stop PCM
operation. It's cleared and reset dynamically at IRQ re-acquiring for
the PM resume, too.
Takashi Iwai [Tue, 10 Dec 2019 06:34:22 +0000 (07:34 +0100)]
ALSA: ice1724: Support PCM sync_stop
The driver invokes snd_pcm_period_elapsed() simply from the interrupt
handler. Set card->sync_irq for enabling the missing sync_stop PCM
operation, as well as removing the superfluous synchronize_irq()
call.
Takashi Iwai [Tue, 10 Dec 2019 06:34:21 +0000 (07:34 +0100)]
ALSA: ice1712: Support PCM sync_stop
The driver invokes snd_pcm_period_elapsed() simply from the interrupt
handler. Set card->sync_irq for enabling the missing sync_stop PCM
operation, as well as removing the superfluous synchronize_irq()
call.
Takashi Iwai [Tue, 10 Dec 2019 06:34:20 +0000 (07:34 +0100)]
ALSA: hda: Support PCM sync_stop
The driver invokes snd_pcm_period_elapsed() simply from the interrupt
handler. Set card->sync_irq for enabling the missing sync_stop PCM
operation. It's cleared and reset dynamically at IRQ re-acquiring for
the PM resume, too.
Takashi Iwai [Tue, 10 Dec 2019 06:34:18 +0000 (07:34 +0100)]
ALSA: es1968: Support PCM sync_stop
The driver invokes snd_pcm_period_elapsed() simply from the interrupt
handler. Set card->sync_irq for enabling the missing sync_stop PCM
operation, as well as removing the superfluous synchronize_irq()
call.
Takashi Iwai [Tue, 10 Dec 2019 06:34:17 +0000 (07:34 +0100)]
ALSA: es1938: Support PCM sync_stop
The driver invokes snd_pcm_period_elapsed() simply from the interrupt
handler. Set card->sync_irq for enabling the missing sync_stop PCM
operation. It's cleared and reset dynamically at IRQ re-acquiring for
the PM resume, too.
Takashi Iwai [Tue, 10 Dec 2019 06:34:16 +0000 (07:34 +0100)]
ALSA: ens137x: Support PCM sync_stop
The driver invokes snd_pcm_period_elapsed() simply from the interrupt
handler. Set card->sync_irq for enabling the missing sync_stop PCM
operation, as well as removing the superfluous synchronize_irq()
call.
Takashi Iwai [Tue, 10 Dec 2019 06:34:14 +0000 (07:34 +0100)]
ALSA: echoaudio: Support PCM sync_stop
The driver invokes snd_pcm_period_elapsed() simply from the interrupt
handler. Set card->sync_irq for enabling the missing sync_stop PCM
operation. It's cleared and reset dynamically at IRQ re-acquiring for
the PM resume, too.
Takashi Iwai [Tue, 10 Dec 2019 06:34:13 +0000 (07:34 +0100)]
ALSA: ctxfi: Support PCM sync_stop
The driver invokes snd_pcm_period_elapsed() simply from the interrupt
handler. Set card->sync_irq for enabling the missing sync_stop PCM
operation, as well as removing the superfluous synchronize_irq()
call.
Takashi Iwai [Tue, 10 Dec 2019 06:34:12 +0000 (07:34 +0100)]
ALSA: cs5535audio: Support PCM sync_stop
The driver invokes snd_pcm_period_elapsed() simply from the interrupt
handler. Set card->sync_irq for enabling the missing sync_stop PCM
operation, as well as removing the superfluous synchronize_irq()
call.
Takashi Iwai [Tue, 10 Dec 2019 06:34:10 +0000 (07:34 +0100)]
ALSA: cs4281: Support PCM sync_stop
The driver invokes snd_pcm_period_elapsed() simply from the interrupt
handler. Set card->sync_irq for enabling the missing sync_stop PCM
operation, as well as removing the superfluous synchronize_irq()
call.
Takashi Iwai [Tue, 10 Dec 2019 06:34:07 +0000 (07:34 +0100)]
ALSA: bt87x: Support PCM sync_stop
The driver invokes snd_pcm_period_elapsed() simply from the interrupt
handler. Set card->sync_irq for enabling the missing sync_stop PCM
operation, as well as removing the superfluous synchronize_irq()
call.
Takashi Iwai [Tue, 10 Dec 2019 06:34:06 +0000 (07:34 +0100)]
ALSA: azt3328: Support PCM sync_stop
The driver invokes snd_pcm_period_elapsed() simply from the interrupt
handler. Set card->sync_irq for enabling the missing sync_stop PCM
operation, as well as removing the superfluous synchronize_irq()
call.
Takashi Iwai [Tue, 10 Dec 2019 06:34:03 +0000 (07:34 +0100)]
ALSA: atiixp: Support PCM sync_stop
The driver invokes snd_pcm_period_elapsed() simply from the interrupt
handler. Set card->sync_irq for enabling the missing sync_stop PCM
operation, as well as removing the superfluous synchronize_irq()
call.
Takashi Iwai [Tue, 10 Dec 2019 06:34:01 +0000 (07:34 +0100)]
ALSA: ali5451: Support PCM sync_stop
The driver invokes snd_pcm_period_elapsed() simply from the interrupt
handler. Set card->sync_irq for enabling the missing sync_stop PCM
operation, as well as removing the superfluous synchronize_irq()
call.
Takashi Iwai [Tue, 10 Dec 2019 06:11:35 +0000 (07:11 +0100)]
ALSA: asihpi: Drop superfluous ioctl PCM ops
snd_card_asihpi_playback_ioctl() and snd_card_asihpi_capture_ioctl()
do nothing but calling the default handler.
Now PCM core accepts NULL as the default ioctl ops(*), so let's drop
altogether.
Takashi Iwai [Mon, 9 Dec 2019 09:49:43 +0000 (10:49 +0100)]
ALSA: hdml-lpe-audio: Use managed buffer allocation
Clean up the driver with the new managed buffer allocation API.
The superfluous snd_pcm_lib_malloc_pages() and
snd_pcm_lib_free_pages() calls are dropped.
Takashi Iwai [Mon, 9 Dec 2019 09:49:42 +0000 (10:49 +0100)]
ALSA: usb-audio: Use managed buffer allocation
Clean up the driver with the new managed buffer allocation API.
The superfluous snd_pcm_lib_malloc_pages() and
snd_pcm_lib_free_pages() calls are dropped.
Takashi Iwai [Mon, 9 Dec 2019 09:49:41 +0000 (10:49 +0100)]
ALSA: usx2y: Use managed buffer allocation
Clean up the driver with the new managed buffer allocation API.
The superfluous snd_pcm_lib_malloc_pages() and
snd_pcm_lib_free_pages() calls are dropped.
Takashi Iwai [Mon, 9 Dec 2019 09:49:39 +0000 (10:49 +0100)]
ALSA: line6: Use managed buffer allocation
Clean up the drivers with the new managed buffer allocation API.
The superfluous snd_pcm_lib_malloc_pages() and
snd_pcm_lib_free_pages() calls are dropped.
Takashi Iwai [Mon, 9 Dec 2019 09:49:37 +0000 (10:49 +0100)]
ALSA: caiaq: Use managed buffer allocation
Clean up the driver with the new managed buffer allocation API.
The hw_params callback became superfluous and dropped.
The hw_free callback still remains because of the substream
deactivation sync call.