02 Jun, 2014

2 commits

  • The conversion to a fixup table for Replacer model with ALC260 in
    commit 20f7d928 took the wrong widget NID for COEF setups. Namely,
    NID 0x1a should have been used instead of NID 0x20, which is the
    common node for all Realtek codecs but ALC260.

    Fixes: 20f7d928fa6e ('ALSA: hda/realtek - Replace ALC260 model=replacer with the auto-parser')
    Cc: [v3.4+]
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • Correcion of wrong fixup entries add in commit ca8f0424 to replace
    static model quirk for PB V7900 laptop (will model).

    [note: the removal of ALC260_FIXUP_HP_PIN_0F chain is also needed as a
    part of the fix; otherwise the pin is set up wrongly as a headphone,
    and user-space (PulseAudio) may be wrongly trying to detect the jack
    state -- tiwai]

    Fixes: ca8f04247eaa ('ALSA: hda/realtek - Add the fixup codes for ALC260 model=will')
    Signed-off-by: Ronan Marquet
    Cc: [v3.4+]
    Signed-off-by: Takashi Iwai

    Ronan Marquet
     

30 May, 2014

1 commit

  • ASUS A8JN with AD1986A codec seems following the normal EAPD in the
    normal order (0 = off, 1 = on) unlike other machines with AD1986A.
    Apply the workaround used for Toshiba laptop that showed the same
    problem.

    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=75041
    Cc: [3.11+]
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

23 May, 2014

1 commit

  • The recent Intel H97/Z97 chipsets need the similar setups like other
    Intel chipsets for snooping, etc. Especially without snooping, the
    audio playback stutters or gets corrupted. This fix patch just adds
    the corresponding PCI ID entry with the proper flags.

    Reported-and-tested-by: Arthur Borsboom
    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

19 May, 2014

1 commit

  • Currently snd_dmaengine_pcm_trigger() calls dmaengine_pause()
    unconditinally during device suspend. In case where DMA controller
    doesn't support PAUSE/RESUME functionality, this call is not able
    to stop the DMA controller. In this scenario, audio playback doesn't
    resume after device resume.

    Calling dmaengine_pause/dmaengine_terminate_all conditionally fixes
    the issue.

    It has been tested with audio playback on Samsung platform having
    PL330 DMA controller which doesn't support PAUSE/RESUME.

    Signed-off-by: Tushar Behera
    Acked-by: Lars-Peter Clausen
    Signed-off-by: Takashi Iwai

    Tushar Behera
     

14 May, 2014

8 commits


13 May, 2014

