03 Jun, 2013

5 commits

  • The previous commit was written in the way to make the backport to
    3.9.y easier, and left the duplicated open codes intentionally.
    Now let's clean up the duplicated codes.

    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • VIA driver has a special suspend handling only for VT1802 to reduce
    the pop noise. During the transition to the generic parser, the
    behavior of snd_hda_set_pin_ctl() was also changed to modify the
    cached values, too. And this caused a regression where the pin is
    still cleared even after the resume (including the resume from power
    save), resulting in the silent output.

    The fix is simply to replace snd_hda_set_pin_ctl() with the explicit
    call of snd_hda_codec_write() again.

    Reported-by: Alex Riesen
    Cc: [v3.9]
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • VT1802 codec seems to reset EAPD of other pins in the hardware level,
    and this was another reason of the silent headphone output on some
    machines. As a workaround, introduce a new flag indicating to keep
    the EPAD on to the generic parser, and set it in patch_via.c.

    Reported-by: Alex Riesen
    Cc: [v3.9]
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • Some codec drivers (VIA codecs and some Realtek fixups) set the
    automute and automic hooks after calling
    snd_hda_gen_parse_auto_config(). In the current code, the hook
    pointers are referred only in snd_hda_gen_parse_auto_config() and
    passed to snd_hda_jack_detect_enable_callback(), thus changing the
    hook values won't change the actually called callbacks properly.

    This patch fixes this bug by setting the static functions as the
    primary callback functions for the jack detection, and let them
    calling the appropriate hooks dynamically.

    Cc: [v3.9]
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • Since the transition to the generic parser, the actual routes used
    there don't match always with the assumed static paths in some
    set_widgets_power_state callbacks. This results in the wrong power
    setup in the end. As a temporary workaround, we need to disable the
    calls together with the non-functional dynamic power control enum.

    Reported-by: Alex Riesen
    Cc: [v3.9]
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

31 May, 2013

3 commits


16 May, 2013

2 commits


10 May, 2013

2 commits

  • Pull sound fixes from Takashi Iwai:
    "This contains small fixes since the previous pull request:

    - A few regression fixes and small updates of HD-audio

    - Yet another fix for Haswell HDMI audio

    - A copule of trivial fixes in ASoC McASP, DPAM and WM8994"

    * tag 'sound-3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound:
    Revert "ALSA: hda - Don't set up active streams twice"
    ALSA: Add comment for control TLV API
    ALSA: hda - Apply pin-enablement workaround to all Haswell HDMI codecs
    ALSA: HDA: Fix Oops caused by dereference NULL pointer
    ALSA: mips/sgio2audio: Remove redundant platform_set_drvdata()
    ALSA: mips/hal2: Remove redundant platform_set_drvdata()
    ALSA: hda - Fix 3.9 regression of EAPD init on Conexant codecs
    sound: Fix make allmodconfig on MIPS
    ALSA: hda - Fix system panic when DMA > 40 bits for Nvidia audio controllers
    ALSA: atmel: Remove redundant platform_set_drvdata()
    ASoC: McASP: Fix receive clock polarity in DAIFMT_NB_NF mode.
    ASoC: wm8994: missing break in wm8994_aif3_hw_params()
    ASoC: McASP: Add pins output direction for rx clocks when configured in CBS_CFS format
    ASoC: dapm: use clk_prepare_enable and clk_disable_unprepare

    Linus Torvalds
     
  • This reverts commit affdb62b815b38261f09f9d4ec210a35c7ffb1f3.

    The commit introduced a regression with AD codecs where the stream is
    always clean up. Since the patch is just a minor optimization and
    reverting the commit fixes the issue, let's just revert it.

    Reported-and-tested-by: Michael Burian
    Cc: [v3.9+]
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

08 May, 2013

