Linus,

please pull sound fixes for 3.17 from:

  git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound.git 
tags/sound-3.17-rc7

The topmost commit is e76bf634870e3c5e3a767ad575f1d404c9f1cab8

----------------------------------------------------------------

sound fixes for 3.17-rc7 (or final)

One fix is about a buggy compuation in PCM API function Clemens
spotted out, but the impact must be really small as no one
really uses it in user-space side.  The rest are a trivial fix
for a HD-audio model and a USB-audio device-specific regression
fix, so all look fairly safe to apply.

----------------------------------------------------------------

Clemens Ladisch (1):
      ALSA: pcm: fix fifo_size frame calculation

Daniel Mack (1):
      ALSA: snd-usb-caiaq: Fix LED commands for Kore controller

Huacai Chen (1):
      ALSA: hda - Add fixup model name lookup for Lemote A1205

---
 sound/core/pcm_lib.c           |  8 +++++---
 sound/pci/hda/patch_conexant.c |  1 +
 sound/usb/caiaq/control.c      | 18 +++++++++++-------
 3 files changed, 17 insertions(+), 10 deletions(-)

diff --git a/sound/core/pcm_lib.c b/sound/core/pcm_lib.c
index 9acc77eae487..0032278567ad 100644
--- a/sound/core/pcm_lib.c
+++ b/sound/core/pcm_lib.c
@@ -1782,14 +1782,16 @@ static int snd_pcm_lib_ioctl_fifo_size(struct 
snd_pcm_substream *substream,
 {
        struct snd_pcm_hw_params *params = arg;
        snd_pcm_format_t format;
-       int channels, width;
+       int channels;
+       ssize_t frame_size;
 
        params->fifo_size = substream->runtime->hw.fifo_size;
        if (!(substream->runtime->hw.info & SNDRV_PCM_INFO_FIFO_IN_FRAMES)) {
                format = params_format(params);
                channels = params_channels(params);
-               width = snd_pcm_format_physical_width(format);
-               params->fifo_size /= width * channels;
+               frame_size = snd_pcm_format_size(format, channels);
+               if (frame_size > 0)
+                       params->fifo_size /= (unsigned)frame_size;
        }
        return 0;
 }
diff --git a/sound/pci/hda/patch_conexant.c b/sound/pci/hda/patch_conexant.c
index 6e5d0cb4e3d7..47ccb8f44adb 100644
--- a/sound/pci/hda/patch_conexant.c
+++ b/sound/pci/hda/patch_conexant.c
@@ -777,6 +777,7 @@ static const struct hda_model_fixup cxt5066_fixup_models[] 
= {
        { .id = CXT_PINCFG_LENOVO_TP410, .name = "tp410" },
        { .id = CXT_FIXUP_THINKPAD_ACPI, .name = "thinkpad" },
        { .id = CXT_PINCFG_LEMOTE_A1004, .name = "lemote-a1004" },
+       { .id = CXT_PINCFG_LEMOTE_A1205, .name = "lemote-a1205" },
        { .id = CXT_FIXUP_OLPC_XO, .name = "olpc-xo" },
        {}
 };
diff --git a/sound/usb/caiaq/control.c b/sound/usb/caiaq/control.c
index f65fc0987cfb..b7a7c805d63f 100644
--- a/sound/usb/caiaq/control.c
+++ b/sound/usb/caiaq/control.c
@@ -100,15 +100,19 @@ static int control_put(struct snd_kcontrol *kcontrol,
        struct snd_usb_caiaqdev *cdev = caiaqdev(chip->card);
        int pos = kcontrol->private_value;
        int v = ucontrol->value.integer.value[0];
-       unsigned char cmd = EP1_CMD_WRITE_IO;
+       unsigned char cmd;
 
-       if (cdev->chip.usb_id ==
-               USB_ID(USB_VID_NATIVEINSTRUMENTS, USB_PID_TRAKTORKONTROLX1))
-               cmd = EP1_CMD_DIMM_LEDS;
-
-       if (cdev->chip.usb_id ==
-               USB_ID(USB_VID_NATIVEINSTRUMENTS, USB_PID_MASCHINECONTROLLER))
+       switch (cdev->chip.usb_id) {
+       case USB_ID(USB_VID_NATIVEINSTRUMENTS, USB_PID_MASCHINECONTROLLER):
+       case USB_ID(USB_VID_NATIVEINSTRUMENTS, USB_PID_TRAKTORKONTROLX1):
+       case USB_ID(USB_VID_NATIVEINSTRUMENTS, USB_PID_KORECONTROLLER2):
+       case USB_ID(USB_VID_NATIVEINSTRUMENTS, USB_PID_KORECONTROLLER):
                cmd = EP1_CMD_DIMM_LEDS;
+               break;
+       default:
+               cmd = EP1_CMD_WRITE_IO;
+               break;
+       }
 
        if (pos & CNT_INTVAL) {
                int i = pos & ~CNT_INTVAL;
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to