<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel.git/include/sound/emu10k1.h, branch linux-rolling-stable</title>
<subtitle>Hosts the 0x221E linux distro kernel.
</subtitle>
<id>https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-rolling-stable</id>
<link rel='self' href='https://git.0xinfinity.dev/distro/kernel.git/atom?h=linux-rolling-stable'/>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/'/>
<updated>2025-09-01T11:52:40Z</updated>
<entry>
<title>ALSA: emu10k1: Use guard() for emu1010 FPGA locking</title>
<updated>2025-09-01T11:52:40Z</updated>
<author>
<name>Takashi Iwai</name>
</author>
<published>2025-08-29T14:43:02Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=7c4a379e0622e7d8e7eb7dbc76445cdd6306aad8'/>
<id>urn:sha1:7c4a379e0622e7d8e7eb7dbc76445cdd6306aad8</id>
<content type='text'>
The snd_emu1010_fpga_lock() and _unlock() call pairs can be simplified
gracefully with the introduction of guard().

Only code refactoring, and no functional changes.

Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
Link: https://patch.msgid.link/20250829144342.4290-28-tiwai@suse.de
</content>
</entry>
<entry>
<title>Merge branch 'topic/emu10k1-fix' into for-next</title>
<updated>2024-04-28T10:00:57Z</updated>
<author>
<name>Takashi Iwai</name>
</author>
<published>2024-04-28T10:00:57Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=6b844f0626fca6acec83521081aaa82cdf9add6b'/>
<id>urn:sha1:6b844f0626fca6acec83521081aaa82cdf9add6b</id>
<content type='text'>
Pull emu10k1 fixes from Oswald Buddenhagen

Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</content>
</entry>
<entry>
<title>ALSA: emu10k1: move code for entering E-MU card FPGA programming mode</title>
<updated>2024-04-28T10:00:36Z</updated>
<author>
<name>Oswald Buddenhagen</name>
</author>
<published>2024-04-28T09:37:17Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=1aa41272efff530ccf6cd8455133ada1d09474a2'/>
<id>urn:sha1:1aa41272efff530ccf6cd8455133ada1d09474a2</id>
<content type='text'>
... into snd_emu1010_load_firmware_entry(). This makes it clearer that
these steps belong together tightly, as implied by prior commits.

Signed-off-by: Oswald Buddenhagen &lt;oswald.buddenhagen@gmx.de&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
Message-ID: &lt;20240428093717.3198716-5-oswald.buddenhagen@gmx.de&gt;
</content>
</entry>
<entry>
<title>ALSA: emu10k1: move snd_emu1010_load_firmware_entry() to io.c</title>
<updated>2024-04-28T10:00:36Z</updated>
<author>
<name>Oswald Buddenhagen</name>
</author>
<published>2024-04-28T09:37:16Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=4c0c36863cc560d24ad482b3ba3bccd62bb101d5'/>
<id>urn:sha1:4c0c36863cc560d24ad482b3ba3bccd62bb101d5</id>
<content type='text'>
It is a low-level I/O access function, so io.c is the natural place for
it.

While we're moving the code, reduce the scope of some variables, use
compound assignment operators, and add/adjust some comments.

Signed-off-by: Oswald Buddenhagen &lt;oswald.buddenhagen@gmx.de&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
Message-ID: &lt;20240428093717.3198716-4-oswald.buddenhagen@gmx.de&gt;
</content>
</entry>
<entry>
<title>ALSA: emu10k1: use mutex for E-MU FPGA access locking</title>
<updated>2024-04-28T09:58:12Z</updated>
<author>
<name>Oswald Buddenhagen</name>
</author>
<published>2024-04-28T09:37:14Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=2d3f4810886eb7c319cec41b6d725d2953bfa88a'/>
<id>urn:sha1:2d3f4810886eb7c319cec41b6d725d2953bfa88a</id>
<content type='text'>
The FPGA access through the GPIO port does not interfere with other
sound processor register access, so there is no need to subject it to
emu_lock. And after moving all FPGA access out of the interrupt handler,
it does not need to be IRQ-safe, either.

What's more, attaching the dock causes a firmware upload, which takes
several seconds. We really don't want to disable IRQs for this long, and
even less also have someone else spin with IRQs disabled waiting for us.

Therefore, use a mutex for FPGA access locking.

This makes the code somewhat more noisy, as we need to wrap bigger
sections into the mutex, as it needs to enclose the spinlocks.

The latter has the "side effect" of fixing dock FPGA programming in a
corner case: a really badly timed mixer access right between entering
FPGA programming mode and uploading the netlist would mess up the
protocol.

Signed-off-by: Oswald Buddenhagen &lt;oswald.buddenhagen@gmx.de&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
Message-ID: &lt;20240428093716.3198666-5-oswald.buddenhagen@gmx.de&gt;
</content>
</entry>
<entry>
<title>ALSA: emu10k1: move the whole GPIO event handling to the workqueue</title>
<updated>2024-04-28T09:58:12Z</updated>
<author>
<name>Oswald Buddenhagen</name>
</author>
<published>2024-04-28T09:37:13Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=f848337cd801c7106a4ec0d61765771dab2a5909'/>
<id>urn:sha1:f848337cd801c7106a4ec0d61765771dab2a5909</id>
<content type='text'>
The actual event processing was already done by workqueue items. We can
move the event dispatching there as well, rather than doing it already
in the interrupt handler callback.

