<feed xmlns='http://www.w3.org/2005/Atom'>
<title>kernel/linux.git/sound, branch v4.3.1</title>
<subtitle>Linux kernel stable tree (mirror)</subtitle>
<id>https://git.radix-linux.su/kernel/linux.git/atom?h=v4.3.1</id>
<link rel='self' href='https://git.radix-linux.su/kernel/linux.git/atom?h=v4.3.1'/>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/'/>
<updated>2015-12-09T19:34:42+00:00</updated>
<entry>
<title>ALSA: usb-audio: work around CH345 input SysEx corruption</title>
<updated>2015-12-09T19:34:42+00:00</updated>
<author>
<name>Clemens Ladisch</name>
<email>clemens@ladisch.de</email>
</author>
<published>2015-11-15T21:39:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=7327b7fff4e17cfb785b4bc0d7754dd908d6930c'/>
<id>urn:sha1:7327b7fff4e17cfb785b4bc0d7754dd908d6930c</id>
<content type='text'>
commit a91e627e3f0ed820b11d86cdc04df38f65f33a70 upstream.

One of the many faults of the QinHeng CH345 USB MIDI interface chip is
that it does not handle received SysEx messages correctly -- every second
event packet has a wrong code index number, which is the one from the last
seen message, instead of 4.  For example, the two messages "FE F0 01 02 03
04 05 06 07 08 09 0A 0B 0C 0D 0E F7" result in the following event
packets:

correct:       CH345:
0F FE 00 00    0F FE 00 00
04 F0 01 02    04 F0 01 02
04 03 04 05    0F 03 04 05
04 06 07 08    04 06 07 08
04 09 0A 0B    0F 09 0A 0B
04 0C 0D 0E    04 0C 0D 0E
05 F7 00 00    05 F7 00 00

A class-compliant driver must interpret an event packet with CIN 15 as
having a single data byte, so the other two bytes would be ignored.  The
message received by the host would then be missing two bytes out of six;
in this example, "F0 01 02 03 06 07 08 09 0C 0D 0E F7".

These corrupted SysEx event packages contain only data bytes, while the
CH345 uses event packets with a correct CIN value only for messages with
a status byte, so it is possible to distinguish between these two cases by
checking for the presence of this status byte.

(Other bugs in the CH345's input handling, such as the corruption resulting
from running status, cannot be worked around.)

Signed-off-by: Clemens Ladisch &lt;clemens@ladisch.de&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>ALSA: usb-audio: prevent CH345 multiport output SysEx corruption</title>
<updated>2015-12-09T19:34:42+00:00</updated>
<author>
<name>Clemens Ladisch</name>
<email>clemens@ladisch.de</email>
</author>
<published>2015-11-15T21:38:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=a90b6640f8dfea2ab42c9cce3fc1d45bb169ca65'/>
<id>urn:sha1:a90b6640f8dfea2ab42c9cce3fc1d45bb169ca65</id>
<content type='text'>
commit 1ca8b201309d842642f221db7f02f71c0af5be2d upstream.

The CH345 USB MIDI chip has two output ports.  However, they are
multiplexed through one pin, and the number of ports cannot be reduced
even for hardware that implements only one connector, so for those
devices, data sent to either port ends up on the same hardware output.
This becomes a problem when both ports are used at the same time, as
longer MIDI commands (such as SysEx messages) are likely to be
interrupted by messages from the other port, and thus to get lost.

It would not be possible for the driver to detect how many ports the
device actually has, except that in practice, _all_ devices built with
the CH345 have only one port.  So we can just ignore the device's
descriptors, and hardcode one output port.

Signed-off-by: Clemens Ladisch &lt;clemens@ladisch.de&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>ALSA: usb-audio: add packet size quirk for the Medeli DD305</title>
<updated>2015-12-09T19:34:41+00:00</updated>
<author>
<name>Clemens Ladisch</name>
<email>clemens@ladisch.de</email>
</author>
<published>2015-11-15T21:37:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=da3e8b3f94a8f2c511dba4192ea994b6abcdaa59'/>
<id>urn:sha1:da3e8b3f94a8f2c511dba4192ea994b6abcdaa59</id>
<content type='text'>
commit 98d362becb6621bebdda7ed0eac7ad7ec6c37898 upstream.

