23 Dec, 2010

3 commits


21 Dec, 2010

2 commits


20 Dec, 2010

1 commit


17 Dec, 2010

1 commit

  • Due to the recent change for multiple mics assignment, we need to handle
    the index of each Mic Boost control respectively. Otherwise the driver
    gets the control element conflicts, and gives the unsable state.

    Reference: kernel bug 25002
    https://bugzilla.kernel.org/show_bug.cgi?id=25002

    Reported-and-tested-by: Adam Williamson
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

15 Dec, 2010

2 commits


09 Dec, 2010

1 commit


08 Dec, 2010

3 commits

  • When a new HDMI/DP device is plugged in, hdmi_update_short_audio_desc()
    is called for every SAD (Short Audio Descriptor) in the ELD data. For
    LPCM coding type SAD defines the supported sample sizes. For several
    other coding types (such as AC-3), a maximum bitrate is defined.

    The maximum bitrate and sample size fields are not always cleared.
    Therefore, if a device is unplugged and a different one is plugged in,
    and the coding types of some SAD positions differ between the devices,
    the old max_bitrate or sample_bits values will persist if the new SADs
    do not define those values.

    The leftover max_bitrate and sample_bits do not cause any issues other
    than wrongly showing up in eld#X.Y procfs file and kernel log.

    Fix that by always clearing sample_bits and max_bitrate when reading
    SADs.

    Signed-off-by: Anssi Hannula
    Signed-off-by: Takashi Iwai

    Anssi Hannula
     
  • Commit bbbe33900d1f3c added functionality to restrict PCM parameters
    based on ELD info (derived from EDID data) of the audio sink.

    However, according to CEA-861-D no SAD is needed for basic audio
    (32/44.1/48kHz stereo 16-bit audio), which is instead indicated with a
    basic audio flag in the CEA EDID Extension.

    The flag is not present in ELD. However, as all audio capable sinks are
    required to support basic audio, we can assume it to be always
    available.

    Fix allowed audio formats with sinks that have SADs (Short Audio
    Descriptors) which do not completely overlap with the basic audio
    formats (there are no reports of affected devices so far) by always
    assuming that basic audio is supported.

    Reported-by: Stephen Warren
    Signed-off-by: Anssi Hannula
    Cc: stable@kernel.org
    Signed-off-by: Takashi Iwai

    Anssi Hannula
     
  • Commit bbbe33900d1f3c added functionality to restrict PCM parameters
    based on ELD info (derived from EDID data) of the audio sink.

    However, it wrongly assumes that the bits 0-2 of the first byte of
    CEA Short Audio Descriptors mean a supported number of channels. In
    reality, they mean the maximum number of channels (as per CEA-861-D
    7.5.2). This means that the channel count can only be used to restrict
    max_channels, not min_channels.

    Restricting min_channels causes us to deny opening the device in stereo
    mode if the sink only has SADs that declare larger numbers of channels
    (like Primare SP32 AV Processor does).

    Fix that by not restricting min_channels based on ELD information.

    Signed-off-by: Anssi Hannula
    Reported-by: Jean-Yves Avenard
    Tested-by: Jean-Yves Avenard
    Cc: stable@kernel.org
    Signed-off-by: Takashi Iwai

    Anssi Hannula
     

06 Dec, 2010

1 commit


04 Dec, 2010

1 commit


03 Dec, 2010

2 commits

  • On the docking station for the Lenovo T410 and T410s, the line-out
    doesn't work. The trouble seems to be that it generates a plug event,
    but then doesn't report that the jack is connected. So automute mutes
    the jack when you plug something into it. The following patch (next
    message) fixes it.

    Signed-off-by: John Baboval
    Signed-off-by: Takashi Iwai

    John Baboval
     
  • BugLink: https://launchpad.net/bugs/595482

    The original reporter states that audible playback from the internal
    speaker is inaudible despite the hardware being properly detected. To
    work around this symptom, he uses the model=lg quirk to properly enable
    both playback, capture, and jack sense. Another user corroborates this
    workaround on separate hardware. Add this PCI SSID to the quirk table
    to enable it for further LG P1 Expresses.

    Reported-and-tested-by: Philip Peitsch
    Tested-by: nikhov
    Cc: [2.6.32+]
    Signed-off-by: Daniel T Chen
    Signed-off-by: Takashi Iwai

    Daniel T Chen
     