8 commits

  • Broadwell display controller has 3 stream DMA engines. DMA0 cannot update DMA
    postion buffer properly while DMA1 and DMA2 can work well. So this patch masks
    the buggy DMA0 by keeping it as opened.

    This is a tentative workaround, so keep the change small as Takashi suggested.

    Signed-off-by: Mengdong Lin
    Signed-off-by: Takashi Iwai

    Mengdong Lin
     
  • Vendor ID 0x10de0071 is used by a yet-to-be-named GPU chip.

    Signed-off-by: Aaron Plattner
    Signed-off-by: Takashi Iwai

    Aaron Plattner
     
  • According to Reference Manual -- ESAI Initialization chapter, as the
    standard procedure of ESAI personal reset, the PCRC and PRRC registers
    should be remained in its reset value and then configured after T/RCCR
    and T/RCR configurations's done but before TE/RE's enabling.

    So this patch moves PCRC and PRRC settings to the end of hw_params().

    Signed-off-by: Nicolin Chen
    Signed-off-by: Mark Brown

    Nicolin Chen
     
  • ESAI can only output EXTAL clock source directly. But for FSYS clock source,
    ESAI can not output it without getting through PSR PM dividers.

    So this patch adds an extra check in the code.

    Signed-off-by: Nicolin Chen
    Signed-off-by: Mark Brown

    Nicolin Chen
     
  • The range here from 1 to 16 is confined to FP divider only while the
    sck_div indicates if the calculation contains PSR and PM dividers. So
    for the case using PSR and PM since the sck_div is true, the range of
    ratio would simply become bigger than 16.

    So this patch fixes the condition here and adds one line comments to
    make the purpose here clear.

    Signed-off-by: Nicolin Chen
    Signed-off-by: Mark Brown

    Nicolin Chen
     
  • Currently when the DAPM context bias level is SUSPEND and the target bias level
    is OFF dapm_pre_sequence_async() will first transition to PREPARE and
    dapm_post_sequence_async() will then transition back from PREPARE to STANDBY and
    then to OFF.

    This patch makes sure that dapm_pre_sequence_async() only transitions to PREPARE
    when either going to ON or away from ON. This avoids the extra unnecessary
    transitions.

    Signed-off-by: Lars-Peter Clausen
    Signed-off-by: Mark Brown

    Lars-Peter Clausen
     
  • For CODEC to CODEC DAI links the paths are created in snd_soc_dapm_new_pcm().
    Also for CODEC to CODEC links the widgets are connected cross-over via a DAI
    link widget, meaning that the capture widget of one CODEC will be connected to
    the playback widget of the other and vice versa. Whereas
    snd_soc_dapm_connect_dai_link_widgets() directly connects the playback widget of
    the CPU DAI to the playback widget of the CODEC DAI and the capture widget of
    the CPU DAI to the capture widget of the CODEC DAI. So not skipping
    CODECCODEC links in snd_soc_dapm_connect_dai_link_widgets() will create
    incorrect connections between the two CODECs which will cause DAPM to detect
    active paths where there are none and unnecessarily power up widgets.

    Fixes: b893ea5 ("ASoC: sapm: Automatically connect DAI link widgets in DAPM graph.")
    Cc: (for 3.14+)
    Signed-off-by: Lars-Peter Clausen
    Signed-off-by: Mark Brown

    Lars-Peter Clausen
     
  • The regular state before we execute SNDRV_PCM_TRIGGER_SUSPEND should be
    SNDRV_PCM_TRIGGER_START, not SNDRV_PCM_TRIGGER_STOP. Thus fix it.

    Signed-off-by: Nicolin Chen
    Signed-off-by: Mark Brown

    Nicolin Chen
     

09 May, 2014

1 commit

  • When we plug a 3-ring headset on the Dell machines (VID: 0x10ec0255,
    SID: 0x1028065c; VID: 0x10ec0255, SID: 0x10280680; VID: 0x10ec0292,
    SID: 0x10280684), the headset mic can't be detected, after apply this
    patch, the headset mic can work well.

    And on the machine with SID 0x10280684, and the Lineout and external
    microphone should be routed to docking, this patch also fix this
    problem.

    BugLink: https://bugs.launchpad.net/bugs/1297581
    Cc: David Henningsson
    Cc: stable@vger.kernel.org
    Signed-off-by: Hui Wang
    Signed-off-by: Takashi Iwai

    Hui Wang
     

07 May, 2014

1 commit


06 May, 2014