Signed-off-by: Clemens Ladisch &lt;clemens@ladisch.de&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>ALSA: usb: Add native DSD support for Aune X1S</title>
<updated>2015-12-09T19:34:38+00:00</updated>
<author>
<name>Jurgen Kramer</name>
<email>gtmkramer@xs4all.nl</email>
</author>
<published>2015-11-09T11:13:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=5a2fb41430f27c6f6c02246aea1c7d7bfad92cd3'/>
<id>urn:sha1:5a2fb41430f27c6f6c02246aea1c7d7bfad92cd3</id>
<content type='text'>
commit 16771c7c704769c5f3d70c024630b6e5b3eafa67 upstream.

This patch adds native DSD support for the Aune X1S 32BIT/384 DSD DAC

Signed-off-by: Jurgen Kramer &lt;gtmkramer@xs4all.nl&gt;
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
Signed-off-by: Greg Kroah-Hartman &lt;gregkh@linuxfoundation.org&gt;

</content>
</entry>
<entry>
<title>Merge tag 'asoc-fix-v4.3-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus</title>
<updated>2015-10-23T04:56:56+00:00</updated>
<author>
<name>Takashi Iwai</name>
<email>tiwai@suse.de</email>
</author>
<published>2015-10-23T04:56:56+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=b9b6e4ac2da74995cb7ac9394854a5fd563014c2'/>
<id>urn:sha1:b9b6e4ac2da74995cb7ac9394854a5fd563014c2</id>
<content type='text'>
ASoC: Fixes for v4.3

A bunch of driver fixes plus one core fix which fixes problems with
misreporting values from _SX controls following a recent refactoring.
This had gone unnoticed as such controls are quite rare.
</content>
</entry>
<entry>
<title>Merge remote-tracking branches 'asoc/fix/rt298', 'asoc/fix/sx', 'asoc/fix/wm8904' and 'asoc/fix/wm8962' into asoc-linus</title>
<updated>2015-10-22T23:44:14+00:00</updated>
<author>
<name>Mark Brown</name>
<email>broonie@kernel.org</email>
</author>
<published>2015-10-22T23:44:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=f69eccc4b248ce53b1b830034babd0a795d5763c'/>
<id>urn:sha1:f69eccc4b248ce53b1b830034babd0a795d5763c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>ASoC: wm8962: mark cache_dirty flag after software reset in pm_resume</title>
<updated>2015-10-22T12:30:51+00:00</updated>
<author>
<name>Jiada Wang</name>
<email>jiada_wang@mentor.com</email>
</author>
<published>2015-10-20T02:47:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=4eb0f7abcefad2d4c127aa7502d3122635eddab0'/>
<id>urn:sha1:4eb0f7abcefad2d4c127aa7502d3122635eddab0</id>
<content type='text'>
By doing software reset of wm8962 in pm_resume, all registers which
have already been set will be reset to default value without regmap
interface be involved, thus driver need to mark cache_dirty flag,
to let regcache can be updated by regcache_sync().

Signed-off-by: Jiada Wang &lt;jiada_wang@mentor.com&gt;
Acked-by: Charles Keepax &lt;ckeepax@opensource.wolfsonmicro.com&gt;
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</content>
</entry>
<entry>
<title>ASoC: rt298: fix wrong setting of gpio2_en</title>
<updated>2015-10-21T12:23:43+00:00</updated>
<author>
<name>Bard Liao</name>
<email>bardliao@realtek.com</email>
</author>
<published>2015-10-21T08:18:18+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=f8f2dc4a7127725383c93b501fcc4e47871b0a9d'/>
<id>urn:sha1:f8f2dc4a7127725383c93b501fcc4e47871b0a9d</id>
<content type='text'>
The register value to enable gpio2 was incorrect. So fix it.