02 Dec, 2010

1 commit

  • BugLink: https://launchpad.net/bugs/683695

    The original reporter states that headphone jacks do not appear to
    work. Upon inspecting his codec dump, and upon further testing, it is
    confirmed that the "alienware" model quirk is correct.

    Reported-and-tested-by: Cody Thierauf
    Cc: [2.6.32+]
    Signed-off-by: Daniel T Chen
    Signed-off-by: Takashi Iwai

    Daniel T Chen
     

29 Nov, 2010

1 commit

  • BugLink: https://launchpad.net/bugs/682199

    A 2.6.35 (Ubuntu Maverick) user, burningphantom1, reported a regression
    in audio: playback was inaudible through both speakers and headphones.
    In commit 272a527c04 of sound-2.6.git, a new model was added with this
    machine's PCI SSID. Fortunately, it is now sufficient to use the auto
    model for BIOS auto-parsing instead of the existing quirk.

    Playback, capture, and jack sense were verified working for both
    2.6.35 and the alsa-driver snapshot from 2010-11-27 when model=auto is
    used.

    Reported-and-tested-by: burningphantom1
    Cc: [2.6.35+]
    Signed-off-by: Daniel T Chen
    Signed-off-by: Takashi Iwai

    Daniel T Chen
     

27 Nov, 2010

1 commit

  • When SKU assid gives no valid bits for 0x38, the driver didn't take
    any action, so far. This resulted in the missing initialization for
    external amps, etc, thus the silent output in the end.

    Especially users hit this problem on ALC888 newly since 2.6.35,
    where the driver doesn't force to use ALC_INIT_DEFAULT any more.

    This patch sets the default initialization scheme to use
    ALC_INIT_DEFAULT when no valid bits are set for SKU assid.

    Reference:
    https://bugzilla.redhat.com/show_bug.cgi?id=657388

    Reported-and-tested-by: Kyle McMartin
    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

25 Nov, 2010

1 commit

  • The mixer nids passed to alc_auto_create_input_ctls are wrong: 0x15 is
    a pin, and 0x09 is the ADC on both ALC660-VD/ALC861-VD. Thus with
    current code, input playback volume/switches and input source mixer
    controls are not created, and recording doesn't work. Select correct
    mixers, 0x0b (input playback mixer) and 0x22 (capture source mixer).

    Reference: https://qa.mandriva.com/show_bug.cgi?id=61159

    Signed-off-by: Herton Ronaldo Krzesinski
    Cc:
    Signed-off-by: Takashi Iwai

    Herton Ronaldo Krzesinski
     

24 Nov, 2010

2 commits


23 Nov, 2010

4 commits


22 Nov, 2010

6 commits

  • ALC887-VD is like ALC888-VD. It can not be initialized as ALC882.

    Signed-off-by: Kailang Yang
    Cc:
    Signed-off-by: Takashi Iwai

    Kailang Yang
     
  • BugLink: https://launchpad.net/bugs/677652

    The original reporter states that, in 2.6.35, headphones do not appear
    to work, nor does inserting them mute the A52J's onboard speakers. Upon
    inspecting the codec dump, it appears that the newly committed hp-laptop
    quirk will suffice to enable this basic functionality. Testing was done
    with an alsa-driver build from 2010-11-21.

    Reported-and-tested-by: Joan Creus
    Cc: [2.6.35+]
    Signed-off-by: Daniel T Chen
    Signed-off-by: Takashi Iwai

    Daniel T Chen
     
  • . Fix PulseAudio "ALSA driver bug" issue
    (if we have two alternated areas within a 64k DMA buffer, then max
    period size should obviously be 32k only).
    Back references:
    http://pulseaudio.org/wiki/AlsaIssues
    http://fedoraproject.org/wiki/Features/GlitchFreeAudio
    . In stop timer function, need to supply ACK in the timer control byte.
    . Minor log output correction

    When I did my first PA testing recently, the period size bug resulted
    in quite precisely observeable half-period-based playback distortion.

    PA-based operation is quite a bit more underrun-prone (despite its
    zero-copy optimizations etc.) than raw ALSA with this rather spartan
    sound hardware implementation on my puny Athlon.

    Note that even with this patch, azt3328 still doesn't work for both
    cases yet, PA tsched=0 and tsched
    (on tsched=0 it will playback tiny fragments of periods, leading to tiny
    stuttering sounds with some pauses in between, whereas with
    timer-scheduled operation playback works fine - minus some quite increased
    underrun trouble on PA vs. ALSA, that is).

    Signed-off-by: Andreas Mohr
    Signed-off-by: Takashi Iwai

    Andreas Mohr
     
  • BugLink: https://launchpad.net/bugs/677830

    The original reporter states that the subwoofer does not mute when
    inserting headphones. We need an entry for his machine's SSID in the
    subwoofer pin fixup list, so add it there (verified using hda_analyzer).

    Reported-and-tested-by: i-NoD
    Cc:
    Signed-off-by: Daniel T Chen
    Signed-off-by: Takashi Iwai

    Daniel T Chen
     
  • Signed-off-by: Joe Perches
    Signed-off-by: Takashi Iwai

    Joe Perches
     
  • BugLink: https://launchpad.net/bugs/669279

    The original reporter states: "The Master mixer does not change the
    volume from the headphone output (which is affected by the headphone
    mixer). Instead it only seems to control the on-board speaker volume.
    This confuses PulseAudio greatly as the Master channel is merged into
    the volume mix."

    Fix this symptom by applying the hp_only quirk for the reporter's SSID.
    The fix is applicable to all stable kernels.

    Reported-and-tested-by: Ben Gamari
    Cc: [2.6.32+]
    Signed-off-by: Daniel T Chen
    Signed-off-by: Takashi Iwai

    Daniel T Chen
     

