06 Feb, 2015

7 commits

  • commit 0767e95bb96d7fdddcd590fb809e6975d93aebc5 upstream.

    When the last subscriber to a "Through" port has been removed, the
    subscribed destination ports might still be active, so it would be
    wrong to send "all sounds off" and "reset controller" events to them.
    The proper place for such a shutdown would be the closing of the actual
    MIDI port (and close_substream() in rawmidi.c already can do this).

    This also fixes a deadlock when dummy_unuse() tries to send events to
    its own port that is already locked because it is being freed.

    Reported-by: Peter Billam
    Signed-off-by: Clemens Ladisch
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Clemens Ladisch
     
  • commit 20602e34cd33dd452bc1836fa7c9b59978f75db0 upstream.

    We should select FSR also to be driven by McBSP, not only FSX.

    Signed-off-by: Peter Ujfalusi
    Acked-by: Jarkko Nikula
    Signed-off-by: Mark Brown
    Signed-off-by: Greg Kroah-Hartman

    Peter Ujfalusi
     
  • commit 7ddfdb5c5a5b51bdd2cb749d8341d763b079d520 upstream.

    If asoc_simple_card_probe() fails, asoc_simple_card_unref() may be
    called before dev_set_drvdata(), causing a NULL pointer dereference in
    asoc_simple_card_unref():

    Unable to handle kernel NULL pointer dereference at virtual address 000000d4
    ...
    PC is at asoc_simple_card_unref+0x14/0x48
    LR is at asoc_simple_card_probe+0x3d4/0x40c

    This typically happens because asoc_simple_card_parse_of() returns
    -EPROBE_DEFER, but other failure modes are possible.
    devm_snd_soc_register_card()/snd_soc_register_card() may fail either
    before or after dev_set_drvdata().

    Pass a snd_soc_card pointer instead of a platform_device pointer to
    asoc_simple_card_unref() to fix this.

    Note that if CONFIG_OF_DYNAMIC=n, of_node_put() is a dummy, and gcc may
    optimize away the loop over card->dai_link, never actually dereferencing
    card, and thus avoiding the crash...

    Signed-off-by: Geert Uytterhoeven
    Fixes: e512e001dafa54e5 ("ASoC: simple-card: Fix the reference count of device nodes")
    Signed-off-by: Mark Brown
    Signed-off-by: Greg Kroah-Hartman

    Geert Uytterhoeven
     
  • commit d3268a40d4b19ff7bee23f52eabbc4e96bb685e8 upstream.

    In soc_new_compress() when rtd->dai_link->dynamic is set, we create the pcm
    substreams with this call:

    ret = snd_pcm_new_internal(rtd->card->snd_card, new_name, num,
    1, 0, &be_pcm);

    which passes 0 as capture_count leading to

    be_pcm->streams[SNDRV_PCM_STREAM_CAPTURE].substream

    being NULL, hence when trying to set rtd a few lines below we get an oops.

    Fix by using rtd->dai_link->dpcm_playback and rtd->dai_link->dpcm_capture as
    playback_count and capture_count to snd_pcm_new_internal().

    Signed-off-by: Qais Yousef
    Signed-off-by: Mark Brown
    Signed-off-by: Greg Kroah-Hartman

    Qais Yousef
     
  • commit adc60298c80efef4c2d7a7860b91b450931a7cf8 upstream.

    The xDC field should have 5 bit width according to Reference Manual.
    Thus this patch fixes it.

    Signed-off-by: Aurelien BOUIN
    Signed-off-by: Nicolin Chen
    Signed-off-by: Mark Brown
    Signed-off-by: Greg Kroah-Hartman

    Aurelien BOUIN
     
  • commit 3a8e5019846736046c0af9dbee3f921c0456141a upstream.

    The DSP programs are listed out of order.

    Signed-off-by: Peter Rosin
    Signed-off-by: Mark Brown
    Signed-off-by: Greg Kroah-Hartman

    Peter Rosin
     
  • commit 22ee76daddb87f88d2336d1b4737ef27c4f307ac upstream.

    wm8960 codec can't support sample rate 11250, it must be 11025.

    Signed-off-by: Zidan Wang
    Acked-by: Charles Keepax
    Signed-off-by: Mark Brown
    Signed-off-by: Greg Kroah-Hartman

    Zidan Wang
     

30 Jan, 2015

1 commit


28 Jan, 2015

2 commits

  • commit 678fa12fb8e75c6dc1e781a02e3ddbbba7e1a904 upstream.

    The au0828 quirks table is currently not in sync with the au0828
    media driver.

    Syncronize it and put them on the same order as found at au0828
    driver, as all the au0828 devices with analog TV need the
    same quirks.

    Signed-off-by: Mauro Carvalho Chehab
    Signed-off-by: Greg Kroah-Hartman

    Mauro Carvalho Chehab
     
  • commit 5d1f00a20d2d56ed480e64e938a2391353ee565b upstream.

    Add a macro to simplify au0828 quirk table. That makes easier
    to check it against the USB IDs at drivers/media/usb/au0828/au0828-cards.c.

    Signed-off-by: Mauro Carvalho Chehab
    Signed-off-by: Greg Kroah-Hartman

    Mauro Carvalho Chehab
     

16 Jan, 2015

15 commits

  • commit 60834b73a9c2bbc2f514122ddc626f3350fb40cd upstream.

    Vendor ID 0x10de0072 is used by a yet-to-be-named GPU chip.

    Signed-off-by: Aaron Plattner
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Aaron Plattner
     
  • commit c507de88f6a336bd7296c9ec0073b2d4af8b4f5e upstream.

    stac_store_hints() does utterly wrong for masking the values for
    gpio_dir and gpio_data, likely due to copy&paste errors. Fortunately,
    this feature is used very rarely, so the impact must be really small.

    Reported-by: Rasmus Villemoes
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Takashi Iwai
     
  • commit 49cdd5b641933fda6324fc901eaf856924ba6a27 upstream.

    Commit 897c329bc ("ALSA: usb: caiaq: check for cdev->n_streams > 1")
    introduced a safety check to protect against bogus data provided by
    devices. However, the n_streams variable is already divided by
    CHANNELS_PER_STREAM, so the correct check is 'n_streams > 0'.

    Fix this to un-break support for stereo devices.

    Signed-off-by: Daniel Mack
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Daniel Mack
     
  • commit 92cb46584e104e2f4b14a44959109ffe13524a26 upstream.

    Although the 't->length' is a big-endian value, it's used without any
    conversion. This means that the driver always uses 'length' parameter.

    Fixes: 555e8a8f7f14("ALSA: fireworks: Add command/response functionality into hwdep interface")
    Reported-by: Clemens Ladisch
    Signed-off-by: Takashi Sakamoto
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Takashi Sakamoto
     
  • commit 69eba10e606a80665f8573221fec589430d9d1cb upstream.

    In olden times the snd_hda_param_read() function always set "*start_id"
    but in 2007 we introduced a new return and it causes uninitialized data
    bugs in a couple of the callers: print_codec_info() and
    hdmi_parse_codec().

    Fixes: e8a7f136f5ed ('[ALSA] hda-intel - Improve HD-audio codec probing robustness')
    Signed-off-by: Dan Carpenter
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Dan Carpenter
     
  • commit 8b72415d8aa8bb1904c61926bd0701447ce44bee upstream.

    New Dell desktop needs to support headset mode for ALC3234.

    Signed-off-by: Kailang Yang
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Kailang Yang
     
  • commit 4344aec84bd84b58a01347f0db7693f73fb6473d upstream.

    Add new support for ALC256 codec.

    Signed-off-by: Kailang Yang
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Kailang Yang
     
  • commit 506b62c33a7444b91a93bf2da772f4c7e6656410 upstream.

    Add new support for ALC298 codec.

    Signed-off-by: Kailang Yang
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Kailang Yang
     
  • commit d70a1b9893f820fdbcdffac408c909c50f2e6b43 upstream.

    The Arcam rPAC seems to have the same problem - whenever anything
    (alsamixer, udevd, 3.9+ kernel from 60af3d037eb8c, ..) attempts to
    access mixer / control interface of the card, the firmware "locks up"
    the entire device, resulting in
    SNDRV_PCM_IOCTL_HW_PARAMS failed (-5): Input/output error
    from alsa-lib.

    Other operating systems can somehow read the mixer (there seems to be
    playback volume/mute), but any manipulation is ignored by the device
    (which has hardware volume controls).

    Signed-off-by: Jiri Jaburek
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Jiri Jaburek
     
  • commit 3475c3d034d7f276a474c8bd53f44b48c8bf669d upstream.

    Flush the FIFOs when the stream is prepared for use. This avoids
    an inadvertent swapping of the left/right channels if the FIFOs are
    not empty at startup.

    Signed-off-by: Andrew Jackson
    Signed-off-by: Mark Brown
    Signed-off-by: Greg Kroah-Hartman

    Andrew Jackson
     
  • commit 681a19560378213a193c424881b2180a783b81ae upstream.

    When the codec is connected using i2c, it will only auto-increment
    register addresses if msb (0x80) of the register address byte is set.

    [Fixes cache sync if multiple adjacent registers are updated -- broonie]

    Signed-off-by: Peter Rosin
    Signed-off-by: Mark Brown
    Signed-off-by: Greg Kroah-Hartman

    Peter Rosin
     
  • commit bbc686b34650b0f54affe9d9a637ccbe02b03760 upstream.

    Fix off by one read beyond the end of a table.

    Reported-by: David Binderman
    Signed-off-by: Jyri Sarha
    Signed-off-by: Mark Brown
    Signed-off-by: Greg Kroah-Hartman

    Jyri Sarha
     
  • commit 48826ee590da03e9882922edf96d8d27bdfe9552 upstream.

    Commit 5fe5b767dc6f ("ASoC: dapm: Do not pretend to support controls for non
    mixer/mux widgets") revealed ill-defined control in a route between
    "STENL Mux" and DACs in max98090.c:

    max98090 i2c-193C9890:00: Control not supported for path STENL Mux -> [NULL] -> DACL
    max98090 i2c-193C9890:00: ASoC: no dapm match for STENL Mux --> NULL --> DACL
    max98090 i2c-193C9890:00: ASoC: Failed to add route STENL Mux -> NULL -> DACL
    max98090 i2c-193C9890:00: Control not supported for path STENL Mux -> [NULL] -> DACR
    max98090 i2c-193C9890:00: ASoC: no dapm match for STENL Mux --> NULL --> DACR
    max98090 i2c-193C9890:00: ASoC: Failed to add route STENL Mux -> NULL -> DACR

    Since there is no control between "STENL Mux" and DACs the control name must
    be NULL not "NULL".

    Signed-off-by: Jarkko Nikula
    Signed-off-by: Mark Brown
    Signed-off-by: Greg Kroah-Hartman

    Jarkko Nikula
     
  • commit 50c0f21b42dd4cd02b51f82274f66912d9a7fa32 upstream.

    Make sure to check the version field of the firmware header to make sure to
    not accidentally try to parse a firmware file with a different layout.
    Trying to do so can result in loading invalid firmware code to the device.

    Signed-off-by: Lars-Peter Clausen
    Signed-off-by: Mark Brown
    Signed-off-by: Greg Kroah-Hartman

    Lars-Peter Clausen
     
  • commit 077661b6ed24e530dabc9db3ab3ae48fbaf19679 upstream.

    The of_node_put() call in eukrea_tlv320_probe() may take an
    uninitialized pointer, as compiler spotted out:
    sound/soc/fsl/eukrea-tlv320.c:221:14: warning: 'ssi_np' may be used uninitialized in this function [-Wuninitialized]

    This patch adds the proper NULL initializations as a fix.
    (codec_np is also NULL initialized just for consistency.)

    Fixes: 66f232908de2 ('ASoC: eukrea-tlv320: Add DT support')
    Signed-off-by: Takashi Iwai
    Signed-off-by: Mark Brown
    Signed-off-by: Greg Kroah-Hartman

    Takashi Iwai
     

17 Dec, 2014

3 commits

  • commit 66139a48cee1530c91f37c145384b4ee7043f0b7 upstream.

    In snd_usbmidi_error_timer(), the driver tries to resubmit MIDI input
    URBs to reactivate the MIDI stream, but this causes the error when
    some of URBs are still pending like:

    WARNING: CPU: 0 PID: 0 at ../drivers/usb/core/urb.c:339 usb_submit_urb+0x5f/0x70()
    URB ef705c40 submitted while active
    CPU: 0 PID: 0 Comm: swapper/0 Not tainted 3.16.6-2-desktop #1
    Hardware name: FOXCONN TPS01/TPS01, BIOS 080015 03/23/2010
    c0984bfa f4009ed4 c078deaf f4009ee4 c024c884 c09a135c f4009f00 00000000
    c0984bfa 00000153 c061ac4f c061ac4f 00000009 00000001 ef705c40 e854d1c0
    f4009eec c024c8d3 00000009 f4009ee4 c09a135c f4009f00 f4009f04 c061ac4f
    Call Trace:
    [] try_stack_unwind+0x156/0x170
    [] dump_trace+0x5a/0x1b0
    [] show_trace_log_lvl+0x46/0x50
    [] show_stack_log_lvl+0x51/0xe0
    [] show_stack+0x27/0x50
    [] dump_stack+0x45/0x65
    [] warn_slowpath_common+0x84/0xa0
    [] warn_slowpath_fmt+0x33/0x40
    [] usb_submit_urb+0x5f/0x70
    [] snd_usbmidi_submit_urb+0x14/0x60 [snd_usbmidi_lib]
    [] snd_usbmidi_error_timer+0x6a/0xa0 [snd_usbmidi_lib]
    [] call_timer_fn+0x30/0x130
    [] run_timer_softirq+0x1c2/0x260
    [] __do_softirq+0xc3/0x270
    [] do_softirq_own_stack+0x22/0x30
    [] irq_exit+0x8d/0xa0
    [] smp_apic_timer_interrupt+0x38/0x50
    [] apic_timer_interrupt+0x34/0x3c
    [] cpuidle_enter_state+0x3e/0xd0
    [] cpu_idle_loop+0x29d/0x3e0
    [] cpu_startup_entry+0x53/0x60
    [] start_kernel+0x415/0x41a

    For avoiding these errors, check the pending URBs and skip
    resubmitting such ones.

    Reported-and-tested-by: Stefan Seyfried
    Acked-by: Clemens Ladisch
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Takashi Iwai
     
  • commit fedb2245cbb8d823e449ebdd48ba9bb35c071ce0 upstream.

    The built-in mic boost volume gets almost muted after suspend/resume
    on Lenovo Ideapad S210.

    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=88121
    Reported-and-tested-by: Roman Kagan
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Takashi Iwai
     
  • commit f62f5eff3d40a56ad1cf0d81a6cac8dd8743e8a1 upstream.

    The same fixup to enable EAPD is needed for ASUS Z99He with AD1986A
    codec like another ASUS machine.

    Reported-and-tested-by: Dmitry V. Zimin
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Takashi Iwai
     

06 Dec, 2014

1 commit


02 Dec, 2014

1 commit


29 Nov, 2014

1 commit

  • Pull sound fixes from Takashi Iwai:
    "No excitement, here are only minor fixes: an endian fix for the new
    DSD format we added in 3.18, a fix for HP mute LED, and a fix for
    Native Instrument quirk"

    * tag 'sound-3.18-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
    ALSA: pcm: Add big-endian DSD sample formats and fix XMOS DSD sample format
    ALSA: hda - One more HP machine needs to change mute led quirk
    ALSA: usb-audio: Use snd_usb_ctl_msg() for Native Instruments quirk

    Linus Torvalds
     

24 Nov, 2014

2 commits

  • A number of radeon cards have a HW limitation causing them to be
    unable to generate the full 64-bit of address bits for MSIs. This
    breaks MSIs on some platforms such as POWER machines.

    We used to have a powerpc specific quirk to address that on a
    single card, but this doesn't scale very well, this is better
    put under control of the drivers who know precisely what a given
    HW revision can do.

    We now have a generic quirk in the PCI code. We should set it
    appropriately for all radeon's from the audio driver.

    Signed-off-by: Benjamin Herrenschmidt
    Reviewed-by: Takashi Iwai
    Reviewed-by: Alex Deucher
    CC:

    Benjamin Herrenschmidt
     
  • AMD/ATI HDMI controller chip models, we already have a filter to lower
    to 32bit DMA, but the rest are supposed to be working with 64bit
    although the hardware doesn't really work with 63bit but only with 40
    or 48bit DMA. In this patch, we take 40bit DMA for safety for the
    AMD/ATI controllers as the graphics drivers does.

    Signed-off-by: Takashi Iwai
    Signed-off-by: Benjamin Herrenschmidt
    CC:

    Takashi Iwai
     

21 Nov, 2014

3 commits


18 Nov, 2014

4 commits

  • The microphone mute led on the Latitude E5550 can't work. We need to
    apply DELL_WMI_MIC_MUTE_LED quirk to this machine.

    The machine uses alc293 codec and already applied the quirk
    ALC293_FIXUP_DELL1_MIC_NO_PRESENCE through pin_fixup_tbl[].

    Here we just let DELL_WMI_MIC_MUTE_LED be chained to
    ALC269_FIXUP_HEADSET_MODE, then the machine will have these
    quirks ALC293_FIXUP_DELL1_MIC_NO_PRESENCE-->
    ALC269_FIXUP_HEADSET_MODE-->ALC255_FIXUP_DELL_WMI_MIC_MUTE_LED.

    BugLink: https://bugs.launchpad.net/bugs/1381856
    Reported-and-tested-by: Po-Hsu Lin
    Signed-off-by: Hui Wang
    Signed-off-by: Takashi Iwai

    Hui Wang
     
  • We have one more Dell machine needs DELL_WMI_MIC_MUTE_LED quirk, but
    the machine uses alc293 instead of alc255. So if
    DELL_WMI_MIC_MUTE_LED still chain ALC255_FIXUP_DELL1_MIC_NO_PRESENCE,
    the machine can't use this quirk.

    To change this situation, let the DELL_WMI_MIC_MUTE_LED to be a
    standalone quirk, and let other quirks chain it.

    After this change, this quirk can be chained to any existing quirks,
    and as a result, it is possible that this quirk is applied to
    a non-Dell machine or a Dell machine without mic mute led on it, but
    it is still safe since alc_fixup_dell_wmi() will return an error in
    these situations.

    And remove the quirk for machine with subsystem id 0x6010 and 0x601f,
    these two machines will fall back to the quirk
    ALC255_FIXUP_DELL1_MIC_NO_PRESENCE-->ALC255_FIXUP_HEADSET_MODE-->
    ALC255_FIXUP_DELL_WMI_MIC_MUTE_LED through pin_fixup_tbl[].

    BugLink: https://bugs.launchpad.net/bugs/1381856
    Reported-and-tested-by: Po-Hsu Lin
    Signed-off-by: Hui Wang
    Signed-off-by: Takashi Iwai

    Hui Wang
     
  • …nie/sound into for-linus

    ASoC: Fixes for v3.18

    As well as the usual driver fixes there's a few other things here:

    One is a fix for a race in DPCM which is unfortuantely a rather large
    diffstat, this is the result of growing usage of the mainline code and
    hence more detailed testing so I'm relatively happy.

    The other is a fix for non-DT machine driver matching following some of
    the componentization work which is much more focused.

    Both have had a while to cook in -next.

    Takashi Iwai
     
  • …ix/sgtl5000' into asoc-linus

    Mark Brown