mirror of
https://github.com/torvalds/linux.git
synced 2024-11-10 14:11:52 +00:00
ALSA: emu10k1: fix E-MU dock initialization
A side effect of making the dock monitoring interrupt-driven was that
we'd be very quick to program a freshly connected dock. However, for
unclear reasons, the dock does not work when we do that - despite the
FPGA netlist upload going just fine. We work around this by adding a
delay before programming the dock; for safety, the value is several
times as much as was determined empirically.
Note that a badly timed dock hot-plug would have triggered the problem
even before the referenced commit - but now it would happen 100% instead
of about 3% of the time, thus making it impossible to work around by
re-plugging.
Fixes: fbb64eedf5
("ALSA: emu10k1: make E-MU dock monitoring interrupt-driven")
Link: https://bugzilla.kernel.org/show_bug.cgi?id=218584
Signed-off-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Message-ID: <20240428093716.3198666-6-oswald.buddenhagen@gmx.de>
This commit is contained in:
parent
2d3f481088
commit
e8289fd3fa
@ -737,6 +737,12 @@ static void snd_emu1010_load_dock_firmware(struct snd_emu10k1 *emu)
|
||||
u32 tmp, tmp2;
|
||||
int err;
|
||||
|
||||
// The docking events clearly arrive prematurely - while the
|
||||
// Dock's FPGA seems to be successfully programmed, the Dock
|
||||
// fails to initialize subsequently if we don't give it some
|
||||
// time to "warm up" here.
|
||||
msleep(200);
|
||||
|
||||
dev_info(emu->card->dev, "emu1010: Loading Audio Dock Firmware\n");
|
||||
/* Return to Audio Dock programming mode */
|
||||
snd_emu1010_fpga_write(emu, EMU_HANA_FPGA_CONFIG,
|
||||
|
Loading…
Reference in New Issue
Block a user