Skip to content
  1. Nov 16, 2015
    • Clemens Ladisch's avatar
      ALSA: usb-audio: work around CH345 input SysEx corruption · a91e627e
      Clemens Ladisch authored
      
      
      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: default avatarClemens Ladisch <clemens@ladisch.de>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      a91e627e
    • Clemens Ladisch's avatar
      ALSA: usb-audio: prevent CH345 multiport output SysEx corruption · 1ca8b201
      Clemens Ladisch authored
      
      
      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: default avatarClemens Ladisch <clemens@ladisch.de>
      Cc: stable@vger.kernel.org
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      1ca8b201
    • Clemens Ladisch's avatar
      ALSA: usb-audio: add packet size quirk for the Medeli DD305 · 98d362be
      Clemens Ladisch authored
      
      
      Signed-off-by: default avatarClemens Ladisch <clemens@ladisch.de>
      Cc: <stable@vger.kernel.org>
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      98d362be
  2. Nov 15, 2015
  3. Nov 13, 2015
  4. Nov 12, 2015
    • Takashi Iwai's avatar
      ALSA: hda - Simplify phantom jack handling for HDMI/DP · 909cadc6
      Takashi Iwai authored
      
      
      The HDMI codec parser may create a phantom jack, but the helper
      function snd_hda_jack_add_kctl() treats always as a normal jack.  This
      is superfluous as the jack query is executed at each time the jack
      sync is performed.
      
      Since the HDMI codec parser is the only caller of this function, it's
      easier to change back this directly calling the original
      __snd_hda_jack_add_kctl() with phantom_jack parameter.
      
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      909cadc6
  5. Nov 11, 2015
  6. Nov 09, 2015
  7. Nov 08, 2015
  8. Nov 07, 2015
  9. Nov 05, 2015
  10. Nov 03, 2015
    • Takashi Iwai's avatar
      ALSA: hda - Fix lost 4k BDL boundary workaround · de1ab6af
      Takashi Iwai authored
      During the migration to HDA core code, we lost the workaround for 4k
      BDL boundary.  The flag exists in the new hdac_bus, but it's never
      set.  This resulted in the sudden sound stall on some controllers that
      require this workaround like Creative Recon3D.
      
      This patch fixes the issue by setting the flag for such controllers
      properly.
      
      Fixes: ccc98865
      
       ('ALSA: hda - Migrate more hdac_stream codes')
      Cc: <stable@vger.kernel.org> # v4.2+
      Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
      de1ab6af
  11. Nov 02, 2015
  12. Oct 31, 2015
  13. Oct 30, 2015
  14. Oct 28, 2015
  15. Oct 27, 2015
  16. Oct 26, 2015