13 Feb, 2014

1 commit

  • This reverts commit d3c56568f43807135f2c2a09582a69f809f0d8b7.

    The reverted commit breaks audio through headphone line out on
    the Acer TravelMate B113 (Type1Sku0) Notebook, my main work
    machine. I don't know much about it but this fixes my problem.
    Bisected and tested.

    Fixes: d3c56568f438 ('ALSA: hda/realtek - Avoid invalid COEFs for ALC271X')
    Cc:
    Tested-by: Martin Kepplinger
    Signed-off-by: Martin Kepplinger
    Signed-off-by: Takashi Iwai

    Martin Kepplinger
     

10 Feb, 2014

1 commit

  • Even after the fix for leftover kconfig handling (commit f8f1becf),
    the current code still doesn't handle properly the builtin/module
    mixup case between the core snd-hda-codec and other codec drivers.
    For example, when CONFIG_SND_HDA_INTEL=y and
    CONFIG_SND_HDA_CODEC_HDMI=m, it'll end up with an unresolved symbol
    snd_hda_parse_hdmi_codec. This patch fixes the issue.

    Now codec->parser points to the parser object *only* when a module
    (either generic or HDMI parser) is loaded and bound. When a builtin
    symbol is used, codec->parser still points to NULL. This is the
    difference from the previous versions.

    Fixes: f8f1becfa4ac ('ALSA: hda - Fix leftover ifdef checks after modularization')
    Reported-by: Fengguang Wu
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

07 Feb, 2014

4 commits

  • The very same fixup is needed to make the mic on Sony VAIO Pro 11
    working as well as VAIO Pro 13 model.

    Reported-and-tested-by: Hendrik-Jan Heins
    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • This quirk is needed for the headset microphone to work.

    Alsa-info at http://www.alsa-project.org/db/?f=8c7dfe857ceff462ca2de133e67023c0f68de9cb

    Cc: stable@vger.kernel.org (3.10+)
    Reported-by: Po-Hsu Lin
    Signed-off-by: David Henningsson
    Signed-off-by: Takashi Iwai

    David Henningsson
     
  • The current code for controlling mic mute LED in patch_sigmatel.c
    blindly assumes that there is a single capture switch. But, there can
    be multiple multiple ones, and each of them flips the state, ended up
    in an inconsistent state.

    For fixing this problem, this patch adds kcontrol to be passed to the
    hook function so that the callee can check which switch is being
    accessed. In stac_capture_led_hook(), the state is checked as a
    bitmask, and turns on the LED when all capture switches are off.

    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • Since the commit [595fe1b702c3: ALSA: hda - Make
    CONFIG_SND_HDA_CODEC_* tristate], the kconfig variables for the
    generic parser and codec drivers can be "m" instead of boolean, but
    some codes are left unchanged to check only #ifdef
    CONFIG_SND_HDA_CODEC_XXX, which is no longer true for modules.
    This patch fixes them by replacing with IS_ENABLED() macros.

    Fixes: 595fe1b702c3 ('ALSA: hda - Make CONFIG_SND_HDA_CODEC_* tristate')
    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=70161
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

05 Feb, 2014

4 commits

  • AD1983 has flexible loopback routes and the generic parser would take
    wrong path confusingly instead of taking individual paths via NID 0x0c
    and 0x0d. For avoiding it, limit the connections at these widgets so
    that the parser can think more straightforwardly. This fixes the
    regression of the missing line-in loopback on Dell machine.

    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=70011
    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • Mac Pro 1,1 with ALC889A codec needs the VREF setup on NID 0x18 to
    VREF50, in order to make the speaker working. The same fixup was
    already needed for MacBook Air 1,1, so we can reuse it.

    Reported-by: Nicolai Beuermann
    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • The mixer widget on AD1983 at NID 0x0e was missing in the commit
    [f2f8be43c5c9: ALSA: hda - Add aamix NID to AD codecs].

    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=70011
    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     
  • We've seen often problems after suspend/resume on Acer Aspire One
    AO725 with ALC271X codec as reported in kernel bugzilla, and it turned
    out that some COEFs doesn't work and triggers the codec communication
    stall.

    Since these magic COEF setups are specific to ALC269VB for some PLL
    configurations, the machine works even without these manual
    adjustment. So, let's simply avoid applying them for ALC271X.

    Bugzilla: https://bugzilla.kernel.org/show_bug.cgi?id=52181
    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