This change has a rather profound "side effect" on the reliability of
the FPGA programming: once we enter programming mode, we must not issue
any snd_emu1010_fpga_{read,write}() calls until we're done, as these
would badly mess up the programming protocol. But exactly that would
happen when trying to program the dock, as that triggers GPIO interrupts
as a side effect. This is mitigated by deferring the actual interrupt
handling, as workqueue items are not re-entrant.

To avoid scheduling the dispatcher on non-events, we now explicitly
ignore GPIO IRQs triggered by "uninteresting" pins, which happens a lot
as a side effect of calling snd_emu1010_fpga_{read,write}().

Fixes: fbb64eedf5a3 ("ALSA: emu10k1: make E-MU dock monitoring interrupt-driven")
Link: https://bugzilla.kernel.org/show_bug.cgi?id=218584
Signed-off-by: Oswald Buddenhagen &lt;oswald.buddenhagen@gmx.de&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
Message-ID: &lt;20240428093716.3198666-4-oswald.buddenhagen@gmx.de&gt;
</content>
</entry>
<entry>
<title>ALSA: emu10k1: improve cache behavior documentation</title>
<updated>2024-04-07T06:35:51Z</updated>
<author>
<name>Oswald Buddenhagen</name>
</author>
<published>2024-04-06T06:48:27Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=65db949667b0b74f4534e96f762aff0e6687dc51'/>
<id>urn:sha1:65db949667b0b74f4534e96f762aff0e6687dc51</id>
<content type='text'>
Resulting from more reverse engineering in the course of debugging.

Signed-off-by: Oswald Buddenhagen &lt;oswald.buddenhagen@gmx.de&gt;
Message-ID: &lt;20240406064830.1029573-15-oswald.buddenhagen@gmx.de&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</content>
</entry>
<entry>
<title>ALSA: emu10k1: fix sample signedness issues in wavetable loader</title>
<updated>2024-04-07T06:35:49Z</updated>
<author>
<name>Oswald Buddenhagen</name>
</author>
<published>2024-04-06T06:48:22Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=38fc804a776ea66ca8ac8113022e445c587f5e01'/>
<id>urn:sha1:38fc804a776ea66ca8ac8113022e445c587f5e01</id>
<content type='text'>
The hardware supports S16LE and U8 samples, while U16LE and S8 (which
the driver implicitly claims to support) require sign flipping.

Note that this matters only for the GUS patch loader, as the implemented
SoundFont v2.01 spec is limited to S16LE.

Signed-off-by: Oswald Buddenhagen &lt;oswald.buddenhagen@gmx.de&gt;
Message-ID: &lt;20240406064830.1029573-10-oswald.buddenhagen@gmx.de&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</content>
</entry>
<entry>
<title>ALSA: emu10k1: set the "no filtering" bits on PCM voices on Audigy</title>
<updated>2023-07-17T07:29:07Z</updated>
<author>
<name>Oswald Buddenhagen</name>
</author>
<published>2023-07-15T16:08:02Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c435d375fd76733218ff59408a4b1f15e50b2e11'/>
<id>urn:sha1:c435d375fd76733218ff59408a4b1f15e50b2e11</id>
<content type='text'>
Given that the filter is already set to neutral for PCM voices, the
only observable effect is that the Z1/Z2/FXBUS registers don't have a
stray bit set for negative numbers anymore. The bit is below the ones
significant for output, but it would mess with 32-bit sample
recombination, which we intend to add.

kX-project does that, but I had to figure out myself why.

Signed-off-by: Oswald Buddenhagen &lt;oswald.buddenhagen@gmx.de&gt;
Link: https://lore.kernel.org/r/20230715160802.326872-1-oswald.buddenhagen@gmx.de
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</content>
</entry>
<entry>
<title>ALSA: emu10k1: track loss of external clock on E-MU cards</title>
<updated>2023-07-17T07:21:21Z</updated>
<author>
<name>Oswald Buddenhagen</name>
</author>
<published>2023-07-15T16:07:38Z</published>
<link rel='alternate' type='text/html' href='https://git.0xinfinity.dev/distro/kernel.git/commit/?id=c960b012ec4747265f0392a31570045d3f982447'/>
<id>urn:sha1:c960b012ec4747265f0392a31570045d3f982447</id>
<content type='text'>
85;95;0c
This uses IRQs to track spontaneous changes to the word clock source
register.

FWIW, that this can happen in the first place is the reason why it is
futile to lock the clock source mixer setting while the device is open -
we can't consistently control the rate anyway. Though arguably, we
should reset any open streams when that happens, as they become
corrupted anyway.

Signed-off-by: Oswald Buddenhagen &lt;oswald.buddenhagen@gmx.de&gt;
Link: https://lore.kernel.org/r/20230715160738.326832-1-oswald.buddenhagen@gmx.de
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</content>
</entry>
</feed>