1 commit

  • This is a revised patch based on Mengdong Lin's fix patch, which is a
    supplement to a previous patch [1611a9c9: ALSA: hda - Add fixup for
    Haswell to enable all pin and convertor widgets].

    Some Haswell BIOS will disable the 2nd and 3rd pin/covertor widgets
    when the HD-A controller changes state from D3 to D0. So when the
    controller resumes after a system or runtime suspend, these widgets
    are disabled and programming these widgets to D0 will cause H/W error
    and codec will not respond.

    In addition, we found out that some BIOS disables the pins at S3
    although it shows up at boot. This confuses the driver utterly, and
    the hardware falls into the fatal communication error like the above.

    So in this patch, we apply intel_haswell_enable_all_pins() not only as
    a fixup to a certain device (with 8086:2010) but to all Haswell
    machines. The codec driver basically assumes that all pins are
    exposed, so it's anyway better to see them from the beginning. Even
    if all pins and converters are shown by this call, there should be no
    regression in practice: the pin default configurations are still kept,
    thus the disabled pins are handled as disabled by the driver
    properly.

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

    Takashi Iwai
     

07 May, 2013

1 commit

  • The interrupt handler azx_interrupt will call azx_update_rirb,
    which may call snd_hda_queue_unsol_event, snd_hda_queue_unsol_event
    will dereference chip->bus pointer.

    The problem is we alloc chip->bus in azx_codec_create
    which will be called after we enable IRQ and enable unsolicited
    event in azx_probe.

    This will cause Oops due dereference NULL pointer. I meet it, good luck:)

    [Rearranged the NULL check before the tracepoint and added another
    NULL check of bus->workq -- tiwai]

    Signed-off-by: Wang YanQing
    Cc:
    Signed-off-by: Takashi Iwai

    Wang YanQing
     

04 May, 2013

2 commits

  • The older Conexant codecs have up to two EAPDs and these are supposed
    to be rather statically turned on. The new generic parser code
    assumes the dynamic on/off per path usage, thus it resulted in the
    silent output on some machines.

    This patch fixes the problem by simply assuming the static EAPD on for
    such old Conexant codecs as we did until 3.8 kernel.

    Reported-and-tested-by: Christopher K.
    Cc: [v3.9]
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • Pull sound updates from Takashi Iwai:
    "Mostly many small changes spread as seen in diffstat in sound/*
    directory by this update. A significant change in the subsystem level
    is the introduction of snd_soc_component, which will help more generic
    handling of SoC and off-SoC components.

    Also, snd_BUG_ON() macro is enabled unconditionally now due to its
    misuses, so people might hit kernel warnings (it's a good thing for
    us).

    - compress-offload: support for capture by Charles Keepax
    - HD-audio: codec delay support by Dylan Reid
    - HD-audio: improvements/fixes in generic parser: better headphone
    mic and headset mic support, jack_modes hint consolidation, proper
    beep attach/detachment, generalized power filter controls by David
    Henningsson, et al
    - HD-audio: Improved management of HDMI codec pins/converters
    - HD-audio: Better pin/DAC assignment for VIA codecs
    - HD-audio: Haswell HDMI workarounds
    - HD-audio: ALC268 codec support, a few new quirks for Chromebooks
    - USB: regression fixes: USB-MIDI autopm fix, the recent ISO latency
    fix by Clemens Ladisch
    - USB: support for DSD formats by Daniel Mack
    - USB: A few UAC2 device endian/cock fixes by Eldad Zack
    - USB: quirks for Emu 192kHz support, Novation Twitch DJ controller,
    Yamaha THRxx devices
    - HDSPM: updates for TCO controls by Adrian Knoth
    - ASoC: Add a snd_soc_component object type for generic handling of
    SoC and off-SoC components by Kuninori Morimoto,
    - dmaengine: a large set of cleanups and conversions by Lars-Peter
    Clausen
    - ASoC DAPM: performance optimizations from Ryo Tsutsui
    - ASoC DAPM: support for mixer control sharing by Stephen Warren
    - ASoC: multiplatform ARM cleanups from Arnd Bergmann
    - ASoC: new codec drivers for AK5385 and TAS5086 from Daniel Mack"

    * tag 'sound-3.10' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (315 commits)
    ALSA: usb-audio: caiaq: fix endianness bug in snd_usb_caiaq_maschine_dispatch
    ALSA: asihpi: add format support check in snd_card_asihpi_capture_formats
    ALSA: pcm_format_to_bits strong-typed conversion
    ALSA: compress: fix the states to check for allowing read
    ALSA: hda - Move Thinkpad X220 to use auto parser
    ALSA: USB: adjust for changed 3.8 USB API
    ALSA: usb - Avoid unnecessary sample rate changes on USB 2.0 clock sources
    sound: oss/dmabuf: use dma_map_single
    ALSA: ali5451: use mdelay instead of large udelay constants
    ALSA: hda - Add the support for ALC286 codec
    ALSA: usb-audio: USB quirk for Yamaha THR10C
    ALSA: usb-audio: USB quirk for Yamaha THR5A
    ALSA: usb-audio: USB quirk for Yamaha THR10
    ALSA: usb-audio: Fix autopm error during probing
    ALSA: snd-usb: try harder to find USB_DT_CS_ENDPOINT
    ALSA: sound kconfig typo
    ALSA: emu10k1: Fix dock firmware loading
    ASoC: ux500: forward declare msp_i2s_platform_data
    ASoC: davinci-mcasp: Add Support BCLK-to-LRCLK ratio for TDM modes
    ASoC: davinci-pcm, davinci-mcasp: Clean up active_serializers
    ...

    Linus Torvalds
     