04 Feb, 2014

1 commit

  • Toshiba Satellite L40 with AD1986A codec requires the EAPD of NID 0x1b
    to be constantly on, otherwise the output doesn't work.
    Unlike most of other AD1986A machines, EAPD is correctly implemented
    in HD-audio manner (that is, bit set = amp on), so we need to clear
    the inv_eapd flag in the fixup, too.

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

    Takashi Iwai
     

03 Feb, 2014

1 commit

  • The commit 44dcbbb1cd61 introduced the usage of bitreverse helpers but
    forgot to add the dependency. This patch adds the selection for
    CONFIG_BITREVERSE.

    Fixes: 44dcbbb1cd61 ('ALSA: snd-usb: add support for bit-reversed byte formats')
    Reported-by: Fengguang Wu
    Cc:
    Signed-off-by: Takashi Iwai

    Takashi Iwai
     

01 Feb, 2014

2 commits

  • Pull sound fixes from Takashi Iwai:
    "The big chunks here are the updates for oxygen driver for Xonar DG
    devices, which were slipped from the previous pull request. They are
    device-specific and thus not too dangerous.

    Other than that, all patches are small bug fixes, mainly for Samsung
    build fixes, a few HD-audio enhancements, and other misc ASoC fixes.
    (And this time ASoC merge is less than Octopus, lucky seven :)"

    * tag 'sound-fix-3.14-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (42 commits)
    ALSA: hda/hdmi - allow PIN_OUT to be dynamically enabled
    ALSA: hda - add headset mic detect quirks for another Dell laptop
    ALSA: oxygen: Xonar DG(X): cleanup and minor changes
    ALSA: oxygen: Xonar DG(X): modify high-pass filter control
    ALSA: oxygen: Xonar DG(X): modify input select functions
    ALSA: oxygen: Xonar DG(X): modify capture volume functions
    ALSA: oxygen: Xonar DG(X): use headphone volume control
    ALSA: oxygen: Xonar DG(X): modify playback output select
    ALSA: oxygen: Xonar DG(X): capture from I2S channel 1, not 2
    ALSA: oxygen: Xonar DG(X): move the mixer code into another file
    ALSA: oxygen: modify CS4245 register dumping function
    ALSA: oxygen: modify adjust_dg_dac_routing function
    ALSA: oxygen: Xonar DG(X): modify DAC/ADC parameters function
    ALSA: oxygen: Xonar DG(X): modify initialization functions
    ALSA: oxygen: Xonar DG(X): add new CS4245 SPI functions
    ALSA: oxygen: additional definitions for the Xonar DG/DGX card
    ALSA: oxygen: change description of the xonar_dg.c file
    ALSA: oxygen: export oxygen_update_dac_routing symbol
    ALSA: oxygen: add mute mask for the OXYGEN_PLAY_ROUTING register
    ALSA: oxygen: modify the SPI writing function
    ...

    Linus Torvalds
     
  • Commit 384a48d71520 "ALSA: hda: HDMI: Support codecs with fewer cvts
    than pins" dynamically enabled each pin widget's PIN_OUT only when the
    pin was actively in use. This was required on certain NVIDIA CODECs for
    correct operation. Specifically, if multiple pin widgets each had their
    mux input select the same audio converter widget and each pin widget had
    PIN_OUT enabled, then only one of the pin widgets would actually receive
    the audio, and often not the one the user wanted!

    However, this apparently broke some Intel systems, and commit
    6169b673618b "ALSA: hda - Always turn on pins for HDMI/DP" reverted the
    dynamic setting of PIN_OUT. This in turn broke the afore-mentioned NVIDIA
    CODECs.

    This change supports either dynamic or static handling of PIN_OUT,
    selected by a flag set up during CODEC initialization. This flag is
    enabled for all recent NVIDIA GPUs.

    Reported-by: Uosis
    Cc: # v3.13
    Signed-off-by: Stephen Warren
    Signed-off-by: Takashi Iwai

    Stephen Warren
     