11 Nov, 2010

3 commits

  • In each function, the value apcm is stored in the private_data field of
    runtime. At the same time the function ct_atc_pcm_free_substream is stored
    in the private_free field of the same structure. ct_atc_pcm_free_substream
    dereferences and ultimately frees the value in the private_data field. But
    each function can exit in an error case with apcm having been freed, in
    which case a subsequent call to the private_free function would perform a
    dereference after free. On the other hand, if the private_free field is
    not initialized, it is NULL, and not invoked (see snd_pcm_detach_substream
    in sound/core/pcm.c). To avoid the introduction of a dangling pointer, the
    initializations of the private_data and private_free fields are moved to
    the end of the function, past any possible free of apcm. This is safe
    because the previous calls to snd_pcm_hw_constraint_integer and
    snd_pcm_hw_constraint_minmax, which take runtime as an argument, do not
    refer to either of these fields.

    In each function, there is one error case where apcm needs to be freed, and
    a call to kfree is added.

    The sematic match that finds this problem is as follows:
    (http://coccinelle.lip6.fr/)

    //
    @@
    expression e,e1,e2,e3;
    identifier f,free1,free2;
    expression a;
    @@

    *e->f = a
    ... when != e->f = e1
    when any
    if (...) {
    ... when != free1(...,e,...)
    when != e->f = e2
    * kfree(a)
    ... when != free2(...,e,...)
    when != e->f = e3
    }
    //

    Signed-off-by: Julia Lawall
    Signed-off-by: Takashi Iwai

    Julia Lawall
     
  • If the platform already provides a definition for these accessors
    do not redefine them. The warning was caught on MIPS.

    Signed-off-by: Florian Fainelli
    Signed-off-by: Takashi Iwai

    Florian Fainelli
     
  • BugLink: http://launchpad.net/bugs/673075

    According to the datasheet of 92HD87B, there is a digital mic
    at nid 0x11, so enable it in order to be able to use the mic.

    Cc: stable@kernel.org
    Signed-off-by: David Henningsson
    Signed-off-by: Takashi Iwai

    David Henningsson
     

03 Nov, 2010

2 commits


02 Nov, 2010

1 commit

  • I noticed that sound/pci/asihpi/hpicmn.c::hpi_alloc_control_cache() does
    not check the return value from kmalloc(), which may fail.
    If kmalloc() fails we'll dereference a null pointer and things will go bad
    fast.
    There are two memory allocations in that function and there's also the
    problem that the first may succeed and the second may fail and nothing is
    done about that either which will also go wrong down the line.

    Signed-off-by: Jesper Juhl
    Acked-by: Eliot Blennerhassett
    Signed-off-by: Takashi Iwai

    Jesper Juhl
     

01 Nov, 2010

1 commit