03 May, 2013

1 commit

  • The audio driver mistakenly allows 64 bit addresses to be created for
    the audio driver on Nvidia GPUs. Unfortunately, the hardware normally
    only supports up to 40 bits of DMA. This can cause system panics as
    well as misdirected data when the address is > 40 bits as the upper
    part the address is truncated.

    Signed-off-by: Mike Travis
    Reviewed-by: Mike Habeck
    Signed-off-by: Takashi Iwai

    Mike Travis
     

01 May, 2013

1 commit

  • Pull trivial tree updates from Jiri Kosina:
    "Usual stuff, mostly comment fixes, typo fixes, printk fixes and small
    code cleanups"

    * 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial: (45 commits)
    mm: Convert print_symbol to %pSR
    gfs2: Convert print_symbol to %pSR
    m32r: Convert print_symbol to %pSR
    iostats.txt: add easy-to-find description for field 6
    x86 cmpxchg.h: fix wrong comment
    treewide: Fix typo in printk and comments
    doc: devicetree: Fix various typos
    docbook: fix 8250 naming in device-drivers
    pata_pdc2027x: Fix compiler warning
    treewide: Fix typo in printks
    mei: Fix comments in drivers/misc/mei
    treewide: Fix typos in kernel messages
    pm44xx: Fix comment for "CONFIG_CPU_IDLE"
    doc: Fix typo "CONFIG_CGROUP_CGROUP_MEMCG_SWAP"
    mmzone: correct "pags" to "pages" in comment.
    kernel-parameters: remove outdated 'noresidual' parameter
    Remove spurious _H suffixes from ifdef comments
    sound: Remove stray pluses from Kconfig file
    radio-shark: Fix printk "CONFIG_LED_CLASS"
    doc: put proper reference to CONFIG_MODULE_SIG_ENFORCE
    ...

    Linus Torvalds
     

29 Apr, 2013

3 commits


26 Apr, 2013

1 commit


25 Apr, 2013

1 commit


24 Apr, 2013

1 commit

  • The commit [b209c4df: ALSA: emu10k1: cache emu1010 firmware] broke the
    firmware loading of the dock, just (mistakenly) ignoring a different
    firmware for docks on some models. This patch revives them again.

    Bugzilla: https://bugs.archlinux.org/task/34865
    Reported-and-tested-by: Tobias Powalowski
    Cc: [v3.8+]
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

22 Apr, 2013

1 commit


18 Apr, 2013

3 commits

  • When pin default configs are overridden via patch option, these are
    evaluated before fixups are applied. Since some fixups change the
    whole codec trees and/or add pins dynamically, this sanity check might
    not pass when pins aren't present at the time the function is called.

    We may reorder the execution, but an easier fix is simply to disable
    this sanity check.

    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • Fix to return a negative error code from the error handling
    case instead of 0, as returned elsewhere in this function.

    Signed-off-by: Wei Yongjun
    Signed-off-by: Takashi Iwai

    Wei Yongjun
     
  • The flag bus->shutdown implies that the control elements might have
    been already destroyed. When a codec is resumed at this state and
    tries to call vmaster hook (e.g. in snd_hda_gen_init()), it would
    refer to a non-existing object, resulting in Oops in the end.

    This patch just adds a check of the flag in the caller side for
    avoiding such a crash.

    Though, the best would be to clear hook->sw_kctl by the destructor of
    the corresponding ctl element, but vmaster uses its own private_free,
    it can't be done easily. So let it be for a while.

    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