30 Jan, 2014

22 commits

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

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

    Hui Wang
     
  • This completes the hardware support for the Asus Xonar DG/DGX cards,
    and makes them actually usable.

    This is v4 of Roman's patch set with some small formatting changes.

    Takashi Iwai
     
  • Pull slave-dma updates from Vinod Koul:
    - new driver for BCM2835 used in R-pi
    - new driver for MOXA ART
    - dma_get_any_slave_channel API for DT based systems
    - minor fixes and updates spread acrooss driver

    [ The fsl-ssi dual fifo mode support addition clashed badly with the
    other changes to fsl-ssi that came in through the sound merge. I did
    a very rough cut at fixing up the conflict, but Nicolin Chen (author
    of both sides) will need to verify and check things ]

    * 'for-linus' of git://git.infradead.org/users/vkoul/slave-dma: (36 commits)
    dmaengine: mmp_pdma: fix mismerge
    dma: pl08x: Export pl08x_filter_id
    acpi-dma: align documentation with kernel-doc format
    dma: fix vchan_cookie_complete() debug print
    DMA: dmatest: extend the "device" module parameter to 32 characters
    drivers/dma: fix error return code
    dma: omap: Set debug level to debugging messages
    dmaengine: fix kernel-doc style typos for few comments
    dma: tegra: add support for Tegra148/124
    dma: dw: use %pad instead of casting dma_addr_t
    dma: dw: join split up messages
    dma: dw: fix style of multiline comment
    dmaengine: k3dma: fix sparse warnings
    dma: pl330: Use dma_get_slave_channel() in the of xlate callback
    dma: pl330: Differentiate between submitted and issued descriptors
    dmaengine: sirf: Add device_slave_caps interface
    DMA: Freescale: change BWC from 256 bytes to 1024 bytes
    dmaengine: Add MOXA ART DMA engine driver
    dmaengine: Add DMA_PRIVATE to BCM2835 driver
    dma: imx-sdma: Assign a default script number for ROM firmware cases
    ...

    Linus Torvalds
     
  • Remove old SPI control functions, change anti-pop init
    sequence, remove some garbage from structures. The 'Apply' functions
    must be called at the mixer initialization, otherwise
    mixer settings sometimes will not be applied at startup.

    Signed-off-by: Roman Volkov
    Signed-off-by: Clemens Ladisch

    Roman Volkov
     
  • Change the 'put' function of the high-pass filter control to use the new
    SPI functions.

    Signed-off-by: Roman Volkov
    Signed-off-by: Clemens Ladisch

    Roman Volkov
     
  • First of all, we should not touch the GPIOs. They are not
    for selecting the capture source, but they seems just enable
    the whole audio input curcuit. The 'put' function calls the
    'apply' functions to change register values. Change the order
    of capture sources.

    Signed-off-by: Roman Volkov
    Signed-off-by: Clemens Ladisch

    Roman Volkov
     
  • Modify the input_vol_* functions to use the new SPI routines,
    There is a new applying function that will be called when
    the capture source changed.

    Signed-off-by: Roman Volkov
    Signed-off-by: Clemens Ladisch

    Roman Volkov
     
  • I tried both variants: volume control and impedance selector.
    In the first case one minus is that we can't change the
    volume of multichannel output without additional software
    volume control. However, I am using this variant for the
    last three months and this seems good. All multichannel
    speaker systems have internal amplifier with the
    volume control included, but not all headphones have
    this regulator. In the second case, my software volume
    control does not save the value after reboot.

    Signed-off-by: Roman Volkov
    Signed-off-by: Clemens Ladisch

    Roman Volkov
     
  • Change the order of elements in the output select control. This will
    reduce the number of relay switches. Change 'put' function to call the
    oxygen_update_dac_routing() function. Otherwise multichannel playback
    does not work. Also there is a new function to apply settings, this
    prevents from duplicating the code.

    Signed-off-by: Roman Volkov
    Signed-off-by: Clemens Ladisch

    Roman Volkov
     
  • Actually CS4245 connected to the I2S channel 1 for
    capture, not channel 2. Otherwise capturing and
    playback does not work for CS4245.

    Signed-off-by: Roman Volkov
    Signed-off-by: Clemens Ladisch

    Roman Volkov
     
  • Moving the mixer code away makes things easier. The mixer
    will control the driver, so the functions of the
    driver need to be non-static.

    Signed-off-by: Roman Volkov
    Signed-off-by: Clemens Ladisch

    Roman Volkov
     
  • Change the function to read the data from the new shadow buffer.

    Signed-off-by: Roman Volkov
    Signed-off-by: Clemens Ladisch

    Roman Volkov
     
  • When selecting the audio output destinations (headphones,
    FP headphones, multichannel output), the channel routing
    should be changed depending on what destination selected.
    Also unnecessary I2S channels are digitally muted. This
    function called when the user selects the destination
    in the ALSA mixer.

    Signed-off-by: Roman Volkov
    Signed-off-by: Clemens Ladisch

    Roman Volkov
     
  • When selecting the audio sample rate for CS4245,
    the MCLK divider should also be changed.

    Signed-off-by: Roman Volkov
    Signed-off-by: Clemens Ladisch

    Roman Volkov
     
  • Change CS4245 initialization: different sequence and GPIO values,
    according to datasheets and reverse-engineering information.
    Change cleanup/resume/suspend functions, since they use
    initialization.

    Signed-off-by: Roman Volkov
    Signed-off-by: Clemens Ladisch

    Roman Volkov
     
  • Add the new SPI write and read functions. The SPI read function
    is used for creating initial registers dump and may be used for
    debugging purposes. SPI operations are cached, so there is a new
    function to manage the cache (shadow). I have to remove
    the shift from the CS4245_SPI_* constants, since when
    we are performing the reading, we need to shift by 8 instead
    of 16.

    Signed-off-by: Roman Volkov
    Signed-off-by: Clemens Ladisch

    Roman Volkov
     
  • Add additional constants to the xonar_dg.h file:
    capture and playback sources. Move GPIO_* constants and the
    dg struct to the header file from the xonar_dg.c file.

    Signed-off-by: Roman Volkov
    Signed-off-by: Clemens Ladisch

    Roman Volkov
     
  • Add some additional information in comments and my copyright.

    Signed-off-by: Roman Volkov
    Signed-off-by: Clemens Ladisch

    Roman Volkov
     
  • When the user switches the output from stereo to multichannel
    or vice versa, the driver needs to update the channel routing.
    Instead of creating additional subroutines, I better export existing
    oxygen_update_dac_routing symbol from the oxygen mixer
    and call this function. It calls model.adjust_dac_routing()
    and my function does the work.

    Signed-off-by: Roman Volkov
    Signed-off-by: Clemens Ladisch

    Roman Volkov
     
  • The Xonar DG/DGX driver needs this mask to mute unnecessary
    channels.

    Signed-off-by: Roman Volkov
    Signed-off-by: Clemens Ladisch

    Roman Volkov
     
  • Modify the oxygen_write_spi() function to use the newly
    introduced oxygen_wait_spi() function. Change return value
    from void to int, so it can return error codes. Older
    drivers just ignore that return value, new drivers can
    check this value. We need to wait AFTER
    initiating the SPI transaction, otherwise read
    operation will not work.

    Signed-off-by: Roman Volkov
    Signed-off-by: Clemens Ladisch

    Roman Volkov
     
  • The oxygen_wait_spi() function now performs waiting when the
    SPI bus completes a transaction. Introduce the timeout error
    checking and increase timeout to 200 from 40.

    Signed-off-by: Roman Volkov
    Signed-off-by: Clemens Ladisch

    Roman Volkov
     

29 Jan, 2014

2 commits


28 Jan, 2014

2 commits