Signed-off-by: Bard Liao &lt;bardliao@realtek.com&gt;
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</content>
</entry>
<entry>
<title>ALSA: hda - Fix deadlock at error in building PCM</title>
<updated>2015-10-20T14:31:34+00:00</updated>
<author>
<name>Takashi Iwai</name>
<email>tiwai@suse.de</email>
</author>
<published>2015-10-20T14:23:55+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=d289619a219dd01e255d7b5e30f9171b25efea48'/>
<id>urn:sha1:d289619a219dd01e255d7b5e30f9171b25efea48</id>
<content type='text'>
The HDA codec driver issues snd_hda_codec_reset() at the error path of
PCM build.  This was needed in the earlier code base, but the recent
rewrite to use the standard bus binding made this a deadlock:
 modprobe        D 0000000000000005     0   720    716 0x00000080
 Call Trace:
  [&lt;ffffffff816a5dbe&gt;] schedule+0x3e/0x90
  [&lt;ffffffff816a61a5&gt;] schedule_preempt_disabled+0x15/0x20
  [&lt;ffffffff816a7ae5&gt;] __mutex_lock_slowpath+0xb5/0x120
  [&lt;ffffffff816a7b6b&gt;] mutex_lock+0x1b/0x30
  [&lt;ffffffff8148656b&gt;] device_release_driver+0x1b/0x30
  [&lt;ffffffff81485c15&gt;] bus_remove_device+0x105/0x180
  [&lt;ffffffff814822b9&gt;] device_del+0x139/0x260
  [&lt;ffffffffa05e0ec5&gt;] snd_hdac_device_unregister+0x25/0x30 [snd_hda_core]
  [&lt;ffffffffa074fa6a&gt;] snd_hda_codec_reset+0x2a/0x70 [snd_hda_codec]
  [&lt;ffffffffa075007b&gt;] snd_hda_codec_build_pcms+0x18b/0x1b0 [snd_hda_codec]
  [&lt;ffffffffa074a44e&gt;] hda_codec_driver_probe+0xbe/0x140 [snd_hda_codec]
  [&lt;ffffffff81486ac4&gt;] driver_probe_device+0x1f4/0x460
  [&lt;ffffffff81486dc0&gt;] __driver_attach+0x90/0xa0
  [&lt;ffffffff81484844&gt;] bus_for_each_dev+0x64/0xa0
  [&lt;ffffffff814862de&gt;] driver_attach+0x1e/0x20
  [&lt;ffffffff81485e7b&gt;] bus_add_driver+0x1eb/0x280
  [&lt;ffffffff81487680&gt;] driver_register+0x60/0xe0
  [&lt;ffffffffa074a0da&gt;] __hda_codec_driver_register+0x5a/0x60 [snd_hda_codec]
  [&lt;ffffffffa070a01e&gt;] realtek_driver_init+0x1e/0x1000 [snd_hda_codec_realtek]
  [&lt;ffffffff810002f3&gt;] do_one_initcall+0xb3/0x200
  [&lt;ffffffff816a1fc5&gt;] do_init_module+0x60/0x1f8
  [&lt;ffffffff810ee5c3&gt;] load_module+0x1653/0x1bd0
  [&lt;ffffffff810eed48&gt;] SYSC_finit_module+0x98/0xc0
  [&lt;ffffffff810eed8e&gt;] SyS_finit_module+0xe/0x10
  [&lt;ffffffff816aa032&gt;] entry_SYSCALL_64_fastpath+0x16/0x75

The simple fix is just to remove this call, since we don't need to
think about unbinding at there any longer.

Bugzilla: https://bugzilla.suse.com/show_bug.cgi?id=948758
Cc: &lt;stable@vger.kernel.org&gt; # v4.1+
Signed-off-by: Takashi Iwai &lt;tiwai@suse.de&gt;
</content>
</entry>
<entry>
<title>ASoC: Add info callback for SX_TLV controls</title>
<updated>2015-10-16T15:17:25+00:00</updated>
<author>
<name>Charles Keepax</name>
<email>ckeepax@opensource.wolfsonmicro.com</email>
</author>
<published>2015-10-14T12:31:24+00:00</published>
<link rel='alternate' type='text/html' href='https://git.radix-linux.su/kernel/linux.git/commit/?id=34198710f55b5f359f43e67d9a08fe5aadfbca1b'/>
<id>urn:sha1:34198710f55b5f359f43e67d9a08fe5aadfbca1b</id>
<content type='text'>
SX_TLV controls are intended for situations where the register behind
the control has some non-zero value indicating the minimum gain
and then gains increasing from there and eventually overflowing through
zero.

Currently every CODEC implementing these controls specifies the minimum
as the non-zero value for the minimum and the maximum as the number of
gain settings available.

This means when the info callback subtracts the minimum value from the
maximum value to calculate the number of gain levels available it is
actually under reporting the available levels. This patch fixes this
issue by adding a new snd_soc_info_volsw_sx callback that does not
subtract the minimum value.

Fixes: 1d99f2436d0d ("ASoC: core: Rework SOC_DOUBLE_R_SX_TLV add SOC_SINGLE_SX_TLV")
Signed-off-by: Charles Keepax &lt;ckeepax@opensource.wolfsonmicro.com&gt;
Acked-by: Brian Austin &lt;brian.austin@cirrus.com&gt;
Tested-by: Brian Austin &lt;brian.austin@cirrus.com&gt;
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
Cc: stable@vger.kernel.org
</content>
</entry>
</feed>