17 Apr, 2013

1 commit

  • When graphics initializes the HDMI chip, sometimes this leads to
    pins going into D3 and right channel being muted. If the audio driver
    finishes initialization before the graphic driver does, this situation
    becomes permanent.

    This is a workaround that checks for this situation and corrects it on
    playback prepare. It has been verified working on at least one machine.

    BugLink: https://bugs.launchpad.net/bugs/1167270
    Signed-off-by: David Henningsson
    Signed-off-by: Takashi Iwai

    David Henningsson
     

16 Apr, 2013

4 commits

  • When setting up the aamix output paths, use the primary DAC instead of
    the individual DAC for each output as default. Otherwise multiple
    DACs will be turned on for a single aamix widget, which results in
    doubly or more volumes, because the duplicated signals will be sent
    through all these DACs for a single stream.

    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • When we have a loopback mixer control, this should manage the state
    whether the output paths include the aamix or not. But the current
    code blindly initializes the output paths with aamix = true, thus the
    aamix is enabled unless the loopback mixer control is changed.

    Also, update_aamix_paths() called by the loopback mixer control put
    callback invokes snd_hda_activate_path() with aamix = true even for
    disabling the mixing. This leaves the aamix path even though the
    loopback control is turned off.

    This patch fixes these issues:
    - Introduced aamix_default() helper to indicate whether with_aamix is
    true or false as default
    - Fix the argument in update_aamix_paths() for disabling loopback

    Reported-by: Lydia Wang
    Cc: [v3.9+]
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • For capture, the delay through the codec contributes to the time stamp
    of the sample recorded at the A to D. Rename the codec time stamp
    function appropriately.

    Signed-off-by: Dylan Reid
    Signed-off-by: Takashi Iwai

    Dylan Reid
     
  • ASoC: Updates for v3.10

    A bunch of changes here, the most interesting one subsystem wise being
    Morimoto-san's work to create snd_soc_component which doesn't do much
    for now but will be pretty important going forwards:

    - Add a new component object type which will form the basis of moving
    to a more generic handling of SoC and off-SoC components, contributed
    by Kuninori Morimoto.
    - A fairly large set of cleanups for the dmaengine integration from
    Lars-Peter Clausen, starting to move towards being able to have a
    generic driver based on the library.
    - Performance optimisations to DAPM from Ryo Tsutsui.
    - Support for mixer control sharing in DAPM from Stephen Warren.
    - Multiplatform ARM cleanups from Arnd Bergmann.
    - New CODEC drivers for AK5385 and TAS5086 from Daniel Mack.

    Takashi Iwai
     

15 Apr, 2013

2 commits

  • With this patch, a TRRS headset mic cannot be successfully detected
    on the Asus X101CH, and we can also distinguish between headphone
    and headset automatically.

    Buglink: https://bugs.launchpad.net/bugs/1169138
    Co-authored-by: Kailang
    Tested-by: Luis Henriques
    Signed-off-by: David Henningsson
    Signed-off-by: Takashi Iwai

    David Henningsson
     
  • On some machines, there is a headset jack that can support both
    headphone, headsets (of both CTIA and OMTP type) and mic-in.

    On other machines, the headset jack supports headphone, headsets
    (both CTIA and OMTP), but not mic-in.

    This patch implements that functionality as different capture sources.

    Buglink: https://bugs.launchpad.net/bugs/1169143
    Tested-by: David Chen
    Co-authored-by: Kailang
    Signed-off-by: David Henningsson
    Signed-off-by: Takashi Iwai

    David Henningsson
     

11 Apr, 2013

3 commits


09 Apr, 2013

1 commit


07 Apr, 2013

1 commit