Commit ffd4341d authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'sound-3.17-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound

Pull sound fixes from Takashi Iwai:
 "One fix is about a buggy computation 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"

* tag 'sound-3.17-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
  ALSA: snd-usb-caiaq: Fix LED commands for Kore controller
  ALSA: pcm: fix fifo_size frame calculation
  ALSA: hda - Add fixup model name lookup for Lemote A1205
parents 31f9bf46 e76bf634
...@@ -1782,14 +1782,16 @@ static int snd_pcm_lib_ioctl_fifo_size(struct snd_pcm_substream *substream, ...@@ -1782,14 +1782,16 @@ static int snd_pcm_lib_ioctl_fifo_size(struct snd_pcm_substream *substream,
{ {
struct snd_pcm_hw_params *params = arg; struct snd_pcm_hw_params *params = arg;
snd_pcm_format_t format; snd_pcm_format_t format;
int channels, width; int channels;
ssize_t frame_size;
params->fifo_size = substream->runtime->hw.fifo_size; params->fifo_size = substream->runtime->hw.fifo_size;
if (!(substream->runtime->hw.info & SNDRV_PCM_INFO_FIFO_IN_FRAMES)) { if (!(substream->runtime->hw.info & SNDRV_PCM_INFO_FIFO_IN_FRAMES)) {
format = params_format(params); format = params_format(params);
channels = params_channels(params); channels = params_channels(params);
width = snd_pcm_format_physical_width(format); frame_size = snd_pcm_format_size(format, channels);
params->fifo_size /= width * channels; if (frame_size > 0)
params->fifo_size /= (unsigned)frame_size;
} }
return 0; return 0;
} }
......
...@@ -777,6 +777,7 @@ static const struct hda_model_fixup cxt5066_fixup_models[] = { ...@@ -777,6 +777,7 @@ static const struct hda_model_fixup cxt5066_fixup_models[] = {
{ .id = CXT_PINCFG_LENOVO_TP410, .name = "tp410" }, { .id = CXT_PINCFG_LENOVO_TP410, .name = "tp410" },
{ .id = CXT_FIXUP_THINKPAD_ACPI, .name = "thinkpad" }, { .id = CXT_FIXUP_THINKPAD_ACPI, .name = "thinkpad" },
{ .id = CXT_PINCFG_LEMOTE_A1004, .name = "lemote-a1004" }, { .id = CXT_PINCFG_LEMOTE_A1004, .name = "lemote-a1004" },
{ .id = CXT_PINCFG_LEMOTE_A1205, .name = "lemote-a1205" },
{ .id = CXT_FIXUP_OLPC_XO, .name = "olpc-xo" }, { .id = CXT_FIXUP_OLPC_XO, .name = "olpc-xo" },
{} {}
}; };
......
...@@ -100,15 +100,19 @@ static int control_put(struct snd_kcontrol *kcontrol, ...@@ -100,15 +100,19 @@ static int control_put(struct snd_kcontrol *kcontrol,
struct snd_usb_caiaqdev *cdev = caiaqdev(chip->card); struct snd_usb_caiaqdev *cdev = caiaqdev(chip->card);
int pos = kcontrol->private_value; int pos = kcontrol->private_value;
int v = ucontrol->value.integer.value[0]; int v = ucontrol->value.integer.value[0];
unsigned char cmd = EP1_CMD_WRITE_IO; unsigned char cmd;
if (cdev->chip.usb_id == switch (cdev->chip.usb_id) {
USB_ID(USB_VID_NATIVEINSTRUMENTS, USB_PID_TRAKTORKONTROLX1)) case USB_ID(USB_VID_NATIVEINSTRUMENTS, USB_PID_MASCHINECONTROLLER):
cmd = EP1_CMD_DIMM_LEDS; case USB_ID(USB_VID_NATIVEINSTRUMENTS, USB_PID_TRAKTORKONTROLX1):
case USB_ID(USB_VID_NATIVEINSTRUMENTS, USB_PID_KORECONTROLLER2):
if (cdev->chip.usb_id == case USB_ID(USB_VID_NATIVEINSTRUMENTS, USB_PID_KORECONTROLLER):
USB_ID(USB_VID_NATIVEINSTRUMENTS, USB_PID_MASCHINECONTROLLER))
cmd = EP1_CMD_DIMM_LEDS; cmd = EP1_CMD_DIMM_LEDS;
break;
default:
cmd = EP1_CMD_WRITE_IO;
break;
}
if (pos & CNT_INTVAL) { if (pos & CNT_INTVAL) {
int i = pos & ~CNT_INTVAL; int i = pos & ~CNT_INTVAL;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment