22 May, 2012

2 commits

  • commit 32cf4023e689ad5b3a81a749d8cc99d7f184cb99 upstream.

    When an IRQ for some reason gets lost, we wait up to a second using
    udelay, which is CPU intensive. This patch improves the situation by
    waiting about 30 ms in the CPU intensive mode, then stepping down to
    using msleep(2) instead. In essence, we trade some granularity in
    exchange for less CPU consumption when the waiting time is a bit longer.

    As a result, PulseAudio should no longer be killed by the kernel
    for taking up to much RT-prio CPU time. At least not for *this* reason.

    Signed-off-by: David Henningsson
    Tested-by: Arun Raghavan
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    David Henningsson
     
  • commit c914f55f7cdfafe9d7d5b248751902c7ab57691e upstream.

    This assertion seems to imply that chip->dsp_code_to_load is a pointer.
    It's actually an integer handle on the actual firmware, and 0 has no
    special meaning.

    The assertion prevents initialisation of a Darla20 card, but would also
    affect other models. It seems it was introduced in commit dd7b254d.

    ALSA sound/pci/echoaudio/echoaudio.c:2061 Echoaudio driver starting...
    ALSA sound/pci/echoaudio/echoaudio.c:1969 chip=ebe4e000
    ALSA sound/pci/echoaudio/echoaudio.c:2007 pci=ed568000 irq=19 subdev=0010 Init hardware...
    ALSA sound/pci/echoaudio/darla20_dsp.c:36 init_hw() - Darla20
    ------------[ cut here ]------------
    WARNING: at sound/pci/echoaudio/echoaudio_dsp.c:478 init_hw+0x1d1/0x86c [snd_darla20]()
    Hardware name: Dell DM051
    BUG? (!chip->dsp_code_to_load || !chip->comm_page)

    Signed-off-by: Mark Hills
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Mark Hills
     

28 Apr, 2012

1 commit


13 Mar, 2012

2 commits

  • commit 7bff172a352a2fbe9856bba517d71a2072aab041 upstream.

    A bug report with an old Sony laptop showed that we can't rely on BIOS
    setting the pins of headphones but the driver should set always by
    itself.

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

    Takashi Iwai
     
  • commit 3868137ea41866773e75d9ac4b9988dcc361ff1d upstream.

    Some codecs don't supply the mute amp-capabilities although the lowest
    volume gives the mute. It'd be handy if the parser provides the mute
    mixers in such a case.

    This patch adds an extension amp-cap bit (which is used only in the
    driver) to represent the min volume = mute state. Also modified the
    amp cache code to support the fake mute feature when this bit is set
    but the real mute bit is unset.

    In addition, conexant cx5051 parser uses this new feature to implement
    the missing mute controls.

    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=42825

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

    Takashi Iwai
     

01 Mar, 2012

1 commit

  • [Note that since the patch isn't applicable (and unnecessary) to
    3.3-rc, there is no corresponding upstream fix.]

    The cx5051 parser calls snd_hda_input_jack_add() in the init callback
    to create and initialize the jack detection instances. Since the init
    callback is called at each time when the device gets woken up after
    suspend or power-saving mode, the duplicated instances are accumulated
    at each call. This ends up with the kernel warnings with the too
    large array size.

    The fix is simply to move the calls of snd_hda_input_jack_add() into
    the parser section instead of the init callback.

    The fix is needed only up to 3.2 kernel, since the HD-audio jack layer
    was redesigned in the 3.3 kernel.

    Reported-by: Russell King
    Tested-by: Russell King
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Takashi Iwai
     

21 Feb, 2012

1 commit

  • commit 27c3afe6e1cf129faac90405121203962da08ff4 upstream.

    BugLink: https://bugs.launchpad.net/bugs/930842

    The reporter states that audio is inaudible by default without muting
    'External Amplifier'. Add a quirk to handle his SSID so that changing
    the control is not necessary.

    Reported-and-tested-by: Benjamin Carlson
    Signed-off-by: Daniel T Chen
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Daniel T Chen
     

14 Feb, 2012

1 commit

  • commit 54c2a89f60fd71b924d0f848ac892442951401a6 upstream.

    This typo caused the wrong codec's nid to be checked for wcaps type.
    As a result, sometimes speakers would duplicate the output sent to
    HDMI output.

    BugLink: https://bugs.launchpad.net/bugs/924320
    Signed-off-by: David Henningsson
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    David Henningsson
     

04 Feb, 2012

3 commits

  • commit b3a81520bd37a28f77cb0f7002086fb14061824d upstream.

    The very same problem is seen on Haier W18 laptop with ALC861 as seen
    on ASUS A6Rp, which was fixed by the commit 3b25eb69.
    Now we just need to add a new SSID entry pointing to the same fixup.

    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=42656

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

    Takashi Iwai
     
  • commit 3b25eb690e8c7424eecffe1458c02b87b32aa001 upstream.

    The refactoring of Realtek codec driver in 3.2 kernel caused a
    regression for ASUS A6Rp laptop; it doesn't give any output.
    The reason was that this machine has a secret master mute (or EAPD)
    control via NID 0x0f VREF. Setting VREF50 on this node makes the
    sound working again.

    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=42588

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

    Takashi Iwai
     
  • commit b4ead019afc201f71c39cd0dfcaafed4a97b3dd2 upstream.

    The recent change of the power-widget handling for IDT codecs caused
    the silent output from the docking-station line-out jack. This was
    partially fixed by the commit f2cbba7602383cd9cdd21f0a5d0b8bd1aad47b33
    "ALSA: hda - Fix the lost power-setup of seconary pins after PM resume".
    But the line-out on the docking-station is still silent when booted
    with the jack plugged even by this fix.

    The remainig bug is that the power-widget is set off in stac92xx_init()
    because the pins in cfg->line_out_pins[] aren't checked there properly
    but only hp_pins[] are checked in is_nid_hp_pin().

    This patch fixes the problem by checking both HP and line-out pins
    and leaving the power-map correctly.

    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=42637

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

    Takashi Iwai
     

26 Jan, 2012

4 commits

  • commit ffe535edb9a9c5b4d5fe03dfa3d89a1495580f1b upstream.

    More than one user reports that changing the model from "both" to
    "dmic" makes their Internal Mic work.

    Tested-by: Martin Ling
    BugLink: https://bugs.launchpad.net/bugs/795823
    Signed-off-by: David Henningsson
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    David Henningsson
     
  • commit f0e48b6bd4e407459715240cd241ddb6b89bdf81 upstream.

    The two DACs for the front output and the surround/center/LFE/back
    outputs are wired up out of phase, so when channels are duplicated,
    their sound can cancel out each other and result in a weaker bass
    response. To fix this, reverse the polarity of the neutron flow to
    the front output.

    Reported-any-tested-by: Daniel Hill
    Signed-off-by: Clemens Ladisch
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Clemens Ladisch
     
  • commit 3a90274de3548ebb2aabfbf488cea8e275a73dc6 upstream.

    When an invalid NID is given, get_wcaps() returns zero as the error,
    but get_wcaps_type() takes it as the normal value and returns a bogus
    AC_WID_AUD_OUT value. This confuses the parser.

    With this patch, get_wcaps_type() returns -1 when value 0 is given,
    i.e. an invalid NID is passed to get_wcaps().

    Bugzilla: https://bugzilla.novell.com/show_bug.cgi?id=740118

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

    Takashi Iwai
     
  • commit e7848163aa2a649d9065f230fadff80dc3519775 upstream.

    Cards with identical PCI ids but no AC97 config in EEPROM do not have
    the ac97 field initialized. We must check for this case to avoid kernel oops.

    Signed-off-by: Pavel Hofman
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Pavel Hofman
     

22 Dec, 2011

2 commits

  • commit cce4aa378a049f4275416ee6302dd24f37b289df upstream.

    When no imux is available (e.g. a single capture source),
    alc_auto_init_input_src() may trigger an Oops due to the access to -1.
    Add a proper zero-check to avoid it.

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

    Takashi Iwai
     
  • commit fc084e0b930d546872ab23667052499f7daf0fed upstream.

    There are some AC97 codec and board combinations that have been observed
    to take a very long time to respond after the cold reset has completed.
    In one case, more than 350 ms was required. To allow users to have sound
    on those platforms, we'll wait up to 500ms for the codec to become
    ready.

    As a board may have multiple codecs, with some faster than others to
    reset, we add a module parameter to inform the driver which codecs
    should be present.

    Reported-by: KotCzarny
    Signed-off-by: David Dillow
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    David Dillow
     

10 Dec, 2011

1 commit

  • commit a29878553a9a7b4c06f93c7e383527cf014d4ceb upstream.

    commit 6175ddf06b6172046a329e3abfd9c901a43efd2e optimized the mem*io
    functions that have been used to send commands to the device. these
    optimizations somehow corrupted the communication with the lx6464es,
    that resulted the device to be unusable with kernels after 2.6.33.

    this patch emulates the memcpy_*_io functions via a loop to avoid these
    problems.

    Signed-off-by: Tim Blechmann
    LKML-Reference:
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Tim Blechmann
     

22 Nov, 2011

1 commit

  • commit aeb4b88ec0a948efce8e3a23a8f964d3560a7308 upstream.

    When a virtual mater control is created, the driver looks for slave
    elements from the assigned card instance. But this may include the
    elements of other codecs when multiple codecs are on the same HD-audio
    bus. This works at the first time, but it'll give Oops when it's once
    freed and re-created via reconfig sysfs.

    This patch changes the element-look-up strategy to limit only to the
    mixer elements of the same codec.

    Reported-by: David Henningsson
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Takashi Iwai
     

12 Nov, 2011

6 commits

  • commit 51e4152a969aa6d2306492ebf143932dcb535c9b upstream.

    Some BIOS report invalid pins as digital output pins. The driver checks
    the connection but it doesn't do it fully correctly, and it leaves some
    undefined value as the audio-out widget, which makes the driver spewing
    warnings. This patch fixes the issue.

    Reference: https://bugzilla.novell.com/show_bug.cgi?id=727348

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

    Takashi Iwai
     
  • commit ad5d8755116b431f0709c745ee17cb567a478d43 upstream.

    These codecs have SPDIF-in, which is new to the 92HD83xxx compatible
    families, so a bit of logic is added to support them.

    Signed-off-by: Charles Chin
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Charles Chin
     
  • commit 35c11777b906042eca9e6f1c03e464726c7faa07 upstream.

    The power-widget control in patch_stac92hd83xxx() never worked properly,
    thus it's safer to turn it off as default for now.

    Signed-off-by: Charles Chin
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Charles Chin
     
  • commit 6b45214277bec2193ad3ccb8d7aa6100b5a0f1a9 upstream.

    It seems that Conexant CX20549 chip handle only a single input-amp even
    though the audio-input widget has multiple sources. This has been never
    clear, and I implemented in the current way based on the debug information
    I got at the early time -- the device reacts individual input-amp values
    for different sources. This is true for another Conexant codec, but it's
    not applied to CX20549 actually.

    This patch changes the auto-parser code to handle a single input-amp
    per audio-in widget for CX20549. After applying this, you'll see only a
    single "Capture" volume control instead of separate "Mic" or "Line"
    captures when the device is set up to use a single ADC.

    We haven't tested 20551 and 20561 codecs yet. If these show the similar
    behavior like 20549, they need to set spec->single_adc_amp=1, too.

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

    Takashi Iwai
     
  • commit cc667a72d471e79fd8e5e291ea115923cf44dca0 upstream.

    The revision 0x100300 was found for ALC662. It seems to work well
    with patch_alc662.

    BugLink: http://bugs.launchpad.net/bugs/877373
    Tested-by: Shengyao Xue
    Signed-off-by: David Henningsson
    Acked-by: Kailang Yang
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    David Henningsson
     
  • commit 6c5c04e509b7000617b09d4301f0b9b6d171d1e6 upstream.

    The purpose of this patch is to remove a section of "bad" code that
    assigns the last DAC to ports E or F in order to support notebooks
    with docking in earlier days, around ALSA 1.0.19 - 21. This is not
    necessary now and actually breaks some configurations that use these
    ports as other devices. This have been tested on several different
    configurations to make sure that it is working for different combinations.

    Signed-off-by: Charles Chin
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Charles Chin
     

25 Oct, 2011

2 commits

  • commit 051a8cb6550d917225ead1cd008b5966350f6d53 upstream.

    The previous fix for the position-buffer check gives yet another
    regression on a Dell laptop. The safest fix right now is to add a
    static quirk for this device (and better to apply it for stable
    kernels too).

    Reported-by: Éric Piel
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Takashi Iwai
     
  • commit ca201c096269ee2d40037fea96a59fd0695888c4 upstream.

    This is patch for Conexant codec of Intel HDA driver, adding new quirk
    for Lenovo Thinkpad T520 and W520. Conexant autodetection works fine for
    T520 (similar subsystem ID is used also in W520 model) and detects more
    mixer features compared to generic (fallback) Lenovo quirk with
    hardcoded options in Conexant codec.

    Patch was activelly tested with Linux 3.0.4, 3.0.6 and 3.0.7 without any
    problems.

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

    Daniel Suchy
     

04 Oct, 2011

7 commits

  • commit 46724c2e023cb7ba5cd5000dee6481f0a15ebed9 upstream.

    BugLink: http://bugs.launchpad.net/bugs/854468
    Signed-off-by: David Henningsson
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    David Henningsson
     
  • commit 6656b15d675c9c6a049db48d50994b3cd4e76bd6 upstream.

    This patch is necessary to make internal speakers work on this chip.

    BugLink: http://bugs.launchpad.net/bugs/854468
    Tested-by: Alex Wolfson
    Signed-off-by: David Henningsson
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    David Henningsson
     
  • commit 5fe6e0151dbd969f5fbcd94d05c968b76d76952b upstream.

    When the headphone pin is assigned as primary output to line_out_pins[],
    the automatic HP-pin assignment by ASSID must be suppressed. Otherwise
    a wrong pin might be assigned to the headphone and breaks the auto-mute.

    Reference: https://bugzilla.novell.com/show_bug.cgi?id=716104

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

    Takashi Iwai
     
  • commit c37279b92aba2893578f61076cd2eef5c5fa0e99 upstream.

    Commit 9676001559fce06e37c7dc230ab275f605556176
    ("ALSA: fm801: add error handling if auto-detect fails") seems to
    break systems that were previously working without a tuner.

    As a bonus, this should fix init and cleanup for the case where the
    tuner is explicitly disabled.

    Reported-and-tested-by: Hor Jiun Shyong
    References: http://bugs.debian.org/641946
    Signed-off-by: Ben Hutchings
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Ben Hutchings
     
  • commit 2ba34e43ba0469086d1ff81c13a9aa9070c1a0e1 upstream.

    Commit 9676001559fce06e37c7dc230ab275f605556176
    ("ALSA: fm801: add error handling if auto-detect fails") added
    incorrect error handling.

    Once we have successfully called snd_device_new(), the cleanup
    function fm801_free() will automatically be called by snd_card_free()
    and we must *not* also call fm801_free() directly.

    Reported-by: Hor Jiun Shyong
    References: http://bugs.debian.org/641946
    Signed-off-by: Ben Hutchings
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Ben Hutchings
     
  • commit 8974bd51a77824d91010176f9a5da28513c2e1f5 upstream.

    When the system has only the headphone and the line-out jacks without
    speakers, the current auto-mute code doesn't work. It's because the
    spec->automute_lines flag is wrongly referred in update_speakers().
    This flag must be meaningless when spec->automute_hp_lo isn't set, thus
    they should be always coupled.

    The patch fixes the problem and add a comment to indicate the
    relationship briefly.

    BugLink: http://bugs.launchpad.net/bugs/851697

    Reported-by: David Henningsson
    Tested-By: Jayne Han
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    Takashi Iwai
     
  • commit 2e1210bc3d065a6e26ff5fef228a9a7e08921d2c upstream.

    This patch fixes "Surround Speaker Playback Volume" being cut off.
    (Commit b4dabfc452a10 was probably meant to fix this, but it fixed
    only the "Switch" name, not the "Volume" name.)

    Signed-off-by: David Henningsson
    Signed-off-by: Takashi Iwai
    Signed-off-by: Greg Kroah-Hartman

    David Henningsson
     

30 Aug, 2011

1 commit


05 Aug, 2011

2 commits

  • commit c48a8fb0d31d6147d8d76b8e2ad7f51a2fbb5c4d upstream.

    Copying hp_pins and speaker_pins from line_out_pins may confuse the
    parser, and it can lead to duplicated initializations for the same pin
    with a wrong DAC assignment. The problem appears in 3.0 kernel code.

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

    Takashi Iwai
     
  • commit c81c6b356b52d3fcb4d531d149573fc100aad643 upstream.

    Commit dd203fa97bd5 (ALSA: virtuoso: remove non-working controls on
    Essence ST Deluxe) made it impossible to adjust the volume after the
    driver initialized it to muted.

    Ensure that those DACs that can be accessed with I2C are initialized
    to the same volume that is the reset default of the DAC without I2C.

    Signed-off-by: Clemens Ladisch
    Signed-off-by: Greg Kroah-Hartman

    Clemens Ladisch
     

09 Jul, 2011

1 commit

  • It's harmless but annyoing.
    sound/pci/hda/patch_realtek.c: In function ‘alc_cap_getput_caller’:
    sound/pci/hda/patch_realtek.c:2722:9: warning: ‘err’ may be used uninitialized in this function

    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

07 Jul, 2011

1 commit


30 Jun, 2011

1 commit

  • The char can be unsigned on some architectures. Since the code checks
    the negative values, they should be declared as signed char explicitly.

    sound/pci/rme9652/hdspm.c:5449: warning: comparison is always false due to limited range of data type
    sound/pci/rme9652/hdspm.c:5462: warning: comparison is always false due to limited range of data type

    Signed-off-by: Takashi Iwai

    Takashi Iwai