1 commit

  • This patch fixes the following dereference check ordering.

    sound/soc/intel/sst-haswell-pcm.c:749 hsw_pcm_probe() warn: variable dereferenced before check 'pdata' (see line 746)

    git remote add asoc git://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git
    git remote update asoc
    git checkout 0b708c87f66a15190fb43661c2320fd48c4dc6c8
    vim +/pdata +749 sound/soc/intel/sst-haswell-pcm.c

    a4b12990 Mark Brown 2014-03-12 740 };
    a4b12990 Mark Brown 2014-03-12 741
    a4b12990 Mark Brown 2014-03-12 742 static int hsw_pcm_probe(struct snd_soc_platform *platform)
    a4b12990 Mark Brown 2014-03-12 743 {
    a4b12990 Mark Brown 2014-03-12 744 struct sst_pdata *pdata = dev_get_platdata(platform->dev);
    a4b12990 Mark Brown 2014-03-12 745 struct hsw_priv_data *priv_data;
    0b708c87 Liam Girdwood 2014-05-02 @746 struct device *dma_dev = pdata->dma_dev;
    0b708c87 Liam Girdwood 2014-05-02 747 int i, ret = 0;
    a4b12990 Mark Brown 2014-03-12 748
    a4b12990 Mark Brown 2014-03-12 @749 if (!pdata)
    a4b12990 Mark Brown 2014-03-12 750 return -ENODEV;
    a4b12990 Mark Brown 2014-03-12 751
    a4b12990 Mark Brown 2014-03-12 752 priv_data = devm_kzalloc(platform->dev, sizeof(*priv_data), GFP_KERNEL);

    Reported-by: Dan Carpenter
    Signed-off-by: Liam Girdwood
    Signed-off-by: Mark Brown

    Liam Girdwood
     

05 May, 2014

1 commit

  • Since commit 1df5a06a ("ALSA: hda - hdmi: Fix programmed active channel
    count") channel count is no longer being set if monitor_present is 0.
    This is because setting the count was moved after the CA value is
    determined, which is only after the monitor_present check in
    hdmi_setup_audio_infoframe().

    Unfortunately, in some cases, such as with a non-spec-compliant codec or
    with a problematic video driver, monitor_present is always 0. As a
    specific example, this seems to happen with gen1 ATV (SiI1390 codec),
    causing left-channel-only stereo playback (multi-channel playback has
    apparently never worked with this codec despite it reporting 8 channels,
    reason unknown).

    Simply setting converter channel count without setting the pin infoframe
    and channel mapping as well does not theoretically make much sense as
    this will just mean they are out-of-sync and multichannel playback will
    have a wrong channel mapping.

    However, adding back just setting the converter channel count even in
    no-monitor case is the safest change which at least fixes the stereo
    playback regression on SiI1390 codec. Do that.

    Signed-off-by: Anssi Hannula
    Reported-by: Stephan Raue
    Tested-by: Stephan Raue
    Cc: # 3.12+
    Signed-off-by: Takashi Iwai

    Anssi Hannula
     

03 May, 2014

10 commits


30 Apr, 2014

2 commits

  • When we plug a 3-ring headset on the Dell machine (VID: 0x10ec0255,
    SID: 0x1028067e), the headset mic can't be detected, after apply this
    patch, the headset mic can work well.

    BugLink: https://bugs.launchpad.net/bugs/1297581
    Cc: David Henningsson
    Cc: stable@vger.kernel.org
    Signed-off-by: Hui Wang
    Signed-off-by: Takashi Iwai

    Hui Wang
     
  • The recent commit (ca460f86521) changed the CORB RP reset procedure to
    follow the specification with a couple of sanity checks.
    Unfortunately, Nvidia controller chips seem not following this way,
    and spew the warning messages like:
    snd_hda_intel 0000:00:10.1: CORB reset timeout#1, CORBRP = 0

    This patch adds the workaround for such chips. It just skips the new
    reset procedure for the known broken chips.

    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

28 Apr, 2014

1 commit

  • When we plug a 3-ring headset on the Dell machine (VID: 0x10ec0255,
    SID: 0x10280674), the headset mic can't be detected, after apply this
    patch, the headset mic can work well.

    BugLink: https://bugs.launchpad.net/bugs/1297581
    Cc: David Henningsson
    Cc: stable@vger.kernel.org
    Signed-off-by: Hui Wang
    Signed-off-by: Takashi Iwai

    Hui Wang
     

25 Apr, 2014

1 commit


24 Apr, 2014

1 commit

  • I suppose there is a possibility that hsw_notification_work() may run after
    sst_hsw_stream_free() which can lead to a kernel crash since struct
    sst_hsw_stream is freed at that point and
    stream = container_of(work, struct sst_hsw_stream, notify_work) is not valid
    when hsw_notification_work() is run.

    Reported-by: Derek Basehore
    Reported-by: Wenkai Du
    Signed-off-by: Jarkko Nikula
    Signed-off-by: Mark Brown

    Jarkko Nikula